100 REM . ====================================== 101 REM . 1 1 102 REM . 1 Program RUNDIDAC.T 1 103 REM . 1 1 104 REM . 1 1 105 REM . 1 V 1.1 83-12-12 1 106 REM . 1 1 107 REM . 1 1 108 REM . 1 Tayeh Hsu 1 109 REM . 1 1 110 REM . 1 ]s| gymnasium 1 111 REM . 1 Blekingeg. 55 1 112 REM . 1 116 56 STockholm 1 113 REM . 1 1 114 REM . ====================================== 200 ; CHR$(12) 202 ; CUR(2%,0%);' Med tangent M kommer du till minnes-' 203 ; CUR(3%,0%);' editorn och d{rifr}n matar du in' 204 ; CUR(4%,0%);' program, s{tter relativ hoppadress' 205 ; CUR(5%,0%);' eller bl{ddrar i Didactens minne som' 206 ; CUR(6%,0%);' visas direkt p} Didactens display.' 207 ; CUR(8%,0%);' Nederst p} sk{rmen visas inmatnings-' 208 ; CUR(9%,0%);' buffert och den aktuella kommando-' 209 ; CUR(10%,0%);' tabellen, |verst registreras inmat-' 210 ; CUR(11%,0%);' ningen.' 212 ; CUR(13%,0%);' Innan du k|r ig}ng didactprogrammet,' 214 ; CUR(14%,0%);' kan brytpunkter s{ttas med tangent S.' 216 ; CUR(16%,0%);' Under k|rningen, kan du single steppa,' 218 ; CUR(17%,0%);' titta i registret med resultatet i' 220 ; CUR(18%,0%);' Didactens display eller forts{tta' 222 ; CUR(19%,0%);' k|rningen med C.' 230 ; CUR(24%,20%);'Tryck en tangent' 240 REM . 250 REM . 290 J$='123456789ABCDEF' 292 R$='CC B AIxPcSp' 295 DIM C1$=T$=T2$=8% 296 GET T$ 297 ; CHR$(12) 301 ; CUR(20%,0%);'----------- Ge kommando och return < > ' : P3%=36% 302 ; CUR(22%,0%);'M Minnes editor B S{tt brytpunkten ' 304 ; CUR(23%,0%);'G Go/k|r programmet Q Quit/sluta '; : GOSUB 1200 310 GET T2$ 312 IF T2$=CHR$(13) THEN 320 ELSE T$=T2$ 314 ; CUR(20%,P3%);T$+'>'; : GOSUB 1200 : GOTO 310 320 ON INSTR(1%,'QqMmBbGg',T$)+1% GOTO 301,998,998,400,400,500,500,600,600 400 ; CUR(20%,0%);'-------Ge start adr. och return < >'; : GOSUB 1200 : P3%=32% 401 ; CUR(22%,0%);SPACE$(39); : ; CUR(22%,10%);'Inskrivning, avl{sning'; 402 ; CUR(23%,0%);SPACE$(39); : ; CUR(23%,10%);'eller {ndring i minnet'; : GOSUB 1200 403 C1$='0000' : GOSUB 1000 404 GOSUB 1300 : GOSUB 1510 405 ; CUR(R0%,0%);C1$+': '; : K0%=K0%+3% : REM . =====Print adr.==== 406 ; CUR(20%,0%);SPACE$(39); : ; CUR(22%,0%)SPACE$(39); : ; CUR(23%,0%);SPACE$(39); : GOSUB 1200 407 ; CUR(22%,0%);'-> Bl{ddra fram}t i minnet <- Bak}t' 408 ; CUR(23%,0%);'Data, < Sudda data, J Jump adr, X Exit'; : GOSUB 1200 409 ; CUR(20%,0%);'----- Ge data/kommando och return < >'; : GOSUB 1200 : P3%=36% 410 GET T2$ 411 IF T2$=CHR$(13) THEN 419 ELSE T$=T2$ 412 IF T$>='0' AND T$<='9' OR T$>='A' AND T$<='F' OR T$>='a' AND T$<='f' THEN 460 413 L%=0% : T3$=' <'+T$+'>' : P3%=33% 414 IF T$=CHR$(8) T3$=' <- ' : GOTO 417 415 IF T$=CHR$(9) T3$=' -> ' : GOTO 417 416 IF T$='<' T3$=' < ' : GOTO 417 417 ; CUR(20%,P3%);T3$; : GOSUB 1200 : GOTO 410 419 IF L%=0% ON INSTR(1%,'XxJj<'+CHR$(8)+CHR$(9),T$)+1% GOTO 410,301,301,440,440,480,422,425 ELSE 474 422 OUT 5%,182% : OUT 5%,150% : FOR N=0 TO 800 : NEXT N : T2$='' : GOTO 410 : REM . ====Bak}t==== 425 OUT 5%,178% : OUT 5%,146% : FOR N=0 TO 800 : NEXT N : T2$='' : GOTO 410 : REM . ====Fram}t=== 440 ; CUR(20%,0%);'--------- Ge destinationsadress < >' : P3%=32% 444 ; CUR(22%,0%);SPACE$(39) 446 ; CUR(23%,0%);' Branch adress ber{kning '; : GOSUB 1200 447 C1$='0000' : GOSUB 1000 448 OUT 5%,177% : OUT 5%,145% : FOR N=0 TO 50 : NEXT N 450 GOSUB 1305 : OUT 5%,181% : OUT 5%,149% : FOR N=0 TO 50 : NEXT N 452 OUT 5%,183% : OUT 5%,151% : FOR N=0 TO 50 : NEXT N 454 GOSUB 1500 : ; CUR(R0%,K0%);' bb'; : GOSUB 1200 456 GOTO 406 460 IF NOT L% THEN L%=-1% : C1$='00' 462 C1$=C1$+T$ : C1$=RIGHT$(C1$,2%) : P3%=34% 464 ; CUR(20%,P3%);'<'+C1$+'>'; : GOSUB 1200 : GOTO 410 474 W%=2% : GOSUB 1310 : GOSUB 1500 475 ; CUR(R0%,K0%);' '+C1$; : GOSUB 1200 476 IF NOT S% 478 477 ; CUR(20%,0%);'----- Ge data/kommando och return < >'; : GOSUB 1200 : P3%=34% : S%=0% 478 L%=0% : GOTO 410 480 L%=0% : S%=-1% 481 OUT 5%,179% : OUT 5%,147% : FOR N=0 TO 50 : NEXT N 484 ; CUR(20%,0%);'-------Mata in ny data och return < >'; : GOSUB 1200 486 GET T$ 487 IF T$>='0' AND T$<='9' OR T$>='A' AND T$<='F' OR T$>='a' AND T$<='f' THEN 490 ELSE 486 490 K0%=K0%-3% 492 GOTO 460 500 ; CUR(20%,0%);'---- H|gst 4 brytpunkter ---Adr < > ' 502 ; CUR(22%,0%);' Tryck X f|r exit ' 503 ; CUR(23%,0%);'Brytpkt adr'+SPACE$(28); : GOSUB 1200 : P3%=32% 505 P4%=12% 506 OUT 5%,185% : OUT 5%,153% : FOR N=0 TO 50 : NEXT N 508 C1$='0000' : GET T$ 510 IF T$='X' OR T$='x' 301 514 GOSUB 1003 : ; CUR(23%,P4%);'<'+C1$+'>'; 515 ; CUR(20%,33%);' > '; : GOSUB 1200 516 GOSUB 1305 : OUT 5%,189% : OUT 5%,157% : FOR N=0 TO 50 : NEXT N 518 P4%=P4%+7% 520 IF P4%>36% 301 ELSE 508 600 E%=0% : F%=0% : REM . ====== E reg. r{knare F sst-r{knare ====== 601 ; CUR(20%,0%);'-------Ge start adr. och return < >'; : P3%=32% 602 ; CUR(22%,0%);SPACE$(39); : ; CUR(23%,0%);' Programk|rning'+SPACE$(8); : GOSUB 1200 603 C1$='0000' : GOSUB 1000 : GOSUB 1305 604 OUT 5%,177% : OUT 5%,145% : FOR N=0 TO 50 : NEXT N 605 ; CUR(22%,0%);' C run X exit S stega' 606 ; CUR(23%,0%);' R Display register'+SPACE$(6); : GOSUB 1200 607 ; CUR(20%,0%);'----Tryck kommando-- Start adr'; : GOSUB 1200 608 GET T$ 610 ; CUR(20%,0%);'-------------------- Start adr'; : GOSUB 1200 700 ON INSTR(1%,'XxCcSsRr',T$)+1% GOTO 607,301,301,800,800,850,850,900,900 800 E%=0% : F%=0% : ; CUR(23%,26%);SPACE$(4); : GOSUB 1200 802 ; CUR(22%,33%);SPACE$(4); 803 ; CUR(22%,4%); : ; CHR$(127) 804 OUT 5%,180% : OUT 5%,148% : FOR N=0 TO 4000 : NEXT N 806 T2$='' : GOTO 605 850 IF E% THEN E%=0% : ; CUR(23%,26%);SPACE$(4); : GOSUB 1200 852 F%=F%+1% : F$=NUM$(F%) : F$=RIGHT$(F$,2%) 854 ; CUR(22%,33%);'('+F$+')'; : GOSUB 1200 856 OUT 5%,184% : OUT 5%,152% : FOR N=0 TO 50 : NEXT N 858 GOTO 608 900 IF NOT E% THEN E%=-1% : M%=0% 902 M%=M%+1% : IF M%>6% M%=1% 904 C1$=MID$(R$,2%*M%-1%,2%) 906 OUT 5%,188% : OUT 5%,156% : FOR N=0 TO 50 : NEXT N 908 ; CUR(23%,26%);'('+C1$+')'; : GOSUB 1200 910 GOTO 608 998 ; CHR$(12) 999 END 1000 REM 1002 GET T$ 1003 IF T$='$' ; CUR(20%,P3%-2%);'<$'; : GOSUB 1200 : GOTO 1002 1004 IF T$=CHR$(13%) ; CUR(20%,P3%);'<'+C1$+'>'; : GOSUB 1200 : RETURN 1006 IF T$>='0' AND T$<='9' OR T$>='a' AND T$<='f' OR T$>='A' AND T$<='F' THEN 1008 ELSE 1002 1008 C1$=C1$+T$ : C1$=RIGHT$(C1$,2%) 1010 ; CUR(20%,P3%);'<'+C1$+'>'; : GOSUB 1200 1012 GOTO 1002 1200 R1%=PEEK(65011%) : K1%=PEEK(65012%) : POKE (PEEK(884%+2%*R1%)+SWAP%(PEEK(885%+2%*R1%))+K1%),0% : RETURN 1300 OUT 5%,0% : OUT 5%,16% : FOR I%=0 TO 50 : NEXT I% 1305 W%=4% 1306 OUT 5,176% : OUT 5,144% : FOR N=0 TO 50 : NEXT N 1310 FOR I%=1% TO W% : D%=INSTR(1%,J$,MID$(C1$,I%,1%)) : OUT 5,D%+48% : OUT 5,D%+16% 1320 FOR N=0 TO 50 : NEXT N : NEXT I% 1322 RETURN 1500 IF K0%<36% K0%=K0%+3% : RETURN 1510 K0%=0% : R0%=R0%+1% 1512 IF R0%>19% R0%=0% 1514 ; CUR(R0%,0%);SPACE$(39%); 1516 RETURN 5000 ; CUR(21%,0%);'----Tryck kommando-- Start adr'; : GOSUB 1200