Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- f9dasm: M6800/1/2/3/8/9 / H6309 Binary/OS9/FLEX9 Disassembler V1.75
- Loaded binary file UniB-ROM.BIN
- *****************************************************
- ** Used Labels *
- *****************************************************
- M0070 EQU $0070
- M0074 EQU $0074
- M0078 EQU $0078
- M007C EQU $007C
- M0084 EQU $0084
- M0088 EQU $0088
- M008D EQU $008D
- M00D3 EQU $00D3
- M00E0 EQU $00E0
- M00E7 EQU $00E7
- M00F2 EQU $00F2
- M00F4 EQU $00F4
- M00F6 EQU $00F6
- M0100 EQU $0100
- M0101 EQU $0101
- ;M0A46 EQU $0A46
- ;M2940 EQU $2940
- ;M45B6 EQU $45B6
- M4FC3 EQU $4FC3
- ;M504D EQU $504D
- ;M52F5 EQU $52F5
- ;M59F4 EQU $59F4
- ;M5CF2 EQU $5CF2
- ;M5D52 EQU $5D52
- ;M6108 EQU $6108
- ;M6A08 EQU $6A08
- M6A8E EQU $6A8E
- ;M6CF2 EQU $6CF2
- ;M6E57 EQU $6E57
- ;M7354 EQU $7354
- ;M75F4 EQU $75F4
- ;M76F2 EQU $76F2
- ;MA000 EQU $A000
- MA17C EQU $A17C
- MBFFF EQU $BFFF
- FLEXBOOTBUF EQU $C100
- MC105 EQU $C105
- MC108 EQU $C108
- MC109 EQU $C109
- MC10A EQU $C10A
- MC10B EQU $C10B
- MC300 EQU $C300
- MC304 EQU $C304
- MC400 EQU $C400
- ;MC64C EQU $C64C
- ZC700 EQU $C700
- ;MC7F3 EQU $C7F3
- ;
- MEMEND EQU $CC2B
- MCC34 EQU $CC34
- ;
- PRTINI EQU $CCC0
- MCCC1 EQU $CCC1
- PRTCHK EQU $CCD8
- MCCD9 EQU $CCD9
- PRTOUT EQU $CCE4
- MCCE5 EQU $CCE5
- COLDS EQU $CD00
- ;MCF41 EQU $CF41
- MD370 EQU $D370
- MD380 EQU $D380
- CINCHNE EQU $D3E5
- ;
- ;MD5F4 EQU $D5F4
- MD903 EQU $D903
- DDJ_READ EQU $DE00
- ZDE1E EQU $DE1E
- ZDE1F EQU $DE1F
- ZDE23 EQU $DE23
- ZDE27 EQU $DE27
- ZDE2B EQU $DE2B
- ZDE2F EQU $DE2F
- ZDE33 EQU $DE33
- ZDE37 EQU $DE37
- ZDE3B EQU $DE3B
- ZDE3F EQU $DE3F
- ;ME055 EQU $E055
- ;MED43 EQU $ED43
- STACKT EQU $EDFF
- ;
- SW3VEC EQU $EE00 ;SWI3 vector
- SW2VEC EQU $EE02 ;SWI2 vector
- FIRVEC EQU $EE04 ;FIRQ vector
- IRQVEC EQU $EE06 ;IRQ Vector
- SWIVEC EQU $EE08 ;SWI vector
- NMIVEC EQU $EE0A ;NMI vector
- FDLCHIMG EQU $EE0C ;FDC latch image
- FDSTATUS EQU $EE0D ;FDC status after interrupt
- CURDRV EQU $EE0E ;Currently selected drive number
- TRKTBL EQU $EE0F ;Current track table
- DENSEL EQU $EE13 ;Current density select
- PRTRDY EQU $EE17 ;Printer ready flag
- DSKCFG EQU $EE18 ;Disk drive configuration byte $03=5", $0C=8"
- ;
- ; CONSOLE SOFT I/O VECTORS. SET FOR UART OR KBD AT RESET BY SW3 POSN
- ;
- CINVEC EQU $EE19 ;Console input (no echo) vector
- CSCVEC EQU $EE1B ;Console status check vector
- CIEVEC EQU $EE1D ;Console input (and echo) vector
- COPVEC EQU $EE1F ;Console output vector
- ;
- EE21: VIDEODATA DS 12 ;12 BYTES COPIED FROM F7B3 AT STARTUP
- ;
- ; OFFSETS INTO VIDEODATA
- ;
- EE21: VDRAMB EQU 0 ;ADDRESS OF VIDRAM
- EE23: VDRAME EQU 2 ;ADDRESS OF VIDRAM END
- EE25: VDCUSR EQU 4 ;ADDRESS OF CURSOR
- EE27: VD EQU 6 ;
- ;
- MEE2D EQU $EE2D
- MEE2F EQU $EE2F
- EE30: NOINPECHO DS 1 ;DISABLE INPUT ECHO (1=ECHO DISABLED)
- EE31: NIBSPWORD DS 1 ;NUMBER OF NIBBLES IN A WORD (DUH? - ALWAYS 4)
- MEE32 EQU $EE32
- ;
- ; KEYBOARD INPUT BUFFER
- ;
- EE33: KBUFIPTR DS 1 ;KEYBOARD INPUT BUFFER HEAD POINTER
- EE34: KBUFOPTR DS 1 ;KEYBOARD INPUT BUFFER TAIL POINTER
- EE35: KBDINPBUF DS 8 ;KEYBOARD INPUT BUFFER (8 BYTES)
- ;
- ; UART INPUT BUFFER
- ;
- EE3D: SBUFIPTR DS 1 ;SERIAL INPUT BUFFER INPUT POINTER (HEAD)
- EE3E: SBUFOPTR DS 1 ;SERIAL INPUT BUFFER OUTPUT POINTER (TAIL)
- EE3F: SERINPBUF DS 8 ;SERIAL INPUT BUFFER (8 BYTES)
- EE47: XBUFIPTR DS 1 ;NOT USED
- ;
- USTACK EQU $EEFF
- ;
- ; 6844 DMA Controller
- ;
- DMACTL EQU $EF00
- DMARG1 EQU $EF02
- DMARG2 EQU $EF10
- DMARG3 EQU $EF14
- DMARG4 EQU $EF15
- ;
- ; 6522 VIA
- ;
- VIAORB EQU $EF20 ;OUTPUT REG B -> PRINTER
- VIAIRA EQU $EF21 ;INPUT REG A <- KEYBOARD
- VIADDRB EQU $EF22 ;DATA DIRECTION REG B
- VIADDRA EQU $EF23 ;DATA DIRECTION REG A
- VIAT1LO EQU $EF24 ;TIMER 1 LOW ORDER LATCHES/COUNTER
- VIAAUXC EQU $EF2B ;AUXILLIARY CONTROL REG
- VIAPERC EQU $EF2C ;PERIPHERAL CONTROL REG
- VIAIRFL EQU $EF2D ;INTERRUPT FLAG REG
- VIAIREN EQU $EF2E ;INTERRUPT ENABLE REG
- ;
- ; 1793 Floppy Disk Controller
- ;
- FDCCTL EQU $EF30
- FDCRG1 EQU $EF31
- FDCRG2 EQU $EF32
- FDCRG3 EQU $EF33
- ;
- ; 6551 ACIA
- ;
- ACIDAT EQU $EF40 ;ACIA TX/RX DATA REGISTERS
- ACIRST EQU $EF41 ;ACIA RESET OR STATUS REG
- ACICMD EQU $EF42 ;ACIA COMMAND REG
- ACICTL EQU $EF43 ;ACIA CONTROL REG
- ACITXDRMT EQU $10 ;STATUS REG BIT - TX DATA REG EMPTY
- ;
- ; 6845 CRT CONTROLLER
- ;
- CRTCAREG EQU $EF44
- CRTCDREG EQU $EF45
- ;
- ; Sense Switches / Floppy Control Latch
- ;
- SSWFDS EQU $EF48
- ;
- MEF4C EQU $EF4C
- *****************************************************
- ** Program Code / Data Areas *
- *****************************************************
- ORG $F000
- ;*************************************************************************
- ; INITIALIZATION
- ;-------------------------------------------------------------------------
- ;
- ; WARM START
- ;
- F000: WARMST LBRA COMDPROC *F000: 16 00 9D '...'
- ;
- ; COLD START
- ;
- F003: COLDST LDS #STACKT ;INITIALIZE STACK POINTERS
- F007: LDU #USTACK
- F00A: LBSR CRTCINIT ;INITIALIZE 6845 CRTC (VIDEO)
- ;
- ; Read and process sense switches
- ; SW1 - SYSTEM RESET LINE
- ; SW2 BIT 2 $04 -
- ; SW3 BIT 1 $02 - KEYBOARD/SERIAL
- ; SW4 BIT 0 $01 - DISK SIZE 5"/8"
- ;
- ; SENSE SW4 - OFF=8" FLOPPY ON=5" FLOPPY
- ;
- F00D: LDA SSWFDS ;READ SENSE SWITCHES
- F010: LDB #$03 ;PRESET 5" FLOPPY
- F012: BITA #$01 ;TEST SW4 - OS9 DISK SIZE
- F014: BEQ ZF018 ;SW4 ON?
- F016: LDB #$0C ;NO, 8" FLOPPY
- F018: ZF018 STB DSKCFG ;SAVE
- ;
- ; SENSE SW3 - OFF=Keyboard ON=Serial
- ;
- F01B: BITA #$02 ;TEST SW3 - CONSOLE INPUT SOURCE
- F01D: BNE KBINIT ;SW3 ON?
- ;
- ; LOAD SOFT CONSOLE VECTORS TO POINT TO UART ROUTINES
- ;
- F01F: LDX #UASTAT ;CHAR IN INPUT BUFFER TEST
- F022: STX CSCVEC
- F025: LDX #UAINNE ;SERIAL PORT INPUT - NO ECHO
- F028: STX CINVEC
- F02B: LDX #UAIN ;SERIAL PORT INPUT WITH ECHO
- F02E: STX CIEVEC
- F031: LDX #UAOT ;SERIAL PORT OUTPUT
- F034: STX COPVEC
- F037: BRA ZF051
- ;
- ; LOAD SOFT CONSOLE VECTORS TO POINT TO KEYBOARD ROUTINES
- ;
- F039: KBINIT LDX #KBST ;CHAR IN INPUT BUFFER TEST
- STX CSCVEC
- F03F: LDX #KBINNE ;KEYBOARD INPUT - NO ECHO
- F042: STX CINVEC *F042: BF EE 19 '...'
- F045: LDX #KBIN ;KEYBOARD INPUT WITH ECHO
- F048: STX CIEVEC *F048: BF EE 1D '...'
- F04B: LDX #VIDOT ;OUTPUT CHAR TO VIDEO DISPLAY
- F04E: STX COPVEC *F04E: BF EE 1F '...'
- ;
- ; MORE INITIALIZATION...
- ;
- F051: ZF051 LDA #$04 *F051: 86 04 '..'
- F053: STA FDLCHIMG ;FDC latch image *F053: B7 EE 0C '...'
- F056: STA SSWFDS ;Floppy Control Latch *F056: B7 EF 48 '..H'
- ;
- ; INPUT BUFFER POINTERS
- ;
- F059: LDD #0 ;RESET INPUT BUFFER POINTERS
- F05C: STD KBUFIPTR ;- KEYBOARD
- F05F: STD SBUFIPTR ;- UART
- F062: STD XBUFIPTR ;? NEVER USED
- ;
- ; VIA - KEYBOARD & PRINTER
- ;
- F065: CLRA
- F066: STA VIADDRA *F066: B7 EF 23 '..#'
- F069: DECA *F069: 4A 'J'
- F06A: STA VIADDRB *F06A: B7 EF 22 '.."'
- F06D: LDA #$A0 *F06D: 86 A0 '..'
- F06F: STA MEF2C *F06F: B7 EF 2C '..,'
- F072: LDA #$82 *F072: 86 82 '..'
- F074: STA VIAIREN *F074: B7 EF 2E '...'
- ;
- F077: CLR MEE2F *F077: 7F EE 2F '../'
- F07A: CLR NOINPECHO ;ENABLE INPUT ECHO
- F07D: LDA VIAIRA *F07D: B6 EF 21 '..!'
- ;
- F080: LDA #$04 *F080: 86 04 '..'
- F082: STA NIBSPWORD ;SET NUMBER OF NIBBLES IN A WORD? *F082: B7 EE 31 '..1'
- F085: LDA #FF ;FormFeed Char ($0C)
- F087: LBSR TOUTCH ;CLEARS SCREEN
- ;
- F08A: LBSR DINIT ;INITIALIZE DISK DRIVER
- ;
- F08D: LDD #RTIINST ;POINT TO AN RTI INSTRUCTION
- F090: STD IRQVEC ;STORE TO THE DEFAULT IRQ HANDLER
- ;
- F093: LDX #ACIDAT *F093: 8E EF 40 '..@'
- F096: STB $01,X *F096: E7 01 '..'
- F098: LDA #$18 *F098: 86 18 '..'
- F09A: STA $03,X *F09A: A7 03 '..'
- F09C: LDA #$09 *F09C: 86 09 '..'
- F09E: STA $02,X *F09E: A7 02 '..'
- ;*************************************************************************
- ; MONITOR COMMAND PROCESSING
- ;-------------------------------------------------------------------------
- ;
- ; COMMAND PROCESSOR
- ;
- F0A0: COMDPROC LDS #STACKT ;RESET STACK POINTERS
- F0A4: LDU #USTACK
- F0A7: CLI
- F0A9: COMDWAIT LDX #MSGWHAT ;OUTPUT "?" PROMPT
- F0AC: LBSR OUTSTRX
- F0AF: LBSR INPCHR ;WAIT FOR COMMAND INPUT
- ;
- ; CHECK FOR VALID COMD CHAR & EXECUTE
- ;
- F0B2: LDX #CMDTAB ;POINT TO COMMAND TABLE
- F0B5: COMDCHEK TST ,X ;END OF TABLE? *F0B5: 6D 84 'm.'
- F0B7: BEQ COMDWAIT ;IF SO, IGNORE AND WAIT FOR NEXT COMD
- F0B9: CMPA ,X+ ;COMD CHAR MATCH?
- F0BB: BNE COMDNEXT ;IF NOT, TEXT FOR NEXT COMD CHAR
- F0BD: LBSR OUTSPC ;YES, OUTPUT A SPACE
- F0C0: JSR [,X] ;CALL PROCESSOR FOR THIS COMMAND
- F0C2: BRA COMDPROC ;GO WAIT FOR NEXT COMD
- ;
- F0C4: COMDNEXT LEAX $02,X ; *F0C4: 30 02 '0.'
- F0C6: BRA COMDCHEK
- ;
- ; COMMAND TABLE
- ;
- F0C8: CMDTAB FCB 'G',COMD_G ;GOTO ADDR
- F0CB: FCB 'C',COMD_C ;SET UART BAUD RATE
- F0CE: FCB 'B',COMD_B ;BOOT NORMAL FLEX
- F0D1: FCB 'L',COMD_L ;BOOT GENERAL FLEX
- F0D4: FCB 'U',COMD_U ;BOOT UNKNOWN FLEX
- F0D7: FCB 'A',COMD_A ;ALTER MEMORY
- F0DA: FCB 'F',COMD_F ;FILL MEMORY
- F0DD: FCB 'M',COMD_M ;MOVE MEMORY
- F0E0: FCB 'R',COMD_R ;READ SECTOR
- F0E3: FCB 'W',COMD_W ;WRITE SECTOR
- F0E6: FCB 'T',COMD_T ;TEST MEMORY
- F0E9: FCB 'D',COMD_D ;DISPLAY MEMORY
- F0EC: FCB 0 ;END OF TABLE INDICATOR
- ;
- ; COMMAND G - GO TO ADDRESS (ADDRESS)
- ;
- F0ED: COMD_G LBSR INPHEXWRD *F0ED: 17 06 16 '...'
- F0F0: PSHD *F0F0: 34 06 '4.'
- F0F2: LBSR PUTCRLF *F0F2: 17 05 F5 '...'
- F0F5: PULS PC *F0F5: 35 80 '5.'
- ;
- ; COMMAND C - COMMS BAUD RATE SET (SINGLE HEX DIGIT)
- ;
- F0F7: COMD_C LBSR INPHEXWRD *F0F7: 17 06 0C '...'
- F0FA: ANDB #$0F *F0FA: C4 0F '..'
- F0FC: PSHB *F0FC: 34 04 '4.'
- F0FE: LDB ACICTL *F0FE: F6 EF 43 '..C'
- F101: ANDB #$F0 *F101: C4 F0 '..'
- F103: ORB ,S *F103: EA E4 '..'
- F105: STB ACICTL *F105: F7 EF 43 '..C'
- F108: PULS PC,B *F108: 35 84 '5.'
- ;
- ; COMMAND A - ALTER MEMORY (ADDRESS)
- ;
- F10A: COMD_A LBSR INPHEXWRD *F10A: 17 05 F9 '...'
- F10D: PSHD *F10D: 34 06 '4.'
- F10F: ZF10F LBSR PUTCRLF *F10F: 17 05 D8 '...'
- F112: TSX *F112: 1F 41 '.A'
- F114: LBSR OUT2HEXSTR *F114: 17 05 72 '..r'
- F117: LDX ,S *F117: AE E4 '..'
- F119: LBSR OUT1HEXSTR *F119: 17 05 6F '..o'
- F11C: LBSR OUTSPC *F11C: 17 05 6E '..n'
- F11F: ZF11F LBSR INPCHR *F11F: 17 06 45 '..E'
- F122: CMPA #' ' *F122: 81 20 '. '
- F124: BEQ ZF11F *F124: 27 F9 ''.'
- CMPA #CR
- F128: BEQ ZF14E *F128: 27 24 ''$'
- F12A: CMPA #$5E *F12A: 81 5E '.^'
- F12C: BNE ZF134 *F12C: 26 06 '&.'
- F12E: LEAX -$02,X *F12E: 30 1E '0.'
- F130: STX ,S *F130: AF E4 '..'
- F132: BRA ZF10F *F132: 20 DB ' .'
- ;
- F134: ZF134 STX ,S *F134: AF E4 '..'
- F136: CMPA #'0' *F136: 81 30 '.0'
- F138: BLO ZF10F *F138: 25 D5 '%.'
- F13A: CMPA #'F' *F13A: 81 46 '.F'
- F13C: BHI ZF10F *F13C: 22 D1 '".'
- F13E: LBSR ZF6AE *F13E: 17 05 6D '..m'
- F141: BLO ZF14E *F141: 25 0B '%.'
- F143: LBSR ZF6CD *F143: 17 05 87 '...'
- F146: DEX *F146: 30 1F '0.'
- F148: STA ,X *F148: A7 84 '..'
- F14A: CMPA ,X *F14A: A1 84 '..'
- F14C: BEQ ZF10F *F14C: 27 C1 ''.'
- F14E: ZF14E PULS PC,X *F14E: 35 90 '5.'
- ;
- ; COMMAND F - FILL MEMORY (START END CONSTANT)
- ;
- F150: COMD_F LBSR INP3HEXWDS *F150: 17 05 9D '...'
- F153: PSHY *F153: 34 20 '4 '
- F155: ZF155 STA ,X+ *F155: A7 80 '..'
- F157: CMPX ,S *F157: AC E4 '..'
- F159: BLS ZF155 *F159: 23 FA '#.'
- F15B: PULS PC,X *F15B: 35 90 '5.'
- ;
- ; COMMAND M - MOVE MEMORY (START END DESTINATION)
- ;
- F15D: COMD_M LBSR INP3HEXWDS *F15D: 17 05 90 '...'
- F160: PSHY *F160: 34 20 '4 '
- F162: TFR D,Y *F162: 1F 02 '..'
- F164: ZF164 LDA ,X+ *F164: A6 80 '..'
- F166: STA ,Y+ *F166: A7 A0 '..'
- F168: CMPX ,S *F168: AC E4 '..'
- F16A: BLS ZF164 *F16A: 23 F8 '#.'
- F16C: PULS PC,X *F16C: 35 90 '5.'
- ;
- ; COMMAND R - READ SECTOR (DRIVE TRK/SEC ADDRESS)
- ;
- F16E: COMD_R LDX #DREAD *F16E: 8E F4 3F '..?'
- F171: BRA ZF176 *F171: 20 03 ' .'
- ;
- ; COMMAND W - WRITE SECTOR (DRIVE TRK/SEC ADDRESS)
- ;
- F173: COMD_W LDX #DWRITE *F173: 8E F4 59 '..Y'
- F176: ZF176 LDA #$05 *F176: 86 05 '..'
- F178: PSHS X,A *F178: 34 12 '4.'
- F17A: LBSR INP3HEXWDS *F17A: 17 05 73 '..s'
- F17D: PSHS Y,X,D *F17D: 34 36 '46'
- F17F: ZF17F LEAX ,S *F17F: 30 E4 '0.'
- F181: LBSR RESTOR *F181: 17 03 51 '..Q'
- F184: BNE ZF197 *F184: 26 11 '&.'
- F186: LDD $04,S *F186: EC 64 '.d'
- F188: LDX ,S *F188: AE E4 '..'
- F18A: JSR [$07,S] *F18A: AD F8 07 '...'
- F18D: BEQ ZF19D *F18D: 27 0E ''.'
- F18F: BITB #$10 *F18F: C5 10 '..'
- F191: BEQ ZF197 *F191: 27 04 ''.'
- F193: DEC $06,S *F193: 6A 66 'jf'
- F195: BNE ZF17F *F195: 26 E8 '&.'
- F197: ZF197 LDX #MSGERRD ;PUT "DISK ERROR"
- F19A: LBSR OUTCHRHEX
- F19D: ZF19D LEAS $09,S *F19D: 32 69 '2i'
- F19F: RTS *F19F: 39 '9'
- ;
- ; COMMAND D - DISPLAY MEMORY (START END)
- ;
- F1A0: COMD_D LBSR INP2HEXWDS *F1A0: 17 05 58 '..X'
- F1A3: PSHS X,D *F1A3: 34 16 '4.'
- F1A5: ZF1A5 LBSR PUTCRLF *F1A5: 17 05 42 '..B'
- F1A8: LEAX $02,S *F1A8: 30 62 '0b'
- F1AA: LBSR OUT2HEXSTR *F1AA: 17 04 DC '...'
- F1AD: ZF1AD LDX $02,S *F1AD: AE 62 '.b'
- F1AF: LBSR OUT1HEXSTR *F1AF: 17 04 D9 '...'
- F1B2: LDX $02,S *F1B2: AE 62 '.b'
- F1B4: CMPX ,S *F1B4: AC E4 '..'
- F1B6: BCC ZF1C4 *F1B6: 24 0C '$.'
- F1B8: INX *F1B8: 30 01 '0.'
- F1BA: STX $02,S *F1BA: AF 62 '.b'
- F1BC: LDA $03,S *F1BC: A6 63 '.c'
- F1BE: ANDA #$0F *F1BE: 84 0F '..'
- F1C0: BEQ ZF1A5 *F1C0: 27 E3 ''.'
- F1C2: BRA ZF1AD *F1C2: 20 E9 ' .'
- ;
- F1C4: ZF1C4 PULS PC,X,D *F1C4: 35 96 '5.'
- ;
- ; COMMAND B - BOOT NORMAL FLEX
- ;
- F1C6: COMD_B LBSR DSKRESTOR ;RESTORE DISK TO TRACK 0
- F1C9: LBSR FLXBOOT1 *F1C9: 17 06 05 '...'
- F1CC: JMP FLEXBOOTBUF *F1CC: 7E C1 00 '~..'
- ;
- ; COMMAND U - BOOT UNKNOWN FLEX
- ;
- F1CF: COMD_U LBSR DSKRESTOR ;RESTORE DISK TO TRACK 0
- F1D2: LBSR FLXBOOT1 *F1D2: 17 05 FC '...'
- F1D5: LBSR FLXBOOT2 *F1D5: 17 06 19 '...'
- F1D8: BNE COMD_U *F1D8: 26 F5 '&.'
- F1DA: LBSR ZF84E *F1DA: 17 06 71 '..q'
- F1DD: JMP COLDS *F1DD: 7E CD 00 '~..'
- ;
- ; COMMAND L - BOOT GENERAL FLEX
- ;
- F1E0: COMD_L LBSR DSKRESTOR ;RESTORE DISK TO TRACK 0
- F1E3: LDD #M0101 *F1E3: CC 01 01 '...'
- F1E6: STD MC105 *F1E6: FD C1 05 '...'
- F1E9: LBSR FLXBOOT2 *F1E9: 17 06 05 '...'
- F1EC: BNE COMD_L *F1EC: 26 F2 '&.'
- F1EE: LBSR ZF84E *F1EE: 17 06 5D '..]'
- F1F1: JMP COLDS *F1F1: 7E CD 00 '~..'
- ;
- ; COMMAND T - TEST MEMORY (START END)
- ;
- F1F4: COMD_T LBSR INP2HEXWDS *F1F4: 17 05 04 '...'
- F1F7: LDY #MA17C *F1F7: 10 8E A1 7C '...|'
- F1FB: PSHU Y *F1FB: 36 20 '6 '
- F1FD: LEAU -$02,U *F1FD: 33 5E '3^'
- F1FF: PSHU X,D *F1FF: 36 16 '6.'
- F201: MEMTSTLOP LBSR PUTCRLF *F201: 17 04 E6 '...'
- F204: MEMTSTLOP1 LDX $06,U *F204: AE 46 '.F'
- F206: STX $04,U *F206: AF 44 '.D'
- F208: LDY $02,U *F208: 10 AE 42 '..B'
- F20B: MEMTSTLOP2 BSR TESTMEMBLK *F20B: 8D 38 '.8'
- F20D: STA ,Y+ *F20D: A7 A0 '..'
- F20F: CMPY ,U *F20F: 10 AC C4 '...'
- F212: BLO MEMTSTLOP2 *F212: 25 F7 '%.'
- F214: LDX $04,U *F214: AE 44 '.D'
- F216: STX $06,U *F216: AF 46 '.F'
- F218: LDY $02,U *F218: 10 AE 42 '..B'
- F21B: MEMTSTLOP3 BSR TESTMEMBLK *F21B: 8D 28 '.('
- F21D: CMPA ,Y+ *F21D: A1 A0 '..'
- F21F: BNE MEMTSTLOP4 *F21F: 26 0C '&.'
- F221: CMPY ,U *F221: 10 AC C4 '...'
- F224: BLO MEMTSTLOP3 *F224: 25 F5 '%.'
- F226: LDA #$21 *F226: 86 21 '.!'
- F228: LBSR OUTCHR *F228: 17 05 24 '..$'
- F22B: BRA MEMTSTLOP1 *F22B: 20 D7 ' .'
- ;
- F22D: MEMTSTLOP4 PSHS Y,A *F22D: 34 22 '4"'
- F22F: LBSR PUTCRLF *F22F: 17 04 B8 '...'
- F232: LEAX $01,S *F232: 30 61 '0a'
- F234: LBSR OUT2HEXSTR *F234: 17 04 52 '..R'
- F237: TSX *F237: 1F 41 '.A'
- F239: LBSR OUT1HEXSTR *F239: 17 04 4F '..O'
- F23C: LDX $01,S *F23C: AE 61 '.a'
- F23E: LBSR OUT1HEXSTR *F23E: 17 04 4A '..J'
- F241: PULS Y,A *F241: 35 22 '5"'
- F243: BRA MEMTSTLOP *F243: 20 BC ' .'
- ;
- F245: TESTMEMBLK PSHB *F245: 34 04 '4.'
- F247: LDB #$08 *F247: C6 08 '..'
- F249: TESTMB1 LDA $07,U *F249: A6 47 '.G'
- F24B: ASLA *F24B: 48 'H'
- F24C: EORA $07,U *F24C: A8 47 '.G'
- F24E: ASLA *F24E: 48 'H'
- F24F: ASLA *F24F: 48 'H'
- F250: ROL $06,U *F250: 69 46 'iF'
- F252: ROL $07,U *F252: 69 47 'iG'
- F254: DECB *F254: 5A 'Z'
- F255: BNE TESTMB1 *F255: 26 F2 '&.'
- F257: LDA $06,U *F257: A6 46 '.F'
- F259: PULS PC,B *F259: 35 84 '5.'
- F25B: RTS *F25B: 39 '9'
- ;*************************************************************************
- ; CONSOLE OPERATIONS
- ;-------------------------------------------------------------------------
- ;
- ;STATUS CONSOLE INPUT STATUS CHECK
- ;
- F25C: STATUS JMP [CSCVEC] *F25C: 6E 9F EE 1B 'n...'
- ;
- ;INCHNE INPUT CHARACTER-NO ECHO
- ;
- F260: INCHNE JMP [CINVEC] *F260: 6E 9F EE 19 'n...'
- ;
- ;TINCH INPUT CHARACTER
- ;
- F264: TINCH JMP [CIEVEC] *F264: 6E 9F EE 1D 'n...'
- ;
- ;TOUTCH CONSOLE CHARACTER OUTPUT
- ;
- F268: TOUTCH JMP [COPVEC] *F268: 6E 9F EE 1F 'n...'
- ;*************************************************************************
- ; KEYBOARD OPERATIONS
- ;-------------------------------------------------------------------------
- ;
- ;KBST KEYBOARD INPUT STATUS CHECK
- ;
- F26C: KBST PSHA
- F26E: LDA KBUFIPTR ;GET HEAD PTR
- F271: CMPA KBUFOPTR ;COMPARE TO TAIL PTR
- F274: PULS PC,A
- ;
- ; KEYBOARD CHAR. INPUT - NO ECHO
- ;
- F276: KBINNE BSR KBST ;TEST IF CHAR IN KBD INPUT BUFFER
- F278: BEQ KBINNE ;IF NOT, SPIN UNTIL THERE IS
- F27A: PSHS X,B
- F27C: LDX #KBDINPBUF ;POINT TO KEYBOARD INPUT BUFFER
- F27F: LDB KBUFOPTR ;GET TAIL PTR
- F282: LDA B,X ;GET CHAR FROM BUFFER
- F284: INCB ;ADVANCE TAIL
- F285: CMPB #8 ;END OF BUFFER?
- F287: BLO KBIWRAP
- F289: CLRB ;YES, WRAP TO START
- F28A: KBIWRAP STB KBUFOPTR ;SAVE UPDATED TAIL PTR
- F28D: PULS PC,X,B
- ;
- ; KEYBOARD CHARACTER INPUT, WITH OPTIONAL ECHO
- ;
- F28F: KBIN LBSR KBINNE ;GET KBD CHAR
- F292: TST NOINPECHO ;ECHO DISABLED?
- F295: BNE KBINR
- F297: BSR VIDOT ;NO, SHOW CHAR
- F299: KBINR RTS
- ;*************************************************************************
- ; VIDEO DISPLAY CHAR
- ;-------------------------------------------------------------------------
- ;
- ;VIDOT VIDEO CHARACTER OUTPUT
- ;
- F29A: VIDOT PSHS U,Y,X,D *F29A: 34 76 '4v'
- F29C: LDU #VIDEODATA ;POINT TO VIDEO DATA *F29C: CE EE 21 '..!'
- F29F: LDB [VDCUSR,U] ;GET CHAR AT CURSOR POSN *F29F: E6 D8 04 '...'
- F2A2: ANDB #$7F ;STRIP CURSOR BIT *F2A2: C4 7F '..'
- F2A4: STB [VDCUSR,U] ;AND PUT BACK *F2A4: E7 D8 04 '...'
- ;
- F2A7: LBSR VIDPUTCH ;OUTPUT THE CHAR *F2A7: 17 00 0A '...'
- F2AA: LDB [VDCUSR,U] ;SET CURSOR BIT
- F2AD: ORB #$80 *F2AD: CA 80 '..'
- F2AF: STB [VDCUSR,U] *F2AF: E7 D8 04 '...'
- F2B2: PULS PC,U,Y,X,D *F2B2: 35 F6 '5.'
- ;
- F2B4: VIDPUTCH DEC $0A,U *F2B4: 6A 4A 'jJ'
- F2B6: BLT ZF2D5 *F2B6: 2D 1D '-.'
- F2B8: BEQ ZF2C1 *F2B8: 27 07 ''.'
- F2BA: SUBA #$20 *F2BA: 80 20 '. '
- F2BC: STA $09,U *F2BC: A7 49 '.I'
- F2BE: LBRA VIDOTR *F2BE: 16 00 EC '...'
- ;
- F2C1: ZF2C1 SUBA #$20 *F2C1: 80 20 '. '
- F2C3: PSHA *F2C3: 34 02 '4.'
- F2C5: LDA $07,U *F2C5: A6 47 '.G'
- F2C7: LDB $09,U *F2C7: E6 49 '.I'
- F2C9: MUL ;A*B->D *F2C9: 3D '='
- F2CA: CLR ,-S *F2CA: 6F E2 'o.'
- F2CC: ADDD ,S++ *F2CC: E3 E1 '..'
- F2CE: ADDD ,U *F2CE: E3 C4 '..'
- F2D0: STD $04,U *F2D0: ED 44 '.D'
- F2D2: LBRA VIDOTR *F2D2: 16 00 D8 '...'
- ;
- F2D5: ZF2D5 INC $0A,U *F2D5: 6C 4A 'lJ'
- F2D7: DEC $0B,U *F2D7: 6A 4B 'jK'
- F2D9: BLT ZF308 *F2D9: 2D 2D '--'
- F2DB: CMPA #$59 ;"Y"? *F2DB: 81 59 '.Y'
- F2DD: BNE ZF2E6 *F2DD: 26 07 '&.'
- F2DF: LDA #$02 *F2DF: 86 02 '..'
- F2E1: STA $0A,U *F2E1: A7 4A '.J'
- F2E3: LBRA VIDOTR *F2E3: 16 00 C7 '...'
- ;
- F2E6: ZF2E6 CMPA #$48 ;"H"? *F2E6: 81 48 '.H'
- F2E8: BNE ZF2F1 *F2E8: 26 07 '&.'
- F2EA: LDD ,U *F2EA: EC C4 '..'
- F2EC: STD $04,U *F2EC: ED 44 '.D'
- F2EE: LBRA VIDOTR *F2EE: 16 00 BC '...'
- ;
- F2F1: ZF2F1 CMPA #$4B ;"K"? *F2F1: 81 4B '.K'
- F2F3: LBNE VIDOTR *F2F3: 10 26 00 B6 '.&..'
- F2F7: LBSR ZF3AE *F2F7: 17 00 B4 '...'
- F2FA: TFR D,X *F2FA: 1F 01 '..'
- F2FC: LDA #$20 ;SPACE *F2FC: 86 20 '. '
- F2FE: ZF2FE CMPX $04,U *F2FE: AC 44 '.D'
- F300: LBLS VIDOTR *F300: 10 23 00 A9 '.#..'
- F304: STA ,-X *F304: A7 82 '..'
- F306: BRA ZF2FE *F306: 20 F6 ' .'
- ;
- F308: ZF308 INC $0B,U *F308: 6C 4B 'lK'
- F30A: CMPA #$20 ;SPACE? *F30A: 81 20 '. '
- F30C: BLO ZF312 *F30C: 25 04 '%.'
- F30E: CMPA #$80 *F30E: 81 80 '..'
- F310: BLO ZF35E *F310: 25 4C '%L'
- F312: ZF312 CMPA #$07 *F312: 81 07 '..'
- F314: BNE ZF319 *F314: 26 03 '&.'
- F316: STA MEF4C *F316: B7 EF 4C '..L'
- F319: ZF319 CMPA #$1B ;ESC? *F319: 81 1B '..'
- F31B: BNE ZF322 *F31B: 26 05 '&.'
- F31D: INC $0B,U *F31D: 6C 4B 'lK'
- F31F: LBRA VIDOTR *F31F: 16 00 8B '...'
- ;
- F322: ZF322 CMPA #$0D ;CR? *F322: 81 0D '..'
- F324: BNE ZF330 *F324: 26 0A '&.'
- F326: LBSR ZF3AE *F326: 17 00 85 '...'
- F329: SUBD $06,U *F329: A3 46 '.F'
- F32B: STD $04,U *F32B: ED 44 '.D'
- F32D: LBRA VIDOTR *F32D: 16 00 7D '..}'
- ;
- F330: ZF330 CMPA #$0A ;LF? *F330: 81 0A '..'
- F332: BNE ZF33C *F332: 26 08 '&.'
- F334: LDD $06,U *F334: EC 46 '.F'
- F336: ADDD $04,U *F336: E3 44 '.D'
- F338: STD $04,U *F338: ED 44 '.D'
- F33A: BRA ZF366 *F33A: 20 2A ' *'
- ;
- F33C: ZF33C CMPA #$08 ;BS? *F33C: 81 08 '..'
- F33E: BNE ZF349 *F33E: 26 09 '&.'
- F340: LDD $04,U *F340: EC 44 '.D'
- F342: SUBD #1
- F345: STD $04,U *F345: ED 44 '.D'
- F347: BRA ZF366 *F347: 20 1D ' .'
- ;
- F349: ZF349 CMPA #$0C ;FF? *F349: 81 0C '..'
- F34B: BNE VIDOTR *F34B: 26 60 '&`'
- F34D: LDY ,U *F34D: 10 AE C4 '...'
- F350: STY $04,U *F350: 10 AF 44 '..D'
- F353: LDA #$20 ;SPACE *F353: 86 20 '. '
- F355: ZF355 STA ,Y+ *F355: A7 A0 '..'
- F357: CMPY $02,U *F357: 10 AC 42 '..B'
- F35A: BLS ZF355 *F35A: 23 F9 '#.'
- F35C: BRA VIDOTR *F35C: 20 4F ' O'
- ;
- F35E: ZF35E LDY $04,U *F35E: 10 AE 44 '..D'
- F361: STA ,Y+ *F361: A7 A0 '..'
- F363: STY $04,U *F363: 10 AF 44 '..D'
- F366: ZF366 LDY $04,U *F366: 10 AE 44 '..D'
- F369: CMPY ,U *F369: 10 AC C4 '...'
- F36C: BCC ZF376 *F36C: 24 08 '$.'
- F36E: LDY ,U *F36E: 10 AE C4 '...'
- F371: STY $04,U *F371: 10 AF 44 '..D'
- F374: BRA VIDOTR *F374: 20 37 ' 7'
- ;
- F376: ZF376 CMPY $02,U *F376: 10 AC 42 '..B'
- F379: BLO VIDOTR *F379: 25 32 '%2'
- F37B: TST $08,U *F37B: 6D 48 'mH'
- F37D: BNE ZF385 *F37D: 26 06 '&.'
- F37F: LDD ,U *F37F: EC C4 '..'
- F381: STD $04,U *F381: ED 44 '.D'
- F383: BRA VIDOTR *F383: 20 28 ' ('
- ;
- F385: ZF385 LDD $06,U *F385: EC 46 '.F'
- F387: LDX ,U *F387: AE C4 '..'
- F389: TFR X,Y *F389: 1F 12 '..'
- F38B: LEAY D,Y *F38B: 31 AB '1.'
- F38D: ZF38D LDA ,Y+ *F38D: A6 A0 '..'
- F38F: STA ,X+ *F38F: A7 80 '..'
- F391: CMPY $02,U *F391: 10 AC 42 '..B'
- F394: BLS ZF38D *F394: 23 F7 '#.'
- F396: LDD $04,U *F396: EC 44 '.D'
- F398: SUBD $06,U *F398: A3 46 '.F'
- F39A: STD $04,U *F39A: ED 44 '.D'
- F39C: LDD $02,U *F39C: EC 42 '.B'
- F39E: SUBD $06,U *F39E: A3 46 '.F'
- F3A0: TFR D,Y *F3A0: 1F 02 '..'
- F3A2: INY *F3A2: 31 21 '1!'
- F3A4: LDA #$20 ;SPACE *F3A4: 86 20 '. '
- F3A6: ZF3A6 STA ,Y+ *F3A6: A7 A0 '..'
- F3A8: CMPY $02,U *F3A8: 10 AC 42 '..B'
- F3AB: BLS ZF3A6 *F3AB: 23 F9 '#.'
- F3AD: VIDOTR RTS *F3AD: 39 '9'
- ;
- F3AE: ZF3AE LDB $07,U *F3AE: E6 47 '.G'
- F3B0: LDY ,U *F3B0: 10 AE C4 '...'
- F3B3: ZF3B3 LEAY B,Y *F3B3: 31 A5 '1.'
- F3B5: CMPY $04,U *F3B5: 10 AC 44 '..D'
- F3B8: BLS ZF3B3 *F3B8: 23 F9 '#.'
- F3BA: TFR Y,D *F3BA: 1F 20 '. '
- F3BC: RTS *F3BC: 39 '9'
- ;*************************************************************************
- ; SERIAL PORT INPUT & OUTPUT
- ;-------------------------------------------------------------------------
- ;
- ; UASTAT ;F3BD SERIAL PORT INPUT STAT. CK.
- ;
- F3BD: UASTAT PSHA
- F3BF: LDA SBUFIPTR
- F3C2: CMPA SBUFOPTR
- F3C5: PULS PC,A
- ;
- ;UAINNE SERIAL PORT INPUT-- NO ECHO
- ;
- F3C7: UAINNE BSR UASTAT ;UART DATA READY?
- F3C9: BEQ UAINNE ;NO, SPIN UNTIL IT IS
- F3CB: PSHS X,B
- F3CD: LDX #SERINPBUF ;POINT TO CONSOLE BUFFER
- F3D0: SEI ;NO INTS WHILE UPDATING POINTER
- F3D2: LDB SBUFOPTR ;GET OUTPUT (TAIL) POINTER
- F3D5: LDA B,X ;GET CHAR FROM BUFFER
- F3D7: INCB ;ADVANCE POINTER
- F3D8: CMPB #8 ;END OF BUFFER?
- F3DA: BLO UAIWRAP
- F3DC: CLRB ;YES, WRAP TO START
- F3DD: UAIWRAP STB SBUFOPTR ;SAVE UPDATED OUTPUT (TAIL) POINTER
- F3E0: CLI ;INTS OK NOW
- F3E2: PULS PC,X,B ;RETURN WITH CHAR IN A
- ;
- ; SERIAL PORT INPUT
- ;
- F3E4: UAIN BSR UAINNE ;GET CHAR FROM SERIAL PORT
- F3E6: TST NOINPECHO ;ECHO DISABLED?
- F3E9: BEQ UAOT ;IF NOT, SEND IT OUT SERIAL ALSO
- F3EB: RTS
- ;
- ;UAOT SERIAL PORT CHAR. OUTPUT
- ;
- F3EC: UAOT PSHB
- F3EE: UAOTW LDB ACIRST ;GET ACIA STATUS REG
- F3F1: BITB #ACITXDRMT ;TEST TRANSMIT DATA REGISTER EMPTY BIT
- F3F3: BEQ UAOTW ;IF NOT EMPTY, SPIN UNTIL CHAR TRANSMITTED
- F3F5: STA ACIDAT ;STORE NEW CHAR TO TX REG FOR TRANSMIT
- F3F8: PULS PC,B ;DONE
- ;*************************************************************************
- ; PRINTER OPERATIONS
- ;-------------------------------------------------------------------------
- ;
- ;PNTIN INITIALIZE PRINTER DRIVER
- ;
- F3FA: PNTIN LDA #$FF *F3FA: 86 FF '..'
- F3FC: STA VIADDRB *F3FC: B7 EF 22 '.."'
- F3FF: STA PRTRDY *F3FF: B7 EE 17 '...'
- F402: LDA MEF2C *F402: B6 EF 2C '..,'
- F405: ANDA #$0F *F405: 84 0F '..'
- F407: ORA #$A0 *F407: 8A A0 '..'
- F409: STA MEF2C *F409: B7 EF 2C '..,'
- F40C: RTS *F40C: 39 '9'
- ;
- ;PNTCK CHECK IF PRINTER READY
- ;
- F40D: PNTCK TST PRTRDY *F40D: 7D EE 17 '}..'
- F410: BMI ZF420 *F410: 2B 0E '+.'
- F412: PSHB *F412: 34 04 '4.'
- F414: LDB VIAIRFL *F414: F6 EF 2D '..-'
- F417: BITB #$10 *F417: C5 10 '..'
- F419: BEQ ZF41E *F419: 27 03 ''.'
- F41B: COM PRTRDY *F41B: 73 EE 17 's..'
- F41E: ZF41E PULB *F41E: 35 04 '5.'
- F420: ZF420 RTS *F420: 39 '9'
- ;
- ; IRQ -
- ;
- F421: ZF421 BSR PNTCK *F421: 8D EA '..'
- F423: BPL ZF421 *F423: 2A FC '*.'
- F425: STA VIAORB *F425: B7 EF 20 '.. '
- F428: CLR PRTRDY *F428: 7F EE 17 '...'
- F42B: RTS *F42B: 39 '9'
- ;*************************************************************************
- ; DISK: BASIC OPERATIONS
- ;-------------------------------------------------------------------------
- ;
- ;DINIT INITIALIZE DISK DRIVER
- ;
- F42C: DINIT LDX #CURDRV *F42C: 8E EE 0E '...'
- F42F: LDB #$09 *F42F: C6 09 '..'
- F431: ZF431 CLR ,X+ *F431: 6F 80 'o.'
- F433: DECB *F433: 5A 'Z'
- F434: BNE ZF431 *F434: 26 FB '&.'
- F436: CLR MCC34 *F436: 7F CC 34 '..4'
- F439: LDA #$FF *F439: 86 FF '..'
- F43B: STA FDSTATUS *F43B: B7 EE 0D '...'
- ;
- ; INITIALIZE DISK DRIVER (WARM START)
- ;
- F43E: DWARM RTS *F43E: 39 '9'
- ;
- ; READ SECTOR
- ;
- F43F: DREAD LBSR DSEEK *F43F: 17 00 33 '..3'
- F442: BNE ZF44F *F442: 26 0B '&.'
- F444: MF444 LDA #$8C *F444: 86 8C '..'
- F446: LDB #$04 *F446: C6 04 '..'
- F448: LDY #M0100 *F448: 10 8E 01 00 '....'
- F44C: LBSR DMAONE ;DMA ROUTINE *F44C: 17 01 48 '..H'
- F44F: ZF44F BITB #$10 *F44F: C5 10 '..'
- F451: BEQ ZF456 *F451: 27 03 ''.'
- F453: LBSR DSWIDE *F453: 17 00 6E '..n'
- F456: ZF456 BITB #$1C *F456: C5 1C '..'
- F458: RTS *F458: 39 '9'
- ;
- ; WRITE SECTOR
- ;
- F459: DWRITE PSHX *F459: 34 10 '4.'
- F45B: BSR DSEEK *F45B: 8D 18 '..'
- F45D: BNE ZF46A *F45D: 26 0B '&.'
- F45F: LDA #$AC *F45F: 86 AC '..'
- F461: LDB #$05 *F461: C6 05 '..'
- F463: LDY #M0100 *F463: 10 8E 01 00 '....'
- F467: LBSR DMAONE ;DMA ROUTINE *F467: 17 01 2D '..-'
- F46A: ZF46A BITB #$10 *F46A: C5 10 '..'
- F46C: BEQ ZF471 *F46C: 27 03 ''.'
- F46E: LBSR DSWIDE *F46E: 17 00 53 '..S'
- F471: ZF471 BITB #$5C *F471: C5 5C '.\'
- F473: PULS PC,X *F473: 35 90 '5.'
- ;
- ; SEEK TO TRACK
- ;
- F475: DSEEK PSHS X,A *F475: 34 12 '4.'
- F477: STB FDCRG2 *F477: F7 EF 32 '..2'
- F47A: LBSR DELAY *F47A: 17 00 FC '...'
- F47D: LDA FDLCHIMG ;FDC latch image
- F480: ANDA #$F7 *F480: 84 F7 '..'
- F482: TST ,S *F482: 6D E4 'm.'
- F484: BEQ ZF48D *F484: 27 07 ''.'
- F486: LBSR DFNDDE *F486: 17 00 C9 '...'
- F489: TST ,X *F489: 6D 84 'm.'
- F48B: BNE ZF48F *F48B: 26 02 '&.'
- F48D: ZF48D ORA #$08 *F48D: 8A 08 '..'
- F48F: ZF48F STA SSWFDS ;Floppy Control Latch *F48F: B7 EF 48 '..H'
- F492: STA FDLCHIMG ;FDC latch image
- F495: LDA ,S *F495: A6 E4 '..'
- F497: LBSR DFNDTR *F497: 17 00 B0 '...'
- F49A: LDB ,X *F49A: E6 84 '..'
- F49C: STB FDCRG1 *F49C: F7 EF 31 '..1'
- F49F: LBSR DELAY *F49F: 17 00 D7 '...'
- F4A2: CMPA ,X *F4A2: A1 84 '..'
- F4A4: BEQ ZF4C2 *F4A4: 27 1C ''.'
- F4A6: STA FDCRG3 *F4A6: B7 EF 33 '..3'
- F4A9: LBSR DELAY *F4A9: 17 00 CD '...'
- F4AC: LDA #$1B *F4AC: 86 1B '..'
- F4AE: LBSR DMATWO *F4AE: 17 01 05 '...'
- F4B1: TFR B,A *F4B1: 1F 98 '..'
- F4B3: LBSR DFNDTR *F4B3: 17 00 94 '...'
- F4B6: LDB FDCRG1 *F4B6: F6 EF 31 '..1'
- F4B9: STB ,X *F4B9: E7 84 '..'
- F4BB: TFR A,B *F4BB: 1F 89 '..'
- F4BD: BITB #$10 *F4BD: C5 10 '..'
- F4BF: LBSR DELAY *F4BF: 17 00 B7 '...'
- F4C2: ZF4C2 PULS PC,X,A *F4C2: 35 92 '5.'
- ;
- ; SWITCH DENSITY SELECT
- ;
- F4C4: DSWIDE PSHB *F4C4: 34 04 '4.'
- F4C6: LBSR DFNDDE *F4C6: 17 00 89 '...'
- F4C9: COM ,X *F4C9: 63 84 'c.'
- F4CB: PULS PC,B *F4CB: 35 84 '5.'
- ;
- ; VERIFY SECTOR
- ;
- F4CD: DVERFY LDA #$8C *F4CD: 86 8C '..'
- F4CF: LBSR DMATWO *F4CF: 17 00 E4 '...'
- F4D2: BITB #$18 *F4D2: C5 18 '..'
- F4D4: RTS *F4D4: 39 '9'
- ;
- ; RESTORE DRIVE
- ;
- F4D5: RESTOR PSHX *F4D5: 34 10 '4.'
- F4D7: BSR DRIVE *F4D7: 8D 14 '..'
- F4D9: LDA #$0B *F4D9: 86 0B '..'
- F4DB: LBSR DMATWO *F4DB: 17 00 D8 '...'
- F4DE: PSHB *F4DE: 34 04 '4.'
- F4E0: LBSR DFNDTR *F4E0: 17 00 67 '..g'
- F4E3: LDB FDCRG1 *F4E3: F6 EF 31 '..1'
- F4E6: STB ,X *F4E6: E7 84 '..'
- F4E8: PULS X,B *F4E8: 35 14 '5.'
- F4EA: BITB #$98 *F4EA: C5 98 '..'
- F4EC: RTS *F4EC: 39 '9'
- ;
- ; SELECT DRIVE
- ; CHECK DRIVE READY
- ;
- F4ED: DRIVE LDA $03,X *F4ED: A6 03 '..'
- F4EF: CMPA #$03 *F4EF: 81 03 '..'
- F4F1: BLS ZF4F7 *F4F1: 23 04 '#.'
- F4F3: LDB #$0F *F4F3: C6 0F '..'
- F4F5: BRA ZF530 *F4F5: 20 39 ' 9'
- ;
- F4F7: ZF4F7 STA CURDRV *F4F7: B7 EE 0E '...'
- F4FA: LDA FDLCHIMG ;FDC latch image
- F4FD: ANDA #$EC *F4FD: 84 EC '..'
- F4FF: ORA CURDRV *F4FF: BA EE 0E '...'
- F502: STA FDLCHIMG ;FDC latch image
- F505: ANDA #$03 *F505: 84 03 '..'
- F507: PSHB *F507: 34 04 '4.'
- F509: LDB DSKCFG ;GET DISK SIZE *F509: F6 EE 18 '...'
- F50C: ZF50C ASLB *F50C: 58 'X'
- F50D: DECA *F50D: 4A 'J'
- F50E: BPL ZF50C *F50E: 2A FC '*.'
- F510: ANDB #$10 *F510: C4 10 '..'
- F512: ORB FDLCHIMG ;FDC latch image
- F515: STB SSWFDS ;Floppy Control Latch *F515: F7 EF 48 '..H'
- F518: STB FDLCHIMG ;FDC latch image
- F51B: PULB *F51B: 35 04 '5.'
- F51D: LDA FDCCTL *F51D: B6 EF 30 '..0'
- F520: BITA #$80 *F520: 85 80 '..'
- F522: BEQ ZF533 *F522: 27 0F ''.'
- F524: LBSR ZF583 *F524: 17 00 5C '..\'
- F527: LDA FDCCTL *F527: B6 EF 30 '..0'
- F52A: BITA #$80 *F52A: 85 80 '..'
- F52C: BEQ ZF533 *F52C: 27 05 ''.'
- F52E: ZF52E LDB #$80 *F52E: C6 80 '..'
- F530: ZF530 SEC *F530: 1A 01 '..'
- F532: RTS *F532: 39 '9'
- ;
- F533: ZF533 CLRB *F533: 5F '_'
- F534: CLC *F534: 1C FE '..'
- F536: RTS *F536: 39 '9'
- ;
- ; QUICK CHECK DRIVE READY
- ;
- F537: DQUICK LDA $03,X *F537: A6 03 '..'
- F539: CMPA #$03 *F539: 81 03 '..'
- F53B: BLS ZF541 *F53B: 23 04 '#.'
- F53D: LDB #$0F *F53D: C6 0F '..'
- F53F: BRA ZF530 *F53F: 20 EF ' .'
- ;
- F541: ZF541 LDA FDCCTL *F541: B6 EF 30 '..0'
- F544: BITA #$80 *F544: 85 80 '..'
- F546: BEQ ZF533 *F546: 27 EB ''.'
- F548: BRA ZF52E *F548: 20 E4 ' .'
- ;
- ; FIND CURRENT TRACK
- ;
- F54A: DFNDTR LDX #TRKTBL *F54A: 8E EE 0F '...'
- F54D: LDB CURDRV *F54D: F6 EE 0E '...'
- F550: ABX *F550: 3A ':'
- F551: RTS *F551: 39 '9'
- ;
- ; FIND CURRENT DENSITY SELECT
- ;
- F552: DFNDDE LDX #DENSEL *F552: 8E EE 13 '...'
- F555: LDB CURDRV *F555: F6 EE 0E '...'
- F558: ABX *F558: 3A ':'
- F559: RTS *F559: 39 '9'
- ;
- ; WRITE ENTIRE TRACK
- ;
- F55A: WRTRK LDB FDLCHIMG ;FDC latch image
- F55D: ANDB #$F7 *F55D: C4 F7 '..'
- F55F: TSTA *F55F: 4D 'M'
- F560: BNE ZF564 *F560: 26 02 '&.'
- F562: ORB #$08 *F562: CA 08 '..'
- F564: ZF564 STB FDLCHIMG ;FDC latch image
- F567: STB SSWFDS ;Floppy Control Latch *F567: F7 EF 48 '..H'
- F56A: TFR X,D *F56A: 1F 10 '..'
- F56C: PSHY *F56C: 34 20 '4 '
- F56E: SUBD ,S++ *F56E: A3 E1 '..'
- F570: TFR D,Y *F570: 1F 02 '..'
- F572: LDB #$05 *F572: C6 05 '..'
- F574: LDA #$F4 *F574: 86 F4 '..'
- F576: BSR DMAONE ;DMA ROUTINE *F576: 8D 1F '..'
- F578: RTS *F578: 39 '9'
- ;
- ; DELAY
- ;
- F579: DELAY LBSR DELAYM
- F57C: DELAYM LBSR DELAYR *F57C: 17 00 03 '...'
- F57F: LBSR DELAYR *F57F: 17 00 00 '...'
- F582: DELAYR RTS *F582: 39 '9'
- ;
- F583: ZF583 PSHX *F583: 34 10 '4.'
- F585: LDX #MD903 *F585: 8E D9 03 '...'
- F588: ZF588 INX *F588: 30 01 '0.'
- F58A: INX *F58A: 30 01 '0.'
- F58C: DEX *F58C: 30 1F '0.'
- F58E: DEX *F58E: 30 1F '0.'
- F590: DEX *F590: 30 1F '0.'
- F592: BNE ZF588 *F592: 26 F4 '&.'
- F594: PULX *F594: 35 10 '5.'
- F596: RTS *F596: 39 '9'
- ;
- ; 6445 DMA CONTROLLER (ACCESSED ONLY WITHIN THIS ROUTINE)
- ; CALLED BY READ SECTOR, WRITE SECTOR & WRITE TRACK
- ;
- F597: DMAONE STX DMACTL ;DMA CTRLR F597: BF EF 00 '...'
- F59A: STY DMARG1 *F59A: 10 BF EF 02 '....'
- F59E: STB DMARG2 *F59E: F7 EF 10 '...'
- F5A1: LDB FDCRG3 *F5A1: F6 EF 33 '..3'
- F5A4: LBSR DELAY *F5A4: 17 FF D2 '...'
- F5A7: LDB FDCCTL *F5A7: F6 EF 30 '..0'
- F5AA: LBSR DELAY *F5AA: 17 FF CC '...'
- F5AD: LDB #$01 *F5AD: C6 01 '..'
- F5AF: STB DMARG3 *F5AF: F7 EF 14 '...'
- F5B2: CLRB *F5B2: 5F '_'
- F5B3: STB DMARG4 *F5B3: F7 EF 15 '...'
- ; THIS POINT CALLED BY SEEK TRACK, VERIFY SECTOR & RESTORE DRIVE
- F5B6: DMATWO LDB #$FF ; *F5B6: C6 FF '..'
- F5B8: STB FDSTATUS *F5B8: F7 EE 0D '...'
- F5BB: STA FDCCTL *F5BB: B7 EF 30 '..0'
- F5BE: LDA MEE32 *F5BE: B6 EE 32 '..2'
- F5C1: ADDA #$64 *F5C1: 8B 64 '.d'
- F5C3: DMAF5C3 TST MCC34 *F5C3: 7D CC 34 '}.4'
- F5C6: BEQ DMAF5CA *F5C6: 27 02 ''.'
- F5C8: SWI3 *F5C8: 11 3F '.?'
- F5CA: DMAF5CA CLI *F5CA: 1C EF '..'
- F5CC: LDB FDSTATUS *F5CC: F6 EE 0D '...'
- F5CF: CMPB #$FF *F5CF: C1 FF '..'
- F5D1: BNE DMAF5DA *F5D1: 26 07 '&.'
- F5D3: CMPA MEE32 *F5D3: B1 EE 32 '..2'
- F5D6: BNE DMAF5C3 *F5D6: 26 EB '&.'
- F5D8: LDB #$80 *F5D8: C6 80 '..'
- F5DA: DMAF5DA CLR DMARG3 *F5DA: 7F EF 14 '...'
- F5DD: RTS *F5DD: 39 '9'
- ;*************************************************************************
- ; TIMER
- ;-------------------------------------------------------------------------
- ;
- ;TNINT INITIALIZE THE TIMER
- ;
- F5DE: TNINT LDA VIAAUXC *F5DE: B6 EF 2B '..+'
- F5E1: ANDA #$3F *F5E1: 84 3F '.?'
- F5E3: ORA #$40 *F5E3: 8A 40 '.@'
- F5E5: STA VIAAUXC *F5E5: B7 EF 2B '..+'
- F5E8: LDD #M4FC3 *F5E8: CC 4F C3 '.O.'
- F5EB: STD VIAT1LO *F5EB: FD EF 24 '..$'
- F5EE: RTS *F5EE: 39 '9'
- ;
- ; TURN TIMER OFF
- ;
- F5EF: TMOFF LDA #$40 *F5EF: 86 40 '.@'
- F5F1: STA VIAIREN *F5F1: B7 EF 2E '...'
- F5F4: RTS *F5F4: 39 '9'
- ;
- ;TMON TURN TIMER ON
- ;
- F5F5: TMON LDA VIAT1LO *F5F5: B6 EF 24 '..$'
- F5F8: LDA #$C0 *F5F8: 86 C0 '..'
- F5FA: STA VIAIREN *F5FA: B7 EF 2E '...'
- F5FD: RTS *F5FD: 39 '9'
- ;*************************************************************************
- ; INTERRUPT HANDLER
- ;-------------------------------------------------------------------------
- ;
- ; IRQ INTERRUPT HANDLER (FOR ALL DEVICES)
- ; THE ONLY HARDWARE INTERRUPT (NMI & FIRQ ARE NOT CONNECTED)
- ;
- F5FE: HNDLIRQ LDX #INTSCTAB ;POINT TO CONTROL TABLE
- F601: LDB ,X+ ;GET ENTRY COUNT
- F603: IRQHNDL LDA ,X+ ;GET CODE?
- F605: BITA [,X++] ;TEST CODE
- F607: BEQ IRQHNDN ;MATCH?
- F609: JMP [,X] ;JUMP TO HANDLER
- ;
- F60B: IRQHNDN LEAX $02,X ;MOVE TO NEXT ENTRY
- F60D: DECB ;COUNT THEM DOWN
- F60E: BNE IRQHNDL ;ALL TESTED?
- F610: JMP [IRQVEC] ;YES, CALL DEFAULT HANDLER
- ;
- ; INTERRUPT SOURCE CONTROL TABLE
- ;
- F614: INTSCTAB FCB 04 ;NUMBER OF ENTRIES
- ;
- ; STATUS BIT TO TEST, STATUS SOURCE ADDR, HANDLER ADDR
- ;
- F615: FCB $02,VIAIRFL,INTKYBD ;KEYBOARD
- F61A: FCB $40,VIAIRFL,INTPRTR ;PRINTER
- F61F: FCB $08,SSWFDS,INTFDC ;FDC
- F624: FCB $08,VIAIRA,INTUART ;UART
- ;*************************************************************************
- ; KEYBOARD INTERRUPT HANDLING
- ;-------------------------------------------------------------------------
- F629: INTKYBD LDA [VIAIRA] ;READ BYTE FROM VIA INP REG A
- F62C: ANDA #$7F ;MASK TO VALID ASCII
- F62E: LDX #KBDINPBUF ;POINT TO KEYBOARD INPUT BUFFER
- F631: LDB KBUFIPTR ;GET BUFFER HEAD PTR *F631: F6 EE 33 '..3'
- F634: STA B,X ;STORE CHAR THERE
- F636: INCB ;BUMP PTR
- F637: CMPB #8 ;END OF BUFFER?
- F639: BLO INTKYBDF
- F63B: CLRB ;YES, RESET PTR
- F63C: INTKYBDF CMPB KBUFOPTR ;CAUGHT UP WITH TAIL PTR? (FULL)
- F63F: BEQ INTKYBDX
- F641: STB KBUFIPTR ;NO, SAVE UPDATED HEAD PTR
- F644: INTKYBDX RTI
- ;*************************************************************************
- ; UART RECEIVE INTERRUPT HANDLING
- ;-------------------------------------------------------------------------
- ;
- ; STORE RECEIVED UART CHAR TO SERIAL INPUT BUFFER
- ; CALED VIA INT FROM INDIRECT JUMP AT F609
- ;
- F645: INTUART LDA ACIDAT ;GET UART DATA
- F648: ANDA #$7F ;MASK TO VALID ASCII
- F64A: LDX #SERINPBUF ;POINT TO SERIAL INPUT BUFFER
- F64D: LDB SBUFIPTR ;GET INPUT (HEAD) PTR
- F650: STA B,X ;STORE CHAR THERE
- F652: INCB ;ADVANCE INPUT PTR
- F653: CMPB #8 ;END OF BUFFER?
- F655: BLO INTUARTF
- F657: CLRB ;YES, WRAP BACK TO START
- F658: INTUARTF CMPB SBUFOPTR ;HAS HEAD OVERTAKEN TAIL?
- F65B: BEQ INTUARTFX
- F65D: STB SBUFIPTR ;NO, SAVE INPUT (HEAD) PTR
- F660: INTUARTFX RTI
- ;*************************************************************************
- ; PRINTER INTERRUPT HANDLING
- ;-------------------------------------------------------------------------
- F661: INTPRTR LDA VIAT1LO
- F664: INC MEE32
- F667: JMP ZC700
- ;*************************************************************************
- ; FLOPPY DISK INTERRUPT HANDLING
- ;-------------------------------------------------------------------------
- F66A: INTFDC LDA FDCCTL
- F66D: STA FDSTATUS
- F670: LBSR DELAYR ;SHORT DELAY?!
- F673: RTIINST RTI
- ;*************************************************************************
- ; INTERRUPT VECTORS
- ;-------------------------------------------------------------------------
- ;
- F674: hdlSWI JMP [SWIVEC] *F674: 6E 9F EE 08 'n...'
- F678: hdlSWI2 JMP [SW2VEC] *F678: 6E 9F EE 02 'n...'
- F67C: hdlSWI3 JMP [SW3VEC] *F67C: 6E 9F EE 00 'n...'
- F680: hdlNMI JMP [NMIVEC] *F680: 6E 9F EE 0A 'n...'
- F684: hdlFIRQ JMP [FIRVEC] *F684: 6E 9F EE 04 'n...'
- F688: RTI *F688: 3B ';'
- ;*************************************************************************
- ; CONSOLE: HEX OUTPUT ROUTINES
- ;-------------------------------------------------------------------------
- ;
- F689: OUT2HEXSTR BSR OUTHEXSTR *F689: 8D 07 '..'
- F68B: OUT1HEXSTR BSR OUTHEXSTR *F68B: 8D 05 '..'
- F68D: OUTSPC LDA #' ' ;SET SPACE
- F68F: LBRA OUTCHR ;SHOW IT
- ;
- ; DISPLAY STRING AT [X] AS HEX
- ;
- F692: OUTHEXSTR LDA ,X ;GET BYTE *F692: A6 84 '..'
- F694: BSR HEXNBH ;SHOW HI NIBBLE
- F696: LDA ,X+ ;GET AGAIN, AND ADVANCE PTR
- F698: BRA HEXNBL ;SHOW LO NIBBLE
- ;
- ; DISPLAY HIGH HEX NIBBLE IN A:7-4
- ;
- F69A: HEXNBH LSRA ;MOVE HIGH NIBBLE TO LOW NIBBLE *F69A: 44 'D'
- F69B: LSRA
- F69C: LSRA
- F69D: LSRA
- ;
- ; DISPLAY LOW HEX NIBBLE IN A:3-0
- ;
- F69E: HEXNBL ANDA #$0F ;MASK TO LO 4 BITS *F69E: 84 0F '..'
- F6A0: ADDA #'0' ;MAKE ASCII
- F6A2: CMPA #'9' ;NUMERIC?
- F6A4: BLS HEXNBN
- F6A6: ADDA #$07 ;NO, MAKE IT A..F
- F6A8: HEXNBN LBRA OUTCHR
- ;*************************************************************************
- ; CONSOLE: HEX INPUT
- ;-------------------------------------------------------------------------
- ;
- ; GET HEX INPUT
- ;
- F6AB: INPHEXCHR LBSR INPCHR *F6AB: 17 00 B9 '...'
- F6AE: ZF6AE CMPA #'0' *F6AE: 81 30 '.0'
- F6B0: BMI BADHEXCHR *F6B0: 2B 13 '+.'
- F6B2: CMPA #'9' *F6B2: 81 39 '.9'
- F6B4: BLE GOODHEX *F6B4: 2F 0A '/.'
- F6B6: CMPA #'A' *F6B6: 81 41 '.A'
- F6B8: BMI BADHEXCHR *F6B8: 2B 0B '+.'
- F6BA: CMPA #'F' *F6BA: 81 46 '.F'
- F6BC: BGT BADHEXCHR *F6BC: 2E 07 '..'
- F6BE: SUBA #$07 ;MOVE A..F INTO 10-15 RANGE
- F6C0: GOODHEX ANDA #$0F ;MASK TO 4 BIT NIBBLE
- F6C2: CLC ;RETURN VALID HEX
- F6C4: RTS
- ;
- F6C5: BADHEXCHR SEC ;RETURN BAD HEX *F6C5: 1A 01 '..'
- F6C7: RTS
- ; WHAT CALLS THIS?
- F6C8: LBSR INPHEXCHR ;GET HEX CHAR *F6C8: 17 FF E0 '...'
- F6CB: BLO DROPHEX ;BAD?
- F6CD: ZF6CD ASLA *F6CD: 48 'H'
- F6CE: ASLA *F6CE: 48 'H'
- F6CF: ASLA *F6CF: 48 'H'
- F6D0: ASLA *F6D0: 48 'H'
- F6D1: TFR A,B *F6D1: 1F 89 '..'
- F6D3: TSTA *F6D3: 4D 'M'
- F6D4: LBSR INPHEXCHR *F6D4: 17 FF D4 '...'
- F6D7: BLO DROPHEX *F6D7: 25 0E '%.'
- F6D9: ABA *F6D9: 34 04 AB E0 '4...'
- F6DD: TFR A,B *F6DD: 1F 89 '..'
- F6DF: TSTA *F6DF: 4D 'M'
- F6E0: ADDB MEE2D *F6E0: FB EE 2D '..-'
- F6E3: STB MEE2D *F6E3: F7 EE 2D '..-'
- F6E6: RTS *F6E6: 39 '9'
- ;
- F6E7: DROPHEX LBRA COMDPROC ;WARM START MONITOR
- ;
- F6EA: PUTCRLF LDX #MSGCRLF ;PUT CRLF
- F6ED: LBRA OUTSTRX
- ;
- ; GET THREE HEX INPUT WORDS
- ;
- F6F0: INP3HEXWDS BSR INP2HEXWDS
- F6F2: PSHS X,D
- F6F4: BSR INPHEXWRD
- F6F6: PULS Y,X
- F6F8: EXG X,Y
- F6FA: RTS
- ;
- F6FB: INP2HEXWDS BSR INPHEXWRD
- F6FD: BLO ZF705
- F6FF: PSHD
- F701: BSR INPHEXWRD
- F703: PULX
- F705: ZF705 RTS
- ;
- ; GET INPUT HEX WORD, RETURN IN D
- ;
- F706: INPHEXWRD CLRA *F706: 4F 'O'
- F707: CLRB *F707: 5F '_'
- F708: PSHD *F708: 34 06 '4.'
- F70A: LDB NIBSPWORD ;SET HEX CHAR COUNT
- F70D: PSHD *F70D: 34 06 '4.'
- F70F: INPHXWD1 LBSR INPHEXCHR ;GET HEX CHAR
- F712: BCC INPHXWDL ;INVALID?
- F714: CMPA #'/' ;YES, IS IT A SLASH? (?!)
- F716: BNE INPHXWD1 ;NO, TRY AGAIN
- F718: SEC ;YES, SET INVALID
- F71A: PULS PC,X,D ;AND RETURN
- ;
- F71C: INPHXWDL STA ,S
- F71E: LDD $02,S
- F720: LSLB
- F721: ROLA
- F722: LSLB
- F723: ROLA
- F724: LSLB
- F725: ROLA
- F726: LSLB
- F727: ROLA
- F728: ORB ,S
- F72A: STD $02,S
- F72C: DEC $01,S
- F72E: BEQ INPHXWR
- F730: LBSR INPHEXCHR
- F733: BCC INPHXWDL
- F735: INPHXWR CLC
- F737: PULD
- F739: PULS PC,D
- ;*************************************************************************
- ; CONSOLE: OUTPUT STRING, HEX CHAR
- ;-------------------------------------------------------------------------
- ;
- ; OUTPUT A STRING. FIRST CHAR IS IN A, THE REST AT [X]
- ;
- F73B: OUTSTR LBSR OUTCHR ;OUTPUT CHAR IN A
- F73E: OUTSTRX LDA ,X+ ;GET NEXT CHAR VIA X
- F740: BNE OUTSTR
- F742: RTS
- ;
- F743: OUTCHRHEX PSHB
- F745: LBSR OUTSTRX
- F748: LEAX ,S
- F74A: LBSR OUT1HEXSTR
- F74D: PULS PC,B
- ;*************************************************************************
- ; CONSOLE: INPUT/OUTPUT CHAR
- ;-------------------------------------------------------------------------
- ;
- ; OUTPUT A CHAR, CHECKING FOR CTRL-X ON INPUT
- ;
- F74F: OUTCHR LBSR STATUS ;CHECK FOR KEYPRESS READY
- F752: BEQ OUTCHNI ;IS THERE AN INPUT CHAR?
- F754: PSHA
- F756: LBSR INCHNE ;YES, GET IT
- F759: CMPA #$18 ;CTRL-X?
- F75B:? LBEQ COMDPROC ;YES, ABANDON OPERATION AND WARM START MONITOR
- F75F:? LBSR INCHNE ;GET ANOTHER?!
- F762:? PULA
- F764: OUTCHNI LBRA TOUTCH ;DISPLAY IT
- ;
- ; INPUT A CHAR, CHECKING FOR CTRL-X
- ;
- F767: INPCHR LBSR INCHNE ;GET INPUT CHAR
- F76A: CMPA #$18 ;CTRL-X?
- F76C: LBEQ COMDPROC ;YES, ABANDON OPERATION AND WARM START MONITOR
- F770: CMPA #$60 ;IS IT UPPER CASE?
- F772: LBLS TOUTCH ;YES, JUST SHOW IT
- F776: CMPA #$7A ;IS IT LOWER CASE?
- F778: LBHI TOUTCH ;NO, JUST SHOW IT
- F77C: ANDA #$DF ;YES, MAKE IT UPPER CASE FIRST
- F77E: LBRA TOUTCH ;THEN SHOW IT
- ;*************************************************************************
- ; VIDEO OPERATIONS
- ;-------------------------------------------------------------------------
- ;
- ; 6845 CRTC INITIALIZATION - WRITE PARAMETER BLOCK TO CRTC
- ;
- F781: CRTCINIT CLRB ;RESET CRTC REGISTER INDEX
- F782: LDX #CRTCPARMS ;POINT TO CRTC INITIALIZATION PARAMETERS BLOCK
- F785: CRTCINIL STB CRTCAREG ;WRITE REGISTER INDEX TO CRTC ADDRESS REG
- F788: LDA ,X+ ;GET PARAMETER BYTE
- F78A: STA CRTCDREG ;WRITE TO DATA REG (SELECTED BY ADDR REG)
- F78D: INCB ;BUMP REG INDEX
- F78E: CMPB #16 ;ALL PARMS WRITTEN?
- F790: BNE CRTCINIL
- ;
- ; COPY VIDEO PARMS AT $F7B3 TO $EE21 (12 BYTES)
- ;
- F792: LDX #VIDPARMS ;POINT TO VIDEO PARAMETERS BLOCK
- F795: LDY #VIDEODATA ;POINT TO SOFT DATA TABLE IN RAM
- F799: CRTCINI2 LDA ,X+ ;MOVE BLOCK
- F79B: STA ,Y+
- F79D: CMPX #VIDPARME ;END OF BLOCK?
- F7A0: BLO CRTCINI2
- F7A2: RTS
- ;
- F7A3: CRTCPARMS FCB $7B ;0 - Horizontal Total = 123
- F7A4: FCB $50 ;1 - Horizontal Displayed = 80
- F7A5: FCB $62 ;2 - Horizontal Sync Position = 98
- F7A6: FCB $0A ;3 - Sync Width = 10
- F7A7: DEC $19 ;4 - Vertical Total = 25
- F7A8: FCB $09 ;5 - Vertical Total Adjust = 9
- F7A9: ROL $18 ;6 - Vertical Displayed = 24
- F7AA: FCB $18 ;7 - Vertical Sync Position = 24
- F7AB: NEG $00 ;8 - Interlace Mode and Skew = 0
- F7AC: FCB $09 ;9 - Max Scan Line Address = 9
- F7AD: NEG $00 ;10 - Cursor Start = 0
- F7AE: FCB $09 ;11 - Cursor End = 9
- F7AF: BRA $20 ;12 - Start Address H = 32
- F7B0: FCB $00 ;13 - Start Address L = 0
- F7B1: FCB $38 ;14 - Cursor H = 56
- F7B2: FCB $00 ;15 - Cursor L = 0
- ;
- ; THIS BLOCK COPIED TO $EE21 BY COLD INIT ABOVE
- ; (TO INITIALIZE VIDEO VARIABLES?)
- ;
- F7B3: VIDPARMS FCW $E000 ;EE21+0 VIDRAM ADDRESS
- F7B5: FCW $E780 ;EE21+2 END OF VIDRAM? ($780=80*24)
- F7B7: FCW $E000 ;EE21+4 CURSOR ADDRESS
- F7B9: FCB $00 ;EE21+6
- F7BA: FCB $50 ;EE21+7 CHARS PER LINE? (80)
- F7BB: FCB $01 ;EE21+8
- F7BC: FCB $00 ;EE21+9
- F7BD: FCB $00 ;EE21+10
- F7BE: FCB $00 ;EE21+11
- VIDPARME EQU *
- ;*************************************************************************
- ; DISK OPERATIONS: RESTORE, FLEX BOOT
- ;-------------------------------------------------------------------------
- ;
- ; RESTORE DISK TO TRACK 0
- ;
- F7BF: DSKRESTOR FCB $17
- F7C0: LDD M6A8E *F7C0: FC 6A 8E '.j.'
- F7C3: LDU $0F,X *F7C3: EE 0F '..'
- F7C5: LBSR RESTOR *F7C5: 17 FD 0D '...'
- F7C8: BEQ DSKRESTX
- F7CA: LDX #MSGERRR ;"RESTORE ERROR"
- F7CD: LBSR OUTCHRHEX ;SHOW ERROR MESSAGE
- F7D0: DSKRESTX RTS
- ;
- F7D1: FLXBOOT1 LDA #5 ;SET RETRY COUNT?
- F7D4: PSHA
- F7D5: ZF7D5 LDD #1 ;SET FIRST TRK/SECTOR?
- F7..: LDX #FLEXBOOTBUF ;SET SECTOR BUFFER?
- F7..: LBSR DREAD ;READ SECTOR
- F7..: BEQ ZF7EF ;OK?
- F7..: DEC ,S ;NO, RETRY
- F7E4: BNE ZF7D5 ;ALL BAD?
- F7E6: LDX #MSGERRB ;YES, SHOW "BOOT ERROR"
- F7E8: LBSR OUTCHRHEX ;SHOW ERROR MESSAGE
- F7EB: PULB
- F7EC: LBRA COMDPROC ;WARM START MONITOR
- ;
- F7EF: ZF7EF PULS PC,B *F7EF: 35 84 '5.'
- ;
- F7F1: FLXBOOT2 LDD MC105 *F7F1: FC C1 05 '...'
- F7F4: STD MC300 *F7F4: FD C3 00 '...'
- F7F7: LDY #MC400 *F7F7: 10 8E C4 00 '....'
- F7FB: ZF7FB BSR ZF82E *F7FB: 8D 31 '.1'
- F7FD: CMPA #$02 *F7FD: 81 02 '..'
- F7FF: BEQ ZF811 *F7FF: 27 10 ''.'
- F801: CMPA #$16 *F801: 81 16 '..'
- F803: BNE ZF7FB *F803: 26 F6 '&.'
- F805: BSR ZF82E *F805: 8D 27 '.''
- F807: STA MC108 *F807: B7 C1 08 '...'
- F80A: BSR ZF82E *F80A: 8D 22 '."'
- F80C: STA MC109 *F80C: B7 C1 09 '...'
- F80F: BRA ZF7FB *F80F: 20 EA ' .'
- ;
- F811: ZF811 BSR ZF82E *F811: 8D 1B '..'
- F813: STA MC10A *F813: B7 C1 0A '...'
- F816: BSR ZF82E *F816: 8D 16 '..'
- F818: STA MC10B *F818: B7 C1 0B '...'
- F81B: BSR ZF82E *F81B: 8D 11 '..'
- F81D: TFR A,B *F81D: 1F 89 '..'
- F81F: TSTA *F81F: 4D 'M'
- F820: BEQ ZF7FB *F820: 27 D9 ''.'
- F822: LDX MC10A *F822: BE C1 0A '...'
- F825: ZF825 BSR ZF82E *F825: 8D 07 '..'
- F827: STA ,X+ *F827: A7 80 '..'
- F829: DECB *F829: 5A 'Z'
- F82A: BNE ZF825 *F82A: 26 F9 '&.'
- F82C: BRA ZF7FB *F82C: 20 CD ' .'
- ;
- F82E: ZF82E PSHS X,B *F82E: 34 14 '4.'
- F830: CMPY #MC400 *F830: 10 8C C4 00 '....'
- F834: BNE ZF84A *F834: 26 14 '&.'
- F836: LDX #MC300 *F836: 8E C3 00 '...'
- F839: LDD ,X *F839: EC 84 '..'
- F83B: BNE ZF83F *F83B: 26 02 '&.'
- F83D: PULS PC,Y,X,B *F83D: 35 B4 '5.'
- F83F: ZF83F LBSR DREAD *F83F: 17 FB FD '...'
- F842: BEQ ZF846 *F842: 27 02 ''.'
- F844: PULS PC,Y,X,B *F844: 35 B4 '5.'
- ;
- F846: ZF846 LDY #MC304 *F846: 10 8E C3 04 '....'
- F84A: ZF84A LDA ,Y+ *F84A: A6 A0 '..'
- F84C: PULS PC,X,B *F84C: 35 94 '5.'
- ;
- F84E: ZF84E LDX #MF8A5 *F84E: 8E F8 A5 '...'
- F851: LDY #DDJ_READ *F851: 10 8E DE 00 '....'
- F855: ZF855 LDA ,X+ *F855: A6 80 '..'
- F857: STA ,Y+ *F857: A7 A0 '..'
- F859: CMPX #MF8E8 *F859: 8C F8 E8 '...'
- F85C: BLO ZF855 *F85C: 25 F7 '%.'
- F85E: CLR MCC34 *F85E: 7F CC 34 '..4'
- F861: LDX #MBFFF *F861: 8E BF FF '...'
- F864: STX MEMEND *F864: BF CC 2B '..+'
- F867: LDX #MF8E8 *F867: 8E F8 E8 '...'
- F86A: LDY #CINCHNE *F86A: 10 8E D3 E5 '....'
- F86E: ZF86E LDA ,X+ *F86E: A6 80 '..'
- F870: STA ,Y+ *F870: A7 A0 '..'
- F872: CMPX #MF900 *F872: 8C F9 00 '...'
- F875: BLO ZF86E *F875: 25 F7 '%.'
- F877: LDX #MF900 *F877: 8E F9 00 '...'
- F87A: LDY #MD370 *F87A: 10 8E D3 70 '...p'
- F87E: ZF87E LDA ,X+ *F87E: A6 80 '..'
- F880: STA ,Y+ *F880: A7 A0 '..'
- F882: CMPX #MSGWHAT *F882: 8C F9 20 '.. '
- F885: BLO ZF87E *F885: 25 F7 '%.'
- F887: LDA #$7E *F887: 86 7E '.~'
- F889: LDX #PNTIN *F889: 8E F3 FA '...'
- F88C: STA PRTINI *F88C: B7 CC C0 '...'
- F88F: STX MCCC1 *F88F: BF CC C1 '...'
- F892: LDX #PNTCK *F892: 8E F4 0D '...'
- F895: STA PRTCHK *F895: B7 CC D8 '...'
- F898: STX MCCD9 *F898: BF CC D9 '...'
- F89B: LDX #ZF421 *F89B: 8E F4 21 '..!'
- F89E: STA PRTOUT *F89E: B7 CC E4 '...'
- F8A1: STX MCCE5 *F8A1: BF CC E5 '...'
- F8A4: RTS *F8A4: 39 '9'
- ;*************************************************************************
- ; JUMP TABLES
- ;-------------------------------------------------------------------------
- ;
- ; JUMP TABLE ?
- ;
- F8A5: MF8A5 JMP ZDE23 *F8A5: 7E DE 23 '~.#'
- F8A8: JMP ZDE2B *F8A8: 7E DE 2B '~.+'
- F8AB: JMP ZDE2F *F8AB: 7E DE 2F '~./'
- F8AE: JMP ZDE33 *F8AE: 7E DE 33 '~.3'
- F8B1: JMP ZDE3B *F8B1: 7E DE 3B '~.;'
- F8B4: JMP ZDE37 *F8B4: 7E DE 37 '~.7'
- F8B7: JMP ZDE3F *F8B7: 7E DE 3F '~.?'
- F8BA: JMP ZDE1F *F8BA: 7E DE 1F '~..'
- F8BD: JMP ZDE1E *F8BD: 7E DE 1E '~..'
- F8C0: JMP ZDE27 *F8C0: 7E DE 27 '~.''
- F8C3: RTS *F8C3: 39 '9'
- ;
- ; JUMP TABLE ?
- ;
- F8C4: JMP [ZFFDC] *F8C4: 6E 9F FF DC 'n...'
- F8C8: JMP [ZFFCE] *F8C8: 6E 9F FF CE 'n...'
- F8CC: JMP [ZFFE0] *F8CC: 6E 9F FF E0 'n...'
- F8D0: JMP [ZFFD0] *F8D0: 6E 9F FF D0 'n...'
- F8D4: JMP [ZFFD2] *F8D4: 6E 9F FF D2 'n...'
- F8D8: JMP [ZFFD4] *F8D8: 6E 9F FF D4 'n...'
- F8DC: JMP [ZFFD8] *F8DC: 6E 9F FF D8 'n...'
- F8E0: JMP [ZFFD6] *F8E0: 6E 9F FF D6 'n...'
- F8E4: JMP [ZFFDA] *F8E4: 6E 9F FF DA 'n...'
- ;
- F8E8: MF8E8 ADDD M0070 *F8E8: D3 70 '.p'
- F8EA: ADDD M008D *F8EA: D3 8D '..'
- F8EC: LDU $00,X *F8EC: EE 00 '..'
- F8EE: LDU $06,X *F8EE: EE 06 '..'
- F8F0: ADDD M0074 *F8F0: D3 74 '.t'
- F8F2: ADDD M0078 *F8F2: D3 78 '.x'
- F8F4: ADDD M007C *F8F4: D3 7C '.|'
- F8F6: SUBB >M00D3 *F8F6: F0 00 D3 '...'
- F8F9: CMPX #MD380 *F8F9: 8C D3 80 '...'
- F8FC: ADDD M0084 *F8FC: D3 84 '..'
- F8FE: ADDD M0088 *F8FE: D3 88 '..'
- F900: MF900 JMP [ZFFC0] *F900: 6E 9F FF C0 'n...'
- ;
- ; JUMP TABLE ?
- ;
- F904: JMP [ZFFC2] *F904: 6E 9F FF C2 'n...'
- F908: JMP [ZFFC4] *F908: 6E 9F FF C4 'n...'
- F90C: JMP [ZFFC6] *F90C: 6E 9F FF C6 'n...'
- F910: JMP [ZFFC8] *F910: 6E 9F FF C8 'n...'
- F914: JMP [ZFFCA] *F914: 6E 9F FF CA 'n...'
- F918: JMP [ZFFCC] *F918: 6E 9F FF CC 'n...'
- F91C: RTS *F91C: 39 '9'
- ;
- F91D: JMP ZC700 *F91D: 7E C7 00 '~..'
- ;
- MSGWHAT FCB CR,LF,'?',0 ;F920
- MSGCRLF FCB CR,LF,0 ;F924
- ;
- MSGERRB FCB CR,LF,'BOOT ERROR',0 ;F927
- MSGERRD FCB CR,LF,'DISK ERROR',0 ;F934
- MSGERRR FCB CR,LF,'RESTORE ERROR',0 ;F942
- ;
- ORG $FFB0
- VFFBO FCB UAINNE ;F3C7 SERIAL PORT INPUT-- NO ECHO
- VFFB2 FCB UAIN ;F3E4 SERIAL PORT INPUT
- VFFB4 FCB UASTAT ;F3BD UART INPUT BUFFER EMPTY TEST
- VFFBE FCB UAOT ;F3EC SERIAL PORT OUTPUT
- ;
- VFFBB FCB KBINNE ;F276 KEYBOARD INPUT - NO ECHO
- VFFBA FCB KBIN ;F28F KEYBOARD INPUT
- VFFBC FCB KBST ;F26C KEYBOARD INPUT BUFFER EMPTY TEST
- VFFBE FCB VIDOT ;F29A VIDEO OUTPUT
- ;
- VFFCO FCB INCHNE ;F260 INPUT CHARACTER-NO ECHO
- VFFC2 FCB TMOFF ;F5EF TURN TIMER OFF
- VFFC4 FCB TMON ;F5F5 TURN TIMER ON
- VFFCE FCB TNINT ;F5DE INITIALIZE THE TIMER
- VFFCO FCB STATUS ;F25C CONSOLE INPUT STATUS CHECK
- VFFCA FCB TOUTCH ;F268 CONSOLE CHARACTER OUTPUT
- VFFCC FCB TINCH ;F264 INPUT CHARACTER
- VFFCE FCB DREAD ;F43F READ SECTOR
- VFFDO FCB DWRITE ;F459 WRITE SECTOR
- VFFD2 FCB DVERFY ;F4CD VERIFY SECTOR
- VFFD4 FCB RESTOR ;F4D5 RESTORE DRIVE
- VFFDE FCB DRIVE ;F4ED SELECT DRIVE
- VFFDA FCB DCHECK ;F4ED CHECK DRIVE READY
- VFFDA FCB DQUICK ;F537 QUICK CHECK DRIVE READY
- VFFDC FCB DINIT ;F42C INITIALIZE DISK DRIVER
- VFFDE FCB DWARM ;F43E INITIALIZE DISK DRIVER (WARM START)
- VFFE0 FCB DSEEK ;F475 SEEK TO TRACK
- VFFE2 FCB DSWIDE ;F4C4 SWITCH DENSITY SELECT
- VFFE4 FCB DFNDTR ;F54A FIND CURRENT TRACK
- VFFE6 FCB DFNDDE ;F552 FIND CURRENT DENSITY SELECT
- VFFE8 FCB WRTRK ;F55A WRITE ENTIRE TRACK
- VFFEA FCB PNTIN ;F3FA INITIALIZE PRINTER DRIVER
- VFFEC FCB PNTCK ;F40D CHECK IF PRINTER READY
- ;
- KFFEE FCB ZF421 ;IRQ - PRINTER READY?
- ;
- ; 6809 interrupt vectors
- ;
- KFFF0 FCB WARMST ;IRQ - reserved
- KFFF2 FCB hdlSWI3 ;IRQ - SWI3
- KFFF4 FCB hdlSWI2 ;IRQ - SWI2
- KFFF6 FCB hdlFIRQ ;IRQ - FIRQ
- KFFF8 FCB HNDLIRQ ;IRQ - IRQ
- KFFFA FCB hdlSWI ;IRQ - SWI
- KFFFC FCB hdlNMI ;IRQ - NMI
- KFFFE FCB WARMST ;IRQ - RESET
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement