home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / c64 / programming / atmon.lzh / atmon / atmon.s111 (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1995-01-01  |  21.3 KB  |  550 lines

  1. 10 sys7*4096:.opt oo:*=$c000
  2. 15 ;****
  3. 20 time =54:vm =0
  4. 25 fl22 =$61:adr =fl22+2:inp =adr+2:nr =inp+1:len =nr+1:stbyt =len+1
  5. 30 int =$14:r4 =stbyt+1:r5 =r4+2:r6 =r5+2
  6. 35 ;****
  7. 40 chrget =$73:chr(NULL)t =$79:zeibas =$7a
  8. 45 kbsout =$ffd2:ready =$a474
  9. 50 vbrk =$0316:message =".":load =$ffd5:save =$ffd8:devadr =$ba:secadr =$b9
  10. 55 getstp =$ffe1:buffer =$0200
  11. 60 setfnpar =$ffbd
  12. 65 vnmi =$0318:nmicia =$dd00:vic =$d000
  13. 70 oldkey =$c5:keycod =$cb
  14. 71 listen =$ffb1:seclisten =$ff93:clrch =$ffcc:aktio =$9a:scrdev =3
  15. 75 ;**** screen
  16. 80 rev =$c7:ins =$d8:spalte =$d3:zeile =$d6
  17. 85 setcr =$ea13:hivi =648:colram =$d800
  18. 90 lenbuf =$c6:setzei =$e6ed:prhk =$e684:lenzei =$d5
  19. 95 col =$0287:getbuf =$e5b4
  20. 100 zeil =25;zeilen:slen =1000;laenge screen:zlen =40;zeichen/zeile
  21. 105 scrd =$e965:sctab =$d9
  22. 110 flcc =$cc:flc8 =$c8:flce =$ce:flcf =$cf:fld0 =$d0
  23. 115 fld4 =$d4:fld7 =$d7:fl292 =$0292:crsr =$d1:setscr =$fff0
  24. 120 ;****
  25. 125 meass =",":mehex =";":mebin ="+"
  26. 130 mereg ="-"
  27. 500 ;********
  28. 505 pla:pla:pla:pla:ldy #"c":bne call
  29. 510 nbrk pla:tay:pla:tax:pla:jsr streg:pla:sta st:pla:sec:sbc #2
  30. 511 sta pc:pla:sbc #0:sta pc+1:cli:cld
  31. 515 ldy #"b":call =*:.if vm-1 :.(NULL)t 519
  32. 517 lda #4:sta prtdev:lda #8:sta diskdev
  33. 519 tsx:stx sp:lda #$ff:sta tzeil
  34. 520 jsr crout:tya:jsr bsout:jsr vektoren
  35. 535 ldy #0:jsr strout;(NULL)
  36. 540 jsr br
  37. 545 mess jsr crout:mess1 jsr cmdoff:jsr meout
  38. 550 mess2 ldx #0:stx infl:a1 jsr monin:cmp #13
  39. 551 beq a2:sta buffer,x:inx:bne a1
  40. 552 a2 lda #0:sta buffer,x
  41. 553 ldy #1:ldx #$ff:stx infl:sty zeibas+1:stx zeibas
  42. 555 a3 jsr chrget:beq mess:cmp #message:beq a3
  43. 560 tax:and #$7f:ldy #anzbef-1:a4 cmp befehle,y:bne next
  44. 565 jsr execute:jmp mess
  45. 570 next dey:bpl a4:err lda #"?":jsr glout:jmp mess
  46. 581 execute cpy #prtbef:bcs exe1:cpx #$80:bcc exe1
  47. 582 lda prtdev:sta devadr:sta aktio:jsr listen
  48. 583 lda #$60:jsr seclisten
  49. 585 exe1 tya:asl:tax:lda adresse+1,x:pha:lda adresse,x
  50. 590 pha:cmdr rts
  51. 600 ;********
  52. 610 cmdoff lda aktio:cmp #scrdev:beq cmdr
  53. 620 jsr crout:jsr clrch:jmp crout
  54. 700 streg sta ac:sty yr:stx xr:rts
  55. 710 ldreg lda ac:ldy yr:ldx xr:rts
  56. 800 glout pha:tya:ldy zeibas:iny:sty spalte:tay:pla:jmp bsout
  57. 850 strout lda copy,y:beq cmdr:jsr bsout:iny:bne strout
  58. 1000 ;********
  59. 1005 vektoren lda #<nbrk:ldy #>nbrk
  60. 1010 sta vbrk:sty vbrk+1
  61. 1015 lda vnmi:sta vektab:lda vnmi+1:sta vektab+1:rts
  62. 1020 chregx ldy #7:crx lda fl22,y:tax:lda xreg,y:sta fl22,y
  63. 1025 txa:sta xreg,y:dey:bpl crx
  64. 1030 ldx spalte:lda tspal:sta spalte:stx tspal:rts
  65. 1035 ;****
  66. 1040 sbytout pha:jsr spout:pla:jmp bytout
  67. 1045 maout pha:jsr meout:pla:.byt $2c:sf22out lda #" ":jsr bsout
  68. 1050 f22out lda fl22:ldy fl22+1
  69. 1055 adrout pha:tya:jsr bytout:pla
  70. 1060 bytout pha:lsr:lsr:lsr:lsr:jsr nibout
  71. 1065 pla:and #15:nibout clc:adc #"0"
  72. 1070 cmp #":":bcc out:adc #6
  73. 1075 out jmp bsout
  74. 1080 adrin jsr bytin:tay
  75. 1085 bytin jsr nibin:asl:asl:asl:asl:sta inp:jsr nibin:ora inp:inr clc:rts
  76. 1090 nibin jsr chrget:beq inerr:and #$3f:cmp #"$":beq nibin
  77. 1095 sec:sbc #"0":bcs inrt
  78. 1100 sbc #198:inrt cmp #16:bcc inr
  79. 1105 inerr bit infl:bpl ings:jmp err
  80. 1107 ings txs:sec:rts
  81. 1110 gesadr ldx adr:ldy adr+1:inx:bne gsa1:iny:gsa1 stx zeibas:sty zeibas+1
  82. 1115 tsx:jsr getadr:clc:ldy #1:lda (adr),y:rts
  83. 1120 getadr jsr adrin:sta fl22:sty fl22+1:rts
  84. 1125 get12 jsr getadr:tax:jsr getad:bcc get12a:txa:bcs get2a
  85. 1130 get2 jsr getadr:jsr adrin
  86. 1135 get2a sta int:sty int+1:get12a rts
  87. 1140 weit jsr chrget:php:pha:lda zeibas:bne gar1:dec zeibas+1
  88. 1145 gar1 dec zeibas:pla:plp:beq gar:clc:rts
  89. 1150 getad jsr weit:bcs gar
  90. 1155 jsr adrin:sta int:sty int+1:clc:.byt $24:gar sec:rts
  91. 1160 masout jsr maout
  92. 1165 spout lda #" ":.byt $2c
  93. 1170 crout lda #13:.byt $2c
  94. 1175 meout lda #message:.byt $2c
  95. 1180 kmout lda #",":jmp bsout
  96. 1185 in2a inc adr:bne in22:inc adr+1
  97. 1190 in22 inc fl22:bne comp:inc fl22+1:beq gar
  98. 1195 comp lda fl22+1:cmp int+1:bne cor:lda fl22:cmp int:cor rts
  99. 1200 linefeed lda #0:sta fld4:sta spalte:rts
  100. 1205 linend pla:pla:jsr linefeed:jmp mess1
  101. 1210 getbrk jsr getstp:bne crout:gsar pla:pla:rts
  102. 1295 ;**** arithmetik
  103. 1297 asdd tay:jsr crout:tya
  104. 1300 add ldy #0:adday clc:adc fl22:sta fl22:tya:adc fl22+1:sta fl22+1:tay
  105. 1305 lda fl22:rts
  106. 1310 sbb pha:dec zeile:jsr scrd;$e965:lda hivi:ora #$80:sta sctab;$d9
  107. 1315 lda #0:tax:tay:clc:jsr setscr:pla
  108. 1320 sub ldy #0:subay sta inp:lda fl22:sec:sbc inp:sta fl22
  109. 1325 sty inp:lda fl22+1:sbc inp:sta fl22+1:tay:lda fl22:sub1 rts
  110. 1330 mult ldy #0:multay sta inp:lda fl22:sta adr:lda fl22+1:sta adr+1
  111. 1335 lda #0:sta fl22:sta fl22+1
  112. 1340 mul1 tya:lsr:tay:ror inp:ora inp:bcs mul2:beq sub1
  113. 1345 bcc mul3
  114. 1350 mul2 lda fl22:clc:adc adr:sta fl22:lda fl22+1:adc adr+1:sta fl22+1
  115. 1355 mul3 asl adr:rol adr+1:jmp mul1
  116. 1360 decdiv lda dechi,x:tay:lda declo,x
  117. 1365 div sty adr+1:sta adr:stx len:ldx #1:lda #0:sta int:sta int+1
  118. 1370 div1 lda adr:asl:tay:lda adr+1:rol:bcs div3
  119. 1375 cmp fl22+1:bcc div2:bne div3
  120. 1380 cpy fl22:bcc div2:bne div3
  121. 1385 div2 sta adr+1:sty adr:inx:bne div1
  122. 1390 div3 dex:bpl div6:ldx len:ldy int+1:lda int:rts
  123. 1395 div6 lda fl22+1:cmp adr+1:bcc div4:bne div5
  124. 1400 lda fl22:cmp adr:bcc div4
  125. 1405 div5 lda fl22:sec:sbc adr:sta fl22:lda fl22+1:sbc adr+1:sta fl22+1
  126. 1410 sec:.byt $24:div4 clc:rol int:rol int+1
  127. 1415 lsr adr+1:ror adr:jmp div3
  128. 1420 ;****
  129. 1425 decout lda fl22:pha:lda fl22+1:pha
  130. 1430 ldx #3:do2 jsr decdiv:bne do1:dex:bpl do2:bmi do3
  131. 1435 do4 jsr decdiv
  132. 1440 do1 clc:adc #"0":jsr bsout:dex:bpl do4
  133. 1445 do3 lda fl22:clc:adc #"0":jsr bsout
  134. 1450 pla:sta fl22+1:pla:sta fl22:rts
  135. 1455 ;:gadr inc len:clc:ror stbyt
  136. 1460 jsr gbyt:sta buffer+4:jsr weit:bcs cart:cmp #",":beq cart:cmp #")"
  137. 1465 beq cart:cmp #"?":beq cart:inc len:lda stbyt:ora #$80:sta stbyt
  138. 1470 gbyt jsr gnib:asl:asl:asl:asl:sta inp:jsr gnib:ora inp:sta buffer+3:rts
  139. 1475 gnib jsr weit:cmp #"*":bne gni1:jsr chrget:lda #0:sec:bcs gni2
  140. 1480 gni1 jsr nibin:clc:gni2 rol buffer:rts
  141. 1485 cadr ldy buffer:ldx #0:jsr cbyt:bne cart:inx:dec len:beq cart
  142. 1490 cbyt lda buffer+3,x:eor adr,x
  143. 1495 sta inp:tya:lsr:tay:bcs cni1:lda inp:and #$0f:bne cart
  144. 1500 cni1 tya:lsr:tay:bcs ca1:lda inp:and #$f0:cart rts:ca1 lda #0:rts
  145. 2000 ;******** x = exit
  146. 2005 bx jmp ($a002)
  147. 2500 ;******** i =i/o setzen
  148. 2510 bi jsr bytin:sta diskdev
  149. 2520 jsr bytin:sta prtdev:rts
  150. 3000 ;******** g = goto
  151. 3005 bg jsr getad:bcs b(NULL)k:lda int:sta pc:lda int+1:sta pc+1
  152. 3010 b(NULL)k jsr crout:bg1 ldx sp:txs
  153. 3012 pla:pla:lda #>ready-1:pha:lda #<ready-1:pha
  154. 3015 lda st:pha
  155. 3020 jsr ldreg:plp:jmp (pc)
  156. 4000 ;******** s = save
  157. 4005 bs jsr getlsp:jsr get2:tax:lda #fl22:jmp save
  158. 4010 ;******** l = load
  159. 4015 bl jsr getlsp:jsr getad:tax:lda #0:bcc bl1:lda #1
  160. 4020 bl1 sta secadr:lda #0:jmp load:lser jmp err
  161. 4025 getlsp jsr chrget:cmp #34:bne lser
  162. 4030 ldy #1:glsp2 lda (zeibas),y:beq lser
  163. 4035 cmp #34:beq glsp1:iny:bne glsp2
  164. 4040 glsp1 dey
  165. 4045 tya:ldx zeibas:ldy zeibas+1:inx:bne glsp3:iny:glsp3 jsr setfnpar
  166. 4050 tay:iny:tya:clc:adc zeibas:sta zeibas:bcc glsp4:inc zeibas+1
  167. 4055 glsp4 lda diskdev:sta devadr:rts
  168. 6000 ;******** r = register
  169. 6005 br ldy #pbr:jsr strout:.goto 6010
  170. 6006 strout lda copy,y:beq br2;cmdr:jsr bsout:iny:bne strout
  171. 6010 br2 jsr meout:lda #mereg:jsr bsout:lda pc:ldy pc+1:jsr adrout
  172. 6015 lda ac:jsr sbytout:lda xr
  173. 6020 jsr sbytout:lda yr:jsr sbytout
  174. 6025 lda sp:jsr sbytout:jsr spout:lda st:jmp bin8out
  175. 7000 ;******** gr = get register
  176. 7005 bgr jsr adrin:sta pc:sty pc+1:jsr bytin:sta ac
  177. 7010 jsr bytin:sta xr:jsr bytin:sta yr:jsr bytin:sta sp:tax:txs
  178. 7015 jsr binin:ora #$20:sta st:jsr linefeed:jsr br2:jmp mess
  179. 8000 ;******** m = memory-dump
  180. 8005 bm jsr get12
  181. 8010 bm1 jsr getbrk:jsr zeim:bcc bm1:jmp linend
  182. 8015 zeim lda #mehex:jsr maout
  183. 8020 ldy #0:bm2 lda (fl22),y:jsr sbytout:iny:cpy #8:bne bm2:jsr spout
  184. 8030 ldy #0:bm3 lda (fl22),y
  185. 8035 tax:and #127:cmp #32:bcs ao1:lda #17:sta rev
  186. 8040 txa:clc:adc #64:tax
  187. 8045 ao1 txa:jsr bsout:lda #0:sta rev
  188. 8080 iny:cpy #8:bne bm3
  189. 8085 acc tya:jsr add:bcs bm4:jsr comp:jsr linefeed
  190. 8090 bm4 rts
  191. 9000 ;******** gm = get memory
  192. 9005 bgm jsr getadr:jsr weit:bcs bm4
  193. 9010 bgm2 ldy #0:bgm1 jsr bytin:sta (fl22),y:iny
  194. 9015 cpy #8:bne bgm1:jsr linefeed:jsr zeim
  195. 9020 ldy #mehex:bne getend
  196. 10000 ;******** b = binaer (sprites)
  197. 10005 bb jsr get12
  198. 10010 bb1 jsr getbrk:jsr zeib:bcc bb1:jmp linend
  199. 10015 zeib lda #mebin:jsr masout
  200. 10020 ldy #0:bb2 ldx #8
  201. 10025 lda (fl22),y:bb3 asl:pha:bcc bbleer:lda #"*":.byt $2c
  202. 10030 bbleer lda #".":jsr bsout:pla:dex:bne bb3:iny:cpy #3:bne bb2
  203. 10035 beq acc
  204. 11000 ;******** gb = get binaer
  205. 11005 bgb jsr getadr:jsr weit:bcc bgb2:rts
  206. 11010 bgb2 ldy #0:bgb3 ldx #8:lda #0:bgb4 pha:jsr chrget:bne bgb5:jmp err
  207. 11015 bgb5 cmp #".":pla:rol:dex:bne bgb4:eor #$ff:sta (fl22),y
  208. 11020 iny:cpy #3:bne bgb3:jsr linefeed:jsr zeib:ldy #mebin
  209. 11025 getend jsr crout:jsr meout:tya:jsr bsout:jsr f22out:jsr spout
  210. 11030 pla:pla:jmp mess2
  211. 12000 ;******** d = disassembler
  212. 12005 bd jsr get12
  213. 12010 bd1 jsr getbrk:jsr zeid:bcc bd1:jmp linend
  214. 12015 getpar ldy #0:lda (fl22),y:tax:and #$1f:cmp #$10:bne bda1
  215. 12020 bdbranch txa:lsr:lsr:lsr:lsr:lsr:sta nr:iny:lda (fl22),y:php
  216. 12025 ldx fl22+1:clc:adc fl22:bcc bdb1:inx:bdb1 clc:adc #2:bcc bdb1a:inx
  217. 12030 bdb1a plp:bpl bdb2:dex
  218. 12035 bdb2 sta adr:stx adr+1:lda #2:sta len:lda #6:sta stbyt:rts
  219. 12040 bda1 txa:ldx #0:bd1a cmp codtex,x:bne bd1b
  220. 12045 txa:clc:adc #8:bd4b sta nr:lda #1:sta len:rts
  221. 12050 bd1b inx:cpx #37-8:bne bd1a
  222. 12055 ldy #33:sty nr
  223. 12060 ldx #0:bd2b ldy #0:bd2a cmp codtab,x:beq bd2out
  224. 12065 inx:iny:cpy #5:bne bd2a:inc nr:ldy nr
  225. 12070 cpy #45:bne bd2b
  226. 12075 ldx #0:bd3b ldy #0:bd3a cmp codlon,x:beq bd2out
  227. 12080 inx:iny:cpy #8:bne bd3a:inc nr:ldy nr
  228. 12085 cpy #54:bne bd3b:beq bd4
  229. 12090 bd2out lda stb,y:sta stbyt:tax:ldy #1:lda (fl22),y
  230. 12095 sta adr:txa:and #4:beq bd3:iny
  231. 12100 lda (fl22),y:sta adr+1:bd3 iny:sty len:rts
  232. 12105 bd4 ldx #4:bd4a cmp andc,x:beq bd40:dex:bpl bd4a:lda #56:bne bd4b
  233. 12110 bd40 lda andt,x:sta nr:lda anda,x:tay:bne bd2out
  234. 12115 zeid lda #meass:jsr masout:jsr getpar
  235. 12120 lda nr:asl:clc:adc nr:tay:ldx #3
  236. 12125 zd1 lda text,y:jsr bsout:iny:dex:bne zd1:jsr spout:ldy len:dey:beq zdend
  237. 12130 lda stbyt:and #3:tay:lda vorsp,y:beq zd2:jsr bsout
  238. 12135 zd2 lda #"$":jsr bsout
  239. 12140 lda adr:ldy adr+1:lsr stbyt:lsr stbyt:lsr stbyt:bcs zd3:jsr bytout
  240. 12145 jmp zd4:zd3 jsr adrout
  241. 12150 zd4 lda stbyt:beq zdend:asl:clc:adc stbyt:tay:ldx #3
  242. 12155 zd41 lda nahsp-3,y:jsr bsout:iny:dex:bne zd41
  243. 12160 zdend ldy #10:lda #" ":zde1 jsr bsout:dey:bne zde1
  244. 12170 ldy len:jmp acc
  245. 13000 ;******** bgd = assembler
  246. 13005 ba jsr getadr:bgd0 ldy #meass:jmp getend
  247. 13010 bgd jsr getadr:jsr weit:bcc bgd2:rts
  248. 13015 bgd2 ldx #0:stx nr:bgd3 ldy #1
  249. 13020 bgd4 lda (zeibas),y:cmp text,x:bne bgd5:inx:iny:cpy #4:bne bgd4:beq bgd6
  250. 13025 bgd5 inc nr:lda nr:cmp #56:beq asse:asl:adc nr:tax:bne bgd3
  251. 13030 bgd7 jmp err
  252. 13035 bgd6 clc:lda #4:adc zeibas:sta zeibas:bcc bgd6a:inc zeibas+1
  253. 13040 bgd6a jsr getasc:lda nr:cmp #8:bcs bgd8
  254. 13045 lda stbyt:cmp #2:bne bgd7:lda adr:sec
  255. 13050 sbc fl22:tay:lda adr+1:sbc fl22+1:tax
  256. 13051 tya:sec:sbc #2:tay:bcs bgdd1:dex:bgdd1 cpx #0:beq bgdd2:inx:bne bgd7
  257. 13052 tya:bpl bgd7:bmi bgdd3:bgdd2 tya:bmi bgd7
  258. 13058 bgdd3 ldy #1:sta (fl22),y
  259. 13059 lda nr:asl:asl:asl:asl:asl:ora #$10
  260. 13060 assend ldy #0:sta (fl22),y:asse jsr linefeed
  261. 13062 jsr zeid:ldy #meass:jmp getend
  262. 13065 bgd8 cmp #37:bcs bgd9:ldy len:dey:bne bgd8e:tax:ldy #0
  263. 13070 lda codtex-8,x:jmp assend
  264. 13075 bgd8e cmp #33:bcs bgd9:ba1e jmp err
  265. 13080 bgd9 ldy len:dey:beq ba1e:cmp #45:bcs bgda
  266. 13085 ldy stbyt:cpy #5:bcs bgnf:sec:sbc #33
  267. 13090 sta nr:asl:asl:adc nr:adc stbyt:tax:lda codtab,x:ass1 beq ba1e:sta nr
  268. 13095 ldy len:dey:bgd9a lda adr-1,y:sta (fl22),y:dey:bne bgd9a:lda nr:bne assend
  269. 13100 bgda cmp #54:bcs bgnf:ldy stbyt:cpy #8:bcs bgnf:sec:sbc #45
  270. 13105 asl:asl:asl:adc stbyt:tax:lda codlon,x:jmp ass1
  271. 13110 bgnf lda nr:cmp #56:beq assend
  272. 13115 ldx #4:bgnf1 lda nr:cmp andt,x:bne bgnf2:lda stbyt:cmp anda,x:bne bgnf2
  273. 13120 lda andc,x:bne ass1
  274. 13125 bgnf2 dex:bpl bgnf1:jmp err
  275. 13130 getauf ldy #0:sty stbyt:iny:sty len:jsr chr(NULL)t:beq gau1
  276. 13135 ldy #0:cmp #"#":beq ga2:iny:cmp #"(":beq ga2
  277. 13140 iny:jsr weit+3:ga2 tya:lsr:ror stbyt:lsr:ror stbyt
  278. 13145 clc:.byt $24:gau1 sec:rts
  279. 13150 getasc jsr getauf:bcs ga1a
  280. 13155 ga3 jsr bytin:sta adr+1:inc len:jsr weit:bcs ga4:cmp #")":beq ga4
  281. 13160 cmp #",":beq ga4:cmp #"?":beq ga4
  282. 13165 jsr bytin:sta adr:sec:ror stbyt:inc len:bne getzu
  283. 13170 ga1a beq ga1:ga4 lda adr+1:sta adr:clc:ror stbyt
  284. 13175 getzu jsr weit:ldx #0:bcs ga7n0:lda stbyt
  285. 13180 and #96:cmp #32:bne ga7kl:ldx #3:ga7kl stx inp
  286. 13185 ga7k1 jsr chrget:beq ga7b:cmp #"?":beq ga7b:cmp #",":bne ga7k1:inc inp
  287. 13190 jsr chrget:cmp #"x":beq ga7b:cmp #"y":beq ga7k2:gaerr jmp err
  288. 13195 ga7k2 ldx inp:inx
  289. 13200 ga7n0 stx inp
  290. 13205 ga7b lda stbyt:lsr inp:ror:lsr inp:ror:lsr inp:ror:lsr:lsr:sta stbyt
  291. 13210 ga1 ldx #9:lda stbyt:gaa cmp stb,x:beq gaa1:dex:bpl gaa:bmi gaerr
  292. 13215 gaa1 stx stbyt:rts
  293. 14000 ;******** o = occupy
  294. 14005 bo jsr get2:jsr bytin:sta inp
  295. 14010 ldy #0:bo1 lda inp:sta (fl22),y
  296. 14015 jsr in22:bcc bo1:rts
  297. 15000 ;******** c = compare
  298. 15005 bc jsr get2:jsr adrin:sta adr:sty adr+1:jsr crout
  299. 15010 bc1 ldy #0:lda (fl22),y:cmp (adr),y
  300. 15015 beq bc2:jsr sf22out:bc2 jsr getstp:beq bcrt:jsr in2a
  301. 15020 bcc bc1:bcrt rts
  302. 16000 ;******** t = transfer
  303. 16005 bt jsr get2:jsr adrin:sta r5:sty r5+1
  304. 16006 cpy fl22+1:bcc bt0:bne bthv:cmp fl22:bcs bthv
  305. 16010 bt0 ldy #0:bt1 lda (fl22),y:sta (r5),y
  306. 16015 inc r5:bne bt2:inc r5+1
  307. 16020 bt2 jsr in22:bcc bt1:beq bt1:rts
  308. 16025 bthv sec:sbc fl22:tax:tya:sbc fl22+1:tay:txa
  309. 16030 clc:adc int:sta r5:tya:adc int+1:sta r5+1
  310. 16040 ldy #0:bth3 lda (int),y:sta (r5),y
  311. 16045 lda r5:bne bth1:dec r5+1:bth1 dec r5
  312. 16046 lda int:bne bth4:dec int+1:bth4 dec int
  313. 16060 jsr comp:bcc bth3:beq bth3:rts
  314. 17000 ;******** bu = adressen umrechnen
  315. 17005 bu jsr adrin:sta r4:sty r4+1:jsr adrin:sta r5:sty r5+1:jsr getadr
  316. 17006 lda r4:ldy r4+1:jsr subay
  317. 17009 sta r6:sty r6+1:jsr get2
  318. 17010 bu1 jsr getpar:lda len:cmp #3:bne bu2
  319. 17015 ldx adr+1:lda adr
  320. 17020 cpx r4+1:bcc bu2:bne bu3:cmp r4:bcc bu2
  321. 17025 bu3 cpx r5+1:bcc bu4:bne bu2:cmp r5:bcc bu4:bne bu2
  322. 17030 bu4 ldy #1:clc:adc r6:sta (fl22),y:iny:txa:adc r6+1:sta (fl22),y
  323. 17035 bu2 lda len:jsr add:bcs bu11:jsr comp:bcc bu1:beq bu1:bu11 rts
  324. 18000 ;******** f = find
  325. 18005 bf ldy #1:lda (zeibas),y:pha:cmp #" ":beq bf1a:jsr chrget
  326. 18010 bf1a jsr get2:pla:cmp #" ":bne bf1
  327. 18015 jsr weit:bcs bfend:ldy #0:cmp #34:bne bfn1:iny:iny
  328. 18020 bfn2 lda (zeibas),y:beq bfn3:cmp #34:beq bfn3
  329. 18025 sta buffer-2,y:iny:bne bfn2
  330. 18030 bfn3 dey:dey:beq bfend:bne bfn1a
  331. 18035 bfn1 jsr weit:bcs bfn1a:jsr bytin:sta buffer,y
  332. 18040 iny:bne bfn1:bfn1a dey:sty len:jsr crout
  333. 18045 bfn4 ldy len:bfn5 lda buffer,y:cmp (fl22),y:bne bfn6:dey:bpl bfn5
  334. 18050 jsr sf22out:bfn6 jsr getstp:beq bfend:jsr in22:bcc bfn4:bfend rts
  335. 18055 bf1 cmp #"r":bne bf1b
  336. 18060 lda #6:sta buffer+2:lda #2:sta buffer+1:lda #%11111111:sta buffer
  337. 18065 bne bfa1
  338. 18070 bf1b jsr chrget:jsr getauf:bcs bfa0
  339. 18075 lda #0:sta buffer:sta buffer+2:jsr weit:bcs bfa0:jsr gadr:jsr getzu
  340. 18080 sta buffer+2
  341. 18085 bfa0 lda len:sta buffer+1
  342. 18090 bfa1 jsr getpar:lda len:pha:cmp buffer+1:bne bfa1n:dec len:beq bfa1ok
  343. 18095 lda stbyt:cmp buffer+2:bne bfa1n
  344. 18100 jsr cadr:bne bfa1n
  345. 18105 bfa1ok jsr crout:pla:jsr zeid:jmp bfa2
  346. 18110 bfa1n pla:jsr add:bcs bfa3:bfa2 jsr getstp:beq bfa3
  347. 18115 jsr comp:bcc bfa1:beq bfa1:bfa3 rts
  348. 19000 ;******** w = trace-walk
  349. 19010 bw jsr getad:bcs bwok:lda int:sta pc:lda int+1:sta pc+1
  350. 19020 bwok lda #127:sta nmicia+13
  351. 19030 lda vic+17:sta vreg:lda #<nnmi:sta vnmi:lda #>nnmi:sta vnmi+1
  352. 19040 bne bww2
  353. 19050 ;****
  354. 19060 nnmi pha:lda nmicia+13:bmi nmiok:pla:rti
  355. 19070 nmiok pla:nmiok1 jsr streg:lda vreg:sta vic+17
  356. 19080 pla:sta st:pla:sta pc:pla:sta pc+1:tsx:stx sp:cld:cli
  357. 19090 bww2 jsr chregx:bww3 lda #0:sta tzeil
  358. 19100 jsr br:jsr crout
  359. 19110 lda pc:sta fl22:lda pc+1:sta fl22+1:jsr zeid:lda #$ff:sta tzeil
  360. 19120 ;****
  361. 19130 bww1 lda keycod:cmp #64:beq bww1:cmp #63;run/stop:bne bwx
  362. 19140 ;** run/stop
  363. 19150 lda vektab:sta vnmi:lda vektab+1:sta vnmi+1:lda #127:sta nmicia+13
  364. 19160 jmp mess
  365. 19170 ;**  j=jump
  366. 19180 bwx cmp #34;j(sr):bne bwj:cmp oldkey:beq bww1
  367. 19190 ldy #1:lda nr:cmp #54;jsr:bne bwx0
  368. 19191 lda fl22+1:pha:lda fl22:pha:lda pc:sta fl22:lda pc+1:sta fl22+1
  369. 19192 lda (fl22),y:sta pc:iny:lda (fl22),y
  370. 19193 sta pc+1
  371. 19210 jmp bwx1
  372. 19220 bwx0 tsx:inc $0101,x:bne bwx1:inc $0102,x
  373. 19230 bwx1 jsr chregx:jsr bwx2:php:jmp nmiok1
  374. 19250 ;**** f-tasten
  375. 19260 bwj cmp #5;f3:beq bwok1:cmp #6;f5:bne bwf5
  376. 19270 ldx #0:ldy #$80:bwpause dex:bne bwpause:dey:bne bwpause:beq bwok1
  377. 19280 bwf5 cmp #3;f7:beq bwf7:cmp #4;f1:beq bwf1:bww1a jmp bww1
  378. 19290 bwf1 cmp oldkey:beq bww1a:lda fl22:ldy fl22+1:sta pc:sty pc+1:jmp bww3
  379. 19300 bwf7 lda keycod:cmp #64:bne bwf7
  380. 19310 ;****
  381. 19315 bwok1 lda #0:sta nmicia+5:lda #time:sta nmicia+4:lda #24:sta nmicia+14
  382. 19330 lda nmicia+13:lda #%10000001:sta nmicia+13
  383. 19331 lda vic+17:sta vreg:lda #11:sta vic+17
  384. 19332 bwx4 lda vic+18:bne bwx4:bit vic+17:bmi bwx4
  385. 19339 sei:jsr chregx:inc nmicia+14
  386. 19340 ldx sp:txs:bwx2 lda pc+1:pha:lda pc:pha:lda st:pha:jsr ldreg
  387. 19350 rti
  388. 30000 ;******** bdec = dec > hex
  389. 30005 bdec lda #0:sta fl22:sta fl22+1
  390. 30010 bde1 jsr chrget:bcs bdend:sec:sbc #"0":pha
  391. 30015 lda #10:jsr mult:pla:clc:adc fl22:sta fl22:bcc bde1:inc fl22+1:jmp bde1
  392. 30020 ;******** bbin = bin > hex
  393. 30025 bbin jsr binin:jmp bdend:binin lda #0:sta fl22:sta fl22+1
  394. 30030 bbi1 jsr chrget:bcs bbind:sec:sbc #"0":cmp #2:bcs bbind
  395. 30035 lsr:rol fl22:rol fl22+1:bcc bbi1:jmp err:bbind lda fl22:rts
  396. 30040 ;******** bhex = hex > dec
  397. 30045 bhex lda #0:sta fl22+1:jsr bytin:sta fl22:jsr weit:bcs bdend
  398. 30050 lda fl22:sta fl22+1:jsr bytin:sta fl22
  399. 30055 bdend jsr linefeed:lda #"$":jsr bsout
  400. 30060 jsr f22out:jsr kmout:jsr decout:jsr kmout
  401. 30065 binout ldx #16:lda fl22+1:bne bo4:lda fl22:bin8out sta fl22+1:ldx #8
  402. 30070 bo4 lda #%11000;"0"/2
  403. 30075 asl fl22:rol fl22+1:rol:jsr bsout:dex:bne bo4:rts
  404. 30077 ;********
  405. 30080 bfz jsr getadr:jsr chrget:ldx #3:bfz1 cmp bft,x:beq bfz2
  406. 30085 dex:bpl bfz1:bfzerr jmp err
  407. 30090 bfz2 jsr bfz3:jmp f22out
  408. 29839 bfz3 jsr adrin:pha:lda #"=":jsr glout:pla:cpx #0:bne bfz4
  409. 30100 jmp adday:bfz4 dex:bne bfz5:jmp subay
  410. 30105 bfz5 dex:bne bfz6:jmp multay
  411. 30110 bfz6 cmp #0:bne bfz7:cpy #0:beq bfzerr
  412. 30115 bfz7 jsr div:jsr adrout:jmp kmout
  413. 40000 ;******** monin = editor
  414. 40005 e0 jsr scrout:e1 lda lenbuf:sta flcc:sta fl292:beq e1
  415. 40010 lda flcf:beq e2:lda flce:ldx col:ldy #0:sty flcf:jsr setcr
  416. 40015 e2 jsr getbuf:cmp #13:bne e0
  417. 40020 ldy lenzei:sty fld0:e3 lda (crsr),y:cmp #" ":bne e4:dey:bne e3
  418. 40025 e4 iny:sty flc8:ldy #0:sty fl292:sty spalte:sty fld4
  419. 40030 ldx zeile:jsr setzei;$e6ed
  420. 40035 jmp s1
  421. 41000 ;****
  422. 41005 monin tya:pha:txa:pha:lda fld0:beq e1
  423. 41010 s1 ldy spalte:s2 lda (crsr),y:sta fld7
  424. 41015 and #$3f:asl fld7:bit fld7:bpl s3
  425. 41020 ora #$80:s3 bcc s4:ldx fld4:bne s5:s4 bvs s5:ora #$40
  426. 41025 s5 inc spalte:jsr prhk;$e684
  427. 41030 cpy flc8:bne s6:lda #0:sta fld0:lda #13:s6 sta fld7:pla:tax:pla:tay
  428. 41035 lda fld7:rts
  429. 42000 ;****
  430. 42005 scrout sta fld7:cmp #"":bne sc1
  431. 42010 ldx zeile:cpx #zeil-1:bne sc1
  432. 42015 lda hivi:clc:adc #>slen-zlen:sta adr+1
  433. 42020 lda #<slen-zlen:sta adr:sd1 ldy #0
  434. 42025 lda (adr),y:cmp #message:beq sd2:scca lda adr:sec:sbc #zlen
  435. 42030 sta adr:bcs sd3:dec adr+1:sd3 dex:bpl sd1:jmp crout
  436. 42035 sd2 jsr gesadr:bcs scca
  437. 42037 cmp #mehex:bne sd2a:lda #8:jsr asdd:jmp zeim
  438. 42040 sd2a cmp #mebin:bne sd2b:lda #3:jsr asdd:jmp zeib
  439. 42045 sd2b cmp #meass:bne scca:jsr getpar:lda len:jsr asdd:jmp zeid
  440. 43000 ;**
  441. 43005 sc1 lda fld7:cmp #"[145]":bne sc2
  442. 43010 ldx zeile:bne sc2
  443. 43015 lda hivi:sta adr+1:lda #0:sta adr:ldx #zeil
  444. 43020 su1 ldy #0:lda (adr),y:cmp #message:beq su2:su1a lda adr:clc:adc #zlen
  445. 43025 sta adr:bcc su3:inc adr+1:su3 dex:bne su1:rts
  446. 43030 su2 jsr gesadr:bcs su1a
  447. 43035 cmp #mehex:bne su2a:lda #8:jsr sbb:jmp zeim
  448. 43040 su2a cmp #mebin:bne su2b:lda #3:jsr sbb:jmp zeib
  449. 43045 su2b cmp #meass:bne su1a:lda #12:jsr sub:lda #12:sta inp
  450. 43050 su5 jsr getpar:lda inp:sec:sbc len:sta inp:beq su4:bcc su4
  451. 43055 lda len:jsr add:jmp su5
  452. 43060 su4 lda #0:jsr sbb:jmp zeid
  453. 43065 sc2 lda fld7:jmp bsout
  454. 44000 ;********
  455. 44005 bsout pha:lda tzeil:cmp #$ff:bne tout:pla:jmp kbsout
  456. 44010 tout txa:pha:tya:pha:tsx:lda $0100+3,x:ldy tzeil
  457. 44015 cmp #13:beq bscr:and #$3f:tax:lda crsr:pha:lda crsr+1:pha
  458. 44020 sei:lda hivi:sta crsr+1:lda #0:sta crsr:txa:sta (crsr),y
  459. 44025 pla:sta crsr+1:pla:sta crsr:cli
  460. 44030 lda col:sta colram,y:iny:bscr2 sty tzeil:pla:tay:pla:tax:pla:rts
  461. 44035 bscr lda #0:bscr1 clc:adc #zlen:cmp tzeil:bcc bscr1
  462. 44040 beq bscr1:tay:bne bscr2
  463. 50000 .if vm-1 :.goto 60000
  464. 50001 ;********
  465. 50002 diskdev =$02a5:prtdev =diskdev+1
  466. 50005 ac =prtdev+1:xr =ac+1:yr =xr+1
  467. 50010 st =yr+1:sp =st+1:pc =sp+1
  468. 50015 vektab =pc+2:tzeil =vektab+2:tspal =tzeil+1:vreg =tspal+1
  469. 50020 infl =vreg+1:psp =infl+2
  470. 50025 xreg =psp+1
  471. 50100 .goto60030
  472. 60000 ;********
  473. 60005 ac .byt 0:xr .byt 0:yr .byt 0
  474. 60010 st .byt $20:sp .byt 0:pc .byt 0,0
  475. 60015 vektab .byt $47,$fe:tzeil .byt $ff:tspal .byt 0:vreg .byt 0
  476. 60020 psp .byt 0:infl .byt $ff
  477. 60025 xreg .byt 0,0,0,0,0,0,0,0
  478. 60027 diskdev .byt 8:prtdev .byt 4
  479. 60030 ;****
  480. 60035 copy .asc "*(c)@ass":.byt 0
  481. 60040 brstr .byt 13:.asc "   pc  ac xr yr sp nv1bdizc":.byt 13,0
  482. 60041 pbr =brstr-copy
  483. 60045 ;****
  484. 60050 befehle .byt "m","b","d","c","f"
  485. 60051 .byt "x","g","r",mereg
  486. 60055 .byt mehex,mebin
  487. 60060 .byt "a",meass
  488. 60065 .asc "otls#%$?wui"
  489. 60070 anzbef =24:prtbef =5
  490. 60074 adresse .byt <bm-1,>bm-1,<bb-1,>bb-1,<bd-1,>bd-1
  491. 60075 .byt <bc-1,>bc-1,<bf-1,>bf-1
  492. 60076 .byt <bx-1,>bx-1,<bg-1,>bg-1
  493. 60080 .byt <br-1,>br-1,<bgr-1,>bgr-1
  494. 60085 .byt <bgm-1,>bgm-1
  495. 60090 .byt <bgb-1,>bgb-1
  496. 60095 .byt <ba-1,>ba-1
  497. 60100 .byt <bgd-1,>bgd-1
  498. 60105 .byt <bo-1,>bo-1
  499. 60110 .byt <bt-1,>bt-1
  500. 60115 .byt <bl-1,>bl-1,<bs-1,>bs-1
  501. 60120 .byt <bdec-1,>bdec-1,<bbin-1,>bbin-1
  502. 60125 .byt <bhex-1,>bhex-1,<bfz-1,>bfz-1
  503. 60130 .byt <bw-1,>bw-1
  504. 60135 .byt <bu-1,>bu-1,<bi-1,>bi-1
  505. 60999 ;****
  506. 61000 text .asc "bplbmibvcbvsbccbcsbnebeq";0-7
  507. 61005 .asc "brkclccldcliclvdexdeyinxiny";8-16
  508. 61010 .asc "nopphaphpplaplprtirtssecsedsei";17-26
  509. 61015 .asc "taxtaytsxtxatxstya";27-32
  510. 61020 .asc "asllsrrolrorbitcpxcpydecinc";33-41
  511. 61025 .asc "ldystxstyadcandcmpeorldaldxorasbcstajsrjmp???";42-56
  512. 61030 codtex .byt $00,$18,$d8,$58
  513. 61035 .byt $b8,$ca,$88,$e8,$c8,$ea
  514. 61040 .byt $48,$08,$68,$28,$40,$60
  515. 61045 .byt $38,$f8,$78,$aa,$a8,$ba
  516. 61050 .byt $8a,$9a,$98,$0a,$4a,$2a,$6a
  517. 61055 codtab =*
  518. 61060 .byt $00,$06,$0e,$16,$1e
  519. 61065 .byt $00,$46,$4e,$56,$5e
  520. 61070 .byt $00,$26,$2e,$36,$3e
  521. 61075 .byt $00,$66,$6e,$76,$7e
  522. 61080 .byt $00,$24,$2c,$00,$00
  523. 61085 .byt $e0,$e4,$ec,$00,$00
  524. 61090 .byt $c0,$c4,$cc,$00,$00
  525. 61095 .byt $00,$c6,$ce,$d6,$de
  526. 61100 .byt $00,$e6,$ee,$f6,$fe
  527. 61105 .byt $a0,$a4,$ac,$b4,$bc
  528. 61110 .byt $00,$86,$8e,$00,$00
  529. 61115 .byt $00,$84,$8c,$94,$00
  530. 61120 codlon =*
  531. 61125 .byt $69,$65,$6d,$75,$7d,$79,$61,$71
  532. 61130 .byt $29,$25,$2d,$35,$3d,$39,$21,$31
  533. 61135 .byt $c9,$c5,$cd,$d5,$dd,$d9,$c1,$d1
  534. 61140 .byt $49,$45,$4d,$55,$5d,$59,$41,$51
  535. 61145 .byt $a9,$a5,$ad,$b5,$bd,$b9,$a1,$b1
  536. 61150 .byt $a2,$a6,$ae,$00,$00,$be,$00,$00
  537. 61155 .byt $09,$05,$0d,$15,$1d,$19,$01,$11
  538. 61160 .byt $e9,$e5,$ed,$f5,$fd,$f9,$e1,$f1
  539. 61165 .byt $00,$85,$8d,$95,$9d,$99,$81,$91
  540. 61170 stb .byt $00,$02,$06,$0a,$0e,$16,$21,$29,$1d,$12
  541. 61175 andc .byt $96,$b6,$20,$4c,$6c
  542. 61180 andt .byt 43,50,54,55,55
  543. 61185 anda .byt 9,9,2,2,8
  544. 61500 ;****
  545. 61505 vorsp .asc "#(":.byt 0
  546. 61510 nahsp .asc ",x ,y )  ,x)),y"
  547. 61515 dechi .byt >10,>100,>1000,>10000
  548. 61520 declo .byt <10,<100,<1000,<10000
  549. 61525 bft .asc "+-*/"
  550.