home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / s85xx / s8508.d64 / smon+src (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  8KB  |  432 lines

  1. 100 SYS9*4096
  2. 110 .OPT OO
  3. 130 ;
  4. 140 ; !SMON-ERWEITERUNG
  5. 150 ; ERWEITERT SMON UM FOLGENDE
  6. 160 ; BEFEHLE   - H ADR1 (ADR2)
  7. 170 ;           - Z ADR1 (ADR2)
  8. 180 ;           - N ADR1 (ADR2)
  9. 190 ;           - U ADR1 (ADR2)
  10. 200 ;           - E ADR1  ADR2
  11. 210 ;           - Y BYTE
  12. 220 ;           - Q ADR1
  13. 230 ;           - J
  14. 240 ;
  15. 250 ;------------------------------
  16. 260 ; 'H'
  17. 270 ;
  18. 280 ;     BILDET JEWEILS DREI BYTES
  19. 290 ;     IN BINAERDARSTELLUNG AB.
  20. 300 ;     (FUER SPRITE-DATEN)
  21. 310 ;------------------------------
  22. 320 ; 'Z' (ZEICHEN)
  23. 330 ;
  24. 340 ;     BILDET JEWEILS EIN BYTE
  25. 350 ;     IN BINAERDARSTELLUNG AB.
  26. 360 ;     (FUER CHARACTER-DATEN)
  27. 370 ;------------------------------
  28. 380 ; 'N' (NORMAL)
  29. 390 ;
  30. 400 ;     BILDET 32 BYTES ALS BILD-
  31. 410 ;     SCHIRM-CODE AB.(+ ADR!)
  32. 420 ;------------------------------
  33. 430 ; 'U' (UEBERSICHT)
  34. 440 ;
  35. 450 ;     BILDET 40 BYTES ALS BILD-
  36. 460 ;     SCHIRM-CODE AB.       
  37. 470 ;------------------------------
  38. 480 ; 'E' (ERASE)
  39. 490 ;
  40. 500 ;     FUELLT BEREICH VON ADR1
  41. 510 ;     BIS ADR2 MIT $00.
  42. 520 ;------------------------------
  43. 530 ; 'Y'
  44. 540 ;
  45. 550 ;     SCHREIBT SMON AUF
  46. 560 ;     $BYTE00 UM.
  47. 570 ;------------------------------
  48. 580 ; 'Q'
  49. 590 ;
  50. 600 ;     KOPIERT ZEICHENSATZ
  51. 610 ;     NACH ADR1.
  52. 620 ;------------------------------
  53. 630 ; 'J'
  54. 640 ;
  55. 650 ;     HOLT LETZTEN AUSGABE-
  56. 660 ;     BEFEHL (H,Z,N,U,K,M,D)
  57. 670 ;     ZURUECK.
  58. 680 ;------------------------------
  59. 690 ;
  60. 700 S = $C000      ;BASISADRESSE SMON
  61. 710 ;
  62. 720 HCH      ="("  ;HIDDEN COMMANDS
  63. 730 HCZ      =")"
  64. 740 HCN      ="!"
  65. 750 ;
  66. 760 FLAG     =$AA
  67. 770 TEMP     =$AB
  68. 780 PCL      =$FB
  69. 790 PCH      =$FC
  70. 800 HINIBBLE =$FF
  71. 810 ;
  72. 820 CMDS     =S+$02B
  73. 830 GET12ADR =S+$264
  74. 840 GET2ADR  =S+$27A
  75. 850 GETADR1  =S+$27E
  76. 860 GETBYT   =S+$28D
  77. 870 SKIPSPAC =S+$2B8
  78. 880 GETRET   =S+$2C2
  79. 890 GETCHRER =S+$2CA
  80. 900 ERROR    =S+$2D1
  81. 910 EXECUTE  =S+$2D6
  82. 920 CMDSTORE =S+$2FF
  83. 930 CHARRET  =S+$340
  84. 940 RETURN   =S+$351
  85. 950 HEXOUT   =S+$323
  86. 960 PCINC    =S+$367
  87. 970 ASCII4   =S+$44F
  88. 980 ASCII5   =S+$456
  89. 990 CONTIN   =S+$45D
  90. 1000 OCCUPY   =S+$9C7
  91. 1010 ;-------------
  92. 1011 *= S+38
  93. 1012 .BYTE 00      ;ALTEN Z-BEFEHL LOESCHEN
  94. 1013 ;
  95. 1020 *= S+$61
  96. 1030 ;
  97. 1040 HCMDTAB .ASC "':;,"
  98. 1050 .BYTE HCH,HCZ,HCN
  99. 1060 ;
  100. 1070 *=S+$2E3
  101. 1080 ;
  102. 1090 LDX #6        ;ZEILENANFANG
  103. 1100 F1 CMP HCMDTAB,X
  104. 1110 BEQ EXEC1
  105. 1120 DEX
  106. 1130 BPL F1
  107. 1140 LDA #"."
  108. 1150 JSR $FFD2
  109. 1160 ;
  110. 1170 EXEC1 JSR GETCHRERR
  111. 1180 CMP #"."
  112. 1190 BEQ EXEC1
  113. 1200 JMP LINSTORE
  114. 1210 WEITER JMP MORECMD
  115. 1220 ;
  116. 1230 *=S+$30D      ;WEITERE BEFEHLE
  117. 1240 ;
  118. 1250 BEQ WEITER
  119. 1260 ;
  120. 1270 *=S+$E09      ;NEUE ROUTINEN
  121. 1280 ;
  122. 1290 ;-------------
  123. 1300 ;
  124. 1310 ZCMD LDA #$80 ;FLAG SETZEN
  125. 1320 .BYTE $2C
  126. 1330 ;
  127. 1340 HCMD LDA #0
  128. 1350 STA TEMP
  129. 1360 JSR GET12ADR  ;START/END-ADRESSE
  130. 1370 ;
  131. 1380 L1 BIT TEMP
  132. 1390 BPL W8
  133. 1400 LDX #HCZ      ;HIDDEN COMMAND
  134. 1410 .BYTE $2C     ;AUSGEBEN
  135. 1420 W8 LDX #HCH
  136. 1430 JSR CHARRET
  137. 1440 JSR HEXOUT    ;PC AUSGEBEN
  138. 1450 LDY #6        ;SPALTE 6
  139. 1460 ;
  140. 1470 L2 LDX #0
  141. 1480 LDA (PCL,X)
  142. 1490 ;
  143. 1500 L3 ASL
  144. 1510 PHA           ;BYTE MERKEN
  145. 1520 BCS BITSET    ;BIT=1, DANN *
  146. 1530 LDA #"."      ;BIT=0, DANN .
  147. 1540 .BYTE $2C     ;AUSGEBEN
  148. 1550 BITSET LDA #"*"
  149. 1560 STA ($D1),Y
  150. 1570 LDA $286
  151. 1580 STA ($F3),Y
  152. 1590 ;
  153. 1600 PLA           ;BYTE ZURUECKHOLEN
  154. 1610 INY           ;CURSOR WEITER
  155. 1620 INX           ;NAECHSTES BYTE
  156. 1630 CPX #8        ;8 BIT
  157. 1640 BNE L3        ;BYTE WEITERSCHIEBEN
  158. 1650 ;
  159. 1660 JSR PCINC     ;ZAEHLER ERHOEHEN
  160. 1670 BIT TEMP      ;FLAG FUER 1*8 BIT
  161. 1680 BMI W9        ;ZEILE FERTIG
  162. 1690 CPY #30       ;3 BYTES
  163. 1700 BCC L2
  164. 1710 W9 JSR CONTIN ;TASTEN-ABFRAGE
  165. 1720 BCC L1
  166. 1730 RTS
  167. 1740 ;
  168. 1750 ;-------------
  169. 1760 ;
  170. 1770 ZCMDH   LDY #8
  171. 1780 .BYTE $2C     ;1 BYTE
  172. 1790 ;
  173. 1800 HCMDH LDY #24 ;3 BYTE
  174. 1810 JSR GETADR1
  175. 1820 JSR SKIPSPACE ;SPACES UEBERLESEN
  176. 1830 A1 LDX #8
  177. 1840 LDA #0
  178. 1850 STA FLAG
  179. 1860 ;
  180. 1870 A2 JSR GETCHRERR
  181. 1880 CMP #"."      ;. => BIT=0
  182. 1890 BEQ BIT0      ;* => BIT=1
  183. 1900 CMP #"*"
  184. 1910 BEQ BIT1
  185. 1920 ERR1 JMP ERROR ;ANDERES ZEICHEN
  186. 1930 ;
  187. 1940 BIT0 CLC
  188. 1950 BIT1 ROL FLAG
  189. 1960 DEY
  190. 1970 DEX           ;BYTE
  191. 1980 BNE A2        ;NOCH NICHT FERTIG
  192. 1990 ;
  193. 2000 LDA FLAG      ;IN SPEICHER
  194. 2010 STA (PCL,X)   ;SCHREIBEN
  195. 2020 CMP (PCL,X)
  196. 2030 BNE ERR1
  197. 2040 JSR PCINC
  198. 2050 ;
  199. 2060 CPY #0
  200. 2070 BNE A1        ;NOCH NICHT FERTIG
  201. 2080 RTS
  202. 2090 ;
  203. 2100 ;-------------
  204. 2110 ;
  205. 2120 NCMD LDA #$80
  206. 2130 .BYTE $2C
  207. 2140 UCMD LDA #0
  208. 2150 STA TEMP
  209. 2160 JSR GET12ADR
  210. 2170 ;
  211. 2180 L5 JSR RETURN
  212. 2190 BIT TEMP
  213. 2200 BPL U
  214. 2210 LDA #HCN      ;HIDDEN COMMAND
  215. 2220 JSR $FFD2
  216. 2230 JSR HEXOUT
  217. 2240 LDY #8        ;SPALTE 8
  218. 2250 .BYTE $2C
  219. 2260 ;
  220. 2270 U LDY #0      ;SPALTE 0
  221. 2280 LDX #0
  222. 2290 ;
  223. 2300 L4 LDA (PCL,X)
  224. 2310 JSR ASCII4    ;ALS BILDSCHIRM-CODE
  225. 2320 BNE L4        ;AUSGEBEN
  226. 2330 ;
  227. 2340 JSR CONTIN
  228. 2350 BCC L5        ;NAECHSTE ZEILE
  229. 2360 RTS
  230. 2370 ;-------------
  231. 2380 NCMDH JSR GETADR1
  232. 2390 LDX #0
  233. 2400 LDY #8        ;SPALTE 8
  234. 2410 C1 LDA ($D1),Y
  235. 2420 STA (PCL,X)   ;IN SPEICHER
  236. 2430 CMP (PCL,X)   ;SCHREIBEN
  237. 2440 BNE ERR1
  238. 2450 JSR ASCII5    ;PC ERHOEHEN
  239. 2460 BCC C1
  240. 2470 RTS           ;ZEILE FERTIG
  241. 2480 ;
  242. 2490 ;-------------
  243. 2500 ;
  244. 2510 YCMD JSR GETBYT
  245. 2520 AND #%11110000
  246. 2530 STA HINIBBLE  ;NEUER 4K-BLOCK
  247. 2540 JSR SETPTR    ;ADRESSEN SETZEN
  248. 2550 JSR $79D6     ;W-BEFEHL
  249. 2560 ;
  250. 2570 JSR SETPTR
  251. 2580 LDA #$14      ;BEREICH OHNE
  252. 2590 STA $FB       ;TABELLEN
  253. 2600 LDA #2
  254. 2610 ORA HINIBBLE
  255. 2620 STA $FC
  256. 2630 LDA #<NEWCMDS
  257. 2640 STA $FD
  258. 2650 LDA #(NEWCMDS>8 & $F)
  259. 2660 ORA HINIBBLE
  260. 2670 STA $FE
  261. 2680 JSR $7A68     ;V-BEFEHL
  262. 2690 ;
  263. 2700 LDY #0        ;LADE-BEFEHLE
  264. 2710 LDX #13       ;ANPASSEN
  265. 2720 D3 LDA CHANGE,X
  266. 2730 ORA HINIBBLE
  267. 2740 STA PCH       ;ADRESSE ALS ZEIGER
  268. 2750 DEX
  269. 2760 LDA CHANGE,X
  270. 2770 STA PCL
  271. 2780 LDA (PCL),Y
  272. 2790 AND #%00001111
  273. 2800 ORA HINIBBLE
  274. 2810 STA (PCL),Y
  275. 2820 DEX
  276. 2830 BPL D3
  277. 2840 ;
  278. 2850 LDA #<CMDS    ;ZEIGER AUF
  279. 2860 STA PCL       ;BEFEHLSADRESSEN
  280. 2870 LDA #(CMDS>8 & $F)
  281. 2880 ORA HINIBBLE
  282. 2890 STA PCH
  283. 2900 ;
  284. 2910 LDY #53
  285. 2920 D1 LDA (PCL),Y
  286. 2930 AND #%00001111
  287. 2940 ORA HINIBBLE  ;HIBYTES
  288. 2950 STA (PCL),Y   ;ANGLEICHEN
  289. 2960 W1 DEY
  290. 2970 DEY
  291. 2980 BPL D1
  292. 2990 ;
  293. 3000 LDA #<NEWADR  ;ZEIGER AUF NEUE
  294. 3010 STA PCL       ;BEFEHLSADRESSEN
  295. 3020 LDA #(NEWADR>8 & $F)
  296. 3030 ORA HINIBBLE
  297. 3040 STA PCH
  298. 3050 ;
  299. 3060 LDY #TABEND-NEWADR-1
  300. 3070 D2 LDA (PCL),Y
  301. 3080 AND #%00001111
  302. 3090 ORA HINIBBLE  ;HIBYTES
  303. 3100 STA (PCL),Y   ;ANGLEICHEN
  304. 3110 DEY
  305. 3120 DEY
  306. 3130 BPL D2
  307. 3140 RTS
  308. 3150 ;
  309. 3160 ;
  310. 3170 SETPTR LDA HINIBBLE
  311. 3180 STA $A9       ;NEUER START HI
  312. 3190 JSR GETHI
  313. 3200 GETHI PLA
  314. 3210 PLA
  315. 3220 AND #%11110000
  316. 3230 STA $A5       ;ALTER START HI
  317. 3240 CLC
  318. 3250 ADC #$10
  319. 3260 STA $A7       ;ALTES ENDE HI
  320. 3270 ;
  321. 3280 LDA #0        ;LO-BYTES LOESCHEN
  322. 3290 STA $A4
  323. 3300 STA $A6
  324. 3310 STA $A8
  325. 3320 RTS
  326. 3330 ;
  327. 3340 ;---------
  328. 3350 ;
  329. 3360 ECMD JSR GET2ADR
  330. 3370 LDA #0
  331. 3380 JMP OCCUPY
  332. 3390 ;
  333. 3400 ;---------
  334. 3410 ;
  335. 3420 QCMD JSR GETADR1
  336. 3430 LDY #0
  337. 3440 LDA #$D0      ;ZEIGER AUF
  338. 3450 STY $FD       ;ZEICHENROM
  339. 3460 STA $FE
  340. 3470 ;
  341. 3480 SEI
  342. 3490 LDA #%011     ;ROM EINBLENDEN
  343. 3500 STA 1
  344. 3510 LDX #16       ;4K UEBERTRAGEN
  345. 3520 E1 LDA ($FD),Y
  346. 3530 STA (PCL),Y
  347. 3540 INY
  348. 3550 BNE E1
  349. 3560 INC PCH
  350. 3570 INC $FE
  351. 3580 DEX
  352. 3590 BNE E1
  353. 3600 LDA #$27      ;NORMALEINSTELLUNG
  354. 3610 STA 1
  355. 3620 CLI
  356. 3630 RTS
  357. 3640 ;
  358. 3650 ;---------
  359. 3660 ;
  360. 3670 LINSTORE PHA  ;BEFEHL MERKEN
  361. 3680 CMP #"J"
  362. 3690 BNE STORE
  363. 3700 ;
  364. 3710 LDY #39
  365. 3720 G1 LDA $0200,Y
  366. 3730 STA ($D1),Y   ;ZEILE AUF
  367. 3740 DEY           ;BILDSCHIRM
  368. 3750 BPL G1        ;SCHREIBEN
  369. 3760 PLA
  370. 3770 DEC $D6       ;CURSOR 1 HOCH
  371. 3780 JMP EXECUTE
  372. 3790 ;
  373. 3800 STORE LDY #6
  374. 3810 G3 CMP OUTCMDS,Y
  375. 3820 BNE W3
  376. 3830 ;
  377. 3840 OK1 LDY #39
  378. 3850 G2 LDA ($D1),Y
  379. 3860 STA $0200,Y   ;ZEILE NUR BEI
  380. 3870 DEY           ;H,Z,N,U,K,M,D
  381. 3880 BPL G2        ;SPEICHERN
  382. 3890 ;
  383. 3900 W3 DEY
  384. 3910 BPL G3
  385. 3920 STEND PLA     ;BEFEHL ZURUECKHOLEN
  386. 3930 JMP CMDSTORE
  387. 3940 ;
  388. 3950 ;+++++++++
  389. 3960 ;
  390. 3970 MORECMD LDX #NEWADR-NEWCMDS-3
  391. 3980 B1 CMP NEWCMDS-1,X
  392. 3990 BEQ FOUND
  393. 4000 DEX
  394. 4010 BNE B1
  395. 4020 JMP ERROR
  396. 4030 ;
  397. 4040 FOUND JSR CMDEXEC2
  398. 4050 JMP EXECUTE
  399. 4060 ;
  400. 4070 CMDEXEC2 TXA
  401. 4080 ASL
  402. 4090 TAX
  403. 4100 LDA NEWADR-1,X
  404. 4110 PHA
  405. 4120 LDA NEWADR-2,X
  406. 4130 PHA
  407. 4140 RTS
  408. 4150 ;
  409. 4160 NEWCMDS .BYTE HCH,HCZ,HCN
  410. 4170 .ASC "EYQ"
  411. 4180 OUTCMDS .ASC "HZNUDKM"
  412. 4190 ;
  413. 4200 NEWADR .WORD HCMDH-1
  414. 4210 .WORD ZCMDH-1
  415. 4220 .WORD NCMDH-1
  416. 4230 .WORD ECMD-1             ;E
  417. 4240 .WORD YCMD-1             ;Y
  418. 4250 .WORD QCMD-1             ;Q
  419. 4260 .WORD HCMD-1             ;!
  420. 4270 .WORD ZCMD-1             ;Z
  421. 4280 .WORD NCMD-1             ;N
  422. 4290 .WORD UCMD-1             ;U
  423. 4300 TABEND = *
  424. 4310 ;
  425. 4320 CHANGE .WORD $0005+1
  426. 4330 .WORD $0386+1
  427. 4340 .WORD $0C2C+1
  428. 4350 .WORD $0C5B+1
  429. 4360 .WORD $0CF4+1
  430. 4370 .WORD $0DA1+1
  431. 4380 .WORD $0E03+1
  432.