home *** CD-ROM | disk | FTP | other *** search
- 10 rem cpu-trainer=c64
- 20 rem (p) commodore disc
- 40 rem (c) by alfons mittelmeyer
- 100 poke55,0:poke56,47
- 101 poke53280,12:poke53281,12:poke646,0:printchr$(147)chr$(142)
- 110 gosub1630:fori=12032to12162
- 115 reada:pokei,a:next
- 120 data 173,120,047,072,173,117
- 125 data 047,174,118,047,172,119
- 130 data 047,040,076,050,003,141
- 135 data 117,047,142,118,047,140
- 140 data 119,047,008,104,141,120
- 145 data 047,088,216,096,173,117
- 150 data 047,174,121,047,157,000
- 155 data 001,206,121,047,096,238
- 160 data 121,047,174,121,047,173
- 165 data 120,047,072,040,189,000
- 170 data 001,141,117,047,008,104
- 175 data 141,120,047,088,216,096
- 180 data 173,120,047,024,144,215
- 185 data 238,121,047,174,121,047
- 190 data 189,000,001,141,120,047
- 195 data 096,173,120,047,072,040
- 200 data 173,121,047,141,118,047
- 205 data 008,104,141,120,047,088
- 210 data 024,096,173,118,047,141
- 215 data 121,047,096,000,000,000
- 220 data 000,000,165,122,133,065
- 225 data 165,123,133,066,096
- 330 sys12049:poke12153,127
- 340 rem --------------------------
- 350 rem variablen
- 360 rem --------------------------
- 370 b$=chr$(32):b4$=b$+b$+b$+b$
- 380 a$(0)="aiiiiiiiib"
- 390 a$(1)="j00000000j"
- 400 a$(2)="diiiiieiif"
- 410 a$(3)="000000j00j"
- 420 a$(4)="00000agiif"
- 430 a$(5)="00000j000j"
- 440 a$(6)="00000diiic"
- 450 data 032,176,174,189,173
- 460 data 178,179,177,171,192,221
- 470 g$="":fori=0to10:reada:g$=g$+chr$(a):next
- 480 forj=0to6:z$="":fori=1to10
- 490 z$=z$+mid$(g$,((asc(mid$(a$(j),i,1))and15))+1,1):next:a$(j)=z$:nextj
- 500 b$(0)="binaer":b$(1)="hex"
- 510 b$(2)="dezimal"
- 520 c$="akku"+b4$+"x-register y-register"
- 530 d$="nv--dizc"+b4$+"stapel"
- 540 rem --------------------------
- 550 rem bildschirmaufbau
- 560 rem --------------------------
- 570 sys58692
- 580 gosub910:y=3:gosub900
- 590 o=10:p=1:z$=c$:gosub1581:x=7:y=2:gosub890
- 600 x=18:gosub890:x=29:gosub890
- 610 y=12:gosub900
- 620 o=8:p=10:z$=d$:gosub1581:x=7:y=11:gosub890
- 630 x=18:gosub890:o=0:p=18:z$="":gosub1581:gosub910
- 640 x$="":gosub911
- 650 rem --------------------------
- 660 rem eingabe
- 670 rem --------------------------
- 680 ifx$="brk"then570
- 681 o=0:p=19:z$=bl$:gosub1581
- 690 gosub1581:z$="? "+chr$(164):gosub1581
- 700 y$=" ":x=1
- 710 sys61762:a=peek(780):if(a<32anda<>13anda<>20)ora>95then710
- 720 ifa=13then800
- 730 ifa<>20theny$=y$+chr$(a):x=x+1:goto760
- 740 ifx=1then700
- 750 x=x-1:y$=left$(y$,x)
- 760 poke780,157:sys61906:poke780,a:sys61906
- 765 poke212,0:poke780,164:sys61906:goto710
- 770 rem --------------------------
- 780 rem eingabe bearbeiten
- 790 rem --------------------------
- 800 ify$<>" "thenx$=right$(y$,x-1)
- 810 poke780,13:sys61906
- 820 ifx$="brk"thensys58692
- 850 gosub1101:goto680
- 860 rem --------------------------
- 870 rem routinensammlung
- 880 rem --------------------------
- 890 fori=0to6:o=x:p=y+i:z$=a$(i):gosub1581:next:return
- 900 fori=0to2:o=0:p=y+i+i:z$=b$(i):gosub1581:next:return
- 910 poke780,61:fori=1to40:sys61906:next:return
- 911 sys12154
- 920 data 12149,7,2,12150,18,2
- 930 data 12151,29,2,12152,7,11
- 940 data 12153,18,11
- 950 ifx$="brk"thenreturn
- 960 forz=1to5:reada
- 970 readx:ready:a=peek(a)
- 980 o=x+1:p=y+1:z$="":gosub1581:s=a:n=128
- 990 fori=1to8:a$="0"
- 1000 ifs>=nthens=s-n:a$="1"
- 1010 o=x+i:p=y+1:z$=a$:gosub1581:n=n/2:next
- 1020 o=x+7:p=y+3:gosub1600:gosub1581
- 1030 o=x+6:p=y+5:z$=right$(" "+str$(a),3):gosub1581
- 1040 nextz:return
- 1050 x=-1:fori=1tom:reada$:reada:ifa$=y$theni=50
- 1060 next:return
- 1070 o=0:p=19:z$="fehler":gosub1581:poke198,0:wait198,1:poke198,0:return
- 1080 rem -------------------------
- 1090 rem ein-byte-befehle
- 1100 rem -------------------------
- 1101 sys12154
- 1110 data asl,10,brk,0,clc,24
- 1120 data cld,216,cli,88,clv,184
- 1130 data dex,202,dey,136,inx,232
- 1140 data iny,200,lsr,74,nop,234
- 1150 data rol,42,ror,106,sec,56
- 1160 data sed,248,sei,120,tax,170
- 1170 data tay,168,txa,138,tya,152
- 1180 iflen(x$)>4then1291
- 1190 y$=x$:m=21:gosub1050
- 1200 ifi=51thenpoke12046,a:poke12047,234:poke12048,234:sys12032:goto911
- 1210 rem -------------------------
- 1220 rem sonderbehandlung
- 1230 rem -------------------------
- 1240 m=6:gosub1050:ifi<>51then1070
- 1250 sysa:goto911
- 1260 data pha,12066,pla,12079,php,12104,plp,12110,tsx,12123,txs,12142
- 1270 rem -------------------------
- 1280 rem zwei-byte-befehle
- 1290 rem -------------------------
- 1291 sys12154
- 1300 data adc,105,and,41,cmp,201
- 1310 data cpx,224,cpy,192,eor,73
- 1320 data lda,169,ldx,162,ldy,160
- 1330 data ora,9,sbc,233
- 1340 ifleft$(right$(x$,4),2)<>"#$"then1421
- 1350 y$=left$(x$,3)
- 1360 m=11:gosub1050:ifi<>51then1070
- 1370 q$=right$(x$,2):gosub1587:x=q
- 1380 poke12046,a:poke12048,234
- 1390 poke12047,x:sys12032:goto911
- 1400 rem -------------------------
- 1410 rem drei-byte-befehle
- 1420 rem -------------------------
- 1421 sys12154
- 1430 data adc,109,and,45,asl,14
- 1440 data bit,44,cmp,205,dec,206
- 1450 data eor,77,inc,238,jsr,32
- 1460 data lda,173,ldx,174,ldy,172
- 1470 data lsr,78,ora,13,rol,46
- 1480 data ror,110,sbc,237,sta,141
- 1490 data stx,142,sty,140,cpx,224
- 1500 data cpy,192
- 1510 ifleft$(right$(x$,5),1)<>"$"then1070
- 1520 y$=left$(x$,3)
- 1530 m=22:gosub1050:ifi<>51then1070
- 1540 y$=right$(x$,4)
- 1550 q$=left$(y$,2):gosub1587:poke12048,q
- 1560 q$=right$(y$,2):gosub1587:poke12047,q
- 1570 poke12046,a
- 1580 sys12032:goto911
- 1581 poke783,peek(783)and254
- 1582 poke781,p:poke782,o:sys65520
- 1583 ifz$=""thenreturn
- 1584 forq=1tolen(z$):p$=mid$(z$,q,1)
- 1585 poke780,asc(p$):sys61906:next
- 1586 return
- 1587 q=asc(left$(q$,1))-48
- 1588 q=q+(q>9)*7
- 1589 r=asc(right$(q$,1))-48
- 1590 r=r+(r>9)*7:q=16*q+r:return
- 1600 q=int(a/16):r=a-16*q
- 1610 q=q-(q>9)*7:r=r-(r>9)*7
- 1620 z$=chr$(q+48)+chr$(r+48):return
- 1630 bl$=chr$(32):fori=1to4
- 1640 bl$=bl$+bl$:next:return
- 1650 rem =========================
- 1660 rem p r o g r a m m e n d e
- 1670 rem =========================
-