1 REM Ins{nd av Lennart Einarsson <6554> 1987-05-17 17.32.46 (DUMP) 100 REM +-----------------------------+ 110 REM ! S Y S Y A T -ABC80 ! 120 REM ! =========== SYSTEM ! 130 REM ! STATUS ! 140 REM ! ! 150 REM ! (c) Per Lindberg 1980-02-08 ! 160 REM ! ! 170 REM ! *************************** ! 180 REM ! *** The mad programmer *** ! 190 REM ! *** strikes again..... *** ! 200 REM ! *************************** ! 210 REM +-----------------------------+ 220 REM ** INIT ** 230 DEFFNP%(A%)=PEEK(A%)+SWAP%(PEEK(A%+1%)) 240 DEFFNQ(X%)=X%-65536*(X%<0%) 250 DEFFNM%(X%,N%)=X%-X%/N%*N% 260 N0%=1% : REM REV.LIST LENGTH-1 270 REM CHECKSUM OF KNOWN REVISIONS 280 DATA 11273,"16k BASIC Rev. 1" 290 DATA 9913,"16k BASIC Rev. 2" 300 FOR I%=0% TO N0% 310 READ N%(I%),N$(I%) 320 NEXT I% 330 REM Z80-PROGRAM---------------- 340 DATA 33, 0, 0, 6, 0, 19, 27 350 DATA 26, 79, 9,122,179, 32, -8 360 DATA 201 370 DATA 98,107,124,254,128,248,126,47,119,190,192,47,119,43,24,242 380 DATA 221,229,213,221,225,33,0,0,22,0,1,0,4,221,94,0 390 DATA 25,221,35,11,120,185,32,245,221,225,201 400 REM POKE IT ON THE HEAP-------- 410 H%=PEEK(65056%)+256%*PEEK(65057%) 420 A9%=H% : REM SAVE CALL ADDR 430 FOR A%=H% TO H%+14% 440 READ D% : POKE A%,D% 450 NEXT A% 460 A8%=A% : REM SAVE 2nd CALL ADDR 470 FOR A%=A8% TO A8%+15% : READ D% : POKE A%,D% : NEXT A% 480 A7%=A% : REM SAVE 3rd CALL ADDR 490 FOR A%=A7% TO A7%+26% : READ D% : POKE A%,D% : NEXT A% 500 POKE 65056%,A%,SWAP%(A%) 510 ; CHR$(12%); 520 ; CHR$(151%)' 7#######################k' 530 ; CHR$(151%)" 5"CHR$(135%)" ABC80 SYSTEM STATUS "CHR$(151%)"j" 540 ; CHR$(151%)' -,,,,,,,,,,,,,,,,,,,,,,,.' 550 ; 560 REM +----------------------------+ 570 REM ! O S C H E C K S U M ! 580 REM +----------------------------+ 590 C%=CALL(A9%,16383%) 600 ; "OS VERSION: "; 610 FOR I%=0% TO N0% 620 IF N%(I%)=C% ; N$(I%) : GOTO 650 630 NEXT I% 640 ; "Unknown checksum" 650 ; TAB(13)"CHECKSUM:"C% 660 REM +----------------------------+ 670 REM ! S Y S T E M C L O C K ! 680 REM +----------------------------+ 690 T1%=65008% 700 D%=0 710 IF (PEEK(T1%) AND 4%)=0 THEN 700 720 FOR I%=0% TO 2% : Z%(I%)=255% XOR PEEK(T1%+I%) : NEXT I% 730 Z=((Z%(2%)*256)+Z%(1%))*5.12+Z%(0%)/50 740 IF Z>86400 THEN Z=Z-86400 : D%=D%-1% : GOTO 740 750 H%=Z/3600 : Z=Z-3600*H% : M%=Z/60 : S%=Z-60%*M% 760 ; : ; "SYSTEM TIME: "; 770 ; RIGHT$(NUM$(H%+100%),3%);":"; 780 ; RIGHT$(NUM$(M%+100%),3%);":"; 790 ; RIGHT$(NUM$(S%+100%),3%); 800 IF D% ; " (+"RIGHT$(NUM$(D%),2%)" day"; : IF D%>1% ; "s)"; ELSE ; ")"; 810 ; : ; 820 REM +----------------------------+ 830 REM ! M E M O R Y A L L O C ! 840 REM +----------------------------+ 850 B%=FNP%(65052) : REM BOFA 860 S%=FNP%(65063) : REM STACK 870 U%=B%-CALL(A8%,B%-1%)-1% 880 E%=49152%-B%+U% 890 ; "RAM MEMORY:"; 900 IF E%>0% ; TAB(12%)E%/1024%"k EXTERNAL RAM ONLINE" 910 S1%=FNQ(16384%+E%) : ; TAB(13%)"SYSTEM:"S1%;TAB(27%)"bytes"; 920 IF FNM%(S1%,1024%)=0% ; " (="RIGHT$(NUM$(S1%/1024%),2%)"k)" ELSE ; 930 S2%=FNQ(S%-B%) : ; TAB(13%)"USER:"TAB(20%)S2%;TAB(27%)"bytes"; 940 IF FNM%(S2%,1024%)=0% ; " (="RIGHT$(NUM$(S2%/1024%),2%)"k)" ELSE ; 950 IF U% ; TAB(13%)"("RIGHT$(NUM$(U%),2%);" bytes under BOFA)" 960 IF B%=49152% ; TAB(13%)"(BOFA standard setting)" 970 D%=(64768%-S%)/256% : ; TAB(12%)D%" I/O buffers allocated" 980 IF D%=8% ; TAB(13%)"(standard discette status)" ELSE IF D%=2% ; TAB(13%)"(standard cassette status)" 990 ; 1000 REM +---------------------------+ 1010 REM ! P E R I P H E R A L S ! 1020 REM +---------------------------+ 1030 D4%=0% : FOR A%=24576% TO 28671% STEP 1024% : D4%=D4%+CALL(A7%,A%) : NEXT A% 1040 D5%=CALL(A7%,28672%) 1050 D6%=CALL(A7%,30720%) 1051 ; "D4%="D4%TAB(13)"D5%="D5%TAB(26)"D6%="D6% 1060 D1%=0% : FOR A%=24576% TO 28671% : D1%=D1%+PEEK(A%) : NEXT A% 1070 D2%=0% : FOR A%=28672% TO 29695% : D2%=D2%+PEEK(A%) : NEXT A% 1080 D3%=0% : FOR A%=30720% TO 31743% : D3%=D3%+PEEK(A%) : NEXT A% 1081 ; "D1%="D1%TAB(13)"D2%="D2%TAB(26)"D3%="D3% 1090 IF D1%<>0% OR D2%<>0% OR D3%<>0% ; "PERIPHERALS:"; 1100 IF D1%=-8168% 1130 ELSE ; TAB(13%); 1110 IF D1%=-9999% ; "FD2 or FD2U dual floppy" : GOTO 1130 1120 ; : ; "UNKNOWN DOS CHECKSUM:"D1% 1130 IF D2%=-1024% 1150 ELSE ; TAB(13%); 1140 ; : ; "UNKNOWN IEC CHECKSUM:"D2% 1150 IF D3%=-1024% 1180 ELSE ; TAB(13%); 1160 IF D3%=27894% ; "PR40 Printer" : GOTO 1180 1170 ; : ; "UNKNOWN PRT CHECKSUM:"D3% 1180 ; 1190 REM +----------------------------+ 1200 REM ! D E V I C E L I S T ! 1210 REM +----------------------------+ 1220 ; "DEVICE LIST: NAME ADRESS WHERE" 1230 ; " ======================" 1240 A%=65034% 1250 A%=PEEK(A%)+256%*PEEK(A%+1%) 1260 IF A%=0% THEN 1370 1270 A$=CHR$(PEEK(A%+2%),PEEK(A%+3%),PEEK(A%+4%)) 1280 IF A$<>"" IF RIGHT$(A$,LEN(A$))=" " THEN A$=LEFT$(A$,LEN(A$)-1%) : GOTO 1280 1290 ; TAB(13%)A$":";TAB(19%);FNQ(A%);TAB(28%); 1300 IF A%<-16384% AND A%>=-32768% THEN ; "EXT.RAM" 1310 IF A%<0% AND A%>=-16384% THEN ; " RAM" 1320 IF A%>0% AND A%<24576% THEN ; " OS-ROM" 1330 IF A%>24575% AND A%<28672% THEN ; "DOS-ROM" 1340 IF A%>31743% AND A%<32768% THEN ; "CRT-RAM" 1350 ; TAB(13%); : GET D$ : IF ASC(D$)=13% END 1360 GOTO 1250 1370 END