Advertisement
intabits

Compacta Uniboard Monitor ROM

Feb 17th, 2020
971
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 104.24 KB | None | 0 0
  1.  
  2. f9dasm: M6800/1/2/3/8/9 / H6309 Binary/OS9/FLEX9 Disassembler V1.75
  3. Loaded binary file UniB-ROM.BIN
  4.  
  5. *****************************************************
  6. ** Used Labels *
  7. *****************************************************
  8.  
  9. M0070 EQU $0070
  10. M0074 EQU $0074
  11. M0078 EQU $0078
  12. M007C EQU $007C
  13. M0084 EQU $0084
  14. M0088 EQU $0088
  15. M008D EQU $008D
  16. M00D3 EQU $00D3
  17. M00E0 EQU $00E0
  18. M00E7 EQU $00E7
  19. M00F2 EQU $00F2
  20. M00F4 EQU $00F4
  21. M00F6 EQU $00F6
  22. M0100 EQU $0100
  23. M0101 EQU $0101
  24. ;M0A46 EQU $0A46
  25. ;M2940 EQU $2940
  26. ;M45B6 EQU $45B6
  27. M4FC3 EQU $4FC3
  28. ;M504D EQU $504D
  29. ;M52F5 EQU $52F5
  30. ;M59F4 EQU $59F4
  31. ;M5CF2 EQU $5CF2
  32. ;M5D52 EQU $5D52
  33. ;M6108 EQU $6108
  34. ;M6A08 EQU $6A08
  35. M6A8E EQU $6A8E
  36. ;M6CF2 EQU $6CF2
  37. ;M6E57 EQU $6E57
  38. ;M7354 EQU $7354
  39. ;M75F4 EQU $75F4
  40. ;M76F2 EQU $76F2
  41. ;MA000 EQU $A000
  42. MA17C EQU $A17C
  43. MBFFF EQU $BFFF
  44. FLEXBOOTBUF EQU $C100
  45. MC105 EQU $C105
  46. MC108 EQU $C108
  47. MC109 EQU $C109
  48. MC10A EQU $C10A
  49. MC10B EQU $C10B
  50. MC300 EQU $C300
  51. MC304 EQU $C304
  52. MC400 EQU $C400
  53. ;MC64C EQU $C64C
  54. ZC700 EQU $C700
  55. ;MC7F3 EQU $C7F3
  56. ;
  57. MEMEND EQU $CC2B
  58. MCC34 EQU $CC34
  59. ;
  60. PRTINI EQU $CCC0
  61. MCCC1 EQU $CCC1
  62. PRTCHK EQU $CCD8
  63. MCCD9 EQU $CCD9
  64. PRTOUT EQU $CCE4
  65. MCCE5 EQU $CCE5
  66. COLDS EQU $CD00
  67. ;MCF41 EQU $CF41
  68. MD370 EQU $D370
  69. MD380 EQU $D380
  70. CINCHNE EQU $D3E5
  71. ;
  72. ;MD5F4 EQU $D5F4
  73. MD903 EQU $D903
  74. DDJ_READ EQU $DE00
  75. ZDE1E EQU $DE1E
  76. ZDE1F EQU $DE1F
  77. ZDE23 EQU $DE23
  78. ZDE27 EQU $DE27
  79. ZDE2B EQU $DE2B
  80. ZDE2F EQU $DE2F
  81. ZDE33 EQU $DE33
  82. ZDE37 EQU $DE37
  83. ZDE3B EQU $DE3B
  84. ZDE3F EQU $DE3F
  85. ;ME055 EQU $E055
  86. ;MED43 EQU $ED43
  87. STACKT EQU $EDFF
  88. ;
  89. SW3VEC EQU $EE00 ;SWI3 vector
  90. SW2VEC EQU $EE02 ;SWI2 vector
  91. FIRVEC EQU $EE04 ;FIRQ vector
  92. IRQVEC EQU $EE06 ;IRQ Vector
  93. SWIVEC EQU $EE08 ;SWI vector
  94. NMIVEC EQU $EE0A ;NMI vector
  95. FDLCHIMG EQU $EE0C ;FDC latch image
  96. FDSTATUS EQU $EE0D ;FDC status after interrupt
  97. CURDRV EQU $EE0E ;Currently selected drive number
  98. TRKTBL EQU $EE0F ;Current track table
  99. DENSEL EQU $EE13 ;Current density select
  100. PRTRDY EQU $EE17 ;Printer ready flag
  101. DSKCFG EQU $EE18 ;Disk drive configuration byte $03=5", $0C=8"
  102. ;
  103. ; CONSOLE SOFT I/O VECTORS. SET FOR UART OR KBD AT RESET BY SW3 POSN
  104. ;
  105. CINVEC EQU $EE19 ;Console input (no echo) vector
  106. CSCVEC EQU $EE1B ;Console status check vector
  107. CIEVEC EQU $EE1D ;Console input (and echo) vector
  108. COPVEC EQU $EE1F ;Console output vector
  109. ;
  110. EE21: VIDEODATA DS 12 ;12 BYTES COPIED FROM F7B3 AT STARTUP
  111. ;
  112. ; OFFSETS INTO VIDEODATA
  113. ;
  114. EE21: VDRAMB EQU 0 ;ADDRESS OF VIDRAM
  115. EE23: VDRAME EQU 2 ;ADDRESS OF VIDRAM END
  116. EE25: VDCUSR EQU 4 ;ADDRESS OF CURSOR
  117. EE27: VD EQU 6 ;
  118. ;
  119. MEE2D EQU $EE2D
  120. MEE2F EQU $EE2F
  121. EE30: NOINPECHO DS 1 ;DISABLE INPUT ECHO (1=ECHO DISABLED)
  122. EE31: NIBSPWORD DS 1 ;NUMBER OF NIBBLES IN A WORD (DUH? - ALWAYS 4)
  123. MEE32 EQU $EE32
  124. ;
  125. ; KEYBOARD INPUT BUFFER
  126. ;
  127. EE33: KBUFIPTR DS 1 ;KEYBOARD INPUT BUFFER HEAD POINTER
  128. EE34: KBUFOPTR DS 1 ;KEYBOARD INPUT BUFFER TAIL POINTER
  129. EE35: KBDINPBUF DS 8 ;KEYBOARD INPUT BUFFER (8 BYTES)
  130. ;
  131. ; UART INPUT BUFFER
  132. ;
  133. EE3D: SBUFIPTR DS 1 ;SERIAL INPUT BUFFER INPUT POINTER (HEAD)
  134. EE3E: SBUFOPTR DS 1 ;SERIAL INPUT BUFFER OUTPUT POINTER (TAIL)
  135. EE3F: SERINPBUF DS 8 ;SERIAL INPUT BUFFER (8 BYTES)
  136.  
  137. EE47: XBUFIPTR DS 1 ;NOT USED
  138. ;
  139. USTACK EQU $EEFF
  140. ;
  141. ; 6844 DMA Controller
  142. ;
  143. DMACTL EQU $EF00
  144. DMARG1 EQU $EF02
  145. DMARG2 EQU $EF10
  146. DMARG3 EQU $EF14
  147. DMARG4 EQU $EF15
  148. ;
  149. ; 6522 VIA
  150. ;
  151. VIAORB EQU $EF20 ;OUTPUT REG B -> PRINTER
  152. VIAIRA EQU $EF21 ;INPUT REG A <- KEYBOARD
  153. VIADDRB EQU $EF22 ;DATA DIRECTION REG B
  154. VIADDRA EQU $EF23 ;DATA DIRECTION REG A
  155. VIAT1LO EQU $EF24 ;TIMER 1 LOW ORDER LATCHES/COUNTER
  156. VIAAUXC EQU $EF2B ;AUXILLIARY CONTROL REG
  157. VIAPERC EQU $EF2C ;PERIPHERAL CONTROL REG
  158. VIAIRFL EQU $EF2D ;INTERRUPT FLAG REG
  159. VIAIREN EQU $EF2E ;INTERRUPT ENABLE REG
  160. ;
  161. ; 1793 Floppy Disk Controller
  162. ;
  163. FDCCTL EQU $EF30
  164. FDCRG1 EQU $EF31
  165. FDCRG2 EQU $EF32
  166. FDCRG3 EQU $EF33
  167. ;
  168. ; 6551 ACIA
  169. ;
  170. ACIDAT EQU $EF40 ;ACIA TX/RX DATA REGISTERS
  171. ACIRST EQU $EF41 ;ACIA RESET OR STATUS REG
  172. ACICMD EQU $EF42 ;ACIA COMMAND REG
  173. ACICTL EQU $EF43 ;ACIA CONTROL REG
  174. ACITXDRMT EQU $10 ;STATUS REG BIT - TX DATA REG EMPTY
  175. ;
  176. ; 6845 CRT CONTROLLER
  177. ;
  178. CRTCAREG EQU $EF44
  179. CRTCDREG EQU $EF45
  180. ;
  181. ; Sense Switches / Floppy Control Latch
  182. ;
  183. SSWFDS EQU $EF48
  184. ;
  185. MEF4C EQU $EF4C
  186.  
  187. *****************************************************
  188. ** Program Code / Data Areas *
  189. *****************************************************
  190.  
  191. ORG $F000
  192. ;*************************************************************************
  193. ; INITIALIZATION
  194. ;-------------------------------------------------------------------------
  195. ;
  196. ; WARM START
  197. ;
  198. F000: WARMST LBRA COMDPROC *F000: 16 00 9D '...'
  199. ;
  200. ; COLD START
  201. ;
  202. F003: COLDST LDS #STACKT ;INITIALIZE STACK POINTERS
  203. F007: LDU #USTACK
  204. F00A: LBSR CRTCINIT ;INITIALIZE 6845 CRTC (VIDEO)
  205. ;
  206. ; Read and process sense switches
  207. ; SW1 - SYSTEM RESET LINE
  208. ; SW2 BIT 2 $04 -
  209. ; SW3 BIT 1 $02 - KEYBOARD/SERIAL
  210. ; SW4 BIT 0 $01 - DISK SIZE 5"/8"
  211. ;
  212. ; SENSE SW4 - OFF=8" FLOPPY ON=5" FLOPPY
  213. ;
  214. F00D: LDA SSWFDS ;READ SENSE SWITCHES
  215. F010: LDB #$03 ;PRESET 5" FLOPPY
  216. F012: BITA #$01 ;TEST SW4 - OS9 DISK SIZE
  217. F014: BEQ ZF018 ;SW4 ON?
  218. F016: LDB #$0C ;NO, 8" FLOPPY
  219. F018: ZF018 STB DSKCFG ;SAVE
  220. ;
  221. ; SENSE SW3 - OFF=Keyboard ON=Serial
  222. ;
  223. F01B: BITA #$02 ;TEST SW3 - CONSOLE INPUT SOURCE
  224. F01D: BNE KBINIT ;SW3 ON?
  225. ;
  226. ; LOAD SOFT CONSOLE VECTORS TO POINT TO UART ROUTINES
  227. ;
  228. F01F: LDX #UASTAT ;CHAR IN INPUT BUFFER TEST
  229. F022: STX CSCVEC
  230. F025: LDX #UAINNE ;SERIAL PORT INPUT - NO ECHO
  231. F028: STX CINVEC
  232. F02B: LDX #UAIN ;SERIAL PORT INPUT WITH ECHO
  233. F02E: STX CIEVEC
  234. F031: LDX #UAOT ;SERIAL PORT OUTPUT
  235. F034: STX COPVEC
  236. F037: BRA ZF051
  237. ;
  238. ; LOAD SOFT CONSOLE VECTORS TO POINT TO KEYBOARD ROUTINES
  239. ;
  240. F039: KBINIT LDX #KBST ;CHAR IN INPUT BUFFER TEST
  241. STX CSCVEC
  242. F03F: LDX #KBINNE ;KEYBOARD INPUT - NO ECHO
  243. F042: STX CINVEC *F042: BF EE 19 '...'
  244. F045: LDX #KBIN ;KEYBOARD INPUT WITH ECHO
  245. F048: STX CIEVEC *F048: BF EE 1D '...'
  246. F04B: LDX #VIDOT ;OUTPUT CHAR TO VIDEO DISPLAY
  247. F04E: STX COPVEC *F04E: BF EE 1F '...'
  248. ;
  249. ; MORE INITIALIZATION...
  250. ;
  251. F051: ZF051 LDA #$04 *F051: 86 04 '..'
  252. F053: STA FDLCHIMG ;FDC latch image *F053: B7 EE 0C '...'
  253. F056: STA SSWFDS ;Floppy Control Latch *F056: B7 EF 48 '..H'
  254. ;
  255. ; INPUT BUFFER POINTERS
  256. ;
  257. F059: LDD #0 ;RESET INPUT BUFFER POINTERS
  258. F05C: STD KBUFIPTR ;- KEYBOARD
  259. F05F: STD SBUFIPTR ;- UART
  260. F062: STD XBUFIPTR ;? NEVER USED
  261. ;
  262. ; VIA - KEYBOARD & PRINTER
  263. ;
  264. F065: CLRA
  265. F066: STA VIADDRA *F066: B7 EF 23 '..#'
  266. F069: DECA *F069: 4A 'J'
  267. F06A: STA VIADDRB *F06A: B7 EF 22 '.."'
  268. F06D: LDA #$A0 *F06D: 86 A0 '..'
  269. F06F: STA MEF2C *F06F: B7 EF 2C '..,'
  270. F072: LDA #$82 *F072: 86 82 '..'
  271. F074: STA VIAIREN *F074: B7 EF 2E '...'
  272. ;
  273. F077: CLR MEE2F *F077: 7F EE 2F '../'
  274. F07A: CLR NOINPECHO ;ENABLE INPUT ECHO
  275. F07D: LDA VIAIRA *F07D: B6 EF 21 '..!'
  276. ;
  277. F080: LDA #$04 *F080: 86 04 '..'
  278. F082: STA NIBSPWORD ;SET NUMBER OF NIBBLES IN A WORD? *F082: B7 EE 31 '..1'
  279. F085: LDA #FF ;FormFeed Char ($0C)
  280. F087: LBSR TOUTCH ;CLEARS SCREEN
  281. ;
  282. F08A: LBSR DINIT ;INITIALIZE DISK DRIVER
  283. ;
  284. F08D: LDD #RTIINST ;POINT TO AN RTI INSTRUCTION
  285. F090: STD IRQVEC ;STORE TO THE DEFAULT IRQ HANDLER
  286. ;
  287. F093: LDX #ACIDAT *F093: 8E EF 40 '..@'
  288. F096: STB $01,X *F096: E7 01 '..'
  289. F098: LDA #$18 *F098: 86 18 '..'
  290. F09A: STA $03,X *F09A: A7 03 '..'
  291. F09C: LDA #$09 *F09C: 86 09 '..'
  292. F09E: STA $02,X *F09E: A7 02 '..'
  293.  
  294. ;*************************************************************************
  295. ; MONITOR COMMAND PROCESSING
  296. ;-------------------------------------------------------------------------
  297. ;
  298. ; COMMAND PROCESSOR
  299. ;
  300. F0A0: COMDPROC LDS #STACKT ;RESET STACK POINTERS
  301. F0A4: LDU #USTACK
  302. F0A7: CLI
  303. F0A9: COMDWAIT LDX #MSGWHAT ;OUTPUT "?" PROMPT
  304. F0AC: LBSR OUTSTRX
  305. F0AF: LBSR INPCHR ;WAIT FOR COMMAND INPUT
  306. ;
  307. ; CHECK FOR VALID COMD CHAR & EXECUTE
  308. ;
  309. F0B2: LDX #CMDTAB ;POINT TO COMMAND TABLE
  310. F0B5: COMDCHEK TST ,X ;END OF TABLE? *F0B5: 6D 84 'm.'
  311. F0B7: BEQ COMDWAIT ;IF SO, IGNORE AND WAIT FOR NEXT COMD
  312. F0B9: CMPA ,X+ ;COMD CHAR MATCH?
  313. F0BB: BNE COMDNEXT ;IF NOT, TEXT FOR NEXT COMD CHAR
  314. F0BD: LBSR OUTSPC ;YES, OUTPUT A SPACE
  315. F0C0: JSR [,X] ;CALL PROCESSOR FOR THIS COMMAND
  316. F0C2: BRA COMDPROC ;GO WAIT FOR NEXT COMD
  317. ;
  318. F0C4: COMDNEXT LEAX $02,X ; *F0C4: 30 02 '0.'
  319. F0C6: BRA COMDCHEK
  320. ;
  321. ; COMMAND TABLE
  322. ;
  323. F0C8: CMDTAB FCB 'G',COMD_G ;GOTO ADDR
  324. F0CB: FCB 'C',COMD_C ;SET UART BAUD RATE
  325. F0CE: FCB 'B',COMD_B ;BOOT NORMAL FLEX
  326. F0D1: FCB 'L',COMD_L ;BOOT GENERAL FLEX
  327. F0D4: FCB 'U',COMD_U ;BOOT UNKNOWN FLEX
  328. F0D7: FCB 'A',COMD_A ;ALTER MEMORY
  329. F0DA: FCB 'F',COMD_F ;FILL MEMORY
  330. F0DD: FCB 'M',COMD_M ;MOVE MEMORY
  331. F0E0: FCB 'R',COMD_R ;READ SECTOR
  332. F0E3: FCB 'W',COMD_W ;WRITE SECTOR
  333. F0E6: FCB 'T',COMD_T ;TEST MEMORY
  334. F0E9: FCB 'D',COMD_D ;DISPLAY MEMORY
  335. F0EC: FCB 0 ;END OF TABLE INDICATOR
  336. ;
  337. ; COMMAND G - GO TO ADDRESS (ADDRESS)
  338. ;
  339. F0ED: COMD_G LBSR INPHEXWRD *F0ED: 17 06 16 '...'
  340. F0F0: PSHD *F0F0: 34 06 '4.'
  341. F0F2: LBSR PUTCRLF *F0F2: 17 05 F5 '...'
  342. F0F5: PULS PC *F0F5: 35 80 '5.'
  343. ;
  344. ; COMMAND C - COMMS BAUD RATE SET (SINGLE HEX DIGIT)
  345. ;
  346. F0F7: COMD_C LBSR INPHEXWRD *F0F7: 17 06 0C '...'
  347. F0FA: ANDB #$0F *F0FA: C4 0F '..'
  348. F0FC: PSHB *F0FC: 34 04 '4.'
  349. F0FE: LDB ACICTL *F0FE: F6 EF 43 '..C'
  350. F101: ANDB #$F0 *F101: C4 F0 '..'
  351. F103: ORB ,S *F103: EA E4 '..'
  352. F105: STB ACICTL *F105: F7 EF 43 '..C'
  353. F108: PULS PC,B *F108: 35 84 '5.'
  354. ;
  355. ; COMMAND A - ALTER MEMORY (ADDRESS)
  356. ;
  357. F10A: COMD_A LBSR INPHEXWRD *F10A: 17 05 F9 '...'
  358. F10D: PSHD *F10D: 34 06 '4.'
  359. F10F: ZF10F LBSR PUTCRLF *F10F: 17 05 D8 '...'
  360. F112: TSX *F112: 1F 41 '.A'
  361. F114: LBSR OUT2HEXSTR *F114: 17 05 72 '..r'
  362. F117: LDX ,S *F117: AE E4 '..'
  363. F119: LBSR OUT1HEXSTR *F119: 17 05 6F '..o'
  364. F11C: LBSR OUTSPC *F11C: 17 05 6E '..n'
  365. F11F: ZF11F LBSR INPCHR *F11F: 17 06 45 '..E'
  366. F122: CMPA #' ' *F122: 81 20 '. '
  367. F124: BEQ ZF11F *F124: 27 F9 ''.'
  368. CMPA #CR
  369. F128: BEQ ZF14E *F128: 27 24 ''$'
  370. F12A: CMPA #$5E *F12A: 81 5E '.^'
  371. F12C: BNE ZF134 *F12C: 26 06 '&.'
  372. F12E: LEAX -$02,X *F12E: 30 1E '0.'
  373. F130: STX ,S *F130: AF E4 '..'
  374. F132: BRA ZF10F *F132: 20 DB ' .'
  375. ;
  376. F134: ZF134 STX ,S *F134: AF E4 '..'
  377. F136: CMPA #'0' *F136: 81 30 '.0'
  378. F138: BLO ZF10F *F138: 25 D5 '%.'
  379. F13A: CMPA #'F' *F13A: 81 46 '.F'
  380. F13C: BHI ZF10F *F13C: 22 D1 '".'
  381. F13E: LBSR ZF6AE *F13E: 17 05 6D '..m'
  382. F141: BLO ZF14E *F141: 25 0B '%.'
  383. F143: LBSR ZF6CD *F143: 17 05 87 '...'
  384. F146: DEX *F146: 30 1F '0.'
  385. F148: STA ,X *F148: A7 84 '..'
  386. F14A: CMPA ,X *F14A: A1 84 '..'
  387. F14C: BEQ ZF10F *F14C: 27 C1 ''.'
  388. F14E: ZF14E PULS PC,X *F14E: 35 90 '5.'
  389. ;
  390. ; COMMAND F - FILL MEMORY (START END CONSTANT)
  391. ;
  392. F150: COMD_F LBSR INP3HEXWDS *F150: 17 05 9D '...'
  393. F153: PSHY *F153: 34 20 '4 '
  394. F155: ZF155 STA ,X+ *F155: A7 80 '..'
  395. F157: CMPX ,S *F157: AC E4 '..'
  396. F159: BLS ZF155 *F159: 23 FA '#.'
  397. F15B: PULS PC,X *F15B: 35 90 '5.'
  398. ;
  399. ; COMMAND M - MOVE MEMORY (START END DESTINATION)
  400. ;
  401. F15D: COMD_M LBSR INP3HEXWDS *F15D: 17 05 90 '...'
  402. F160: PSHY *F160: 34 20 '4 '
  403. F162: TFR D,Y *F162: 1F 02 '..'
  404. F164: ZF164 LDA ,X+ *F164: A6 80 '..'
  405. F166: STA ,Y+ *F166: A7 A0 '..'
  406. F168: CMPX ,S *F168: AC E4 '..'
  407. F16A: BLS ZF164 *F16A: 23 F8 '#.'
  408. F16C: PULS PC,X *F16C: 35 90 '5.'
  409. ;
  410. ; COMMAND R - READ SECTOR (DRIVE TRK/SEC ADDRESS)
  411. ;
  412. F16E: COMD_R LDX #DREAD *F16E: 8E F4 3F '..?'
  413. F171: BRA ZF176 *F171: 20 03 ' .'
  414. ;
  415. ; COMMAND W - WRITE SECTOR (DRIVE TRK/SEC ADDRESS)
  416. ;
  417. F173: COMD_W LDX #DWRITE *F173: 8E F4 59 '..Y'
  418. F176: ZF176 LDA #$05 *F176: 86 05 '..'
  419. F178: PSHS X,A *F178: 34 12 '4.'
  420. F17A: LBSR INP3HEXWDS *F17A: 17 05 73 '..s'
  421. F17D: PSHS Y,X,D *F17D: 34 36 '46'
  422. F17F: ZF17F LEAX ,S *F17F: 30 E4 '0.'
  423. F181: LBSR RESTOR *F181: 17 03 51 '..Q'
  424. F184: BNE ZF197 *F184: 26 11 '&.'
  425. F186: LDD $04,S *F186: EC 64 '.d'
  426. F188: LDX ,S *F188: AE E4 '..'
  427. F18A: JSR [$07,S] *F18A: AD F8 07 '...'
  428. F18D: BEQ ZF19D *F18D: 27 0E ''.'
  429. F18F: BITB #$10 *F18F: C5 10 '..'
  430. F191: BEQ ZF197 *F191: 27 04 ''.'
  431. F193: DEC $06,S *F193: 6A 66 'jf'
  432. F195: BNE ZF17F *F195: 26 E8 '&.'
  433. F197: ZF197 LDX #MSGERRD ;PUT "DISK ERROR"
  434. F19A: LBSR OUTCHRHEX
  435. F19D: ZF19D LEAS $09,S *F19D: 32 69 '2i'
  436. F19F: RTS *F19F: 39 '9'
  437. ;
  438. ; COMMAND D - DISPLAY MEMORY (START END)
  439. ;
  440. F1A0: COMD_D LBSR INP2HEXWDS *F1A0: 17 05 58 '..X'
  441. F1A3: PSHS X,D *F1A3: 34 16 '4.'
  442. F1A5: ZF1A5 LBSR PUTCRLF *F1A5: 17 05 42 '..B'
  443. F1A8: LEAX $02,S *F1A8: 30 62 '0b'
  444. F1AA: LBSR OUT2HEXSTR *F1AA: 17 04 DC '...'
  445. F1AD: ZF1AD LDX $02,S *F1AD: AE 62 '.b'
  446. F1AF: LBSR OUT1HEXSTR *F1AF: 17 04 D9 '...'
  447. F1B2: LDX $02,S *F1B2: AE 62 '.b'
  448. F1B4: CMPX ,S *F1B4: AC E4 '..'
  449. F1B6: BCC ZF1C4 *F1B6: 24 0C '$.'
  450. F1B8: INX *F1B8: 30 01 '0.'
  451. F1BA: STX $02,S *F1BA: AF 62 '.b'
  452. F1BC: LDA $03,S *F1BC: A6 63 '.c'
  453. F1BE: ANDA #$0F *F1BE: 84 0F '..'
  454. F1C0: BEQ ZF1A5 *F1C0: 27 E3 ''.'
  455. F1C2: BRA ZF1AD *F1C2: 20 E9 ' .'
  456. ;
  457. F1C4: ZF1C4 PULS PC,X,D *F1C4: 35 96 '5.'
  458. ;
  459. ; COMMAND B - BOOT NORMAL FLEX
  460. ;
  461. F1C6: COMD_B LBSR DSKRESTOR ;RESTORE DISK TO TRACK 0
  462. F1C9: LBSR FLXBOOT1 *F1C9: 17 06 05 '...'
  463. F1CC: JMP FLEXBOOTBUF *F1CC: 7E C1 00 '~..'
  464. ;
  465. ; COMMAND U - BOOT UNKNOWN FLEX
  466. ;
  467. F1CF: COMD_U LBSR DSKRESTOR ;RESTORE DISK TO TRACK 0
  468. F1D2: LBSR FLXBOOT1 *F1D2: 17 05 FC '...'
  469. F1D5: LBSR FLXBOOT2 *F1D5: 17 06 19 '...'
  470. F1D8: BNE COMD_U *F1D8: 26 F5 '&.'
  471. F1DA: LBSR ZF84E *F1DA: 17 06 71 '..q'
  472. F1DD: JMP COLDS *F1DD: 7E CD 00 '~..'
  473. ;
  474. ; COMMAND L - BOOT GENERAL FLEX
  475. ;
  476. F1E0: COMD_L LBSR DSKRESTOR ;RESTORE DISK TO TRACK 0
  477. F1E3: LDD #M0101 *F1E3: CC 01 01 '...'
  478. F1E6: STD MC105 *F1E6: FD C1 05 '...'
  479. F1E9: LBSR FLXBOOT2 *F1E9: 17 06 05 '...'
  480. F1EC: BNE COMD_L *F1EC: 26 F2 '&.'
  481. F1EE: LBSR ZF84E *F1EE: 17 06 5D '..]'
  482. F1F1: JMP COLDS *F1F1: 7E CD 00 '~..'
  483. ;
  484. ; COMMAND T - TEST MEMORY (START END)
  485. ;
  486. F1F4: COMD_T LBSR INP2HEXWDS *F1F4: 17 05 04 '...'
  487. F1F7: LDY #MA17C *F1F7: 10 8E A1 7C '...|'
  488. F1FB: PSHU Y *F1FB: 36 20 '6 '
  489. F1FD: LEAU -$02,U *F1FD: 33 5E '3^'
  490. F1FF: PSHU X,D *F1FF: 36 16 '6.'
  491. F201: MEMTSTLOP LBSR PUTCRLF *F201: 17 04 E6 '...'
  492. F204: MEMTSTLOP1 LDX $06,U *F204: AE 46 '.F'
  493. F206: STX $04,U *F206: AF 44 '.D'
  494. F208: LDY $02,U *F208: 10 AE 42 '..B'
  495. F20B: MEMTSTLOP2 BSR TESTMEMBLK *F20B: 8D 38 '.8'
  496. F20D: STA ,Y+ *F20D: A7 A0 '..'
  497. F20F: CMPY ,U *F20F: 10 AC C4 '...'
  498. F212: BLO MEMTSTLOP2 *F212: 25 F7 '%.'
  499. F214: LDX $04,U *F214: AE 44 '.D'
  500. F216: STX $06,U *F216: AF 46 '.F'
  501. F218: LDY $02,U *F218: 10 AE 42 '..B'
  502. F21B: MEMTSTLOP3 BSR TESTMEMBLK *F21B: 8D 28 '.('
  503. F21D: CMPA ,Y+ *F21D: A1 A0 '..'
  504. F21F: BNE MEMTSTLOP4 *F21F: 26 0C '&.'
  505. F221: CMPY ,U *F221: 10 AC C4 '...'
  506. F224: BLO MEMTSTLOP3 *F224: 25 F5 '%.'
  507. F226: LDA #$21 *F226: 86 21 '.!'
  508. F228: LBSR OUTCHR *F228: 17 05 24 '..$'
  509. F22B: BRA MEMTSTLOP1 *F22B: 20 D7 ' .'
  510. ;
  511. F22D: MEMTSTLOP4 PSHS Y,A *F22D: 34 22 '4"'
  512. F22F: LBSR PUTCRLF *F22F: 17 04 B8 '...'
  513. F232: LEAX $01,S *F232: 30 61 '0a'
  514. F234: LBSR OUT2HEXSTR *F234: 17 04 52 '..R'
  515. F237: TSX *F237: 1F 41 '.A'
  516. F239: LBSR OUT1HEXSTR *F239: 17 04 4F '..O'
  517. F23C: LDX $01,S *F23C: AE 61 '.a'
  518. F23E: LBSR OUT1HEXSTR *F23E: 17 04 4A '..J'
  519. F241: PULS Y,A *F241: 35 22 '5"'
  520. F243: BRA MEMTSTLOP *F243: 20 BC ' .'
  521. ;
  522. F245: TESTMEMBLK PSHB *F245: 34 04 '4.'
  523. F247: LDB #$08 *F247: C6 08 '..'
  524. F249: TESTMB1 LDA $07,U *F249: A6 47 '.G'
  525. F24B: ASLA *F24B: 48 'H'
  526. F24C: EORA $07,U *F24C: A8 47 '.G'
  527. F24E: ASLA *F24E: 48 'H'
  528. F24F: ASLA *F24F: 48 'H'
  529. F250: ROL $06,U *F250: 69 46 'iF'
  530. F252: ROL $07,U *F252: 69 47 'iG'
  531. F254: DECB *F254: 5A 'Z'
  532. F255: BNE TESTMB1 *F255: 26 F2 '&.'
  533. F257: LDA $06,U *F257: A6 46 '.F'
  534. F259: PULS PC,B *F259: 35 84 '5.'
  535. F25B: RTS *F25B: 39 '9'
  536.  
  537. ;*************************************************************************
  538. ; CONSOLE OPERATIONS
  539. ;-------------------------------------------------------------------------
  540. ;
  541. ;STATUS CONSOLE INPUT STATUS CHECK
  542. ;
  543. F25C: STATUS JMP [CSCVEC] *F25C: 6E 9F EE 1B 'n...'
  544. ;
  545. ;INCHNE INPUT CHARACTER-NO ECHO
  546. ;
  547. F260: INCHNE JMP [CINVEC] *F260: 6E 9F EE 19 'n...'
  548. ;
  549. ;TINCH INPUT CHARACTER
  550. ;
  551. F264: TINCH JMP [CIEVEC] *F264: 6E 9F EE 1D 'n...'
  552. ;
  553. ;TOUTCH CONSOLE CHARACTER OUTPUT
  554. ;
  555. F268: TOUTCH JMP [COPVEC] *F268: 6E 9F EE 1F 'n...'
  556.  
  557. ;*************************************************************************
  558. ; KEYBOARD OPERATIONS
  559. ;-------------------------------------------------------------------------
  560. ;
  561. ;KBST KEYBOARD INPUT STATUS CHECK
  562. ;
  563. F26C: KBST PSHA
  564. F26E: LDA KBUFIPTR ;GET HEAD PTR
  565. F271: CMPA KBUFOPTR ;COMPARE TO TAIL PTR
  566. F274: PULS PC,A
  567. ;
  568. ; KEYBOARD CHAR. INPUT - NO ECHO
  569. ;
  570. F276: KBINNE BSR KBST ;TEST IF CHAR IN KBD INPUT BUFFER
  571. F278: BEQ KBINNE ;IF NOT, SPIN UNTIL THERE IS
  572. F27A: PSHS X,B
  573. F27C: LDX #KBDINPBUF ;POINT TO KEYBOARD INPUT BUFFER
  574. F27F: LDB KBUFOPTR ;GET TAIL PTR
  575. F282: LDA B,X ;GET CHAR FROM BUFFER
  576. F284: INCB ;ADVANCE TAIL
  577. F285: CMPB #8 ;END OF BUFFER?
  578. F287: BLO KBIWRAP
  579. F289: CLRB ;YES, WRAP TO START
  580. F28A: KBIWRAP STB KBUFOPTR ;SAVE UPDATED TAIL PTR
  581. F28D: PULS PC,X,B
  582. ;
  583. ; KEYBOARD CHARACTER INPUT, WITH OPTIONAL ECHO
  584. ;
  585. F28F: KBIN LBSR KBINNE ;GET KBD CHAR
  586. F292: TST NOINPECHO ;ECHO DISABLED?
  587. F295: BNE KBINR
  588. F297: BSR VIDOT ;NO, SHOW CHAR
  589. F299: KBINR RTS
  590.  
  591. ;*************************************************************************
  592. ; VIDEO DISPLAY CHAR
  593. ;-------------------------------------------------------------------------
  594. ;
  595. ;VIDOT VIDEO CHARACTER OUTPUT
  596. ;
  597. F29A: VIDOT PSHS U,Y,X,D *F29A: 34 76 '4v'
  598. F29C: LDU #VIDEODATA ;POINT TO VIDEO DATA *F29C: CE EE 21 '..!'
  599. F29F: LDB [VDCUSR,U] ;GET CHAR AT CURSOR POSN *F29F: E6 D8 04 '...'
  600. F2A2: ANDB #$7F ;STRIP CURSOR BIT *F2A2: C4 7F '..'
  601. F2A4: STB [VDCUSR,U] ;AND PUT BACK *F2A4: E7 D8 04 '...'
  602. ;
  603. F2A7: LBSR VIDPUTCH ;OUTPUT THE CHAR *F2A7: 17 00 0A '...'
  604. F2AA: LDB [VDCUSR,U] ;SET CURSOR BIT
  605. F2AD: ORB #$80 *F2AD: CA 80 '..'
  606. F2AF: STB [VDCUSR,U] *F2AF: E7 D8 04 '...'
  607. F2B2: PULS PC,U,Y,X,D *F2B2: 35 F6 '5.'
  608. ;
  609. F2B4: VIDPUTCH DEC $0A,U *F2B4: 6A 4A 'jJ'
  610. F2B6: BLT ZF2D5 *F2B6: 2D 1D '-.'
  611. F2B8: BEQ ZF2C1 *F2B8: 27 07 ''.'
  612. F2BA: SUBA #$20 *F2BA: 80 20 '. '
  613. F2BC: STA $09,U *F2BC: A7 49 '.I'
  614. F2BE: LBRA VIDOTR *F2BE: 16 00 EC '...'
  615. ;
  616. F2C1: ZF2C1 SUBA #$20 *F2C1: 80 20 '. '
  617. F2C3: PSHA *F2C3: 34 02 '4.'
  618. F2C5: LDA $07,U *F2C5: A6 47 '.G'
  619. F2C7: LDB $09,U *F2C7: E6 49 '.I'
  620. F2C9: MUL ;A*B->D *F2C9: 3D '='
  621. F2CA: CLR ,-S *F2CA: 6F E2 'o.'
  622. F2CC: ADDD ,S++ *F2CC: E3 E1 '..'
  623. F2CE: ADDD ,U *F2CE: E3 C4 '..'
  624. F2D0: STD $04,U *F2D0: ED 44 '.D'
  625. F2D2: LBRA VIDOTR *F2D2: 16 00 D8 '...'
  626. ;
  627. F2D5: ZF2D5 INC $0A,U *F2D5: 6C 4A 'lJ'
  628. F2D7: DEC $0B,U *F2D7: 6A 4B 'jK'
  629. F2D9: BLT ZF308 *F2D9: 2D 2D '--'
  630. F2DB: CMPA #$59 ;"Y"? *F2DB: 81 59 '.Y'
  631. F2DD: BNE ZF2E6 *F2DD: 26 07 '&.'
  632. F2DF: LDA #$02 *F2DF: 86 02 '..'
  633. F2E1: STA $0A,U *F2E1: A7 4A '.J'
  634. F2E3: LBRA VIDOTR *F2E3: 16 00 C7 '...'
  635. ;
  636. F2E6: ZF2E6 CMPA #$48 ;"H"? *F2E6: 81 48 '.H'
  637. F2E8: BNE ZF2F1 *F2E8: 26 07 '&.'
  638. F2EA: LDD ,U *F2EA: EC C4 '..'
  639. F2EC: STD $04,U *F2EC: ED 44 '.D'
  640. F2EE: LBRA VIDOTR *F2EE: 16 00 BC '...'
  641. ;
  642. F2F1: ZF2F1 CMPA #$4B ;"K"? *F2F1: 81 4B '.K'
  643. F2F3: LBNE VIDOTR *F2F3: 10 26 00 B6 '.&..'
  644. F2F7: LBSR ZF3AE *F2F7: 17 00 B4 '...'
  645. F2FA: TFR D,X *F2FA: 1F 01 '..'
  646. F2FC: LDA #$20 ;SPACE *F2FC: 86 20 '. '
  647. F2FE: ZF2FE CMPX $04,U *F2FE: AC 44 '.D'
  648. F300: LBLS VIDOTR *F300: 10 23 00 A9 '.#..'
  649. F304: STA ,-X *F304: A7 82 '..'
  650. F306: BRA ZF2FE *F306: 20 F6 ' .'
  651. ;
  652. F308: ZF308 INC $0B,U *F308: 6C 4B 'lK'
  653. F30A: CMPA #$20 ;SPACE? *F30A: 81 20 '. '
  654. F30C: BLO ZF312 *F30C: 25 04 '%.'
  655. F30E: CMPA #$80 *F30E: 81 80 '..'
  656. F310: BLO ZF35E *F310: 25 4C '%L'
  657. F312: ZF312 CMPA #$07 *F312: 81 07 '..'
  658. F314: BNE ZF319 *F314: 26 03 '&.'
  659. F316: STA MEF4C *F316: B7 EF 4C '..L'
  660. F319: ZF319 CMPA #$1B ;ESC? *F319: 81 1B '..'
  661. F31B: BNE ZF322 *F31B: 26 05 '&.'
  662. F31D: INC $0B,U *F31D: 6C 4B 'lK'
  663. F31F: LBRA VIDOTR *F31F: 16 00 8B '...'
  664. ;
  665. F322: ZF322 CMPA #$0D ;CR? *F322: 81 0D '..'
  666. F324: BNE ZF330 *F324: 26 0A '&.'
  667. F326: LBSR ZF3AE *F326: 17 00 85 '...'
  668. F329: SUBD $06,U *F329: A3 46 '.F'
  669. F32B: STD $04,U *F32B: ED 44 '.D'
  670. F32D: LBRA VIDOTR *F32D: 16 00 7D '..}'
  671. ;
  672. F330: ZF330 CMPA #$0A ;LF? *F330: 81 0A '..'
  673. F332: BNE ZF33C *F332: 26 08 '&.'
  674. F334: LDD $06,U *F334: EC 46 '.F'
  675. F336: ADDD $04,U *F336: E3 44 '.D'
  676. F338: STD $04,U *F338: ED 44 '.D'
  677. F33A: BRA ZF366 *F33A: 20 2A ' *'
  678. ;
  679. F33C: ZF33C CMPA #$08 ;BS? *F33C: 81 08 '..'
  680. F33E: BNE ZF349 *F33E: 26 09 '&.'
  681. F340: LDD $04,U *F340: EC 44 '.D'
  682. F342: SUBD #1
  683. F345: STD $04,U *F345: ED 44 '.D'
  684. F347: BRA ZF366 *F347: 20 1D ' .'
  685. ;
  686. F349: ZF349 CMPA #$0C ;FF? *F349: 81 0C '..'
  687. F34B: BNE VIDOTR *F34B: 26 60 '&`'
  688. F34D: LDY ,U *F34D: 10 AE C4 '...'
  689. F350: STY $04,U *F350: 10 AF 44 '..D'
  690. F353: LDA #$20 ;SPACE *F353: 86 20 '. '
  691. F355: ZF355 STA ,Y+ *F355: A7 A0 '..'
  692. F357: CMPY $02,U *F357: 10 AC 42 '..B'
  693. F35A: BLS ZF355 *F35A: 23 F9 '#.'
  694. F35C: BRA VIDOTR *F35C: 20 4F ' O'
  695. ;
  696. F35E: ZF35E LDY $04,U *F35E: 10 AE 44 '..D'
  697. F361: STA ,Y+ *F361: A7 A0 '..'
  698. F363: STY $04,U *F363: 10 AF 44 '..D'
  699. F366: ZF366 LDY $04,U *F366: 10 AE 44 '..D'
  700. F369: CMPY ,U *F369: 10 AC C4 '...'
  701. F36C: BCC ZF376 *F36C: 24 08 '$.'
  702. F36E: LDY ,U *F36E: 10 AE C4 '...'
  703. F371: STY $04,U *F371: 10 AF 44 '..D'
  704. F374: BRA VIDOTR *F374: 20 37 ' 7'
  705. ;
  706. F376: ZF376 CMPY $02,U *F376: 10 AC 42 '..B'
  707. F379: BLO VIDOTR *F379: 25 32 '%2'
  708. F37B: TST $08,U *F37B: 6D 48 'mH'
  709. F37D: BNE ZF385 *F37D: 26 06 '&.'
  710. F37F: LDD ,U *F37F: EC C4 '..'
  711. F381: STD $04,U *F381: ED 44 '.D'
  712. F383: BRA VIDOTR *F383: 20 28 ' ('
  713. ;
  714. F385: ZF385 LDD $06,U *F385: EC 46 '.F'
  715. F387: LDX ,U *F387: AE C4 '..'
  716. F389: TFR X,Y *F389: 1F 12 '..'
  717. F38B: LEAY D,Y *F38B: 31 AB '1.'
  718. F38D: ZF38D LDA ,Y+ *F38D: A6 A0 '..'
  719. F38F: STA ,X+ *F38F: A7 80 '..'
  720. F391: CMPY $02,U *F391: 10 AC 42 '..B'
  721. F394: BLS ZF38D *F394: 23 F7 '#.'
  722. F396: LDD $04,U *F396: EC 44 '.D'
  723. F398: SUBD $06,U *F398: A3 46 '.F'
  724. F39A: STD $04,U *F39A: ED 44 '.D'
  725. F39C: LDD $02,U *F39C: EC 42 '.B'
  726. F39E: SUBD $06,U *F39E: A3 46 '.F'
  727. F3A0: TFR D,Y *F3A0: 1F 02 '..'
  728. F3A2: INY *F3A2: 31 21 '1!'
  729. F3A4: LDA #$20 ;SPACE *F3A4: 86 20 '. '
  730. F3A6: ZF3A6 STA ,Y+ *F3A6: A7 A0 '..'
  731. F3A8: CMPY $02,U *F3A8: 10 AC 42 '..B'
  732. F3AB: BLS ZF3A6 *F3AB: 23 F9 '#.'
  733. F3AD: VIDOTR RTS *F3AD: 39 '9'
  734. ;
  735. F3AE: ZF3AE LDB $07,U *F3AE: E6 47 '.G'
  736. F3B0: LDY ,U *F3B0: 10 AE C4 '...'
  737. F3B3: ZF3B3 LEAY B,Y *F3B3: 31 A5 '1.'
  738. F3B5: CMPY $04,U *F3B5: 10 AC 44 '..D'
  739. F3B8: BLS ZF3B3 *F3B8: 23 F9 '#.'
  740. F3BA: TFR Y,D *F3BA: 1F 20 '. '
  741. F3BC: RTS *F3BC: 39 '9'
  742.  
  743. ;*************************************************************************
  744. ; SERIAL PORT INPUT & OUTPUT
  745. ;-------------------------------------------------------------------------
  746. ;
  747. ; UASTAT ;F3BD SERIAL PORT INPUT STAT. CK.
  748. ;
  749. F3BD: UASTAT PSHA
  750. F3BF: LDA SBUFIPTR
  751. F3C2: CMPA SBUFOPTR
  752. F3C5: PULS PC,A
  753. ;
  754. ;UAINNE SERIAL PORT INPUT-- NO ECHO
  755. ;
  756. F3C7: UAINNE BSR UASTAT ;UART DATA READY?
  757. F3C9: BEQ UAINNE ;NO, SPIN UNTIL IT IS
  758. F3CB: PSHS X,B
  759. F3CD: LDX #SERINPBUF ;POINT TO CONSOLE BUFFER
  760. F3D0: SEI ;NO INTS WHILE UPDATING POINTER
  761. F3D2: LDB SBUFOPTR ;GET OUTPUT (TAIL) POINTER
  762. F3D5: LDA B,X ;GET CHAR FROM BUFFER
  763. F3D7: INCB ;ADVANCE POINTER
  764. F3D8: CMPB #8 ;END OF BUFFER?
  765. F3DA: BLO UAIWRAP
  766. F3DC: CLRB ;YES, WRAP TO START
  767. F3DD: UAIWRAP STB SBUFOPTR ;SAVE UPDATED OUTPUT (TAIL) POINTER
  768. F3E0: CLI ;INTS OK NOW
  769. F3E2: PULS PC,X,B ;RETURN WITH CHAR IN A
  770. ;
  771. ; SERIAL PORT INPUT
  772. ;
  773. F3E4: UAIN BSR UAINNE ;GET CHAR FROM SERIAL PORT
  774. F3E6: TST NOINPECHO ;ECHO DISABLED?
  775. F3E9: BEQ UAOT ;IF NOT, SEND IT OUT SERIAL ALSO
  776. F3EB: RTS
  777. ;
  778. ;UAOT SERIAL PORT CHAR. OUTPUT
  779. ;
  780. F3EC: UAOT PSHB
  781. F3EE: UAOTW LDB ACIRST ;GET ACIA STATUS REG
  782. F3F1: BITB #ACITXDRMT ;TEST TRANSMIT DATA REGISTER EMPTY BIT
  783. F3F3: BEQ UAOTW ;IF NOT EMPTY, SPIN UNTIL CHAR TRANSMITTED
  784. F3F5: STA ACIDAT ;STORE NEW CHAR TO TX REG FOR TRANSMIT
  785. F3F8: PULS PC,B ;DONE
  786.  
  787. ;*************************************************************************
  788. ; PRINTER OPERATIONS
  789. ;-------------------------------------------------------------------------
  790. ;
  791. ;PNTIN INITIALIZE PRINTER DRIVER
  792. ;
  793. F3FA: PNTIN LDA #$FF *F3FA: 86 FF '..'
  794. F3FC: STA VIADDRB *F3FC: B7 EF 22 '.."'
  795. F3FF: STA PRTRDY *F3FF: B7 EE 17 '...'
  796. F402: LDA MEF2C *F402: B6 EF 2C '..,'
  797. F405: ANDA #$0F *F405: 84 0F '..'
  798. F407: ORA #$A0 *F407: 8A A0 '..'
  799. F409: STA MEF2C *F409: B7 EF 2C '..,'
  800. F40C: RTS *F40C: 39 '9'
  801. ;
  802. ;PNTCK CHECK IF PRINTER READY
  803. ;
  804. F40D: PNTCK TST PRTRDY *F40D: 7D EE 17 '}..'
  805. F410: BMI ZF420 *F410: 2B 0E '+.'
  806. F412: PSHB *F412: 34 04 '4.'
  807. F414: LDB VIAIRFL *F414: F6 EF 2D '..-'
  808. F417: BITB #$10 *F417: C5 10 '..'
  809. F419: BEQ ZF41E *F419: 27 03 ''.'
  810. F41B: COM PRTRDY *F41B: 73 EE 17 's..'
  811. F41E: ZF41E PULB *F41E: 35 04 '5.'
  812. F420: ZF420 RTS *F420: 39 '9'
  813. ;
  814. ; IRQ -
  815. ;
  816. F421: ZF421 BSR PNTCK *F421: 8D EA '..'
  817. F423: BPL ZF421 *F423: 2A FC '*.'
  818. F425: STA VIAORB *F425: B7 EF 20 '.. '
  819. F428: CLR PRTRDY *F428: 7F EE 17 '...'
  820. F42B: RTS *F42B: 39 '9'
  821.  
  822. ;*************************************************************************
  823. ; DISK: BASIC OPERATIONS
  824. ;-------------------------------------------------------------------------
  825. ;
  826. ;DINIT INITIALIZE DISK DRIVER
  827. ;
  828. F42C: DINIT LDX #CURDRV *F42C: 8E EE 0E '...'
  829. F42F: LDB #$09 *F42F: C6 09 '..'
  830. F431: ZF431 CLR ,X+ *F431: 6F 80 'o.'
  831. F433: DECB *F433: 5A 'Z'
  832. F434: BNE ZF431 *F434: 26 FB '&.'
  833. F436: CLR MCC34 *F436: 7F CC 34 '..4'
  834. F439: LDA #$FF *F439: 86 FF '..'
  835. F43B: STA FDSTATUS *F43B: B7 EE 0D '...'
  836. ;
  837. ; INITIALIZE DISK DRIVER (WARM START)
  838. ;
  839. F43E: DWARM RTS *F43E: 39 '9'
  840. ;
  841. ; READ SECTOR
  842. ;
  843. F43F: DREAD LBSR DSEEK *F43F: 17 00 33 '..3'
  844. F442: BNE ZF44F *F442: 26 0B '&.'
  845. F444: MF444 LDA #$8C *F444: 86 8C '..'
  846. F446: LDB #$04 *F446: C6 04 '..'
  847. F448: LDY #M0100 *F448: 10 8E 01 00 '....'
  848. F44C: LBSR DMAONE ;DMA ROUTINE *F44C: 17 01 48 '..H'
  849. F44F: ZF44F BITB #$10 *F44F: C5 10 '..'
  850. F451: BEQ ZF456 *F451: 27 03 ''.'
  851. F453: LBSR DSWIDE *F453: 17 00 6E '..n'
  852. F456: ZF456 BITB #$1C *F456: C5 1C '..'
  853. F458: RTS *F458: 39 '9'
  854. ;
  855. ; WRITE SECTOR
  856. ;
  857. F459: DWRITE PSHX *F459: 34 10 '4.'
  858. F45B: BSR DSEEK *F45B: 8D 18 '..'
  859. F45D: BNE ZF46A *F45D: 26 0B '&.'
  860. F45F: LDA #$AC *F45F: 86 AC '..'
  861. F461: LDB #$05 *F461: C6 05 '..'
  862. F463: LDY #M0100 *F463: 10 8E 01 00 '....'
  863. F467: LBSR DMAONE ;DMA ROUTINE *F467: 17 01 2D '..-'
  864. F46A: ZF46A BITB #$10 *F46A: C5 10 '..'
  865. F46C: BEQ ZF471 *F46C: 27 03 ''.'
  866. F46E: LBSR DSWIDE *F46E: 17 00 53 '..S'
  867. F471: ZF471 BITB #$5C *F471: C5 5C '.\'
  868. F473: PULS PC,X *F473: 35 90 '5.'
  869. ;
  870. ; SEEK TO TRACK
  871. ;
  872. F475: DSEEK PSHS X,A *F475: 34 12 '4.'
  873. F477: STB FDCRG2 *F477: F7 EF 32 '..2'
  874. F47A: LBSR DELAY *F47A: 17 00 FC '...'
  875. F47D: LDA FDLCHIMG ;FDC latch image
  876. F480: ANDA #$F7 *F480: 84 F7 '..'
  877. F482: TST ,S *F482: 6D E4 'm.'
  878. F484: BEQ ZF48D *F484: 27 07 ''.'
  879. F486: LBSR DFNDDE *F486: 17 00 C9 '...'
  880. F489: TST ,X *F489: 6D 84 'm.'
  881. F48B: BNE ZF48F *F48B: 26 02 '&.'
  882. F48D: ZF48D ORA #$08 *F48D: 8A 08 '..'
  883. F48F: ZF48F STA SSWFDS ;Floppy Control Latch *F48F: B7 EF 48 '..H'
  884. F492: STA FDLCHIMG ;FDC latch image
  885. F495: LDA ,S *F495: A6 E4 '..'
  886. F497: LBSR DFNDTR *F497: 17 00 B0 '...'
  887. F49A: LDB ,X *F49A: E6 84 '..'
  888. F49C: STB FDCRG1 *F49C: F7 EF 31 '..1'
  889. F49F: LBSR DELAY *F49F: 17 00 D7 '...'
  890. F4A2: CMPA ,X *F4A2: A1 84 '..'
  891. F4A4: BEQ ZF4C2 *F4A4: 27 1C ''.'
  892. F4A6: STA FDCRG3 *F4A6: B7 EF 33 '..3'
  893. F4A9: LBSR DELAY *F4A9: 17 00 CD '...'
  894. F4AC: LDA #$1B *F4AC: 86 1B '..'
  895. F4AE: LBSR DMATWO *F4AE: 17 01 05 '...'
  896. F4B1: TFR B,A *F4B1: 1F 98 '..'
  897. F4B3: LBSR DFNDTR *F4B3: 17 00 94 '...'
  898. F4B6: LDB FDCRG1 *F4B6: F6 EF 31 '..1'
  899. F4B9: STB ,X *F4B9: E7 84 '..'
  900. F4BB: TFR A,B *F4BB: 1F 89 '..'
  901. F4BD: BITB #$10 *F4BD: C5 10 '..'
  902. F4BF: LBSR DELAY *F4BF: 17 00 B7 '...'
  903. F4C2: ZF4C2 PULS PC,X,A *F4C2: 35 92 '5.'
  904. ;
  905. ; SWITCH DENSITY SELECT
  906. ;
  907. F4C4: DSWIDE PSHB *F4C4: 34 04 '4.'
  908. F4C6: LBSR DFNDDE *F4C6: 17 00 89 '...'
  909. F4C9: COM ,X *F4C9: 63 84 'c.'
  910. F4CB: PULS PC,B *F4CB: 35 84 '5.'
  911. ;
  912. ; VERIFY SECTOR
  913. ;
  914. F4CD: DVERFY LDA #$8C *F4CD: 86 8C '..'
  915. F4CF: LBSR DMATWO *F4CF: 17 00 E4 '...'
  916. F4D2: BITB #$18 *F4D2: C5 18 '..'
  917. F4D4: RTS *F4D4: 39 '9'
  918. ;
  919. ; RESTORE DRIVE
  920. ;
  921. F4D5: RESTOR PSHX *F4D5: 34 10 '4.'
  922. F4D7: BSR DRIVE *F4D7: 8D 14 '..'
  923. F4D9: LDA #$0B *F4D9: 86 0B '..'
  924. F4DB: LBSR DMATWO *F4DB: 17 00 D8 '...'
  925. F4DE: PSHB *F4DE: 34 04 '4.'
  926. F4E0: LBSR DFNDTR *F4E0: 17 00 67 '..g'
  927. F4E3: LDB FDCRG1 *F4E3: F6 EF 31 '..1'
  928. F4E6: STB ,X *F4E6: E7 84 '..'
  929. F4E8: PULS X,B *F4E8: 35 14 '5.'
  930. F4EA: BITB #$98 *F4EA: C5 98 '..'
  931. F4EC: RTS *F4EC: 39 '9'
  932. ;
  933. ; SELECT DRIVE
  934. ; CHECK DRIVE READY
  935. ;
  936. F4ED: DRIVE LDA $03,X *F4ED: A6 03 '..'
  937. F4EF: CMPA #$03 *F4EF: 81 03 '..'
  938. F4F1: BLS ZF4F7 *F4F1: 23 04 '#.'
  939. F4F3: LDB #$0F *F4F3: C6 0F '..'
  940. F4F5: BRA ZF530 *F4F5: 20 39 ' 9'
  941. ;
  942. F4F7: ZF4F7 STA CURDRV *F4F7: B7 EE 0E '...'
  943. F4FA: LDA FDLCHIMG ;FDC latch image
  944. F4FD: ANDA #$EC *F4FD: 84 EC '..'
  945. F4FF: ORA CURDRV *F4FF: BA EE 0E '...'
  946. F502: STA FDLCHIMG ;FDC latch image
  947. F505: ANDA #$03 *F505: 84 03 '..'
  948. F507: PSHB *F507: 34 04 '4.'
  949. F509: LDB DSKCFG ;GET DISK SIZE *F509: F6 EE 18 '...'
  950. F50C: ZF50C ASLB *F50C: 58 'X'
  951. F50D: DECA *F50D: 4A 'J'
  952. F50E: BPL ZF50C *F50E: 2A FC '*.'
  953. F510: ANDB #$10 *F510: C4 10 '..'
  954. F512: ORB FDLCHIMG ;FDC latch image
  955. F515: STB SSWFDS ;Floppy Control Latch *F515: F7 EF 48 '..H'
  956. F518: STB FDLCHIMG ;FDC latch image
  957. F51B: PULB *F51B: 35 04 '5.'
  958. F51D: LDA FDCCTL *F51D: B6 EF 30 '..0'
  959. F520: BITA #$80 *F520: 85 80 '..'
  960. F522: BEQ ZF533 *F522: 27 0F ''.'
  961. F524: LBSR ZF583 *F524: 17 00 5C '..\'
  962. F527: LDA FDCCTL *F527: B6 EF 30 '..0'
  963. F52A: BITA #$80 *F52A: 85 80 '..'
  964. F52C: BEQ ZF533 *F52C: 27 05 ''.'
  965. F52E: ZF52E LDB #$80 *F52E: C6 80 '..'
  966. F530: ZF530 SEC *F530: 1A 01 '..'
  967. F532: RTS *F532: 39 '9'
  968. ;
  969. F533: ZF533 CLRB *F533: 5F '_'
  970. F534: CLC *F534: 1C FE '..'
  971. F536: RTS *F536: 39 '9'
  972. ;
  973. ; QUICK CHECK DRIVE READY
  974. ;
  975. F537: DQUICK LDA $03,X *F537: A6 03 '..'
  976. F539: CMPA #$03 *F539: 81 03 '..'
  977. F53B: BLS ZF541 *F53B: 23 04 '#.'
  978. F53D: LDB #$0F *F53D: C6 0F '..'
  979. F53F: BRA ZF530 *F53F: 20 EF ' .'
  980. ;
  981. F541: ZF541 LDA FDCCTL *F541: B6 EF 30 '..0'
  982. F544: BITA #$80 *F544: 85 80 '..'
  983. F546: BEQ ZF533 *F546: 27 EB ''.'
  984. F548: BRA ZF52E *F548: 20 E4 ' .'
  985. ;
  986. ; FIND CURRENT TRACK
  987. ;
  988. F54A: DFNDTR LDX #TRKTBL *F54A: 8E EE 0F '...'
  989. F54D: LDB CURDRV *F54D: F6 EE 0E '...'
  990. F550: ABX *F550: 3A ':'
  991. F551: RTS *F551: 39 '9'
  992. ;
  993. ; FIND CURRENT DENSITY SELECT
  994. ;
  995. F552: DFNDDE LDX #DENSEL *F552: 8E EE 13 '...'
  996. F555: LDB CURDRV *F555: F6 EE 0E '...'
  997. F558: ABX *F558: 3A ':'
  998. F559: RTS *F559: 39 '9'
  999. ;
  1000. ; WRITE ENTIRE TRACK
  1001. ;
  1002. F55A: WRTRK LDB FDLCHIMG ;FDC latch image
  1003. F55D: ANDB #$F7 *F55D: C4 F7 '..'
  1004. F55F: TSTA *F55F: 4D 'M'
  1005. F560: BNE ZF564 *F560: 26 02 '&.'
  1006. F562: ORB #$08 *F562: CA 08 '..'
  1007. F564: ZF564 STB FDLCHIMG ;FDC latch image
  1008. F567: STB SSWFDS ;Floppy Control Latch *F567: F7 EF 48 '..H'
  1009. F56A: TFR X,D *F56A: 1F 10 '..'
  1010. F56C: PSHY *F56C: 34 20 '4 '
  1011. F56E: SUBD ,S++ *F56E: A3 E1 '..'
  1012. F570: TFR D,Y *F570: 1F 02 '..'
  1013. F572: LDB #$05 *F572: C6 05 '..'
  1014. F574: LDA #$F4 *F574: 86 F4 '..'
  1015. F576: BSR DMAONE ;DMA ROUTINE *F576: 8D 1F '..'
  1016. F578: RTS *F578: 39 '9'
  1017. ;
  1018. ; DELAY
  1019. ;
  1020. F579: DELAY LBSR DELAYM
  1021. F57C: DELAYM LBSR DELAYR *F57C: 17 00 03 '...'
  1022. F57F: LBSR DELAYR *F57F: 17 00 00 '...'
  1023. F582: DELAYR RTS *F582: 39 '9'
  1024. ;
  1025. F583: ZF583 PSHX *F583: 34 10 '4.'
  1026. F585: LDX #MD903 *F585: 8E D9 03 '...'
  1027. F588: ZF588 INX *F588: 30 01 '0.'
  1028. F58A: INX *F58A: 30 01 '0.'
  1029. F58C: DEX *F58C: 30 1F '0.'
  1030. F58E: DEX *F58E: 30 1F '0.'
  1031. F590: DEX *F590: 30 1F '0.'
  1032. F592: BNE ZF588 *F592: 26 F4 '&.'
  1033. F594: PULX *F594: 35 10 '5.'
  1034. F596: RTS *F596: 39 '9'
  1035. ;
  1036. ; 6445 DMA CONTROLLER (ACCESSED ONLY WITHIN THIS ROUTINE)
  1037. ; CALLED BY READ SECTOR, WRITE SECTOR & WRITE TRACK
  1038. ;
  1039. F597: DMAONE STX DMACTL ;DMA CTRLR F597: BF EF 00 '...'
  1040. F59A: STY DMARG1 *F59A: 10 BF EF 02 '....'
  1041. F59E: STB DMARG2 *F59E: F7 EF 10 '...'
  1042. F5A1: LDB FDCRG3 *F5A1: F6 EF 33 '..3'
  1043. F5A4: LBSR DELAY *F5A4: 17 FF D2 '...'
  1044. F5A7: LDB FDCCTL *F5A7: F6 EF 30 '..0'
  1045. F5AA: LBSR DELAY *F5AA: 17 FF CC '...'
  1046. F5AD: LDB #$01 *F5AD: C6 01 '..'
  1047. F5AF: STB DMARG3 *F5AF: F7 EF 14 '...'
  1048. F5B2: CLRB *F5B2: 5F '_'
  1049. F5B3: STB DMARG4 *F5B3: F7 EF 15 '...'
  1050. ; THIS POINT CALLED BY SEEK TRACK, VERIFY SECTOR & RESTORE DRIVE
  1051. F5B6: DMATWO LDB #$FF ; *F5B6: C6 FF '..'
  1052. F5B8: STB FDSTATUS *F5B8: F7 EE 0D '...'
  1053. F5BB: STA FDCCTL *F5BB: B7 EF 30 '..0'
  1054. F5BE: LDA MEE32 *F5BE: B6 EE 32 '..2'
  1055. F5C1: ADDA #$64 *F5C1: 8B 64 '.d'
  1056. F5C3: DMAF5C3 TST MCC34 *F5C3: 7D CC 34 '}.4'
  1057. F5C6: BEQ DMAF5CA *F5C6: 27 02 ''.'
  1058. F5C8: SWI3 *F5C8: 11 3F '.?'
  1059. F5CA: DMAF5CA CLI *F5CA: 1C EF '..'
  1060. F5CC: LDB FDSTATUS *F5CC: F6 EE 0D '...'
  1061. F5CF: CMPB #$FF *F5CF: C1 FF '..'
  1062. F5D1: BNE DMAF5DA *F5D1: 26 07 '&.'
  1063. F5D3: CMPA MEE32 *F5D3: B1 EE 32 '..2'
  1064. F5D6: BNE DMAF5C3 *F5D6: 26 EB '&.'
  1065. F5D8: LDB #$80 *F5D8: C6 80 '..'
  1066. F5DA: DMAF5DA CLR DMARG3 *F5DA: 7F EF 14 '...'
  1067. F5DD: RTS *F5DD: 39 '9'
  1068.  
  1069. ;*************************************************************************
  1070. ; TIMER
  1071. ;-------------------------------------------------------------------------
  1072. ;
  1073. ;TNINT INITIALIZE THE TIMER
  1074. ;
  1075. F5DE: TNINT LDA VIAAUXC *F5DE: B6 EF 2B '..+'
  1076. F5E1: ANDA #$3F *F5E1: 84 3F '.?'
  1077. F5E3: ORA #$40 *F5E3: 8A 40 '.@'
  1078. F5E5: STA VIAAUXC *F5E5: B7 EF 2B '..+'
  1079. F5E8: LDD #M4FC3 *F5E8: CC 4F C3 '.O.'
  1080. F5EB: STD VIAT1LO *F5EB: FD EF 24 '..$'
  1081. F5EE: RTS *F5EE: 39 '9'
  1082. ;
  1083. ; TURN TIMER OFF
  1084. ;
  1085. F5EF: TMOFF LDA #$40 *F5EF: 86 40 '.@'
  1086. F5F1: STA VIAIREN *F5F1: B7 EF 2E '...'
  1087. F5F4: RTS *F5F4: 39 '9'
  1088. ;
  1089. ;TMON TURN TIMER ON
  1090. ;
  1091. F5F5: TMON LDA VIAT1LO *F5F5: B6 EF 24 '..$'
  1092. F5F8: LDA #$C0 *F5F8: 86 C0 '..'
  1093. F5FA: STA VIAIREN *F5FA: B7 EF 2E '...'
  1094. F5FD: RTS *F5FD: 39 '9'
  1095.  
  1096. ;*************************************************************************
  1097. ; INTERRUPT HANDLER
  1098. ;-------------------------------------------------------------------------
  1099. ;
  1100. ; IRQ INTERRUPT HANDLER (FOR ALL DEVICES)
  1101. ; THE ONLY HARDWARE INTERRUPT (NMI & FIRQ ARE NOT CONNECTED)
  1102. ;
  1103. F5FE: HNDLIRQ LDX #INTSCTAB ;POINT TO CONTROL TABLE
  1104. F601: LDB ,X+ ;GET ENTRY COUNT
  1105. F603: IRQHNDL LDA ,X+ ;GET CODE?
  1106. F605: BITA [,X++] ;TEST CODE
  1107. F607: BEQ IRQHNDN ;MATCH?
  1108. F609: JMP [,X] ;JUMP TO HANDLER
  1109. ;
  1110. F60B: IRQHNDN LEAX $02,X ;MOVE TO NEXT ENTRY
  1111. F60D: DECB ;COUNT THEM DOWN
  1112. F60E: BNE IRQHNDL ;ALL TESTED?
  1113. F610: JMP [IRQVEC] ;YES, CALL DEFAULT HANDLER
  1114. ;
  1115. ; INTERRUPT SOURCE CONTROL TABLE
  1116. ;
  1117. F614: INTSCTAB FCB 04 ;NUMBER OF ENTRIES
  1118. ;
  1119. ; STATUS BIT TO TEST, STATUS SOURCE ADDR, HANDLER ADDR
  1120. ;
  1121. F615: FCB $02,VIAIRFL,INTKYBD ;KEYBOARD
  1122. F61A: FCB $40,VIAIRFL,INTPRTR ;PRINTER
  1123. F61F: FCB $08,SSWFDS,INTFDC ;FDC
  1124. F624: FCB $08,VIAIRA,INTUART ;UART
  1125.  
  1126. ;*************************************************************************
  1127. ; KEYBOARD INTERRUPT HANDLING
  1128. ;-------------------------------------------------------------------------
  1129. F629: INTKYBD LDA [VIAIRA] ;READ BYTE FROM VIA INP REG A
  1130. F62C: ANDA #$7F ;MASK TO VALID ASCII
  1131. F62E: LDX #KBDINPBUF ;POINT TO KEYBOARD INPUT BUFFER
  1132. F631: LDB KBUFIPTR ;GET BUFFER HEAD PTR *F631: F6 EE 33 '..3'
  1133. F634: STA B,X ;STORE CHAR THERE
  1134. F636: INCB ;BUMP PTR
  1135. F637: CMPB #8 ;END OF BUFFER?
  1136. F639: BLO INTKYBDF
  1137. F63B: CLRB ;YES, RESET PTR
  1138. F63C: INTKYBDF CMPB KBUFOPTR ;CAUGHT UP WITH TAIL PTR? (FULL)
  1139. F63F: BEQ INTKYBDX
  1140. F641: STB KBUFIPTR ;NO, SAVE UPDATED HEAD PTR
  1141. F644: INTKYBDX RTI
  1142.  
  1143. ;*************************************************************************
  1144. ; UART RECEIVE INTERRUPT HANDLING
  1145. ;-------------------------------------------------------------------------
  1146. ;
  1147. ; STORE RECEIVED UART CHAR TO SERIAL INPUT BUFFER
  1148. ; CALED VIA INT FROM INDIRECT JUMP AT F609
  1149. ;
  1150. F645: INTUART LDA ACIDAT ;GET UART DATA
  1151. F648: ANDA #$7F ;MASK TO VALID ASCII
  1152. F64A: LDX #SERINPBUF ;POINT TO SERIAL INPUT BUFFER
  1153. F64D: LDB SBUFIPTR ;GET INPUT (HEAD) PTR
  1154. F650: STA B,X ;STORE CHAR THERE
  1155. F652: INCB ;ADVANCE INPUT PTR
  1156. F653: CMPB #8 ;END OF BUFFER?
  1157. F655: BLO INTUARTF
  1158. F657: CLRB ;YES, WRAP BACK TO START
  1159. F658: INTUARTF CMPB SBUFOPTR ;HAS HEAD OVERTAKEN TAIL?
  1160. F65B: BEQ INTUARTFX
  1161. F65D: STB SBUFIPTR ;NO, SAVE INPUT (HEAD) PTR
  1162. F660: INTUARTFX RTI
  1163.  
  1164. ;*************************************************************************
  1165. ; PRINTER INTERRUPT HANDLING
  1166. ;-------------------------------------------------------------------------
  1167. F661: INTPRTR LDA VIAT1LO
  1168. F664: INC MEE32
  1169. F667: JMP ZC700
  1170.  
  1171. ;*************************************************************************
  1172. ; FLOPPY DISK INTERRUPT HANDLING
  1173. ;-------------------------------------------------------------------------
  1174. F66A: INTFDC LDA FDCCTL
  1175. F66D: STA FDSTATUS
  1176. F670: LBSR DELAYR ;SHORT DELAY?!
  1177. F673: RTIINST RTI
  1178.  
  1179. ;*************************************************************************
  1180. ; INTERRUPT VECTORS
  1181. ;-------------------------------------------------------------------------
  1182. ;
  1183. F674: hdlSWI JMP [SWIVEC] *F674: 6E 9F EE 08 'n...'
  1184. F678: hdlSWI2 JMP [SW2VEC] *F678: 6E 9F EE 02 'n...'
  1185. F67C: hdlSWI3 JMP [SW3VEC] *F67C: 6E 9F EE 00 'n...'
  1186. F680: hdlNMI JMP [NMIVEC] *F680: 6E 9F EE 0A 'n...'
  1187. F684: hdlFIRQ JMP [FIRVEC] *F684: 6E 9F EE 04 'n...'
  1188. F688: RTI *F688: 3B ';'
  1189.  
  1190. ;*************************************************************************
  1191. ; CONSOLE: HEX OUTPUT ROUTINES
  1192. ;-------------------------------------------------------------------------
  1193. ;
  1194. F689: OUT2HEXSTR BSR OUTHEXSTR *F689: 8D 07 '..'
  1195. F68B: OUT1HEXSTR BSR OUTHEXSTR *F68B: 8D 05 '..'
  1196. F68D: OUTSPC LDA #' ' ;SET SPACE
  1197. F68F: LBRA OUTCHR ;SHOW IT
  1198. ;
  1199. ; DISPLAY STRING AT [X] AS HEX
  1200. ;
  1201. F692: OUTHEXSTR LDA ,X ;GET BYTE *F692: A6 84 '..'
  1202. F694: BSR HEXNBH ;SHOW HI NIBBLE
  1203. F696: LDA ,X+ ;GET AGAIN, AND ADVANCE PTR
  1204. F698: BRA HEXNBL ;SHOW LO NIBBLE
  1205. ;
  1206. ; DISPLAY HIGH HEX NIBBLE IN A:7-4
  1207. ;
  1208. F69A: HEXNBH LSRA ;MOVE HIGH NIBBLE TO LOW NIBBLE *F69A: 44 'D'
  1209. F69B: LSRA
  1210. F69C: LSRA
  1211. F69D: LSRA
  1212. ;
  1213. ; DISPLAY LOW HEX NIBBLE IN A:3-0
  1214. ;
  1215. F69E: HEXNBL ANDA #$0F ;MASK TO LO 4 BITS *F69E: 84 0F '..'
  1216. F6A0: ADDA #'0' ;MAKE ASCII
  1217. F6A2: CMPA #'9' ;NUMERIC?
  1218. F6A4: BLS HEXNBN
  1219. F6A6: ADDA #$07 ;NO, MAKE IT A..F
  1220. F6A8: HEXNBN LBRA OUTCHR
  1221.  
  1222. ;*************************************************************************
  1223. ; CONSOLE: HEX INPUT
  1224. ;-------------------------------------------------------------------------
  1225. ;
  1226. ; GET HEX INPUT
  1227. ;
  1228. F6AB: INPHEXCHR LBSR INPCHR *F6AB: 17 00 B9 '...'
  1229. F6AE: ZF6AE CMPA #'0' *F6AE: 81 30 '.0'
  1230. F6B0: BMI BADHEXCHR *F6B0: 2B 13 '+.'
  1231. F6B2: CMPA #'9' *F6B2: 81 39 '.9'
  1232. F6B4: BLE GOODHEX *F6B4: 2F 0A '/.'
  1233. F6B6: CMPA #'A' *F6B6: 81 41 '.A'
  1234. F6B8: BMI BADHEXCHR *F6B8: 2B 0B '+.'
  1235. F6BA: CMPA #'F' *F6BA: 81 46 '.F'
  1236. F6BC: BGT BADHEXCHR *F6BC: 2E 07 '..'
  1237. F6BE: SUBA #$07 ;MOVE A..F INTO 10-15 RANGE
  1238. F6C0: GOODHEX ANDA #$0F ;MASK TO 4 BIT NIBBLE
  1239. F6C2: CLC ;RETURN VALID HEX
  1240. F6C4: RTS
  1241. ;
  1242. F6C5: BADHEXCHR SEC ;RETURN BAD HEX *F6C5: 1A 01 '..'
  1243. F6C7: RTS
  1244.  
  1245. ; WHAT CALLS THIS?
  1246. F6C8: LBSR INPHEXCHR ;GET HEX CHAR *F6C8: 17 FF E0 '...'
  1247. F6CB: BLO DROPHEX ;BAD?
  1248. F6CD: ZF6CD ASLA *F6CD: 48 'H'
  1249. F6CE: ASLA *F6CE: 48 'H'
  1250. F6CF: ASLA *F6CF: 48 'H'
  1251. F6D0: ASLA *F6D0: 48 'H'
  1252. F6D1: TFR A,B *F6D1: 1F 89 '..'
  1253. F6D3: TSTA *F6D3: 4D 'M'
  1254. F6D4: LBSR INPHEXCHR *F6D4: 17 FF D4 '...'
  1255. F6D7: BLO DROPHEX *F6D7: 25 0E '%.'
  1256. F6D9: ABA *F6D9: 34 04 AB E0 '4...'
  1257. F6DD: TFR A,B *F6DD: 1F 89 '..'
  1258. F6DF: TSTA *F6DF: 4D 'M'
  1259. F6E0: ADDB MEE2D *F6E0: FB EE 2D '..-'
  1260. F6E3: STB MEE2D *F6E3: F7 EE 2D '..-'
  1261. F6E6: RTS *F6E6: 39 '9'
  1262. ;
  1263. F6E7: DROPHEX LBRA COMDPROC ;WARM START MONITOR
  1264. ;
  1265. F6EA: PUTCRLF LDX #MSGCRLF ;PUT CRLF
  1266. F6ED: LBRA OUTSTRX
  1267. ;
  1268. ; GET THREE HEX INPUT WORDS
  1269. ;
  1270. F6F0: INP3HEXWDS BSR INP2HEXWDS
  1271. F6F2: PSHS X,D
  1272. F6F4: BSR INPHEXWRD
  1273. F6F6: PULS Y,X
  1274. F6F8: EXG X,Y
  1275. F6FA: RTS
  1276. ;
  1277. F6FB: INP2HEXWDS BSR INPHEXWRD
  1278. F6FD: BLO ZF705
  1279. F6FF: PSHD
  1280. F701: BSR INPHEXWRD
  1281. F703: PULX
  1282. F705: ZF705 RTS
  1283. ;
  1284. ; GET INPUT HEX WORD, RETURN IN D
  1285. ;
  1286. F706: INPHEXWRD CLRA *F706: 4F 'O'
  1287. F707: CLRB *F707: 5F '_'
  1288. F708: PSHD *F708: 34 06 '4.'
  1289. F70A: LDB NIBSPWORD ;SET HEX CHAR COUNT
  1290. F70D: PSHD *F70D: 34 06 '4.'
  1291. F70F: INPHXWD1 LBSR INPHEXCHR ;GET HEX CHAR
  1292. F712: BCC INPHXWDL ;INVALID?
  1293. F714: CMPA #'/' ;YES, IS IT A SLASH? (?!)
  1294. F716: BNE INPHXWD1 ;NO, TRY AGAIN
  1295. F718: SEC ;YES, SET INVALID
  1296. F71A: PULS PC,X,D ;AND RETURN
  1297. ;
  1298. F71C: INPHXWDL STA ,S
  1299. F71E: LDD $02,S
  1300. F720: LSLB
  1301. F721: ROLA
  1302. F722: LSLB
  1303. F723: ROLA
  1304. F724: LSLB
  1305. F725: ROLA
  1306. F726: LSLB
  1307. F727: ROLA
  1308. F728: ORB ,S
  1309. F72A: STD $02,S
  1310. F72C: DEC $01,S
  1311. F72E: BEQ INPHXWR
  1312. F730: LBSR INPHEXCHR
  1313. F733: BCC INPHXWDL
  1314. F735: INPHXWR CLC
  1315. F737: PULD
  1316. F739: PULS PC,D
  1317.  
  1318. ;*************************************************************************
  1319. ; CONSOLE: OUTPUT STRING, HEX CHAR
  1320. ;-------------------------------------------------------------------------
  1321. ;
  1322. ; OUTPUT A STRING. FIRST CHAR IS IN A, THE REST AT [X]
  1323. ;
  1324. F73B: OUTSTR LBSR OUTCHR ;OUTPUT CHAR IN A
  1325. F73E: OUTSTRX LDA ,X+ ;GET NEXT CHAR VIA X
  1326. F740: BNE OUTSTR
  1327. F742: RTS
  1328. ;
  1329. F743: OUTCHRHEX PSHB
  1330. F745: LBSR OUTSTRX
  1331. F748: LEAX ,S
  1332. F74A: LBSR OUT1HEXSTR
  1333. F74D: PULS PC,B
  1334.  
  1335. ;*************************************************************************
  1336. ; CONSOLE: INPUT/OUTPUT CHAR
  1337. ;-------------------------------------------------------------------------
  1338. ;
  1339. ; OUTPUT A CHAR, CHECKING FOR CTRL-X ON INPUT
  1340. ;
  1341. F74F: OUTCHR LBSR STATUS ;CHECK FOR KEYPRESS READY
  1342. F752: BEQ OUTCHNI ;IS THERE AN INPUT CHAR?
  1343. F754: PSHA
  1344. F756: LBSR INCHNE ;YES, GET IT
  1345. F759: CMPA #$18 ;CTRL-X?
  1346. F75B:? LBEQ COMDPROC ;YES, ABANDON OPERATION AND WARM START MONITOR
  1347. F75F:? LBSR INCHNE ;GET ANOTHER?!
  1348. F762:? PULA
  1349. F764: OUTCHNI LBRA TOUTCH ;DISPLAY IT
  1350. ;
  1351. ; INPUT A CHAR, CHECKING FOR CTRL-X
  1352. ;
  1353. F767: INPCHR LBSR INCHNE ;GET INPUT CHAR
  1354. F76A: CMPA #$18 ;CTRL-X?
  1355. F76C: LBEQ COMDPROC ;YES, ABANDON OPERATION AND WARM START MONITOR
  1356. F770: CMPA #$60 ;IS IT UPPER CASE?
  1357. F772: LBLS TOUTCH ;YES, JUST SHOW IT
  1358. F776: CMPA #$7A ;IS IT LOWER CASE?
  1359. F778: LBHI TOUTCH ;NO, JUST SHOW IT
  1360. F77C: ANDA #$DF ;YES, MAKE IT UPPER CASE FIRST
  1361. F77E: LBRA TOUTCH ;THEN SHOW IT
  1362.  
  1363. ;*************************************************************************
  1364. ; VIDEO OPERATIONS
  1365. ;-------------------------------------------------------------------------
  1366. ;
  1367. ; 6845 CRTC INITIALIZATION - WRITE PARAMETER BLOCK TO CRTC
  1368. ;
  1369. F781: CRTCINIT CLRB ;RESET CRTC REGISTER INDEX
  1370. F782: LDX #CRTCPARMS ;POINT TO CRTC INITIALIZATION PARAMETERS BLOCK
  1371. F785: CRTCINIL STB CRTCAREG ;WRITE REGISTER INDEX TO CRTC ADDRESS REG
  1372. F788: LDA ,X+ ;GET PARAMETER BYTE
  1373. F78A: STA CRTCDREG ;WRITE TO DATA REG (SELECTED BY ADDR REG)
  1374. F78D: INCB ;BUMP REG INDEX
  1375. F78E: CMPB #16 ;ALL PARMS WRITTEN?
  1376. F790: BNE CRTCINIL
  1377. ;
  1378. ; COPY VIDEO PARMS AT $F7B3 TO $EE21 (12 BYTES)
  1379. ;
  1380. F792: LDX #VIDPARMS ;POINT TO VIDEO PARAMETERS BLOCK
  1381. F795: LDY #VIDEODATA ;POINT TO SOFT DATA TABLE IN RAM
  1382. F799: CRTCINI2 LDA ,X+ ;MOVE BLOCK
  1383. F79B: STA ,Y+
  1384. F79D: CMPX #VIDPARME ;END OF BLOCK?
  1385. F7A0: BLO CRTCINI2
  1386. F7A2: RTS
  1387. ;
  1388. F7A3: CRTCPARMS FCB $7B ;0 - Horizontal Total = 123
  1389. F7A4: FCB $50 ;1 - Horizontal Displayed = 80
  1390. F7A5: FCB $62 ;2 - Horizontal Sync Position = 98
  1391. F7A6: FCB $0A ;3 - Sync Width = 10
  1392. F7A7: DEC $19 ;4 - Vertical Total = 25
  1393. F7A8: FCB $09 ;5 - Vertical Total Adjust = 9
  1394. F7A9: ROL $18 ;6 - Vertical Displayed = 24
  1395. F7AA: FCB $18 ;7 - Vertical Sync Position = 24
  1396. F7AB: NEG $00 ;8 - Interlace Mode and Skew = 0
  1397. F7AC: FCB $09 ;9 - Max Scan Line Address = 9
  1398. F7AD: NEG $00 ;10 - Cursor Start = 0
  1399. F7AE: FCB $09 ;11 - Cursor End = 9
  1400. F7AF: BRA $20 ;12 - Start Address H = 32
  1401. F7B0: FCB $00 ;13 - Start Address L = 0
  1402. F7B1: FCB $38 ;14 - Cursor H = 56
  1403. F7B2: FCB $00 ;15 - Cursor L = 0
  1404. ;
  1405. ; THIS BLOCK COPIED TO $EE21 BY COLD INIT ABOVE
  1406. ; (TO INITIALIZE VIDEO VARIABLES?)
  1407. ;
  1408. F7B3: VIDPARMS FCW $E000 ;EE21+0 VIDRAM ADDRESS
  1409. F7B5: FCW $E780 ;EE21+2 END OF VIDRAM? ($780=80*24)
  1410. F7B7: FCW $E000 ;EE21+4 CURSOR ADDRESS
  1411. F7B9: FCB $00 ;EE21+6
  1412. F7BA: FCB $50 ;EE21+7 CHARS PER LINE? (80)
  1413. F7BB: FCB $01 ;EE21+8
  1414. F7BC: FCB $00 ;EE21+9
  1415. F7BD: FCB $00 ;EE21+10
  1416. F7BE: FCB $00 ;EE21+11
  1417. VIDPARME EQU *
  1418.  
  1419. ;*************************************************************************
  1420. ; DISK OPERATIONS: RESTORE, FLEX BOOT
  1421. ;-------------------------------------------------------------------------
  1422. ;
  1423. ; RESTORE DISK TO TRACK 0
  1424. ;
  1425. F7BF: DSKRESTOR FCB $17
  1426. F7C0: LDD M6A8E *F7C0: FC 6A 8E '.j.'
  1427. F7C3: LDU $0F,X *F7C3: EE 0F '..'
  1428. F7C5: LBSR RESTOR *F7C5: 17 FD 0D '...'
  1429. F7C8: BEQ DSKRESTX
  1430. F7CA: LDX #MSGERRR ;"RESTORE ERROR"
  1431. F7CD: LBSR OUTCHRHEX ;SHOW ERROR MESSAGE
  1432. F7D0: DSKRESTX RTS
  1433. ;
  1434. F7D1: FLXBOOT1 LDA #5 ;SET RETRY COUNT?
  1435. F7D4: PSHA
  1436. F7D5: ZF7D5 LDD #1 ;SET FIRST TRK/SECTOR?
  1437. F7..: LDX #FLEXBOOTBUF ;SET SECTOR BUFFER?
  1438. F7..: LBSR DREAD ;READ SECTOR
  1439. F7..: BEQ ZF7EF ;OK?
  1440. F7..: DEC ,S ;NO, RETRY
  1441. F7E4: BNE ZF7D5 ;ALL BAD?
  1442. F7E6: LDX #MSGERRB ;YES, SHOW "BOOT ERROR"
  1443. F7E8: LBSR OUTCHRHEX ;SHOW ERROR MESSAGE
  1444. F7EB: PULB
  1445. F7EC: LBRA COMDPROC ;WARM START MONITOR
  1446. ;
  1447. F7EF: ZF7EF PULS PC,B *F7EF: 35 84 '5.'
  1448. ;
  1449. F7F1: FLXBOOT2 LDD MC105 *F7F1: FC C1 05 '...'
  1450. F7F4: STD MC300 *F7F4: FD C3 00 '...'
  1451. F7F7: LDY #MC400 *F7F7: 10 8E C4 00 '....'
  1452. F7FB: ZF7FB BSR ZF82E *F7FB: 8D 31 '.1'
  1453. F7FD: CMPA #$02 *F7FD: 81 02 '..'
  1454. F7FF: BEQ ZF811 *F7FF: 27 10 ''.'
  1455. F801: CMPA #$16 *F801: 81 16 '..'
  1456. F803: BNE ZF7FB *F803: 26 F6 '&.'
  1457. F805: BSR ZF82E *F805: 8D 27 '.''
  1458. F807: STA MC108 *F807: B7 C1 08 '...'
  1459. F80A: BSR ZF82E *F80A: 8D 22 '."'
  1460. F80C: STA MC109 *F80C: B7 C1 09 '...'
  1461. F80F: BRA ZF7FB *F80F: 20 EA ' .'
  1462. ;
  1463. F811: ZF811 BSR ZF82E *F811: 8D 1B '..'
  1464. F813: STA MC10A *F813: B7 C1 0A '...'
  1465. F816: BSR ZF82E *F816: 8D 16 '..'
  1466. F818: STA MC10B *F818: B7 C1 0B '...'
  1467. F81B: BSR ZF82E *F81B: 8D 11 '..'
  1468. F81D: TFR A,B *F81D: 1F 89 '..'
  1469. F81F: TSTA *F81F: 4D 'M'
  1470. F820: BEQ ZF7FB *F820: 27 D9 ''.'
  1471. F822: LDX MC10A *F822: BE C1 0A '...'
  1472. F825: ZF825 BSR ZF82E *F825: 8D 07 '..'
  1473. F827: STA ,X+ *F827: A7 80 '..'
  1474. F829: DECB *F829: 5A 'Z'
  1475. F82A: BNE ZF825 *F82A: 26 F9 '&.'
  1476. F82C: BRA ZF7FB *F82C: 20 CD ' .'
  1477. ;
  1478. F82E: ZF82E PSHS X,B *F82E: 34 14 '4.'
  1479. F830: CMPY #MC400 *F830: 10 8C C4 00 '....'
  1480. F834: BNE ZF84A *F834: 26 14 '&.'
  1481. F836: LDX #MC300 *F836: 8E C3 00 '...'
  1482. F839: LDD ,X *F839: EC 84 '..'
  1483. F83B: BNE ZF83F *F83B: 26 02 '&.'
  1484. F83D: PULS PC,Y,X,B *F83D: 35 B4 '5.'
  1485. F83F: ZF83F LBSR DREAD *F83F: 17 FB FD '...'
  1486. F842: BEQ ZF846 *F842: 27 02 ''.'
  1487. F844: PULS PC,Y,X,B *F844: 35 B4 '5.'
  1488. ;
  1489. F846: ZF846 LDY #MC304 *F846: 10 8E C3 04 '....'
  1490. F84A: ZF84A LDA ,Y+ *F84A: A6 A0 '..'
  1491. F84C: PULS PC,X,B *F84C: 35 94 '5.'
  1492. ;
  1493. F84E: ZF84E LDX #MF8A5 *F84E: 8E F8 A5 '...'
  1494. F851: LDY #DDJ_READ *F851: 10 8E DE 00 '....'
  1495. F855: ZF855 LDA ,X+ *F855: A6 80 '..'
  1496. F857: STA ,Y+ *F857: A7 A0 '..'
  1497. F859: CMPX #MF8E8 *F859: 8C F8 E8 '...'
  1498. F85C: BLO ZF855 *F85C: 25 F7 '%.'
  1499. F85E: CLR MCC34 *F85E: 7F CC 34 '..4'
  1500. F861: LDX #MBFFF *F861: 8E BF FF '...'
  1501. F864: STX MEMEND *F864: BF CC 2B '..+'
  1502. F867: LDX #MF8E8 *F867: 8E F8 E8 '...'
  1503. F86A: LDY #CINCHNE *F86A: 10 8E D3 E5 '....'
  1504. F86E: ZF86E LDA ,X+ *F86E: A6 80 '..'
  1505. F870: STA ,Y+ *F870: A7 A0 '..'
  1506. F872: CMPX #MF900 *F872: 8C F9 00 '...'
  1507. F875: BLO ZF86E *F875: 25 F7 '%.'
  1508. F877: LDX #MF900 *F877: 8E F9 00 '...'
  1509. F87A: LDY #MD370 *F87A: 10 8E D3 70 '...p'
  1510. F87E: ZF87E LDA ,X+ *F87E: A6 80 '..'
  1511. F880: STA ,Y+ *F880: A7 A0 '..'
  1512. F882: CMPX #MSGWHAT *F882: 8C F9 20 '.. '
  1513. F885: BLO ZF87E *F885: 25 F7 '%.'
  1514. F887: LDA #$7E *F887: 86 7E '.~'
  1515. F889: LDX #PNTIN *F889: 8E F3 FA '...'
  1516. F88C: STA PRTINI *F88C: B7 CC C0 '...'
  1517. F88F: STX MCCC1 *F88F: BF CC C1 '...'
  1518. F892: LDX #PNTCK *F892: 8E F4 0D '...'
  1519. F895: STA PRTCHK *F895: B7 CC D8 '...'
  1520. F898: STX MCCD9 *F898: BF CC D9 '...'
  1521. F89B: LDX #ZF421 *F89B: 8E F4 21 '..!'
  1522. F89E: STA PRTOUT *F89E: B7 CC E4 '...'
  1523. F8A1: STX MCCE5 *F8A1: BF CC E5 '...'
  1524. F8A4: RTS *F8A4: 39 '9'
  1525.  
  1526. ;*************************************************************************
  1527. ; JUMP TABLES
  1528. ;-------------------------------------------------------------------------
  1529. ;
  1530. ; JUMP TABLE ?
  1531. ;
  1532. F8A5: MF8A5 JMP ZDE23 *F8A5: 7E DE 23 '~.#'
  1533. F8A8: JMP ZDE2B *F8A8: 7E DE 2B '~.+'
  1534. F8AB: JMP ZDE2F *F8AB: 7E DE 2F '~./'
  1535. F8AE: JMP ZDE33 *F8AE: 7E DE 33 '~.3'
  1536. F8B1: JMP ZDE3B *F8B1: 7E DE 3B '~.;'
  1537. F8B4: JMP ZDE37 *F8B4: 7E DE 37 '~.7'
  1538. F8B7: JMP ZDE3F *F8B7: 7E DE 3F '~.?'
  1539. F8BA: JMP ZDE1F *F8BA: 7E DE 1F '~..'
  1540. F8BD: JMP ZDE1E *F8BD: 7E DE 1E '~..'
  1541. F8C0: JMP ZDE27 *F8C0: 7E DE 27 '~.''
  1542. F8C3: RTS *F8C3: 39 '9'
  1543. ;
  1544. ; JUMP TABLE ?
  1545. ;
  1546. F8C4: JMP [ZFFDC] *F8C4: 6E 9F FF DC 'n...'
  1547. F8C8: JMP [ZFFCE] *F8C8: 6E 9F FF CE 'n...'
  1548. F8CC: JMP [ZFFE0] *F8CC: 6E 9F FF E0 'n...'
  1549. F8D0: JMP [ZFFD0] *F8D0: 6E 9F FF D0 'n...'
  1550. F8D4: JMP [ZFFD2] *F8D4: 6E 9F FF D2 'n...'
  1551. F8D8: JMP [ZFFD4] *F8D8: 6E 9F FF D4 'n...'
  1552. F8DC: JMP [ZFFD8] *F8DC: 6E 9F FF D8 'n...'
  1553. F8E0: JMP [ZFFD6] *F8E0: 6E 9F FF D6 'n...'
  1554. F8E4: JMP [ZFFDA] *F8E4: 6E 9F FF DA 'n...'
  1555. ;
  1556. F8E8: MF8E8 ADDD M0070 *F8E8: D3 70 '.p'
  1557. F8EA: ADDD M008D *F8EA: D3 8D '..'
  1558. F8EC: LDU $00,X *F8EC: EE 00 '..'
  1559. F8EE: LDU $06,X *F8EE: EE 06 '..'
  1560. F8F0: ADDD M0074 *F8F0: D3 74 '.t'
  1561. F8F2: ADDD M0078 *F8F2: D3 78 '.x'
  1562. F8F4: ADDD M007C *F8F4: D3 7C '.|'
  1563. F8F6: SUBB >M00D3 *F8F6: F0 00 D3 '...'
  1564. F8F9: CMPX #MD380 *F8F9: 8C D3 80 '...'
  1565. F8FC: ADDD M0084 *F8FC: D3 84 '..'
  1566. F8FE: ADDD M0088 *F8FE: D3 88 '..'
  1567. F900: MF900 JMP [ZFFC0] *F900: 6E 9F FF C0 'n...'
  1568. ;
  1569. ; JUMP TABLE ?
  1570. ;
  1571. F904: JMP [ZFFC2] *F904: 6E 9F FF C2 'n...'
  1572. F908: JMP [ZFFC4] *F908: 6E 9F FF C4 'n...'
  1573. F90C: JMP [ZFFC6] *F90C: 6E 9F FF C6 'n...'
  1574. F910: JMP [ZFFC8] *F910: 6E 9F FF C8 'n...'
  1575. F914: JMP [ZFFCA] *F914: 6E 9F FF CA 'n...'
  1576. F918: JMP [ZFFCC] *F918: 6E 9F FF CC 'n...'
  1577. F91C: RTS *F91C: 39 '9'
  1578. ;
  1579. F91D: JMP ZC700 *F91D: 7E C7 00 '~..'
  1580. ;
  1581. MSGWHAT FCB CR,LF,'?',0 ;F920
  1582. MSGCRLF FCB CR,LF,0 ;F924
  1583. ;
  1584. MSGERRB FCB CR,LF,'BOOT ERROR',0 ;F927
  1585. MSGERRD FCB CR,LF,'DISK ERROR',0 ;F934
  1586. MSGERRR FCB CR,LF,'RESTORE ERROR',0 ;F942
  1587. ;
  1588. ORG $FFB0
  1589.  
  1590. VFFBO FCB UAINNE ;F3C7 SERIAL PORT INPUT-- NO ECHO
  1591. VFFB2 FCB UAIN ;F3E4 SERIAL PORT INPUT
  1592. VFFB4 FCB UASTAT ;F3BD UART INPUT BUFFER EMPTY TEST
  1593. VFFBE FCB UAOT ;F3EC SERIAL PORT OUTPUT
  1594. ;
  1595. VFFBB FCB KBINNE ;F276 KEYBOARD INPUT - NO ECHO
  1596. VFFBA FCB KBIN ;F28F KEYBOARD INPUT
  1597. VFFBC FCB KBST ;F26C KEYBOARD INPUT BUFFER EMPTY TEST
  1598. VFFBE FCB VIDOT ;F29A VIDEO OUTPUT
  1599. ;
  1600. VFFCO FCB INCHNE ;F260 INPUT CHARACTER-NO ECHO
  1601. VFFC2 FCB TMOFF ;F5EF TURN TIMER OFF
  1602. VFFC4 FCB TMON ;F5F5 TURN TIMER ON
  1603. VFFCE FCB TNINT ;F5DE INITIALIZE THE TIMER
  1604. VFFCO FCB STATUS ;F25C CONSOLE INPUT STATUS CHECK
  1605. VFFCA FCB TOUTCH ;F268 CONSOLE CHARACTER OUTPUT
  1606. VFFCC FCB TINCH ;F264 INPUT CHARACTER
  1607. VFFCE FCB DREAD ;F43F READ SECTOR
  1608. VFFDO FCB DWRITE ;F459 WRITE SECTOR
  1609. VFFD2 FCB DVERFY ;F4CD VERIFY SECTOR
  1610. VFFD4 FCB RESTOR ;F4D5 RESTORE DRIVE
  1611. VFFDE FCB DRIVE ;F4ED SELECT DRIVE
  1612. VFFDA FCB DCHECK ;F4ED CHECK DRIVE READY
  1613. VFFDA FCB DQUICK ;F537 QUICK CHECK DRIVE READY
  1614. VFFDC FCB DINIT ;F42C INITIALIZE DISK DRIVER
  1615. VFFDE FCB DWARM ;F43E INITIALIZE DISK DRIVER (WARM START)
  1616. VFFE0 FCB DSEEK ;F475 SEEK TO TRACK
  1617. VFFE2 FCB DSWIDE ;F4C4 SWITCH DENSITY SELECT
  1618. VFFE4 FCB DFNDTR ;F54A FIND CURRENT TRACK
  1619. VFFE6 FCB DFNDDE ;F552 FIND CURRENT DENSITY SELECT
  1620. VFFE8 FCB WRTRK ;F55A WRITE ENTIRE TRACK
  1621. VFFEA FCB PNTIN ;F3FA INITIALIZE PRINTER DRIVER
  1622. VFFEC FCB PNTCK ;F40D CHECK IF PRINTER READY
  1623. ;
  1624. KFFEE FCB ZF421 ;IRQ - PRINTER READY?
  1625. ;
  1626. ; 6809 interrupt vectors
  1627. ;
  1628. KFFF0 FCB WARMST ;IRQ - reserved
  1629. KFFF2 FCB hdlSWI3 ;IRQ - SWI3
  1630. KFFF4 FCB hdlSWI2 ;IRQ - SWI2
  1631. KFFF6 FCB hdlFIRQ ;IRQ - FIRQ
  1632. KFFF8 FCB HNDLIRQ ;IRQ - IRQ
  1633. KFFFA FCB hdlSWI ;IRQ - SWI
  1634. KFFFC FCB hdlNMI ;IRQ - NMI
  1635. KFFFE FCB WARMST ;IRQ - RESET
  1636. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement