1 REM Ins{nd av Bengt Holgersson <559> 1986-01-06 11.16.47 10 DIM A$=0%,B$=0%,I$=120%,U$=80%,H1$=16%,K$=15% 20 REM (C) Bengt Holgersson 30 M%=SWAP%(PEEK(65053%)-8%) : REM STARTADRESS F\R MASKINSPR]KSRUTIN 40 IF PEEK(M%) XOR PEEK(M%+3%) XOR PEEK(M%+6%) XOR PEEK(M%+9%) XOR PEEK(M%+12%)< >195% GOTO 60 50 IF CHR$(PEEK(M%+1623%),PEEK(M%+1624%),PEEK(M%+1625%))='Z80' GOTO 70 60 ; CHR$(7%)'MASKINSPR]KSRUTIN SAKNAS !!' : END 70 ; INP(4%)CHR$(12%)'Z80-Disassembler' 80 GOSUB 660 90 IF PEEK(885%)=124% W%=39% ELSE W%=79% 100 DEFFNC%=PEEK(884%+2%*PEEK(65011%))+SWAP%(PEEK(885%+2%*PEEK(65011%)))+PEEK(65 012%) 110 H1$='0123456789ABCDEF' 120 A%=PEEK(65065%)+SWAP%(PEEK(65066%))+4% : B%=A%+10% 130 ONERRORGOTO 130 140 CLOSE F% : POKE 65013%,0% : ; : ; 'Utfil:(BILDSK[RM)'; : INPUTLINE I$ 150 I$=LEFT$(I$,LEN(I$)-2%) : IF I$='' F%=0% ELSE F%=1% 160 PREPARE I$ ASFILE F% : IF INSTR(1%,I$,'PR:') P%=1% ELSE P%=0% 170 IF P% ; : ; 'PRINTER EJ KLAR !'CHR$(13%); : ; #F%,CHR$(15%); : ; SPACE$(17%) CHR$(13%); 180 ONERRORGOTO 0 190 POKE 65013%,0% : ; : ; 'HEX Adress:'; : GOSUB 480 : ON D%+2% GOTO 190,220,13 0 200 REM  HUVUDLOOP  210 IF INP(56%)=141% GOTO 180 220 IF INP(56%)>127% GOTO 220 230 X%=Y% : H%=0% 240 ; : B1%=FNC% : X%=CALL(M%+6%,X%) : ; ' '; : C%=FNC% : Y%=CALL(M%+3%,X%) : C1 %=FNC% 250 POKE A%,C1%-C%,0%,C%,SWAP%(C%),C1%-C%,0% : REM A$=Mnemonic & Operand 260 POKE B%,W%,0%,B1%,SWAP%(B1%),W%,0% : REM B$=Hela raden 270 ; TAB(23%); : N%=X% 280 D%=PEEK(N%) : D%=CALL(M%+9%,D%) : ; ' '; : IF N%<>Y%-1% N%=N%+1% : GOTO 280 290 ; TAB(35%); : N%=X% 300 D%=PEEK(N%) : D%=CALL(M%+12%,D%) : IF N%<>Y%-1% N%=N%+1% : GOTO 300 310 REM Kommentarer mm. 320 K$='' 330 IF A$='RET ' OR A$='RETN ' OR A$='RETI ' H%=-1% 340 IF LEFT$(A$,4%)='JP ' GOSUB 520 350 IF LEFT$(A$,4%)='JR ' GOSUB 550 : GOSUB 520 360 IF W%=39% AND F%=0% GOTO 440 370 IF LEFT$(A$,4%)='DJNZ' GOSUB 550 380 IF LEFT$(A$,4%)='???=' K$=A$ 390 I%=INSTR(1%,A$,'(') : I1%=INSTR(1%,A$,')') : IF I1%-I%>1% K$=MID$(A$,I%,I1%- I%+1%) 400 IF LEFT$(A$,2%)='EX' AND INSTR(1%,A$,'HL')=0% AND INSTR(1%,A$,'SP')=0% K$=A$ 410 IF W%=79% AND LEN(K$) ; TAB(45%)K$; 420 U$=B$ : IF P% ; #F%,TAB(10%); : GOSUB 720 430 IF F% GOSUB 760 : ; #F%,U$; : IF W%=39% ; #F%,TAB(45+10%*P%)K$ ELSE ; #F% 440 IF H% ; : IF F% ; #F% 450 IF F%=0% IF (PEEK(65011%)=23%) AND (INP(56%)<128%) GOTO 450 ELSE IF INP(56%) =141% GOTO 180 ELSE GOTO 230 460 GOTO 200 470 REM  SUBRUTINER  480 REM Hex input rutin 490 INPUTLINE I$ : IF ASC(I$)=13% D%=1% : RETURN 500 I$='000'+I$ : I$=MID$(I$,LEN(I$)-5%,4%) : Y%=0% : FOR I%=1% TO 4% : D%=INSTR (1%,H1$,MID$(I$,I%,1%))-1% 510 IF D%=-1% RETURN ELSE Y%=16%*Y%+D% : NEXT I% : D%=0% : RETURN 520 REM Ovillkorliga hopp ? 530 IF INSTR(1%,A$,',')=0% H%=-1% 540 RETURN 550 REM Ber{kna relativa hopp 560 IF W%=39% AND F%=0% RETURN 570 I$=MID$(A$,LEN(A$)-2%,2%)+' ' 580 N%=Y% : GOSUB 500 : [%=Y% : Y%=N% : IF [% AND 128% [%=-(( NOT [% AND 255%)+1 %) 590 [%=Y%+[% : GOSUB 600 : K$=K$+'H' : RETURN 600 N6%=SWAP%([%) : GOSUB 620 610 N6%=[% 620 N7%=(N6%/16%) AND 15 : GOSUB 640 630 N7%=N6% AND 15% 640 K$=K$+MID$(H1$,N7%+1%,1%) 650 RETURN 660 REM Skriv systemvariabler 670 Y%=PEEK(65052%)+SWAP%(PEEK(65053%)) : ; 'BOFA: '; : Z%=CALL(M%+6%,Y%) : ; ' H' 680 Y%=PEEK(65054%)+SWAP%(PEEK(65055%)) : ; 'EOFA: '; : Z%=CALL(M%+6%,Y%) : ; ' H' 690 Y%=PEEK(65056%)+SWAP%(PEEK(65057%)) : ; 'HEAP: '; : Z%=CALL(M%+6%,Y%) : ; ' H' 700 Y%=PEEK(65078%)+SWAP%(PEEK(65079%)) : ; 'STACK: '; : Z%=CALL(M%+6%,Y%) : ; ' H' 710 RETURN 720 REM Ers{tt CHR$(127) med CHR$(175) f|r EPSON printer 730 IF LEFT$(U$,1%)='' U$=CHR$(175%)+RIGHT$(U$,2%) 740 FOR I%=2% TO LEN(U$) : IF MID$(U$,I%,1%)='' U$=LEFT$(U$,I%-1%)+CHR$(175%)+R IGHT$(U$,I%+1%) 750 NEXT I% : RETURN 760 REM Skala bort avslutande space 770 FOR I%=LEN(U$) TO 1% STEP -1% : IF MID$(U$,I%,1%)=' ' NEXT I% 780 U$=LEFT$(U$,I%) : RETURN