home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 25 / Commodore_Disc_25_19xx_-_de.d64 / cpu-trainer (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1990-01-01  |  4.6 KB  |  178 lines

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