OpenCores
URL https://opencores.org/ocsvn/System09/System09/trunk

Subversion Repositories System09

[/] [System09/] [tags/] [pre_mkfiles_rev1_merge/] [src/] [sys09bug/] [sys09ads.lst] - Diff between revs 27 and 66

Only display areas with differences | Details | Blame | View Log

Rev 27 Rev 66
Assembler release DWC_2.0 version 2.11
Assembler release DWC_2.0 version 2.11
May 6, 2004 (c) Motorola (free ware)
May 6, 2004 (c) Motorola (free ware)
0001                          NAM SYS09BUG FOR ADS6809
0001                          NAM SYS09BUG FOR ADS6809
0000                          INCLUDE "opt_ads.txt"
0000                          INCLUDE "opt_ads.txt"
0001                         *
0001                         *
0002                         ***************************************************
0002                         ***************************************************
0003                         *   OPTION SWITCHES
0003                         *   OPTION SWITCHES
0004                         ***************************************************
0004                         ***************************************************
0005                         *
0005                         *
0006                         *
0006                         *
0007                         ** THE CONTROL PORT CAN ONLY BE ONE OF THESE
0007                         ** THE CONTROL PORT CAN ONLY BE ONE OF THESE
0008                         ** NOTE THAT THE ACIA WILL ALWAYS BE PRESET
0008                         ** NOTE THAT THE ACIA WILL ALWAYS BE PRESET
0009                         ** FOR LOADING AND SAVING S1 RECORDS
0009                         ** FOR LOADING AND SAVING S1 RECORDS
0010                         *
0010                         *
0011                         *S3EOPT EQU $FF SPARTAN3E STARTER
0011                         *S3EOPT EQU $FF SPARTAN3E STARTER
0012                         *S3SOPT EQU $FF SPARTAN3 STARTER FPGA VIDEO & PS2 KEYBOARD
0012                         *S3SOPT EQU $FF SPARTAN3 STARTER FPGA VIDEO & PS2 KEYBOARD
0013                         *B5XOPT EQU $FF B5-X300 FPGA VIDEO & PS2 KEYBOARD
0013                         *B5XOPT EQU $FF B5-X300 FPGA VIDEO & PS2 KEYBOARD
0014                         *XESOPT EQU $FF XESS XSA-3S100 & XST-3.0
0014                         *XESOPT EQU $FF XESS XSA-3S100 & XST-3.0
0015 00FF                    ADSOPT  EQU $FF ADS6809 & DG640 VIDEO DISPAY
0015 00FF                    ADSOPT  EQU $FF ADS6809 & DG640 VIDEO DISPAY
0016                         *SWTOPT EQU $FF SWTP ACIA SERIAL CONTROL PORT
0016                         *SWTOPT EQU $FF SWTP ACIA SERIAL CONTROL PORT
0017                         *
0017                         *
0002                          END
0002                          END
0000                          INCLUDE "sys09equ.txt"
0000                          INCLUDE "sys09equ.txt"
0001                         *
0001                         *
0002                         ***************************************************
0002                         ***************************************************
0003                         *   MEMORY MAP EQUATES                            *
0003                         *   MEMORY MAP EQUATES                            *
0004                         ***************************************************
0004                         ***************************************************
0005 E000                    MONIO  EQU $E000  I/O SPACE
0005 E000                    MONIO  EQU $E000  I/O SPACE
0006                                IFD S3EOPT
0006                                IFD S3EOPT
0007                         MONRAM EQU $7FC0
0007                         MONRAM EQU $7FC0
0008                                ELSE
0008                                ELSE
0009 DFC0                    MONRAM EQU $DFC0  STACK SPACE
0009 DFC0                    MONRAM EQU $DFC0  STACK SPACE
0010                                ENDIF S3EOPT
0010                                ENDIF S3EOPT
0011 F800                    MONROM EQU $F800  START OF ROM
0011 F800                    MONROM EQU $F800  START OF ROM
0012                                IFD S3SOPT
0012                                IFD S3SOPT
0013                         MONEXT EQU $F000  START OF EXTENDED COMMANDS
0013                         MONEXT EQU $F000  START OF EXTENDED COMMANDS
0014                         EXTCMD EQU $00    EXTENDED OFFSET
0014                         EXTCMD EQU $00    EXTENDED OFFSET
0015                                ENDIF S3SOPT
0015                                ENDIF S3SOPT
0015                                ENDIF S3SOPT
0015                                ENDIF S3SOPT
0016                                IFD XESOPT
0016                                IFD XESOPT
0017                         MONEXT EQU $F000  START OF EXTENDED COMMANDS
0017                         MONEXT EQU $F000  START OF EXTENDED COMMANDS
0018                         EXTCMD EQU $00    EXTENDED OFFSET
0018                         EXTCMD EQU $00    EXTENDED OFFSET
0019                                ENDIF XESOPT
0019                                ENDIF XESOPT
0019                                ENDIF XESOPT
0019                                ENDIF XESOPT
0020                         ***************************************************
0020                         ***************************************************
0021
0021
0022                                 IFD S3EOPT
0022                                 IFD S3EOPT
0023                         *
0023                         *
0024                         * DIGILENT SPARTAN 3E STARTER
0024                         * DIGILENT SPARTAN 3E STARTER
0025                         *
0025                         *
0026                         ACIAOPT EQU $FF ACIA AT PORT 0
0026                         ACIAOPT EQU $FF ACIA AT PORT 0
0027                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0027                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0028                         VDUOPT  EQU $FF VDU AT $E030
0028                         VDUOPT  EQU $FF VDU AT $E030
0029                         TRAOPT  EQU $FF PIA TRACE TIMER
0029                         TRAOPT  EQU $FF PIA TRACE TIMER
0030                                 ENDIF S3EOPT
0030                                 ENDIF S3EOPT
0030                                 ENDIF S3EOPT
0030                                 ENDIF S3EOPT
0031                         *
0031                         *
0032                                 IFD S3SOPT
0032                                 IFD S3SOPT
0033                         *
0033                         *
0034                         * DIGILENT SPARTAN 3 STARTER
0034                         * DIGILENT SPARTAN 3 STARTER
0035                         *
0035                         *
0036                         ACIAOPT EQU $FF ACIA AT PORT 0
0036                         ACIAOPT EQU $FF ACIA AT PORT 0
0037                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0037                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0038                         VDUOPT  EQU $FF VDU AT $E030
0038                         VDUOPT  EQU $FF VDU AT $E030
0039                         CF8OPT  EQU $FF COMPACT FLASH AT $E040
0039                         CF8OPT  EQU $FF COMPACT FLASH AT $E040
0040                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0040                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0041                         EXTOPT  EQU $FF EXTENDED COMMANDS
0041                         EXTOPT  EQU $FF EXTENDED COMMANDS
0042                                 ENDIF S3SOPT
0042                                 ENDIF S3SOPT
0042                                 ENDIF S3SOPT
0042                                 ENDIF S3SOPT
0043                         *
0043                         *
0044                                 IFD B5XOPT
0044                                 IFD B5XOPT
0045                         *
0045                         *
0046                         * BURCHED B5-X300
0046                         * BURCHED B5-X300
0047                         *
0047                         *
0048                         ACIAOPT EQU $FF ACIA AT PORT 0
0048                         ACIAOPT EQU $FF ACIA AT PORT 0
0049                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0049                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0050                         VDUOPT  EQU $FF VDU AT $E030
0050                         VDUOPT  EQU $FF VDU AT $E030
0051                         CF8OPT  EQU $FF COMPACT FLASH AT $E040
0051                         CF8OPT  EQU $FF COMPACT FLASH AT $E040
0052                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0052                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0053                                 ENDIF B5XOPT
0053                                 ENDIF B5XOPT
0053                                 ENDIF B5XOPT
0053                                 ENDIF B5XOPT
0054                         *
0054                         *
0055                                 IFD XESOPT
0055                                 IFD XESOPT
0056                         *
0056                         *
0057                         * XESS XSA-3S1000 & XST-3.0
0057                         * XESS XSA-3S1000 & XST-3.0
0058                         *
0058                         *
0059                         ACIAOPT EQU $FF ACIA AT PORT 0
0059                         ACIAOPT EQU $FF ACIA AT PORT 0
0060                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0060                         PS2OPT  EQU $FF PS2 KEYBOARD AT $E020
0061                         VDUOPT  EQU $FF VDU AT $E030
0061                         VDUOPT  EQU $FF VDU AT $E030
0062                         IDEOPT  EQU $FF XESS IDE AT $E100
0062                         IDEOPT  EQU $FF XESS IDE AT $E100
0063                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0063                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0064                         EXTOPT  EQU $FF EXTENDED COMMANDS
0064                         EXTOPT  EQU $FF EXTENDED COMMANDS
0065                                 ENDIF XESOPT
0065                                 ENDIF XESOPT
0065                                 ENDIF XESOPT
0065                                 ENDIF XESOPT
0066                         *
0066                         *
0067                                 IFD ADSOPT
0067                                 IFD ADSOPT
0068                         *
0068                         *
0069                         * ACKERMAN DIGITAL ADS6809
0069                         * ACKERMAN DIGITAL ADS6809
0070                         *
0070                         *
0071 00FF                    DG640OPT  EQU $FF DG640 VDU AT $E800
0071 00FF                    DG640OPT  EQU $FF DG640 VDU AT $E800
0072                         *RTCOPT  EQU $FF REAL TIME CLOCK
0072                         *RTCOPT  EQU $FF REAL TIME CLOCK
0073 00FF                    PRTOPT  EQU $FF PRINTER DRIVERS
0073 00FF                    PRTOPT  EQU $FF PRINTER DRIVERS
0074 00FF                    MFDCOPT EQU $FF MINIFLOPPY 5.25" DISK BOOT
0074 00FF                    MFDCOPT EQU $FF MINIFLOPPY 5.25" DISK BOOT
0075                                 ENDIF ADSOPT
0075                                 ENDIF ADSOPT
0076                         *
0076                         *
0077                                 IFD SWTOPT
0077                                 IFD SWTOPT
0078                         *
0078                         *
0079                         * SOUTH WEST TECHNICAL PRODUCTS COMPUTER
0079                         * SOUTH WEST TECHNICAL PRODUCTS COMPUTER
0080                         *
0080                         *
0081                         ACIAOPT EQU $FF ACIA AT PORT 0
0081                         ACIAOPT EQU $FF ACIA AT PORT 0
0082                         DMAFOPT EQU $FF DMAF2 8" FLOPPY DISK BOOT
0082                         DMAFOPT EQU $FF DMAF2 8" FLOPPY DISK BOOT
0083                         MFDCOPT EQU $FF MINIFLOPPY 5.25" DISK BOOT
0083                         MFDCOPT EQU $FF MINIFLOPPY 5.25" DISK BOOT
0084                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0084                         DATOPT  EQU $FF DYNAMIC ADDRESS TRANSLATION
0085                                 ENDIF
0085                                 ENDIF
0085                                 ENDIF
0085                                 ENDIF
0086                         *
0086                         *
0087                                 IFD   ACIAOPT
0087                                 IFD   ACIAOPT
0088                         *
0088                         *
0089                         ***************************************************
0089                         ***************************************************
0090                         *   SERIAL PORT                                   *
0090                         *   SERIAL PORT                                   *
0091                         ***************************************************
0091                         ***************************************************
0092                         *
0092                         *
0093                         ** ACIA SITS ON PORT 0
0093                         ** ACIA SITS ON PORT 0
0094                         *
0094                         *
0095                         ACIAS   EQU   MONIO+$00   CONTROL PORT
0095                         ACIAS   EQU   MONIO+$00   CONTROL PORT
0096                         *
0096                         *
0097                                 ENDIF ACIAOPT
0097                                 ENDIF ACIAOPT
0097                                 ENDIF ACIAOPT
0097                                 ENDIF ACIAOPT
0098                                 IFD   MFDCOPT
0098                                 IFD   MFDCOPT
0099                         *
0099                         *
0100                         ***************************************************
0100                         ***************************************************
0101                         *   MINIFLOPPY DRIVE                              *
0101                         *   MINIFLOPPY DRIVE                              *
0102                         ***************************************************
0102                         ***************************************************
0103                         *
0103                         *
0104                         ** FLOPPY DISK CONTROLLER SITS ON PORT 1
0104                         ** FLOPPY DISK CONTROLLER SITS ON PORT 1
0105                         *
0105                         *
0106 E014                    DRVFDC  EQU   MONIO+$14
0106 E014                    DRVFDC  EQU   MONIO+$14
0107 E018                    CMDFDC  EQU   MONIO+$18
0107 E018                    CMDFDC  EQU   MONIO+$18
0108 E01A                    SECFDC  EQU   MONIO+$1A
0108 E01A                    SECFDC  EQU   MONIO+$1A
0109 E01B                    DATFDC  EQU   MONIO+$1B
0109 E01B                    DATFDC  EQU   MONIO+$1B
0110                                 ENDIF MFDCOPT
0110                                 ENDIF MFDCOPT
0111                                 IFD PS2OPT
0111                                 IFD PS2OPT
0112                         *
0112                         *
0113                         ***************************************************
0113                         ***************************************************
0114                         *   VDU8 PS/2 KEYBOARD PORT                       *
0114                         *   VDU8 PS/2 KEYBOARD PORT                       *
0115                         ***************************************************
0115                         ***************************************************
0116                         *
0116                         *
0117                         ** KEYBOARD SITS ON PORT 2
0117                         ** KEYBOARD SITS ON PORT 2
0118                         *
0118                         *
0119                         PS2KBD  EQU   MONIO+$20   PS/2 KEYBOARD PORT
0119                         PS2KBD  EQU   MONIO+$20   PS/2 KEYBOARD PORT
0120                                 ENDIF PS2OPT
0120                                 ENDIF PS2OPT
0120                                 ENDIF PS2OPT
0120                                 ENDIF PS2OPT
0121                                 IFD VDUOPT
0121                                 IFD VDUOPT
0122                         *
0122                         *
0123                         ***************************************************
0123                         ***************************************************
0124                         *   VDU8 DISPLAY DRIVER EQUATES                   *
0124                         *   VDU8 DISPLAY DRIVER EQUATES                   *
0125                         ***************************************************
0125                         ***************************************************
0126                         *
0126                         *
0127                         ** VDU8 DISPLAY SITS ON PORT 3
0127                         ** VDU8 DISPLAY SITS ON PORT 3
0128                         *
0128                         *
0129                         VDU     EQU   MONIO+$30
0129                         VDU     EQU   MONIO+$30
0130                         VDUCHR  EQU   0        CHARACTER REGISTER
0130                         VDUCHR  EQU   0        CHARACTER REGISTER
0131                         VDUATT  EQU   1        ATTRIBUTE REGISTER
0131                         VDUATT  EQU   1        ATTRIBUTE REGISTER
0132                         VDUCOL  EQU   2        CURSOR COLUMN
0132                         VDUCOL  EQU   2        CURSOR COLUMN
0133                         VDUROW  EQU   3        CURSOR ROW
0133                         VDUROW  EQU   3        CURSOR ROW
0134                         VDUOFF  EQU   4        ROW OFFSET
0134                         VDUOFF  EQU   4        ROW OFFSET
0135                         *
0135                         *
0136                         LINLEN  EQU   80       LENGTH OF A LINE
0136                         LINLEN  EQU   80       LENGTH OF A LINE
0137                         NUMLIN  EQU   25       NUMBER OF LINES
0137                         NUMLIN  EQU   25       NUMBER OF LINES
0138                                 ENDIF VDUOPT
0138                                 ENDIF VDUOPT
0138                                 ENDIF VDUOPT
0138                                 ENDIF VDUOPT
0139                         *
0139                         *
0140                                    IFD CF8OPT
0140                                    IFD CF8OPT
0141                         *
0141                         *
0142                         ***************************************************
0142                         ***************************************************
0143                         *   COMPACT FLASH EQUATES 8 BIT TRANSFER          *
0143                         *   COMPACT FLASH EQUATES 8 BIT TRANSFER          *
0144                         ***************************************************
0144                         ***************************************************
0145                         *
0145                         *
0146                         ** COMPACT FLASH SITS AT PORT 4
0146                         ** COMPACT FLASH SITS AT PORT 4
0147                         *
0147                         *
0148                         CF_BASE    EQU MONIO+$40
0148                         CF_BASE    EQU MONIO+$40
0149                         CF_DATA    EQU CF_BASE+0
0149                         CF_DATA    EQU CF_BASE+0
0150                         CF_ERROR   EQU CF_BASE+1 ; read error
0150                         CF_ERROR   EQU CF_BASE+1 ; read error
0151                         CF_FEATURE EQU CF_BASE+1 ; write feature
0151                         CF_FEATURE EQU CF_BASE+1 ; write feature
0152                         CF_SECCNT  EQU CF_BASE+2
0152                         CF_SECCNT  EQU CF_BASE+2
0153                         CF_SECNUM  EQU CF_BASE+3
0153                         CF_SECNUM  EQU CF_BASE+3
0154                         CF_CYLLO   EQU CF_BASE+4
0154                         CF_CYLLO   EQU CF_BASE+4
0155                         CF_CYLHI   EQU CF_BASE+5
0155                         CF_CYLHI   EQU CF_BASE+5
0156                         CF_HEAD    EQU CF_BASE+6
0156                         CF_HEAD    EQU CF_BASE+6
0157                         CF_STATUS  EQU CF_BASE+7 ; read status
0157                         CF_STATUS  EQU CF_BASE+7 ; read status
0158                         CF_COMAND  EQU CF_BASE+7 ; write command
0158                         CF_COMAND  EQU CF_BASE+7 ; write command
0159                         *
0159                         *
0160                         * Command Equates
0160                         * Command Equates
0161                         *
0161                         *
0162                         CMDREAD    EQU $20 ; Read Single sector
0162                         CMDREAD    EQU $20 ; Read Single sector
0163                         CMDWRITE   EQU $30 ; Write Single sector
0163                         CMDWRITE   EQU $30 ; Write Single sector
0164                         CMDFEATURE EQU $EF
0164                         CMDFEATURE EQU $EF
0165                         FEAT8BIT   EQU $01 ; enable 8 bit transfers
0165                         FEAT8BIT   EQU $01 ; enable 8 bit transfers
0166                         HEADLBA    EQU $E0
0166                         HEADLBA    EQU $E0
0167                         *
0167                         *
0168                         * Status bit equates
0168                         * Status bit equates
0169                         *
0169                         *
0170                         BUSY       EQU $80
0170                         BUSY       EQU $80
0171                         DRDY       EQU $40
0171                         DRDY       EQU $40
0172                         DRQ        EQU $08
0172                         DRQ        EQU $08
0173                         ERR        EQU $01
0173                         ERR        EQU $01
0174                         *
0174                         *
0175                                    ENDIF CF8OPT
0175                                    ENDIF CF8OPT
0175                                    ENDIF CF8OPT
0175                                    ENDIF CF8OPT
0176                         *
0176                         *
0177                                    IFD IDEOPT
0177                                    IFD IDEOPT
0178                         *
0178                         *
0179                         ***************************************************
0179                         ***************************************************
0180                         *   COMPACT FLASH EQUATES 16 BIT TRANSFER (XESS)  *
0180                         *   COMPACT FLASH EQUATES 16 BIT TRANSFER (XESS)  *
0181                         ***************************************************
0181                         ***************************************************
0182                         *
0182                         *
0183                         ** COMPACT FLASH SITS AT PORT 4
0183                         ** COMPACT FLASH SITS AT PORT 4
0184                         *
0184                         *
0185                         CF_BASE    EQU MONIO+$0100
0185                         CF_BASE    EQU MONIO+$0100
0186                         CF_DATA    EQU CF_BASE+0
0186                         CF_DATA    EQU CF_BASE+0
0187                         CF_ERROR   EQU CF_BASE+2 ; read error
0187                         CF_ERROR   EQU CF_BASE+2 ; read error
0188                         CF_FEATURE EQU CF_BASE+2 ; write feature
0188                         CF_FEATURE EQU CF_BASE+2 ; write feature
0189                         CF_SECCNT  EQU CF_BASE+4
0189                         CF_SECCNT  EQU CF_BASE+4
0190                         CF_SECNUM  EQU CF_BASE+6
0190                         CF_SECNUM  EQU CF_BASE+6
0191                         CF_CYLLO   EQU CF_BASE+8
0191                         CF_CYLLO   EQU CF_BASE+8
0192                         CF_CYLHI   EQU CF_BASE+10
0192                         CF_CYLHI   EQU CF_BASE+10
0193                         CF_HEAD    EQU CF_BASE+12
0193                         CF_HEAD    EQU CF_BASE+12
0194                         CF_STATUS  EQU CF_BASE+14 ; read status
0194                         CF_STATUS  EQU CF_BASE+14 ; read status
0195                         CF_COMAND  EQU CF_BASE+14 ; write command
0195                         CF_COMAND  EQU CF_BASE+14 ; write command
0196                         CF_AUX     EQU CF_BASE+30
0196                         CF_AUX     EQU CF_BASE+30
0197                         *
0197                         *
0198                         * Command Equates
0198                         * Command Equates
0199                         *
0199                         *
0200                         CMDREAD    EQU $20 ; Read Single sector
0200                         CMDREAD    EQU $20 ; Read Single sector
0201                         CMDWRITE   EQU $30 ; Write Single sector
0201                         CMDWRITE   EQU $30 ; Write Single sector
0202                         AUXRESET   EQU $06 ; Reset IDE
0202                         AUXRESET   EQU $06 ; Reset IDE
0203                         AUXRSTREL  EQU $02 ; Reset release IRQ masked
0203                         AUXRSTREL  EQU $02 ; Reset release IRQ masked
0204                         HEADLBA    EQU $E0
0204                         HEADLBA    EQU $E0
0205                         *
0205                         *
0206                         * Status bit equates
0206                         * Status bit equates
0207                         *
0207                         *
0208                         BUSY       EQU $80
0208                         BUSY       EQU $80
0209                         DRDY       EQU $40
0209                         DRDY       EQU $40
0210                         DRQ        EQU $08
0210                         DRQ        EQU $08
0211                         ERR        EQU $01
0211                         ERR        EQU $01
0212                         *
0212                         *
0213                                    ENDIF CF8OPT
0213                                    ENDIF CF8OPT
0213                                    ENDIF CF8OPT
0213                                    ENDIF CF8OPT
0214                         *
0214                         *
0215                                 IFD RTCOPT
0215                                 IFD RTCOPT
0216                         *
0216                         *
0217                         **************************************************
0217                         **************************************************
0218                         * MM58167A REAL TIME CLOCK MEMORY MAP:
0218                         * MM58167A REAL TIME CLOCK MEMORY MAP:
0219                         **************************************************
0219                         **************************************************
0220                         *
0220                         *
0221                         ** REAL TIME CLOCK SITS ON PORT 4 AND PORT 5
0221                         ** REAL TIME CLOCK SITS ON PORT 4 AND PORT 5
0222                         *
0222                         *
0223                         CLOCK  EQU MONIO+$40 CLOCK BASE ADDRESS AND REGISTERS
0223                         CLOCK  EQU MONIO+$40 CLOCK BASE ADDRESS AND REGISTERS
0224                         *
0224                         *
0225                         * COUNTER AND COMPARITOR REGISTERS:
0225                         * COUNTER AND COMPARITOR REGISTERS:
0226                         *
0226                         *
0227                         * Both the Clock Counter and Clock Comparitor
0227                         * Both the Clock Counter and Clock Comparitor
0228                         * consist of 8 registers for holding the time.
0228                         * consist of 8 registers for holding the time.
0229                         * The register offsets from the Counter and
0229                         * The register offsets from the Counter and
0230                         * Comparitor registers are listed above.
0230                         * Comparitor registers are listed above.
0231                         *
0231                         *
0232                         COUNTR EQU CLOCK+0
0232                         COUNTR EQU CLOCK+0
0233                         CMPRAM EQU CLOCK+8 COMPARITOR REGISTERS
0233                         CMPRAM EQU CLOCK+8 COMPARITOR REGISTERS
0234                         *
0234                         *
0235                         * CLOCK REGISTER OFFSETS:
0235                         * CLOCK REGISTER OFFSETS:
0236                         * These register offsets are used for the CLOCK
0236                         * These register offsets are used for the CLOCK
0237                         * and comparitor ram CMPRAM.
0237                         * and comparitor ram CMPRAM.
0238                         *
0238                         *
0239                         S10000 EQU 0 TEN THOUNSANDTHS OF SECONDS
0239                         S10000 EQU 0 TEN THOUNSANDTHS OF SECONDS
0240                         S100   EQU 1 HUNDRETHS AND TENTHS OF SECONDS
0240                         S100   EQU 1 HUNDRETHS AND TENTHS OF SECONDS
0241                         SECOND EQU 2
0241                         SECOND EQU 2
0242                         MINUIT EQU 3
0242                         MINUIT EQU 3
0243                         HOUR   EQU 4
0243                         HOUR   EQU 4
0244                         WKDAY  EQU 5
0244                         WKDAY  EQU 5
0245                         MTHDAY EQU 6
0245                         MTHDAY EQU 6
0246                         MONTH  EQU 7
0246                         MONTH  EQU 7
0247                         *
0247                         *
0248                         * INTERRUPT OUTPUT REGISTERS:
0248                         * INTERRUPT OUTPUT REGISTERS:
0249                         *
0249                         *
0250                         * An interrupt output may be generated at the
0250                         * An interrupt output may be generated at the
0251                         * following rates by setting the appropriate bit
0251                         * following rates by setting the appropriate bit
0252                         * in the Interrupt Control Register (CINTCR).
0252                         * in the Interrupt Control Register (CINTCR).
0253                         * The Interrupt Status Register (CINTSR) must be
0253                         * The Interrupt Status Register (CINTSR) must be
0254                         * read to clear the interrupt and will return
0254                         * read to clear the interrupt and will return
0255                         * the source of the interrupt.
0255                         * the source of the interrupt.
0256                         *
0256                         *
0257                         * 1/Month      Bit 7
0257                         * 1/Month      Bit 7
0258                         * 1/Week       Bit 6
0258                         * 1/Week       Bit 6
0259                         * 1/Day        Bit 5
0259                         * 1/Day        Bit 5
0260                         * 1/Hour       Bit 4
0260                         * 1/Hour       Bit 4
0261                         * 1/Minuite    Bit 3
0261                         * 1/Minuite    Bit 3
0262                         * 1/Second     Bit 2
0262                         * 1/Second     Bit 2
0263                         * 10/Second    Bit 1
0263                         * 10/Second    Bit 1
0264                         * Comparitor   Bit 0
0264                         * Comparitor   Bit 0
0265                         *
0265                         *
0266                         CINTSR  EQU CLOCK+16 INTERRUPT STATUS REGISTER
0266                         CINTSR  EQU CLOCK+16 INTERRUPT STATUS REGISTER
0267                         CINTCR  EQU CLOCK+17 INTERRUPT CONTROL REGISTER
0267                         CINTCR  EQU CLOCK+17 INTERRUPT CONTROL REGISTER
0268                         *
0268                         *
0269                         * COUNTER AND RAM RESETS; GO COMMAND.
0269                         * COUNTER AND RAM RESETS; GO COMMAND.
0270                         *
0270                         *
0271                         * The counter and comparitor may be reset
0271                         * The counter and comparitor may be reset
0272                         * by writing $FF into CTRRES and CMPRES
0272                         * by writing $FF into CTRRES and CMPRES
0273                         * respectivly.
0273                         * respectivly.
0274                         * A write to the Go command register (GOCMND)
0274                         * A write to the Go command register (GOCMND)
0275                         * will reset the 1/1000ths, 1/100ths and 1/10ths
0275                         * will reset the 1/1000ths, 1/100ths and 1/10ths
0276                         * of a second counter.
0276                         * of a second counter.
0277                         *
0277                         *
0278                         CTRRES EQU CLOCK+18 COUNTER RESET
0278                         CTRRES EQU CLOCK+18 COUNTER RESET
0279                         CMPRES EQU CLOCK+19 COMPARITOR RAM RESET
0279                         CMPRES EQU CLOCK+19 COMPARITOR RAM RESET
0280                         GOCMND EQU CLOCK+21 GO COMMAND
0280                         GOCMND EQU CLOCK+21 GO COMMAND
0281                         *
0281                         *
0282                         * CLOCK STATUS REGISTER.
0282                         * CLOCK STATUS REGISTER.
0283                         *
0283                         *
0284                         * The counter takes 61 usec. to rollover for
0284                         * The counter takes 61 usec. to rollover for
0285                         * every 1KHz clock pulse. If the Status bit is
0285                         * every 1KHz clock pulse. If the Status bit is
0286                         * set after reading the counter, the counter
0286                         * set after reading the counter, the counter
0287                         * should be re-read to ensure the time is correct.
0287                         * should be re-read to ensure the time is correct.
0288                         *
0288                         *
0289                         CLKSTA EQU CLOCK+20 STATUS BIT
0289                         CLKSTA EQU CLOCK+20 STATUS BIT
0290                         SBYINT EQU CLOCK+22 STANDBY INTERRUPT
0290                         SBYINT EQU CLOCK+22 STANDBY INTERRUPT
0291                         TSTMOD EQU CLOCK+31 TEST MODE REGISTER
0291                         TSTMOD EQU CLOCK+31 TEST MODE REGISTER
0292                                ENDIF RTCOPT
0292                                ENDIF RTCOPT
0292                                ENDIF RTCOPT
0292                                ENDIF RTCOPT
0293                         *
0293                         *
0294                                IFD TRAOPT
0294                                IFD TRAOPT
0295                         *
0295                         *
0296                         **************************************************
0296                         **************************************************
0297                         * PIA INTERRUPT TIMER
0297                         * PIA INTERRUPT TIMER
0298                         **************************************************
0298                         **************************************************
0299                         *
0299                         *
0300                         ** PIA INTERRUPT TIMER SITS ON PORT 7
0300                         ** PIA INTERRUPT TIMER SITS ON PORT 7
0301                         *
0301                         *
0302                         ** PIA TIMER FOR SINGLE STEP / TRACE
0302                         ** PIA TIMER FOR SINGLE STEP / TRACE
0303                         *
0303                         *
0304                         * TADATA = Output = Timer preset register
0304                         * TADATA = Output = Timer preset register
0305                         * TACTRL - CA1 = input = rising edge = NMI
0305                         * TACTRL - CA1 = input = rising edge = NMI
0306                         *        - CA2 = Output = Timer Reset (Active High)
0306                         *        - CA2 = Output = Timer Reset (Active High)
0307                         * TBDATA = Input = Timer read back register
0307                         * TBDATA = Input = Timer read back register
0308                         * TBCTRL - CB1 = input = rising edge = FIRQ
0308                         * TBCTRL - CB1 = input = rising edge = FIRQ
0309                         *        - CB2 = output = strobe low on write to TBDATA = Timer Preset
0309                         *        - CB2 = output = strobe low on write to TBDATA = Timer Preset
0310                         *
0310                         *
0311                         * CRA0 = 0 CA1 IRQ DISAB, CRA0 = 1 CA1 IRQ ENAB
0311                         * CRA0 = 0 CA1 IRQ DISAB, CRA0 = 1 CA1 IRQ ENAB
0312                         * CRA1 = 1 CA1 Rising edge IRQ
0312                         * CRA1 = 1 CA1 Rising edge IRQ
0313                         * CRA2 = 0 TADATA = Data Direction, CRA2 = 1 TADATA = I/O Register
0313                         * CRA2 = 0 TADATA = Data Direction, CRA2 = 1 TADATA = I/O Register
0314                         * CRA3 = 0 CA2 = 0 output, CRA3 = 1 CA2 = 1
0314                         * CRA3 = 0 CA2 = 0 output, CRA3 = 1 CA2 = 1
0315                         * CRA4 = 1 ] CA2 = Set/Reset output
0315                         * CRA4 = 1 ] CA2 = Set/Reset output
0316                         * CRA5 = 1 ]
0316                         * CRA5 = 1 ]
0317                         * CRA6 = X CA2 Input Interrupt Flag
0317                         * CRA6 = X CA2 Input Interrupt Flag
0318                         * CRA7 = X CA1 Interrupt Flag
0318                         * CRA7 = X CA1 Interrupt Flag
0319                         *
0319                         *
0320                         * CRB0 = 0 CB1 IRQ DISAB, CRB0 = 1 CA1 IRQ ENAB
0320                         * CRB0 = 0 CB1 IRQ DISAB, CRB0 = 1 CA1 IRQ ENAB
0321                         * CRB1 = 1 CB1 Rising edge IRQ
0321                         * CRB1 = 1 CB1 Rising edge IRQ
0322                         * CRB2 = 0 TBDATA = Data Direction, CRB2 = 1 TBDATA = I/O Register
0322                         * CRB2 = 0 TBDATA = Data Direction, CRB2 = 1 TBDATA = I/O Register
0323                         * CRB3 = 0 CB2 = 0 output, CRB3 = 1 CB2 = 1
0323                         * CRB3 = 0 CB2 = 0 output, CRB3 = 1 CB2 = 1
0324                         * CRB4 = 1 ] CB2 = Set/Reset output
0324                         * CRB4 = 1 ] CB2 = Set/Reset output
0325                         * CRB5 = 1 ]
0325                         * CRB5 = 1 ]
0326                         * CRB6 = X CB2 Input Interrupt Flag
0326                         * CRB6 = X CB2 Input Interrupt Flag
0327                         * CRB7 = X CB1 Interrupt Flag
0327                         * CRB7 = X CB1 Interrupt Flag
0328                         *
0328                         *
0329                         * DDRA = 0 TADATA = Input, DDRA = 1 TADATA = Output
0329                         * DDRA = 0 TADATA = Input, DDRA = 1 TADATA = Output
0330                         * DDRB = 0 TBDATA = Input, DDRB = 1 TBDATA = Output
0330                         * DDRB = 0 TBDATA = Input, DDRB = 1 TBDATA = Output
0331                         *
0331                         *
0332                         TADATA EQU MONIO+$70 Timer preset port
0332                         TADATA EQU MONIO+$70 Timer preset port
0333                         TACTRL EQU MONIO+$71
0333                         TACTRL EQU MONIO+$71
0334                         TBDATA EQU MONIO+$72 Timer read back port
0334                         TBDATA EQU MONIO+$72 Timer read back port
0335                         TBCTRL EQU MONIO+$73
0335                         TBCTRL EQU MONIO+$73
0336                         *
0336                         *
0337                         TRADEL EQU 13  Number of E cycles for RTI (May need to be fudged)
0337                         TRADEL EQU 13  Number of E cycles for RTI (May need to be fudged)
0338                         *
0338                         *
0339                                ENDIF TRAOPT
0339                                ENDIF TRAOPT
0339                                ENDIF TRAOPT
0339                                ENDIF TRAOPT
0340                                IFD ADSOPT
0340                                IFD ADSOPT
0341                         *
0341                         *
0342                         ***************************************************
0342                         ***************************************************
0343                         *   SERIAL PORT FOR DG640                         *
0343                         *   SERIAL PORT FOR DG640                         *
0344                         ***************************************************
0344                         ***************************************************
0345                         *
0345                         *
0346                         ** SET UP FOR ACKERMAN DIGITAL ADS6809
0346                         ** SET UP FOR ACKERMAN DIGITAL ADS6809
0347                         ** THE ADS6809 S100 BOAD HAS AN ON BOARD ACIA
0347                         ** THE ADS6809 S100 BOAD HAS AN ON BOARD ACIA
0348                         *
0348                         *
0349 E400                    ACIAS   EQU   MONIO+$400   CONTROL PORT
0349 E400                    ACIAS   EQU   MONIO+$400   CONTROL PORT
0350                         *
0350                         *
0351                                 ENDIF ADSOPT
0351                                 ENDIF ADSOPT
0352                                 IFD PRTOPT
0352                                 IFD PRTOPT
0353                         *
0353                         *
0354                         ***************************************************
0354                         ***************************************************
0355                         * PRINTER INTERFACE                               *
0355                         * PRINTER INTERFACE                               *
0356                         ***************************************************
0356                         ***************************************************
0357                         *
0357                         *
0358 E404                    PADATA EQU MONIO+$404
0358 E404                    PADATA EQU MONIO+$404
0359 E405                    PACTRL EQU MONIO+$405
0359 E405                    PACTRL EQU MONIO+$405
0360 E406                    PBDATA EQU MONIO+$406
0360 E406                    PBDATA EQU MONIO+$406
0361 E407                    PBCTRL EQU MONIO+$407
0361 E407                    PBCTRL EQU MONIO+$407
0362                         *
0362                         *
0363                         ** CB1  ACK.  I/P
0363                         ** CB1  ACK.  I/P
0364                         ** CB2  STB.  O/P
0364                         ** CB2  STB.  O/P
0365                         ** PB0 - PB7   DATA 1 - 8   O/P
0365                         ** PB0 - PB7   DATA 1 - 8   O/P
0366                         ** PORT A BIT ASSIGNMENT
0366                         ** PORT A BIT ASSIGNMENT
0367                         *
0367                         *
0368 0080                    PBUSY  EQU $80 I/P
0368 0080                    PBUSY  EQU $80 I/P
0369 0040                    PEMPTY EQU $40 I/P
0369 0040                    PEMPTY EQU $40 I/P
0370 0020                    SELECT EQU $20 I/P
0370 0020                    SELECT EQU $20 I/P
0371 0010                    PERROR EQU $10 I/P
0371 0010                    PERROR EQU $10 I/P
0372 0004                    PRESET EQU %00000100 O/P PA3 = 0
0372 0004                    PRESET EQU %00000100 O/P PA3 = 0
0373 0008                    AUTOFD EQU %00001000 O/P PA2 = 0
0373 0008                    AUTOFD EQU %00001000 O/P PA2 = 0
0374 000C                    DIRMSK EQU %00001100
0374 000C                    DIRMSK EQU %00001100
0375                                ENDIF PRTOPT
0375                                ENDIF PRTOPT
0376                                IFD DG640OPT
0376                                IFD DG640OPT
0377                         *
0377                         *
0378                         ***************************************************
0378                         ***************************************************
0379                         *   DG640 MEMORY MAPPED DISPLAY DRIVER VARIABLES  *
0379                         *   DG640 MEMORY MAPPED DISPLAY DRIVER VARIABLES  *
0380                         ***************************************************
0380                         ***************************************************
0381                         *
0381                         *
0382                         ** VIDEO DISPLAY DEFINITIONS
0382                         ** VIDEO DISPLAY DEFINITIONS
0383                         *
0383                         *
0384 E800                    SCREEN  EQU   MONIO+$0800 START OF SCREEN MEMORY
0384 E800                    SCREEN  EQU   MONIO+$0800 START OF SCREEN MEMORY
0385 0040                    LINLEN  EQU   64          LENGTH OF A LINE
0385 0040                    LINLEN  EQU   64          LENGTH OF A LINE
0386 0010                    NUMLIN  EQU   16          NUMBER OF LINES
0386 0010                    NUMLIN  EQU   16          NUMBER OF LINES
0387 0400                    SCNLEN  EQU   $400        LENGTH OF SCREEN
0387 0400                    SCNLEN  EQU   $400        LENGTH OF SCREEN
0388                                 ENDIF DG640OPT
0388                                 ENDIF DG640OPT
0389                         *
0389                         *
0390                                 IFD   DMAFOPT
0390                                 IFD   DMAFOPT
0391                         *
0391                         *
0392                         ***************************************************
0392                         ***************************************************
0393                         *   DMAF2 8" DRIVE                                *
0393                         *   DMAF2 8" DRIVE                                *
0394                         ***************************************************
0394                         ***************************************************
0395                         *
0395                         *
0396                         ADDREG  EQU   $F000  ADDRESS REGISTER
0396                         ADDREG  EQU   $F000  ADDRESS REGISTER
0397                         CNTREG  EQU   $F002  COUNT REGISTER
0397                         CNTREG  EQU   $F002  COUNT REGISTER
0398                         CCREG   EQU   $F010  CHANNEL CONTROL REGISTER
0398                         CCREG   EQU   $F010  CHANNEL CONTROL REGISTER
0399                         PRIREG  EQU   $F014  DMA PRIORITY REGISTER
0399                         PRIREG  EQU   $F014  DMA PRIORITY REGISTER
0400                         AAAREG  EQU   $F015  ???
0400                         AAAREG  EQU   $F015  ???
0401                         BBBREG  EQU   $F016  ???
0401                         BBBREG  EQU   $F016  ???
0402                         COMREG  EQU   $F020  1791 COMMAND REGISTER
0402                         COMREG  EQU   $F020  1791 COMMAND REGISTER
0403                         SECREG  EQU   $F022  SECTOR REGISTER
0403                         SECREG  EQU   $F022  SECTOR REGISTER
0404                         DRVREG  EQU   $F024  DRIVE SELECT LATCH
0404                         DRVREG  EQU   $F024  DRIVE SELECT LATCH
0405                         CCCREG  EQU   $F040  ???
0405                         CCCREG  EQU   $F040  ???
0406                                 ENDIF DMAFOPT
0406                                 ENDIF DMAFOPT
0406                                 ENDIF DMAFOPT
0406                                 ENDIF DMAFOPT
0407                                 IFD DATOPT
0407                                 IFD DATOPT
0408                         **************************************************
0408                         **************************************************
0409                         * DYNAMIC ADDRESS TRANSLATION REGISTERS          *
0409                         * DYNAMIC ADDRESS TRANSLATION REGISTERS          *
0410                         **************************************************
0410                         **************************************************
0411                         *
0411                         *
0412                         IC11    EQU  $FFF0  DAT RAM CHIP
0412                         IC11    EQU  $FFF0  DAT RAM CHIP
0413                         TSTPAT  EQU  $55AA  TEST PATTERN
0413                         TSTPAT  EQU  $55AA  TEST PATTERN
0414                                 ENDIF DATOPT
0414                                 ENDIF DATOPT
0414                                 ENDIF DATOPT
0414                                 ENDIF DATOPT
0415                         *
0415                         *
0003                                 END
0003                                 END
0000                          INCLUDE "sys09bug.txt"
0000                          INCLUDE "sys09bug.txt"
0001                         * NAM SYS09BUG12 SYSTEM09 MONITOR
0001                         * NAM SYS09BUG12 SYSTEM09 MONITOR
0002                          OPT l
0002                          OPT l


sys09bug.txt                                                                      page   2
sys09bug.txt                                                                      page   2
0004                         *
0004                         *
0005                         * MONITOR PROGRAM FOR THE SOUTHWEST TECHNICAL
0005                         * MONITOR PROGRAM FOR THE SOUTHWEST TECHNICAL
0006                         * PRODUCTS MP-09 CPU BOARD AS COMMENTED BY....
0006                         * PRODUCTS MP-09 CPU BOARD AS COMMENTED BY....
0007                         *
0007                         *
0008                         * ALLEN CLARK            WALLACE WATSON
0008                         * ALLEN CLARK            WALLACE WATSON
0009                         * 2502 REGAL OAKS LANE   4815 EAST 97th AVE.
0009                         * 2502 REGAL OAKS LANE   4815 EAST 97th AVE.
0010                         * LUTZ, FLA. 33549       TEMPLE TERRACE, FLA. 33617
0010                         * LUTZ, FLA. 33549       TEMPLE TERRACE, FLA. 33617
0011                         * PH. 813-977-0347       PH. 813-985-1359
0011                         * PH. 813-977-0347       PH. 813-985-1359
0012                         *
0012                         *
0013                         * MODIFIED TO SBUG09 VER 1.8 BY:  RANDY JARRETT
0013                         * MODIFIED TO SBUG09 VER 1.8 BY:  RANDY JARRETT
0014                         *                                 2561 NANTUCKET DR APT. E
0014                         *                                 2561 NANTUCKET DR APT. E
0015                         *                                 ATLANTA, GA  30345
0015                         *                                 ATLANTA, GA  30345
0016                         *                                 PH. 404-320-1043
0016                         *                                 PH. 404-320-1043
0017                         *
0017                         *
0018                         * MODIFIED TO SYS09BUG VER 1.0
0018                         * MODIFIED TO SYS09BUG VER 1.0
0019                         * FOR:     SYSTEM09 FPGA SYSTEM
0019                         * FOR:     SYSTEM09 FPGA SYSTEM
0020                         * BY:      JOHN KENT
0020                         * BY:      JOHN KENT
0021                         * DATE:    21ST NOVEMBER 2006
0021                         * DATE:    21ST NOVEMBER 2006
0022                         * REMOVED: DISK BOOTS
0022                         * REMOVED: DISK BOOTS
0023                         *          MEMORY TEST
0023                         *          MEMORY TEST
0024                         * ADDED:   ADM3A VDU DRIVER
0024                         * ADDED:   ADM3A VDU DRIVER
0025                         *
0025                         *
0026                         * MODIFIED TO SYS09BUG VER 1.1
0026                         * MODIFIED TO SYS09BUG VER 1.1
0027                         * FOR:     SYSTEM09 FPGA SYSTEM
0027                         * FOR:     SYSTEM09 FPGA SYSTEM
0028                         * BY:      JOHN KENT
0028                         * BY:      JOHN KENT
0029                         * DATE:    7TH JANUARY 2007
0029                         * DATE:    7TH JANUARY 2007
0030                         * ADDED:   'U' USER EXTENTION COMMANDS AT $F000
0030                         * ADDED:   'U' USER EXTENTION COMMANDS AT $F000
0031                         *          CONDITIONAL ASSEMBLY OF FLOPPY BOOTS
0031                         *          CONDITIONAL ASSEMBLY OF FLOPPY BOOTS
0032                         *          AND REALTIME CLOCK
0032                         *          AND REALTIME CLOCK
0033                         *
0033                         *
0034                         * MODIFIED TO SYS09BUG VER 1.2
0034                         * MODIFIED TO SYS09BUG VER 1.2
0035                         * FOR:     SYSTEM09 FPGA SYSTEM
0035                         * FOR:     SYSTEM09 FPGA SYSTEM
0036                         * BY:      JOHN KENT
0036                         * BY:      JOHN KENT
0037                         * DATE:    21ST MAY 2007
0037                         * DATE:    21ST MAY 2007
0038                         * ADDED:   COMPACT FLASH BOOT TO FPGA VERSION
0038                         * ADDED:   COMPACT FLASH BOOT TO FPGA VERSION
0039                         *          REMOVED PORT REDIRECTION ON PUNCH & LOAD
0039                         *          REMOVED PORT REDIRECTION ON PUNCH & LOAD
0040                         *
0040                         *
0041                         * Modified to SYS09BUG VER 1.3
0041                         * Modified to SYS09BUG VER 1.3
0042                         * FOR:     SYSTEM09 FPGA SYSTEM
0042                         * FOR:     SYSTEM09 FPGA SYSTEM
0043                         * BY:      JOHN KENT
0043                         * BY:      JOHN KENT
0044                         * DATE:    8TH JAN 2008
0044                         * DATE:    8TH JAN 2008
0045                         * ADDED:   CONDITIONALS FOR SPARTAN3E STARTER BOARD
0045                         * ADDED:   CONDITIONALS FOR SPARTAN3E STARTER BOARD
0046                         *          WITH ONLY 32K OF RAM
0046                         *          WITH ONLY 32K OF RAM
0047                         *
0047                         *
0048                         * Modified to SYS09BUG VER 1.4
0048                         * Modified to SYS09BUG VER 1.4
0049                         * FOR:     SYSTEM09 FPGA SYSTEM
0049                         * FOR:     SYSTEM09 FPGA SYSTEM
0050                         * BY:      JOHN KENT
0050                         * BY:      JOHN KENT
0051                         * DATE:    3RD FEB 2008
0051                         * DATE:    3RD FEB 2008
0052                         * ADDED:   CONDITIONALS FOR XESS BOARD WITH IDE
0052                         * ADDED:   CONDITIONALS FOR XESS BOARD WITH IDE
0053                         *          SEPERATE CONDITIONAL FOR S3 STARTER AND B5-X300
0053                         *          SEPERATE CONDITIONAL FOR S3 STARTER AND B5-X300
0054                         *          16 BIT IDE DISK BOOT STRAP ROUTINE
0054                         *          16 BIT IDE DISK BOOT STRAP ROUTINE
0055                         * CHANGED: SEPARARTED OPTIONS EQUATES AND BODY INTO SEPARATE FILES
0055                         * CHANGED: SEPARARTED OPTIONS EQUATES AND BODY INTO SEPARATE FILES
0056                         *
0056                         *
0057                         *       *** COMMANDS ***
0057                         *       *** COMMANDS ***
0058                         *
0058                         *
0059                         * CONTROL A   = ALTER THE "A" ACCUMULATOR
0059                         * CONTROL A   = ALTER THE "A" ACCUMULATOR
0060                         * CONTROL B   = ALTER THE "B" ACCUMULATOR
0060                         * CONTROL B   = ALTER THE "B" ACCUMULATOR
0061                         * CONTROL C   = ALTER THE CONDITION CODE REGISTER
0061                         * CONTROL C   = ALTER THE CONDITION CODE REGISTER
0062                         * CONTROL D   = ALTER THE DIRECT PAGE REGISTER
0062                         * CONTROL D   = ALTER THE DIRECT PAGE REGISTER
0063                         * CONTROL P   = ALTER THE PROGRAM COUNTER
0063                         * CONTROL P   = ALTER THE PROGRAM COUNTER
0064                         * CONTROL U   = ALTER USER STACK POINTER
0064                         * CONTROL U   = ALTER USER STACK POINTER
0065                         * CONTROL X   = ALTER "X" INDEX REGISTER
0065                         * CONTROL X   = ALTER "X" INDEX REGISTER
0066                         * CONTROL Y   = ALTER "Y" INDEX REGISTER
0066                         * CONTROL Y   = ALTER "Y" INDEX REGISTER
0067                         * B hhhh      = SET BREAKPOINT AT LOCATION $hhhh
0067                         * B hhhh      = SET BREAKPOINT AT LOCATION $hhhh
0068                         * D           = 5.25" MINIFLOPPY BOOT
0068                         * D           = 5.25" MINIFLOPPY BOOT
0069                         * E ssss-eeee = EXAMINE MEMORY
0069                         * E ssss-eeee = EXAMINE MEMORY
0070                         *               FROM STARTING ADDRESS ssss
0070                         *               FROM STARTING ADDRESS ssss
0071                         *               TO ENDING ADDRESS eeee.
0071                         *               TO ENDING ADDRESS eeee.
0072                         * G           = CONTINUE EXECUTION FROM BREAKPOINT OR SWI
0072                         * G           = CONTINUE EXECUTION FROM BREAKPOINT OR SWI
0073                         * L           = LOAD TAPE
0073                         * L           = LOAD TAPE
0074                         * M hhhh      = EXAMINE AND CHANGE MEMORY LOCATION hhhh
0074                         * M hhhh      = EXAMINE AND CHANGE MEMORY LOCATION hhhh
0075                         * P ssss-eeee = PUNCH TAPE, START ssss TO END eeee ADDR.
0075                         * P ssss-eeee = PUNCH TAPE, START ssss TO END eeee ADDR.
0076                         * R           = DISPLAY REGISTER CONTENTS
0076                         * R           = DISPLAY REGISTER CONTENTS
0077                         * S           = DISPLAY STACK FROM ssss TO $DFC0
0077                         * S           = DISPLAY STACK FROM ssss TO $DFC0
0078                         * U           = 8" DMAF2 FLOPPY BOOT
0078                         * U           = 8" DMAF2 FLOPPY BOOT
0079                         * U           = USER EXTENSION COMMANDS AT $F000
0079                         * U           = USER EXTENSION COMMANDS AT $F000
0080                         * X           = REMOVE ALL BREAKPOINTS
0080                         * X           = REMOVE ALL BREAKPOINTS
0081                         *
0081                         *
0082                         *
0082                         *
0083                         ***************************************************
0083                         ***************************************************
0084                         *   SYS09BUG VARIABLE SPACE
0084                         *   SYS09BUG VARIABLE SPACE
0085                         ***************************************************
0085                         ***************************************************
0086                         *
0086                         *
0087 DFC0                            ORG   MONRAM
0087 DFC0                            ORG   MONRAM
0088 DFC0                    STACK   EQU   *  TOP OF INTERNAL STACK
0088 DFC0                    STACK   EQU   *  TOP OF INTERNAL STACK
0089 DFC0                    NMI     RMB   2  USER NMI VECTOR
0089 DFC0                    NMI     RMB   2  USER NMI VECTOR
0090 DFC2                    SWI3    RMB   2  SOFTWARE INTERRUPT VECTOR #3
0090 DFC2                    SWI3    RMB   2  SOFTWARE INTERRUPT VECTOR #3
0091 DFC4                    SWI2    RMB   2  SOFTWARE INTERRUPT VECTOR #2
0091 DFC4                    SWI2    RMB   2  SOFTWARE INTERRUPT VECTOR #2
0092 DFC6                    FIRQ    RMB   2  FAST INTERRUPT VECTOR
0092 DFC6                    FIRQ    RMB   2  FAST INTERRUPT VECTOR
0093 DFC8                    IRQ     RMB   2  INTERRUPT VECTOR
0093 DFC8                    IRQ     RMB   2  INTERRUPT VECTOR
0094 DFCA                    SWI     RMB   2  SOFTWARE INTERRUPT VECTOR
0094 DFCA                    SWI     RMB   2  SOFTWARE INTERRUPT VECTOR
0095 DFCC                    SVCVO   RMB   2  SUPERVISOR CALL VECTOR ORGIN
0095 DFCC                    SVCVO   RMB   2  SUPERVISOR CALL VECTOR ORGIN
0096 DFCE                    SVCVL   RMB   2  SUPERVISOR CALL VECTOR LIMIT
0096 DFCE                    SVCVL   RMB   2  SUPERVISOR CALL VECTOR LIMIT
0097                                 IFD DATOPT
0097                                 IFD DATOPT
0098                         LRARAM  RMB   16 LRA ADDRESSES
0098                         LRARAM  RMB   16 LRA ADDRESSES
0099                                 ENDIF DATOPT
0099                                 ENDIF DATOPT
0099                                 ENDIF DATOPT
0099                                 ENDIF DATOPT
0100 DFD0                    CPORT   RMB   2  RE-VECTORABLE CONTROL PORT
0100 DFD0                    CPORT   RMB   2  RE-VECTORABLE CONTROL PORT
0101 DFD2                    ECHO    RMB   1  ECHO FLAG
0101 DFD2                    ECHO    RMB   1  ECHO FLAG
0102 DFD3                    BPTBL   RMB   24 BREAKPOINT TABLE BASE ADDR
0102 DFD3                    BPTBL   RMB   24 BREAKPOINT TABLE BASE ADDR
0103                                 IFD  TRAOPT
0103                                 IFD  TRAOPT
0104                         NMISAV  RMB 2 NMI Jump Vector Backup
0104                         NMISAV  RMB 2 NMI Jump Vector Backup
0105                         TRACNT  RMB 2 Trace Count
0105                         TRACNT  RMB 2 Trace Count
0106                                 ENDIF TRAOPT
0106                                 ENDIF TRAOPT
0106                                 ENDIF TRAOPT
0106                                 ENDIF TRAOPT
0107                                 IFD VDUOPT
0107                                 IFD VDUOPT
0108                         *
0108                         *
0109                         **************************************************
0109                         **************************************************
0110                         *   VDU8 DISPLAY DRIVER VARIABLES                                    *
0110                         *   VDU8 DISPLAY DRIVER VARIABLES                                    *
0111                         **************************************************
0111                         **************************************************
0112                         *
0112                         *
0113                         **** ALWAYS KEEP COLADX AND ROWADX TOGETHER ******
0113                         **** ALWAYS KEEP COLADX AND ROWADX TOGETHER ******
0114                         COLADX  RMB   1         CURSOR COLUMN
0114                         COLADX  RMB   1         CURSOR COLUMN
0115                         ROWADX  RMB   1         CURSOR ROW
0115                         ROWADX  RMB   1         CURSOR ROW
0116                         **************************************************
0116                         **************************************************
0117                         *
0117                         *
0118                         NEWROW  RMB   1         NEW ROW TEMP FOR ESCAPE
0118                         NEWROW  RMB   1         NEW ROW TEMP FOR ESCAPE
0119                         ESCFLG  RMB   1         ESCAPE SEQUENCE ACTIVE
0119                         ESCFLG  RMB   1         ESCAPE SEQUENCE ACTIVE
0120                                 ENDIF VDUOPT
0120                                 ENDIF VDUOPT
0120                                 ENDIF VDUOPT
0120                                 ENDIF VDUOPT
0121                                IFD DG640OPT
0121                                IFD DG640OPT
0122                         *
0122                         *
0123                         ***************************************************
0123                         ***************************************************
0124                         *   DG640 MEMORY MAPPED DISPLAY DRIVER VARIABLES  *
0124                         *   DG640 MEMORY MAPPED DISPLAY DRIVER VARIABLES  *
0125                         ***************************************************
0125                         ***************************************************
0126                         *
0126                         *
0127                         ***** ALWAYS KEEP THESE TWO BYTES TOGETHER *****
0127                         ***** ALWAYS KEEP THESE TWO BYTES TOGETHER *****
0128 DFEB                    COLADX  RMB   1           CURSOR COLUMN
0128 DFEB                    COLADX  RMB   1           CURSOR COLUMN
0129 DFEC                    ROWADX  RMB   1           CURSOR ROW
0129 DFEC                    ROWADX  RMB   1           CURSOR ROW
0130                         *************************************************
0130                         *************************************************
0131 DFED                    CURSOR  RMB   2           ABSOLUTE SCREEN ADDRESS
0131 DFED                    CURSOR  RMB   2           ABSOLUTE SCREEN ADDRESS
0132 DFEF                    NEWROW  RMB   1           NEW ROW TEMP FOR ESCAPE
0132 DFEF                    NEWROW  RMB   1           NEW ROW TEMP FOR ESCAPE
0133 DFF0                    ESCFLG  RMB   1           ESCAPE SEQUENCE ACTIVE
0133 DFF0                    ESCFLG  RMB   1           ESCAPE SEQUENCE ACTIVE
0134                                 ENDIF DG640OPT
0134                                 ENDIF DG640OPT
0135                         *
0135                         *
0136                         *
0136                         *
0137                         ***************************************************
0137                         ***************************************************
0138                         *   START OF ROM                                  *
0138                         *   START OF ROM                                  *
0139                         ***************************************************
0139                         ***************************************************
0140                         *
0140                         *
0141 F800                            ORG   MONROM
0141 F800                            ORG   MONROM
0142 F800 F8 22                      FDB   MONITOR
0142 F800 F8 22                      FDB   MONITOR
0143 F802 F8 56                      FDB   NEXTCMD
0143 F802 F8 56                      FDB   NEXTCMD
0144 F804 FC 66                      FDB   INCH
0144 F804 FC 66                      FDB   INCH
0145 F806 FC 60                      FDB   INCHE
0145 F806 FC 60                      FDB   INCHE
0146 F808 FC 75                      FDB   INCHEK
0146 F808 FC 75                      FDB   INCHEK
0147 F80A FC 83                      FDB   OUTCH
0147 F80A FC 83                      FDB   OUTCH
0148 F80C FB 58                      FDB   PDATA
0148 F80C FB 58                      FDB   PDATA
0149 F80E FA E7                      FDB   PCRLF
0149 F80E FA E7                      FDB   PCRLF
0150 F810 FA E3                      FDB   PSTRNG
0150 F810 FA E3                      FDB   PSTRNG
0151 F812 FF 06                      FDB   LRA
0151 F812 FF 06                      FDB   LRA
0152                         *
0152                         *
0153                                 IFD ADSOPT
0153                                 IFD ADSOPT
0154 F814 FE 47                      FDB PCHK  CHECK FOR PRINTER INPUT
0154 F814 FE 47                      FDB PCHK  CHECK FOR PRINTER INPUT
0155 F816 FE 09                      FDB PINIZ INITIATE PRINTER
0155 F816 FE 09                      FDB PINIZ INITIATE PRINTER
0156 F818 FE 33                      FDB POUTCH OUTPUT CH. TO PRINTER
0156 F818 FE 33                      FDB POUTCH OUTPUT CH. TO PRINTER
0157 F81A FC AB                      FDB VINIZ
0157 F81A FC AB                      FDB VINIZ
0158 F81C FC C0                      FDB VOUTCH
0158 F81C FC C0                      FDB VOUTCH
0159 F81E FC 98                      FDB ACINIZ
0159 F81E FC 98                      FDB ACINIZ
0160 F820 FC 85                      FDB AOUTCH
0160 F820 FC 85                      FDB AOUTCH
0161                                 ENDIF ADSOPT
0161                                 ENDIF ADSOPT
0162                         *
0162                         *
0163                         * MONITOR
0163                         * MONITOR
0164                         *
0164                         *
0165                         * VECTOR ADDRESS STRING IS.....
0165                         * VECTOR ADDRESS STRING IS.....
0166                         * $F8A1-$F8A1-$F8A1-$F8A1-$F8A1-$FAB0-$FFFF-$FFFF
0166                         * $F8A1-$F8A1-$F8A1-$F8A1-$F8A1-$FAB0-$FFFF-$FFFF
0167                         *
0167                         *
0168 F822 8E FE 81           MONITOR LDX   #RAMVEC POINT TO VECTOR ADDR. STRING
0168 F822 8E FE 81           MONITOR LDX   #RAMVEC POINT TO VECTOR ADDR. STRING
0169 F825 10 8E DF C0                LDY   #STACK  POINT TO RAM VECTOR LOCATION
0169 F825 10 8E DF C0                LDY   #STACK  POINT TO RAM VECTOR LOCATION
0170 F829 C6 10                      LDB   #$10    BYTES TO MOVE = 16
0170 F829 C6 10                      LDB   #$10    BYTES TO MOVE = 16
0171 F82B A6 80              LOOPA   LDA   ,X+     GET VECTOR BYTE
0171 F82B A6 80              LOOPA   LDA   ,X+     GET VECTOR BYTE
0172 F82D A7 A0                      STA   ,Y+     PUT VECTORS IN RAM / $DFC0-$DFCF
0172 F82D A7 A0                      STA   ,Y+     PUT VECTORS IN RAM / $DFC0-$DFCF
0173 F82F 5A                         DECB          SUBTRACT 1 FROM NUMBER OF BYTES TO MOVE
0173 F82F 5A                         DECB          SUBTRACT 1 FROM NUMBER OF BYTES TO MOVE
0174 F830 26 F9                      BNE   LOOPA   CONTINUE UNTIL ALL VECTORS MOVED
0174 F830 26 F9                      BNE   LOOPA   CONTINUE UNTIL ALL VECTORS MOVED
0175                         *
0175                         *
0176                         * CONTENTS     FROM         TO      FUNCTION
0176                         * CONTENTS     FROM         TO      FUNCTION
0177                         *  $F8A1       $FE40      $DFC0     USER-V
0177                         *  $F8A1       $FE40      $DFC0     USER-V
0178                         *  $F8A1       $FE42      $DFC2     SWI3-V
0178                         *  $F8A1       $FE42      $DFC2     SWI3-V
0179                         *  $F8A1       $FE44      $DFC4     SWI2-V
0179                         *  $F8A1       $FE44      $DFC4     SWI2-V
0180                         *  $F8A1       $FE46      $DFC6     FIRQ-V
0180                         *  $F8A1       $FE46      $DFC6     FIRQ-V
0181                         *  $F8A1       $FE48      $DFC8     IRQ-V
0181                         *  $F8A1       $FE48      $DFC8     IRQ-V
0182                         *  $FAB0       $FE4A      $DFCA     SWI-V
0182                         *  $FAB0       $FE4A      $DFCA     SWI-V
0183                         *  $FFFF       $FE4C      $DFCC     SVC-VO
0183                         *  $FFFF       $FE4C      $DFCC     SVC-VO
0184                         *  $FFFF       $FE4E      $DFCE     SVC-VL
0184                         *  $FFFF       $FE4E      $DFCE     SVC-VL
0185                         *
0185                         *
0186 F832 8E E4 00                   LDX  #ACIAS
0186 F832 8E E4 00                   LDX  #ACIAS
0187 F835 BF DF D0                   STX  CPORT    STORE ADDR. IN RAM
0187 F835 BF DF D0                   STX  CPORT    STORE ADDR. IN RAM
0188 F838 17 01 42                   LBSR XBKPNT   CLEAR OUTSTANDING BREAKPOINTS
0188 F838 17 01 42                   LBSR XBKPNT   CLEAR OUTSTANDING BREAKPOINTS
0189 F83B C6 0C                      LDB  #12      CLEAR 12 BYTES ON STACK
0189 F83B C6 0C                      LDB  #12      CLEAR 12 BYTES ON STACK
0190 F83D 6F E2              CLRSTK  CLR  ,-S
0190 F83D 6F E2              CLRSTK  CLR  ,-S
0191 F83F 5A                         DECB
0191 F83F 5A                         DECB
0192 F840 26 FB                      BNE  CLRSTK
0192 F840 26 FB                      BNE  CLRSTK
0193 F842 30 8C DD                   LEAX MONITOR,PCR  SET PC TO SBUG-E ENTRY
0193 F842 30 8C DD                   LEAX MONITOR,PCR  SET PC TO SBUG-E ENTRY
0194 F845 AF 6A                      STX  10,S    ON STACK
0194 F845 AF 6A                      STX  10,S    ON STACK
0195 F847 86 D0                      LDA  #$D0    PRESET CONDITION CODES ON STACK
0195 F847 86 D0                      LDA  #$D0    PRESET CONDITION CODES ON STACK
0196 F849 A7 E4                      STA  ,S
0196 F849 A7 E4                      STA  ,S
0197 F84B 1F 43                      TFR  S,U
0197 F84B 1F 43                      TFR  S,U
0198 F84D 17 04 46                   LBSR IOINIZ  INITIALIZE CONTROL PORT
0198 F84D 17 04 46                   LBSR IOINIZ  INITIALIZE CONTROL PORT
0199 F850 8E FE 91                   LDX  #MSG1   POINT TO MONITOR MESSAGE
0199 F850 8E FE 91                   LDX  #MSG1   POINT TO MONITOR MESSAGE
0200 F853 17 03 02                   LBSR PDATA   PRINT MSG
0200 F853 17 03 02                   LBSR PDATA   PRINT MSG
0201                         *
0201                         *
0202                                 IFD DATOPT
0202                                 IFD DATOPT
0203                                 LDX  #LRARAM POINT TO LRA RAM STORAGE AREA
0203                                 LDX  #LRARAM POINT TO LRA RAM STORAGE AREA
0204                                 CLRA START   TOTAL AT ZERO
0204                                 CLRA START   TOTAL AT ZERO
0205                                 LDB  #13     TOTAL UP ALL ACTIVE RAM MEMORY
0205                                 LDB  #13     TOTAL UP ALL ACTIVE RAM MEMORY
0206                         FNDREL  TST  B,X     TEST FOR RAM AT NEXT LOC.
0206                         FNDREL  TST  B,X     TEST FOR RAM AT NEXT LOC.
0207                                 BEQ  RELPAS  IF NO RAM GO TO NEXT LOC.
0207                                 BEQ  RELPAS  IF NO RAM GO TO NEXT LOC.
0208                                 ADDA #4      ELSE ADD 4K TO TOTAL
0208                                 ADDA #4      ELSE ADD 4K TO TOTAL
0209                                 DAA          ADJ. TOTAL FOR DECIMAL
0209                                 DAA          ADJ. TOTAL FOR DECIMAL
0210                         RELPAS  DECB         SUB. 1 FROM LOCS. TO TEST
0210                         RELPAS  DECB         SUB. 1 FROM LOCS. TO TEST
0211                                 BPL  FNDREL  PRINT TOTAL OF RAM
0211                                 BPL  FNDREL  PRINT TOTAL OF RAM
0212                                 LBSR OUT2H   OUTPUT HEX BYTE AS ASCII
0212                                 LBSR OUT2H   OUTPUT HEX BYTE AS ASCII
0213                                 LDX  #MSG2   POINT TO MSG 'K' CR/LF + 3 NULS
0213                                 LDX  #MSG2   POINT TO MSG 'K' CR/LF + 3 NULS
0214                                 LBSR PDATA   PRINT MSG
0214                                 LBSR PDATA   PRINT MSG
0215                                 ENDIF DATOPT
0215                                 ENDIF DATOPT
0215                                 ENDIF DATOPT
0215                                 ENDIF DATOPT
0216                         *
0216                         *
0217                                 IFD TRAOPT
0217                                 IFD TRAOPT
0218                                 LBSR TRAINZ
0218                                 LBSR TRAINZ
0219                                 ENDIF TRAOPT
0219                                 ENDIF TRAOPT
0219                                 ENDIF TRAOPT
0219                                 ENDIF TRAOPT
0220                         *
0220                         *
0221                         ***** NEXTCMD *****
0221                         ***** NEXTCMD *****
0222                         *
0222                         *
0223 F856 8E FE BA           NEXTCMD LDX  #MSG3   POINT TO MSG ">"
0223 F856 8E FE BA           NEXTCMD LDX  #MSG3   POINT TO MSG ">"
0224 F859 17 02 87                   LBSR PSTRNG  PRINT MSG
0224 F859 17 02 87                   LBSR PSTRNG  PRINT MSG
0225 F85C 17 04 07                   LBSR INCH    GET ONE CHAR. FROM TERMINAL
0225 F85C 17 04 07                   LBSR INCH    GET ONE CHAR. FROM TERMINAL
0226 F85F 84 7F                      ANDA #$7F    STRIP PARITY FROM CHAR.
0226 F85F 84 7F                      ANDA #$7F    STRIP PARITY FROM CHAR.
0227 F861 81 0D                      CMPA #$0D    IS IT CARRIAGE RETURN ?
0227 F861 81 0D                      CMPA #$0D    IS IT CARRIAGE RETURN ?
0228 F863 27 F1                      BEQ  NEXTCMD IF CR THEN GET ANOTHER CHAR.
0228 F863 27 F1                      BEQ  NEXTCMD IF CR THEN GET ANOTHER CHAR.
0229 F865 1F 89                      TFR  A,B     PUT CHAR. IN "B" ACCUM.
0229 F865 1F 89                      TFR  A,B     PUT CHAR. IN "B" ACCUM.
0230 F867 81 20                      CMPA #$20    IS IT CONTROL OR DATA CHAR ?
0230 F867 81 20                      CMPA #$20    IS IT CONTROL OR DATA CHAR ?
0231 F869 2C 09                      BGE  PRTCMD  IF CMD CHAR IS DATA, PRNT IT
0231 F869 2C 09                      BGE  PRTCMD  IF CMD CHAR IS DATA, PRNT IT
0232 F86B 86 5E                      LDA  #'^     ELSE CNTRL CHAR CMD SO...
0232 F86B 86 5E                      LDA  #'^     ELSE CNTRL CHAR CMD SO...
0233 F86D 17 04 13                   LBSR OUTCH   PRINT "^"
0233 F86D 17 04 13                   LBSR OUTCH   PRINT "^"
0234 F870 1F 98                      TFR  B,A     RECALL CNTRL CMD CHAR
0234 F870 1F 98                      TFR  B,A     RECALL CNTRL CMD CHAR
0235 F872 8B 40                      ADDA #$40    CONVERT IT TO ASCII LETTER
0235 F872 8B 40                      ADDA #$40    CONVERT IT TO ASCII LETTER
0236 F874 17 04 0C           PRTCMD  LBSR OUTCH   PRNT CMD CHAR
0236 F874 17 04 0C           PRTCMD  LBSR OUTCH   PRNT CMD CHAR
0237 F877 17 04 07                   LBSR OUT1S   PRNT SPACE
0237 F877 17 04 07                   LBSR OUT1S   PRNT SPACE
0238 F87A C1 60                      CMPB #$60
0238 F87A C1 60                      CMPB #$60
0239 F87C 2F 02                      BLE  NXTCH0
0239 F87C 2F 02                      BLE  NXTCH0
0240 F87E C0 20                      SUBB #$20
0240 F87E C0 20                      SUBB #$20
0241                         *
0241                         *
0242                         ***** DO TABLE LOOKUP *****
0242                         ***** DO TABLE LOOKUP *****
0243                         *   FOR COMMAND FUNCTIONS
0243                         *   FOR COMMAND FUNCTIONS
0244                         *
0244                         *
0245 F880 8E FE 4B           NXTCH0  LDX  #JMPTAB POINT TO JUMP TABLE
0245 F880 8E FE 4B           NXTCH0  LDX  #JMPTAB POINT TO JUMP TABLE
0246 F883 E1 80              NXTCHR  CMPB ,X+     DOES COMMAND MATCH TABLE ENTRY ?
0246 F883 E1 80              NXTCHR  CMPB ,X+     DOES COMMAND MATCH TABLE ENTRY ?
0247 F885 27 0F                      BEQ  JMPCMD  BRANCH IF MATCH FOUND
0247 F885 27 0F                      BEQ  JMPCMD  BRANCH IF MATCH FOUND
0248 F887 30 02                      LEAX 2,X     POINT TO NEXT ENTRY IN TABLE
0248 F887 30 02                      LEAX 2,X     POINT TO NEXT ENTRY IN TABLE
0249 F889 8C FE 81                   CMPX #TABEND REACHED END OF TABLE YET ?
0249 F889 8C FE 81                   CMPX #TABEND REACHED END OF TABLE YET ?
0250 F88C 26 F5                      BNE  NXTCHR  IF NOT END, CHECK NEXT ENTRY
0250 F88C 26 F5                      BNE  NXTCHR  IF NOT END, CHECK NEXT ENTRY
0251 F88E 8E FE BC                   LDX  #MSG4   POINT TO MSG "WHAT?"
0251 F88E 8E FE BC                   LDX  #MSG4   POINT TO MSG "WHAT?"
0252 F891 17 02 C4                   LBSR PDATA   PRINT MSG
0252 F891 17 02 C4                   LBSR PDATA   PRINT MSG
0253 F894 20 C0                      BRA  NEXTCMD IF NO MATCH, PRMPT FOR NEW CMD
0253 F894 20 C0                      BRA  NEXTCMD IF NO MATCH, PRMPT FOR NEW CMD
0254 F896 AD 94              JMPCMD  JSR  [,X]    JUMP TO COMMAND ROUTINE
0254 F896 AD 94              JMPCMD  JSR  [,X]    JUMP TO COMMAND ROUTINE
0255 F898 20 BC                      BRA  NEXTCMD PROMPT FOR NEW COMMAND
0255 F898 20 BC                      BRA  NEXTCMD PROMPT FOR NEW COMMAND
0256                         *
0256                         *
0257                         * "G" GO OR CONTINUE
0257                         * "G" GO OR CONTINUE
0258                         *
0258                         *
0259 F89A 1F 34              GO      TFR  U,S
0259 F89A 1F 34              GO      TFR  U,S
0260 F89C 3B                 RTI     RTI
0260 F89C 3B                 RTI     RTI
0261                         *
0261                         *
0262                         ***** "M" MEMORY EXAMINE AND CHANGE *****
0262                         ***** "M" MEMORY EXAMINE AND CHANGE *****
0263                         *
0263                         *
0264 F89D 17 03 3F           MEMCHG  LBSR IN1ADR  INPUT ADDRESS
0264 F89D 17 03 3F           MEMCHG  LBSR IN1ADR  INPUT ADDRESS
0265 F8A0 29 2D                      BVS  CHRTN   IF NOT HEX, RETURN
0265 F8A0 29 2D                      BVS  CHRTN   IF NOT HEX, RETURN
0266 F8A2 1F 12                      TFR  X,Y     SAVE ADDR IN "Y"
0266 F8A2 1F 12                      TFR  X,Y     SAVE ADDR IN "Y"
0267 F8A4 8E FE C2           MEMC2   LDX  #MSG5   POINT TO MSG " - "
0267 F8A4 8E FE C2           MEMC2   LDX  #MSG5   POINT TO MSG " - "
0268 F8A7 17 02 39                   LBSR PSTRNG  PRINT MSG
0268 F8A7 17 02 39                   LBSR PSTRNG  PRINT MSG
0269 F8AA 1F 21                      TFR  Y,X     FETCH ADDRESS
0269 F8AA 1F 21                      TFR  Y,X     FETCH ADDRESS
0270 F8AC 17 03 79                   LBSR OUT4H   PRINT ADDR IN HEX
0270 F8AC 17 03 79                   LBSR OUT4H   PRINT ADDR IN HEX
0271 F8AF 17 03 CF                   LBSR OUT1S   OUTPUT SPACE
0271 F8AF 17 03 CF                   LBSR OUT1S   OUTPUT SPACE
0272 F8B2 A6 A4                      LDA  ,Y      GET CONTENTS OF CURRENT ADDR.
0272 F8B2 A6 A4                      LDA  ,Y      GET CONTENTS OF CURRENT ADDR.
0273 F8B4 17 03 79                   LBSR OUT2H   OUTPUT CONTENTS IN ASCII
0273 F8B4 17 03 79                   LBSR OUT2H   OUTPUT CONTENTS IN ASCII
0274 F8B7 17 03 C7                   LBSR OUT1S   OUTPUT SPACE
0274 F8B7 17 03 C7                   LBSR OUT1S   OUTPUT SPACE
0275 F8BA 17 03 32                   LBSR BYTE    LOOP WAITING FOR OPERATOR INPUT
0275 F8BA 17 03 32                   LBSR BYTE    LOOP WAITING FOR OPERATOR INPUT
0276 F8BD 28 11                      BVC  CHANGE  IF VALID HEX GO CHANGE MEM. LOC.
0276 F8BD 28 11                      BVC  CHANGE  IF VALID HEX GO CHANGE MEM. LOC.
0277 F8BF 81 08                      CMPA #8      IS IT A BACKSPACE (CNTRL H)?
0277 F8BF 81 08                      CMPA #8      IS IT A BACKSPACE (CNTRL H)?
0278 F8C1 27 E1                      BEQ  MEMC2   PROMPT OPERATOR AGAIN
0278 F8C1 27 E1                      BEQ  MEMC2   PROMPT OPERATOR AGAIN
0279 F8C3 81 18                      CMPA #$18    IS IT A CANCEL (CNTRL X)?
0279 F8C3 81 18                      CMPA #$18    IS IT A CANCEL (CNTRL X)?
0280 F8C5 27 DD                      BEQ  MEMC2   PROMPT OPERATOR AGAIN
0280 F8C5 27 DD                      BEQ  MEMC2   PROMPT OPERATOR AGAIN
0281 F8C7 81 5E                      CMPA #'^     IS IT AN UP ARROW?
0281 F8C7 81 5E                      CMPA #'^     IS IT AN UP ARROW?
0282 F8C9 27 17                      BEQ  BACK    DISPLAY PREVIOUS BYTE
0282 F8C9 27 17                      BEQ  BACK    DISPLAY PREVIOUS BYTE
0283 F8CB 81 0D                      CMPA #$D     IS IT A CR?
0283 F8CB 81 0D                      CMPA #$D     IS IT A CR?
0284 F8CD 26 0F                      BNE  FORWRD  DISPLAY NEXT BYTE
0284 F8CD 26 0F                      BNE  FORWRD  DISPLAY NEXT BYTE
0285 F8CF 39                 CHRTN   RTS          EXIT ROUTINE
0285 F8CF 39                 CHRTN   RTS          EXIT ROUTINE
0286                         *
0286                         *
0287                         *
0287                         *
0288 F8D0 A7 A4              CHANGE  STA  ,Y      CHANGE BYTE IN MEMORY
0288 F8D0 A7 A4              CHANGE  STA  ,Y      CHANGE BYTE IN MEMORY
0289 F8D2 A1 A4                      CMPA ,Y      DID MEMORY BYTE CHANGE?
0289 F8D2 A1 A4                      CMPA ,Y      DID MEMORY BYTE CHANGE?
0290 F8D4 27 08                      BEQ  FORWRD  $F972
0290 F8D4 27 08                      BEQ  FORWRD  $F972
0291 F8D6 17 03 A8                   LBSR OUT1S   OUTPUT SPACE
0291 F8D6 17 03 A8                   LBSR OUT1S   OUTPUT SPACE
0292 F8D9 86 3F                      LDA  #'?     LOAD QUESTION MARK
0292 F8D9 86 3F                      LDA  #'?     LOAD QUESTION MARK
0293 F8DB 17 03 A5                   LBSR OUTCH   PRINT IT
0293 F8DB 17 03 A5                   LBSR OUTCH   PRINT IT
0294 F8DE 31 21              FORWRD  LEAY 1,Y     POINT TO NEXT HIGHER MEM LOCATION
0294 F8DE 31 21              FORWRD  LEAY 1,Y     POINT TO NEXT HIGHER MEM LOCATION
0295 F8E0 20 C2                      BRA  MEMC2   PRINT LOCATION & CONTENTS
0295 F8E0 20 C2                      BRA  MEMC2   PRINT LOCATION & CONTENTS
0296 F8E2 31 3F              BACK    LEAY -1,Y    POINT TO LAST MEM LOCATION
0296 F8E2 31 3F              BACK    LEAY -1,Y    POINT TO LAST MEM LOCATION
0297 F8E4 20 BE                      BRA  MEMC2   PRINT LOCATION & CONTENTS
0297 F8E4 20 BE                      BRA  MEMC2   PRINT LOCATION & CONTENTS
0298                         *
0298                         *
0299                         * "S" DISPLAY STACK
0299                         * "S" DISPLAY STACK
0300                         * HEX-ASCII DISPLAY OF CURRENT STACK CONTENTS FROM
0300                         * HEX-ASCII DISPLAY OF CURRENT STACK CONTENTS FROM
0301                         ** CURRENT STACK POINTER TO INTERNAL STACK LIMIT.
0301                         ** CURRENT STACK POINTER TO INTERNAL STACK LIMIT.
0302                         *
0302                         *
0303 F8E6 17 02 76           DISSTK  LBSR PRTSP   PRINT CURRENT STACK POINTER
0303 F8E6 17 02 76           DISSTK  LBSR PRTSP   PRINT CURRENT STACK POINTER
0304 F8E9 1F 32                      TFR  U,Y
0304 F8E9 1F 32                      TFR  U,Y
0305 F8EB 8E DF C0                   LDX  #STACK  LOAD INTERNAL STACK AS UPPER LIMIT
0305 F8EB 8E DF C0                   LDX  #STACK  LOAD INTERNAL STACK AS UPPER LIMIT
0306 F8EE 30 1F                      LEAX -1,X    POINT TO CURRENT STACK
0306 F8EE 30 1F                      LEAX -1,X    POINT TO CURRENT STACK
0307 F8F0 20 05                      BRA  MDUMP1  ENTER MEMORY DUMP OF STACK CONTENTS
0307 F8F0 20 05                      BRA  MDUMP1  ENTER MEMORY DUMP OF STACK CONTENTS
0308                         *
0308                         *
0309                         * "E" DUMP MEMORY FOR EXAMINE IN HEX AND ASCII
0309                         * "E" DUMP MEMORY FOR EXAMINE IN HEX AND ASCII
0310                         * AFTER CALLING 'IN2ADR' LOWER ADDRESS IN Y-REG.
0310                         * AFTER CALLING 'IN2ADR' LOWER ADDRESS IN Y-REG.
0311                         *                        UPPER ADDRESS IN X-REG.
0311                         *                        UPPER ADDRESS IN X-REG.
0312                         * IF HEX ADDRESSES ARE INVALID (V)=1.
0312                         * IF HEX ADDRESSES ARE INVALID (V)=1.
0313                         *
0313                         *
0314 F8F2 17 02 DF           MEMDUMP LBSR IN2ADR  INPUT ADDRESS BOUNDRIES
0314 F8F2 17 02 DF           MEMDUMP LBSR IN2ADR  INPUT ADDRESS BOUNDRIES
0315 F8F5 29 06                      BVS  EDPRTN  NEW COMMAND IF ILLEGAL HEX
0315 F8F5 29 06                      BVS  EDPRTN  NEW COMMAND IF ILLEGAL HEX
0316 F8F7 34 20              MDUMP1  PSHS Y       COMPARE LOWER TO UPPER BOUNDS
0316 F8F7 34 20              MDUMP1  PSHS Y       COMPARE LOWER TO UPPER BOUNDS
0317 F8F9 AC E1                      CMPX ,S++    LOWER BOUNDS > UPPER BOUNDS?
0317 F8F9 AC E1                      CMPX ,S++    LOWER BOUNDS > UPPER BOUNDS?
0318 F8FB 24 01                      BCC  AJDUMP  IF NOT, DUMP HEX AND ASCII
0318 F8FB 24 01                      BCC  AJDUMP  IF NOT, DUMP HEX AND ASCII
0319 F8FD 39                 EDPRTN  RTS ;
0319 F8FD 39                 EDPRTN  RTS ;
0320                         *
0320                         *
0321                         * ADJUST LOWER AND UPPER ADDRESS LIMITS
0321                         * ADJUST LOWER AND UPPER ADDRESS LIMITS
0322                         * TO EVEN 16 BYTE BOUNDRIES.
0322                         * TO EVEN 16 BYTE BOUNDRIES.
0323                         *
0323                         *
0324                         * IF LOWER ADDR = $4532
0324                         * IF LOWER ADDR = $4532
0325                         * LOWER BOUNDS WILL BE ADJUSTED TO = $4530.
0325                         * LOWER BOUNDS WILL BE ADJUSTED TO = $4530.
0326                         *
0326                         *
0327                         * IF UPPER ADDR = $4567
0327                         * IF UPPER ADDR = $4567
0328                         * UPPER BOUNDS WILL BE ADJUSTED TO = $4570.
0328                         * UPPER BOUNDS WILL BE ADJUSTED TO = $4570.
0329                         *
0329                         *
0330                         * ENTER WITH LOWER ADDRESS IN X-REG.
0330                         * ENTER WITH LOWER ADDRESS IN X-REG.
0331                         *           -UPPER ADDRESS ON TOP OF STACK.
0331                         *           -UPPER ADDRESS ON TOP OF STACK.
0332                         *
0332                         *
0333 F8FE 1F 10              AJDUMP  TFR  X,D     GET UPPER ADDR IN D-REG
0333 F8FE 1F 10              AJDUMP  TFR  X,D     GET UPPER ADDR IN D-REG
0334 F900 C3 00 10                   ADDD #$10    ADD 16 TO UPPER ADDRESS
0334 F900 C3 00 10                   ADDD #$10    ADD 16 TO UPPER ADDRESS
0335 F903 C4 F0                      ANDB #$F0    MASK TO EVEN 16 BYTE BOUNDRY
0335 F903 C4 F0                      ANDB #$F0    MASK TO EVEN 16 BYTE BOUNDRY
0336 F905 34 06                      PSHS A,B     SAVE ON STACK AS UPPER DUMP LIMIT
0336 F905 34 06                      PSHS A,B     SAVE ON STACK AS UPPER DUMP LIMIT
0337 F907 1F 20                      TFR  Y,D     $F9A5 GET LOWER ADDRESS IN D-REG
0337 F907 1F 20                      TFR  Y,D     $F9A5 GET LOWER ADDRESS IN D-REG
0338 F909 C4 F0                      ANDB #$F0    MASK TO EVEN 16 BYTE BOUNDRY
0338 F909 C4 F0                      ANDB #$F0    MASK TO EVEN 16 BYTE BOUNDRY
0339 F90B 1F 01                      TFR  D,X     PUT IN X-REG AS LOWER DUMP LIMIT
0339 F90B 1F 01                      TFR  D,X     PUT IN X-REG AS LOWER DUMP LIMIT
0340 F90D AC E4              NXTLIN  CMPX ,S      COMPARE LOWER TO UPPER LIMIT
0340 F90D AC E4              NXTLIN  CMPX ,S      COMPARE LOWER TO UPPER LIMIT
0341 F90F 27 05                      BEQ  SKPDMP  IF EQUAL SKIP HEX-ASCII DUMP
0341 F90F 27 05                      BEQ  SKPDMP  IF EQUAL SKIP HEX-ASCII DUMP
0342 F911 17 03 61                   LBSR INCHEK  CHECK FOR INPUT FROM KEYBOARD
0342 F911 17 03 61                   LBSR INCHEK  CHECK FOR INPUT FROM KEYBOARD
0343 F914 27 03                      BEQ  EDUMP
0343 F914 27 03                      BEQ  EDUMP
0344 F916 32 62              SKPDMP  LEAS 2,S     READJUST STACK IF NOT DUMPING
0344 F916 32 62              SKPDMP  LEAS 2,S     READJUST STACK IF NOT DUMPING
0345 F918 39                         RTS          ;
0345 F918 39                         RTS          ;
0346                         *
0346                         *
0347                         * PRINT 16 HEX BYTES FOLLOWED BY 16 ASCII CHARACTERS
0347                         * PRINT 16 HEX BYTES FOLLOWED BY 16 ASCII CHARACTERS
0348                         * FOR EACH LINE THROUGHOUT ADDRESS LIMITS.
0348                         * FOR EACH LINE THROUGHOUT ADDRESS LIMITS.
0349                         *
0349                         *
0350 F919 34 10              EDUMP   PSHS X       PUSH LOWER ADDR LIMIT ON STACK
0350 F919 34 10              EDUMP   PSHS X       PUSH LOWER ADDR LIMIT ON STACK
0351 F91B 8E FE C2                   LDX  #MSG5   POINT TO MSG " - "
0351 F91B 8E FE C2                   LDX  #MSG5   POINT TO MSG " - "
0352 F91E 17 01 C2                   LBSR PSTRNG  PRINT MSG
0352 F91E 17 01 C2                   LBSR PSTRNG  PRINT MSG
0353 F921 AE E4                      LDX  ,S      LOAD LOWER ADDR FROM TOP OF STACK
0353 F921 AE E4                      LDX  ,S      LOAD LOWER ADDR FROM TOP OF STACK
0354 F923 17 03 02                   LBSR OUT4H   PRINT THE ADDRESS
0354 F923 17 03 02                   LBSR OUT4H   PRINT THE ADDRESS
0355 F926 17 03 56                   LBSR OUT2S   2 SPACES
0355 F926 17 03 56                   LBSR OUT2S   2 SPACES
0356 F929 C6 10                      LDB  #$10    LOAD COUNT OF 16 BYTES TO DUMP
0356 F929 C6 10                      LDB  #$10    LOAD COUNT OF 16 BYTES TO DUMP
0357 F92B A6 80              ELOOP   LDA  ,X+     GET FROM MEMORY HEX BYTE TO PRINT
0357 F92B A6 80              ELOOP   LDA  ,X+     GET FROM MEMORY HEX BYTE TO PRINT
0358 F92D 17 03 00                   LBSR OUT2H   OUTPUT HEX BYTE AS ASCII
0358 F92D 17 03 00                   LBSR OUT2H   OUTPUT HEX BYTE AS ASCII
0359 F930 17 03 4E                   LBSR OUT1S   OUTPUT SPACE
0359 F930 17 03 4E                   LBSR OUT1S   OUTPUT SPACE
0360 F933 5A                         DECB         $F9D1 DECREMENT BYTE COUNT
0360 F933 5A                         DECB         $F9D1 DECREMENT BYTE COUNT
0361 F934 26 F5                      BNE  ELOOP   CONTINUE TIL 16 HEX BYTES PRINTED
0361 F934 26 F5                      BNE  ELOOP   CONTINUE TIL 16 HEX BYTES PRINTED
0362                         *
0362                         *
0363                         * PRINT 16 ASCII CHARACTERS
0363                         * PRINT 16 ASCII CHARACTERS
0364                         * IF NOT PRINTABLE OR NOT VALID
0364                         * IF NOT PRINTABLE OR NOT VALID
0365                         * ASCII PRINT A PERIOD (.)
0365                         * ASCII PRINT A PERIOD (.)
0366 F936 17 03 46                   LBSR OUT2S   2 SPACES
0366 F936 17 03 46                   LBSR OUT2S   2 SPACES
0367 F939 AE E1                      LDX  ,S++    GET LOW LIMIT FRM STACK - ADJ STACK
0367 F939 AE E1                      LDX  ,S++    GET LOW LIMIT FRM STACK - ADJ STACK
0368 F93B C6 10                      LDB  #$10    SET ASCII CHAR TO PRINT = 16
0368 F93B C6 10                      LDB  #$10    SET ASCII CHAR TO PRINT = 16
0369 F93D A6 80              EDPASC  LDA  ,X+     GET CHARACTER FROM MEMORY
0369 F93D A6 80              EDPASC  LDA  ,X+     GET CHARACTER FROM MEMORY
0370 F93F 81 20                      CMPA #$20    IF LESS THAN $20, NON-PRINTABLE?
0370 F93F 81 20                      CMPA #$20    IF LESS THAN $20, NON-PRINTABLE?
0371 F941 25 04                      BCS  PERIOD  IF SO, PRINT PERIOD INSTEAD
0371 F941 25 04                      BCS  PERIOD  IF SO, PRINT PERIOD INSTEAD
0372 F943 81 7E                      CMPA #$7E    IS IT VALID ASCII?
0372 F943 81 7E                      CMPA #$7E    IS IT VALID ASCII?
0373 F945 23 02                      BLS  PRASC   IF SO PRINT IT
0373 F945 23 02                      BLS  PRASC   IF SO PRINT IT
0374 F947 86 2E              PERIOD  LDA  #'.     LOAD A PERIOD (.)
0374 F947 86 2E              PERIOD  LDA  #'.     LOAD A PERIOD (.)
0375 F949 17 03 37           PRASC   LBSR OUTCH   PRINT ASCII CHARACTER
0375 F949 17 03 37           PRASC   LBSR OUTCH   PRINT ASCII CHARACTER
0376 F94C 5A                         DECB         DECREMENT COUNT
0376 F94C 5A                         DECB         DECREMENT COUNT
0377 F94D 26 EE                      BNE  EDPASC
0377 F94D 26 EE                      BNE  EDPASC
0378 F94F 20 BC                      BRA  NXTLIN
0378 F94F 20 BC                      BRA  NXTLIN
0379                         *
0379                         *
0380                         ***** "B" SET BREAKPOINT *****
0380                         ***** "B" SET BREAKPOINT *****
0381                         *
0381                         *
0382 F951 17 02 8B           BRKPNT  LBSR IN1ADR  GET BREAKPOINT ADDRESS
0382 F951 17 02 8B           BRKPNT  LBSR IN1ADR  GET BREAKPOINT ADDRESS
0383 F954 29 1E                      BVS  EXITBP  EXIT IF INVALID HEX ADDR.
0383 F954 29 1E                      BVS  EXITBP  EXIT IF INVALID HEX ADDR.
0384 F956 8C DF C0                   CMPX #STACK  ADDRESS ILLEGAL IF >=$DFC0
0384 F956 8C DF C0                   CMPX #STACK  ADDRESS ILLEGAL IF >=$DFC0
0385 F959 24 1A                      BCC  BPERR   IF ERROR PRINT (?), EXIT
0385 F959 24 1A                      BCC  BPERR   IF ERROR PRINT (?), EXIT
0386 F95B 34 10                      PSHS X       $FA82 PUSH BP ADDRESS ON STACK
0386 F95B 34 10                      PSHS X       $FA82 PUSH BP ADDRESS ON STACK
0387 F95D 8E FF FF                   LDX  #$FFFF  LOAD DUMMY ADDR TO TEST BP TABLE
0387 F95D 8E FF FF                   LDX  #$FFFF  LOAD DUMMY ADDR TO TEST BP TABLE
0388 F960 8D 55                      BSR BPTEST   TEST BP TABLE FOR FREE SPACE
0388 F960 8D 55                      BSR BPTEST   TEST BP TABLE FOR FREE SPACE
0389 F962 35 10                      PULS X       POP BP ADDRESS FROM STACK
0389 F962 35 10                      PULS X       POP BP ADDRESS FROM STACK
0390 F964 27 0F                      BEQ  BPERR   (Z) SET, OUT OF BP TABLE SPACE
0390 F964 27 0F                      BEQ  BPERR   (Z) SET, OUT OF BP TABLE SPACE
0391 F966 A6 84                      LDA  ,X      GET DATA AT BREAKPOINT ADDRESS
0391 F966 A6 84                      LDA  ,X      GET DATA AT BREAKPOINT ADDRESS
0392 F968 81 3F                      CMPA #$3F    IS IT A SWI?
0392 F968 81 3F                      CMPA #$3F    IS IT A SWI?
0393 F96A 27 09                      BEQ  BPERR   IF SWI ALREADY, INDICATE ERROR
0393 F96A 27 09                      BEQ  BPERR   IF SWI ALREADY, INDICATE ERROR
0394 F96C A7 A0                      STA  ,Y+     SAVE DATA BYTE IN BP TABLE
0394 F96C A7 A0                      STA  ,Y+     SAVE DATA BYTE IN BP TABLE
0395 F96E AF A4                      STX  ,Y      SAVE BP ADDRESS IN BP TABLE
0395 F96E AF A4                      STX  ,Y      SAVE BP ADDRESS IN BP TABLE
0396 F970 86 3F                      LDA  #$3F    LOAD A SWI ($3F)
0396 F970 86 3F                      LDA  #$3F    LOAD A SWI ($3F)
0397 F972 A7 84                      STA  ,X      SAVE SWI AT BREAKPOINT ADDRESS
0397 F972 A7 84                      STA  ,X      SAVE SWI AT BREAKPOINT ADDRESS
0398 F974 39                 EXITBP  RTS ;
0398 F974 39                 EXITBP  RTS ;
0399                         *
0399                         *
0400                         *  INDICATE ERROR SETTING BREAKPOINT
0400                         *  INDICATE ERROR SETTING BREAKPOINT
0401                         *
0401                         *
0402 F975 17 03 09           BPERR   LBSR OUT1S   OUTPUT SPACE
0402 F975 17 03 09           BPERR   LBSR OUT1S   OUTPUT SPACE
0403 F978 86 3F                      LDA  #'?     LOAD (?), INDICATE BREAKPOINT ERROR
0403 F978 86 3F                      LDA  #'?     LOAD (?), INDICATE BREAKPOINT ERROR
0404 F97A 16 03 06                   LBRA OUTCH   PRINT "?"
0404 F97A 16 03 06                   LBRA OUTCH   PRINT "?"
0405                         *
0405                         *
0406                         *** "X" CLEAR OUTSTANDING BREAKPOINTS ***
0406                         *** "X" CLEAR OUTSTANDING BREAKPOINTS ***
0407                         *
0407                         *
0408 F97D 10 8E DF D3        XBKPNT  LDY  #BPTBL  POINT TO BREAKPOINT TABLE
0408 F97D 10 8E DF D3        XBKPNT  LDY  #BPTBL  POINT TO BREAKPOINT TABLE
0409 F981 C6 08                      LDB  #8      LOAD BREAKPOINT COUNTER
0409 F981 C6 08                      LDB  #8      LOAD BREAKPOINT COUNTER
0410 F983 8D 18              XBPLP   BSR  RPLSWI  REMOVE USED ENTRY IN BP TABLE
0410 F983 8D 18              XBPLP   BSR  RPLSWI  REMOVE USED ENTRY IN BP TABLE
0411 F985 5A                         DECB  $FAAC  DECREMENT BP COUNTER
0411 F985 5A                         DECB  $FAAC  DECREMENT BP COUNTER
0412 F986 26 FB                      BNE  XBPLP   END OF BREAKPOINT TABLE?
0412 F986 26 FB                      BNE  XBPLP   END OF BREAKPOINT TABLE?
0413 F988 39                         RTS
0413 F988 39                         RTS
0414                         *
0414                         *
0415                         ***** SWI ENTRY POINT *****
0415                         ***** SWI ENTRY POINT *****
0416                         *
0416                         *
0417 F989 1F 43              SWIE    TFR  S,U     TRANSFER STACK TO USER POINTER
0417 F989 1F 43              SWIE    TFR  S,U     TRANSFER STACK TO USER POINTER
0418 F98B AE 4A                      LDX  10,U    LOAD PC FROM STACK INTO X-REG
0418 F98B AE 4A                      LDX  10,U    LOAD PC FROM STACK INTO X-REG
0419 F98D 30 1F                      LEAX -1,X    ADJUST ADDR DOWN 1 BYTE.
0419 F98D 30 1F                      LEAX -1,X    ADJUST ADDR DOWN 1 BYTE.
0420 F98F 8D 26                      BSR  BPTEST  FIND BREAKPOINT IN BP TABLE
0420 F98F 8D 26                      BSR  BPTEST  FIND BREAKPOINT IN BP TABLE
0421 F991 27 04                      BEQ  REGPR   IF FOUND, REPLACE DATA AT BP ADDR
0421 F991 27 04                      BEQ  REGPR   IF FOUND, REPLACE DATA AT BP ADDR
0422 F993 AF 4A                      STX  10,U    SAVE BREAKPOINT ADDR IN STACK
0422 F993 AF 4A                      STX  10,U    SAVE BREAKPOINT ADDR IN STACK
0423 F995 8D 06                      BSR  RPLSWI  GO REPLACE SWI WITH ORIGINAL DATA
0423 F995 8D 06                      BSR  RPLSWI  GO REPLACE SWI WITH ORIGINAL DATA
0424 F997 17 02 1C           REGPR   LBSR REGSTR  GO PRINT REGISTERS
0424 F997 17 02 1C           REGPR   LBSR REGSTR  GO PRINT REGISTERS
0425                         *
0425                         *
0426                                 IFD TRAOPT
0426                                 IFD TRAOPT
0427                                 LDX #0
0427                                 LDX #0
0428                                 STX TRACNT
0428                                 STX TRACNT
0429                                 ENDIF TRAOPT
0429                                 ENDIF TRAOPT
0429                                 ENDIF TRAOPT
0429                                 ENDIF TRAOPT
0430                         *
0430                         *
0431 F99A 16 FE B9                   LBRA NEXTCMD GET NEXT COMMAND
0431 F99A 16 FE B9                   LBRA NEXTCMD GET NEXT COMMAND
0432                         *
0432                         *
0433 F99D AE 21              RPLSWI  LDX  1,Y     LOAD BP ADDRESS FROM BP TABLE
0433 F99D AE 21              RPLSWI  LDX  1,Y     LOAD BP ADDRESS FROM BP TABLE
0434 F99F 8C DF C0                   CMPX #STACK  COMPARE TO TOP AVAILABLE USER MEMORY
0434 F99F 8C DF C0                   CMPX #STACK  COMPARE TO TOP AVAILABLE USER MEMORY
0435 F9A2 24 0A                      BCC  FFSTBL  GO RESET TABLE ENTRY TO $FF'S
0435 F9A2 24 0A                      BCC  FFSTBL  GO RESET TABLE ENTRY TO $FF'S
0436 F9A4 A6 84                      LDA  ,X      GET DATA FROM BP ADDRESS
0436 F9A4 A6 84                      LDA  ,X      GET DATA FROM BP ADDRESS
0437 F9A6 81 3F                      CMPA #$3F    IS IT SWI?
0437 F9A6 81 3F                      CMPA #$3F    IS IT SWI?
0438 F9A8 26 04                      BNE  FFSTBL  IF NOT, RESET TABLE ENTRY TO $FF'S
0438 F9A8 26 04                      BNE  FFSTBL  IF NOT, RESET TABLE ENTRY TO $FF'S
0439 F9AA A6 A4                      LDA  ,Y      GET ORIGINAL DATA FROM BP TABLE
0439 F9AA A6 A4                      LDA  ,Y      GET ORIGINAL DATA FROM BP TABLE
0440 F9AC A7 84                      STA  ,X      $FAD3 RESTORE DATA AT BP ADDRESS
0440 F9AC A7 84                      STA  ,X      $FAD3 RESTORE DATA AT BP ADDRESS
0441 F9AE 86 FF              FFSTBL  LDA  #$FF    LOAD $FF IN A-ACC
0441 F9AE 86 FF              FFSTBL  LDA  #$FF    LOAD $FF IN A-ACC
0442 F9B0 A7 A0                      STA  ,Y+     RESET BREAKPOINT TABLE DATA TO $FF'S
0442 F9B0 A7 A0                      STA  ,Y+     RESET BREAKPOINT TABLE DATA TO $FF'S
0443 F9B2 A7 A0                      STA  ,Y+     RESET BREAKPOINT TABLE ADDR TO $FF'S
0443 F9B2 A7 A0                      STA  ,Y+     RESET BREAKPOINT TABLE ADDR TO $FF'S
0444 F9B4 A7 A0                      STA  ,Y+
0444 F9B4 A7 A0                      STA  ,Y+
0445 F9B6 39                         RTS
0445 F9B6 39                         RTS
0446                         *
0446                         *
0447                         ** SEARCH BREAKPOINT TABLE FOR MATCH **
0447                         ** SEARCH BREAKPOINT TABLE FOR MATCH **
0448                         *
0448                         *
0449 F9B7 10 8E DF D3        BPTEST  LDY  #BPTBL  POINT TO BREAKPOINT TABLE
0449 F9B7 10 8E DF D3        BPTEST  LDY  #BPTBL  POINT TO BREAKPOINT TABLE
0450 F9BB C6 08                      LDB  #8      LOAD BREAKPOINT COUNTER
0450 F9BB C6 08                      LDB  #8      LOAD BREAKPOINT COUNTER
0451 F9BD A6 A0              FNDBP   LDA  ,Y+     LOAD DATA BYTE
0451 F9BD A6 A0              FNDBP   LDA  ,Y+     LOAD DATA BYTE
0452 F9BF AC A1                      CMPX ,Y++    COMPARE ADDRESS, IS IT SAME?
0452 F9BF AC A1                      CMPX ,Y++    COMPARE ADDRESS, IS IT SAME?
0453 F9C1 27 04                      BEQ  BPADJ   IF SO, ADJUST POINTER FOR TABLE ENTRY
0453 F9C1 27 04                      BEQ  BPADJ   IF SO, ADJUST POINTER FOR TABLE ENTRY
0454 F9C3 5A                         DECB         IF NOT, DECREMENT BREAKPOINT COUNTER
0454 F9C3 5A                         DECB         IF NOT, DECREMENT BREAKPOINT COUNTER
0455 F9C4 26 F7                      BNE  FNDBP   AND LOOK FOR NEXT POSSIBLE MATCH
0455 F9C4 26 F7                      BNE  FNDBP   AND LOOK FOR NEXT POSSIBLE MATCH
0456 F9C6 39                         RTS ;
0456 F9C6 39                         RTS ;
0457                         *
0457                         *
0458                         *
0458                         *
0459 F9C7 31 3D              BPADJ   LEAY -3,Y    MOVE POINTER TO BEGIN OF BP ENTRY
0459 F9C7 31 3D              BPADJ   LEAY -3,Y    MOVE POINTER TO BEGIN OF BP ENTRY
0460 F9C9 39                         RTS
0460 F9C9 39                         RTS
0461                         *
0461                         *
0462                                 IFD TRAOPT
0462                                 IFD TRAOPT
0463                         *
0463                         *
0464                         ** TRACE from address AAAA BB bytes
0464                         ** TRACE from address AAAA BB bytes
0465                         *
0465                         *
0466                         TRACE   LBSR ALTPC1 SET UP NEW PC
0466                         TRACE   LBSR ALTPC1 SET UP NEW PC
0467                                 BVS TREXIT ADDRESS ERROR, EXIT
0467                                 BVS TREXIT ADDRESS ERROR, EXIT
0468                                 LBSR OUT1S
0468                                 LBSR OUT1S
0469                                 LBSR IN1ADR Fetch Byte Count
0469                                 LBSR IN1ADR Fetch Byte Count
0470                                 BVS TREXIT Byte Count error, EXIT
0470                                 BVS TREXIT Byte Count error, EXIT
0471                                 STX TRACNT
0471                                 STX TRACNT
0472                         *
0472                         *
0473                                 LDX NMI Save NMI Vector
0473                                 LDX NMI Save NMI Vector
0474                                 STX NMISAV
0474                                 STX NMISAV
0475                                 LDX #NMIE Set up NMI for Tracing
0475                                 LDX #NMIE Set up NMI for Tracing
0476                                 STX NMI
0476                                 STX NMI
0477                                 LBSR TRAINZ   Initialise Hardware
0477                                 LBSR TRAINZ   Initialise Hardware
0478                                 BRA TRACEG    Start Trace
0478                                 BRA TRACEG    Start Trace
0479                         TREXIT  RTS
0479                         TREXIT  RTS
0480                         *
0480                         *
0481                         * CRA0 = 0 CA1 IRQ DISAB, CRA0 = 1 CA1 IRQ ENAB
0481                         * CRA0 = 0 CA1 IRQ DISAB, CRA0 = 1 CA1 IRQ ENAB
0482                         * CRA1 = 1 CA1 Rising edge IRQ
0482                         * CRA1 = 1 CA1 Rising edge IRQ
0483                         * CRA2 = 0 TADATA = Data Direction, CRA2 = 1 TADATA = I/O Register
0483                         * CRA2 = 0 TADATA = Data Direction, CRA2 = 1 TADATA = I/O Register
0484                         * CRA3 = 0 CA2 = 0 output, CRA3 = 1 CA2 = 1
0484                         * CRA3 = 0 CA2 = 0 output, CRA3 = 1 CA2 = 1
0485                         * CRA4 = 1 ] CA2 = Set/Reset output
0485                         * CRA4 = 1 ] CA2 = Set/Reset output
0486                         * CRA5 = 1 ]
0486                         * CRA5 = 1 ]
0487                         * CRA6 = X CA2 Input Interrupt Flag
0487                         * CRA6 = X CA2 Input Interrupt Flag
0488                         * CRA7 = X CA1 Interrupt Flag
0488                         * CRA7 = X CA1 Interrupt Flag
0489                         *
0489                         *
0490                         * CRB0 = 0 CB1 IRQ DISAB, CRB0 = 1 CA1 IRQ ENAB
0490                         * CRB0 = 0 CB1 IRQ DISAB, CRB0 = 1 CA1 IRQ ENAB
0491                         * CRB1 = 1 CB1 Rising edge IRQ
0491                         * CRB1 = 1 CB1 Rising edge IRQ
0492                         * CRB2 = 0 TBDATA = Data Direction, CRB2 = 1 TBDATA = I/O Register
0492                         * CRB2 = 0 TBDATA = Data Direction, CRB2 = 1 TBDATA = I/O Register
0493                         * CRB3 = 0 CB2 = 0 output, CRB3 = 1 CB2 = 1
0493                         * CRB3 = 0 CB2 = 0 output, CRB3 = 1 CB2 = 1
0494                         * CRB4 = 1 ] CB2 = Set/Reset output
0494                         * CRB4 = 1 ] CB2 = Set/Reset output
0495                         * CRB5 = 1 ]
0495                         * CRB5 = 1 ]
0496                         * CRB6 = X CB2 Input Interrupt Flag
0496                         * CRB6 = X CB2 Input Interrupt Flag
0497                         * CRB7 = X CB1 Interrupt Flag
0497                         * CRB7 = X CB1 Interrupt Flag
0498                         *
0498                         *
0499                         *
0499                         *
0500                         ** TRACE NMI ENTRY POINT
0500                         ** TRACE NMI ENTRY POINT
0501                         *
0501                         *
0502                         NMIE    TFR S,U
0502                         NMIE    TFR S,U
0503                                 LDA #$36         Disable Interrupt, CA2 Low
0503                                 LDA #$36         Disable Interrupt, CA2 Low
0504                                 STA TACTRL
0504                                 STA TACTRL
0505                                 LDA TADATA       Clear Interrupt flag by reading data port
0505                                 LDA TADATA       Clear Interrupt flag by reading data port
0506                         *
0506                         *
0507                                 LBSR REGSTR       DUMP REGISTERS
0507                                 LBSR REGSTR       DUMP REGISTERS
0508                         *
0508                         *
0509                                 LDX 10,U         TEST IF NEXT INSTRUCTION IS A SWI
0509                                 LDX 10,U         TEST IF NEXT INSTRUCTION IS A SWI
0510                                 LDA ,X
0510                                 LDA ,X
0511                                 CMPA #$3F
0511                                 CMPA #$3F
0512                                 BEQ TRACEX       EXIT ON SWI
0512                                 BEQ TRACEX       EXIT ON SWI
0513                         *
0513                         *
0514                                 LDX TRACNT       CHECK IF TRACE COUNT EXPIRED
0514                                 LDX TRACNT       CHECK IF TRACE COUNT EXPIRED
0515                                 BEQ TRACEX       YES, GO BACK TO THE MONITOR
0515                                 BEQ TRACEX       YES, GO BACK TO THE MONITOR
0516                                 LEAX -1,X        DECREMENT TRACE COUNT
0516                                 LEAX -1,X        DECREMENT TRACE COUNT
0517                                 STX TRACNT
0517                                 STX TRACNT
0518                         *
0518                         *
0519                         **  TRACE GO (RESUME SINGLE STEP)
0519                         **  TRACE GO (RESUME SINGLE STEP)
0520                         *
0520                         *
0521                         TRACEG  TFR U,S          SET UP PROGRAM STACK POINTER
0521                         TRACEG  TFR U,S          SET UP PROGRAM STACK POINTER
0522                                 LDA #TRADEL      SET UP TIMER DELAY (NUMB CYCLES FOR RTI+1)
0522                                 LDA #TRADEL      SET UP TIMER DELAY (NUMB CYCLES FOR RTI+1)
0523                                 STA TADATA
0523                                 STA TADATA
0524                                 LDA #$36         LOAD STROBE LOW
0524                                 LDA #$36         LOAD STROBE LOW
0525                                 STA TACTRL
0525                                 STA TACTRL
0526                                 LDA TADATA       CLEAR INTERRUPT
0526                                 LDA TADATA       CLEAR INTERRUPT
0527                                 LDA #$36         RELEASE RESET
0527                                 LDA #$36         RELEASE RESET
0528                                 STA TBCTRL
0528                                 STA TBCTRL
0529                                 LDA #$3F         RELEASE LOAD, ENABLE CA1 NMI, CA1 RISING EDGE
0529                                 LDA #$3F         RELEASE LOAD, ENABLE CA1 NMI, CA1 RISING EDGE
0530                                 STA TACTRL
0530                                 STA TACTRL
0531                                 RTI              GO EXECUTE INSTRUCTION
0531                                 RTI              GO EXECUTE INSTRUCTION
0532                         *
0532                         *
0533                         TRACEX  LDX NMISAV       Restore NMI vector
0533                         TRACEX  LDX NMISAV       Restore NMI vector
0534                                 STX NMI
0534                                 STX NMI
0535                                 LBRA NEXTCMD     Jump back to the command loop.
0535                                 LBRA NEXTCMD     Jump back to the command loop.
0536                         *
0536                         *
0537                         ** TRACE HARDWARE INITIALISATION
0537                         ** TRACE HARDWARE INITIALISATION
0538                         *
0538                         *
0539                         TRAINZ  LDA #$32         SELECT DDRA, CA2 LOW, NMI DISABLED
0539                         TRAINZ  LDA #$32         SELECT DDRA, CA2 LOW, NMI DISABLED
0540                                 STA TACTRL
0540                                 STA TACTRL
0541                                 LDA #$3A         SELECT DDRB, CB2 HIGH, FIRQ DISABLED
0541                                 LDA #$3A         SELECT DDRB, CB2 HIGH, FIRQ DISABLED
0542                                 STA TBCTRL
0542                                 STA TBCTRL
0543                                 LDA #$FF         PORTA = OUTPUT
0543                                 LDA #$FF         PORTA = OUTPUT
0544                                 STA TADATA
0544                                 STA TADATA
0545                                 LDA #$00         PORTB = INPUT
0545                                 LDA #$00         PORTB = INPUT
0546                                 STA TBDATA
0546                                 STA TBDATA
0547                                 LDA #$36         SELECT OUTPUT REGISTER A, CA2 LOW
0547                                 LDA #$36         SELECT OUTPUT REGISTER A, CA2 LOW
0548                                 STA TACTRL
0548                                 STA TACTRL
0549                                 LDA #$3E         SELECT OUTPUT REGISTER B, CB2 HIGH
0549                                 LDA #$3E         SELECT OUTPUT REGISTER B, CB2 HIGH
0550                                 STA TBCTRL
0550                                 STA TBCTRL
0551                                 RTS
0551                                 RTS
0552                         *
0552                         *
0553                                 ENDIF TRAOPT
0553                                 ENDIF TRAOPT
0553                                 ENDIF TRAOPT
0553                                 ENDIF TRAOPT
0554                                 IFD  MFDCOPT
0554                                 IFD  MFDCOPT
0555                         *
0555                         *
0556                         ** "U" MINI DISK BOOT
0556                         ** "U" MINI DISK BOOT
0557                         *
0557                         *
0558 F9CA 7D E0 18           MINBOOT TST  CMDFDC
0558 F9CA 7D E0 18           MINBOOT TST  CMDFDC
0559 F9CD 7F E0 14                   CLR  DRVFDC
0559 F9CD 7F E0 14                   CLR  DRVFDC
0560 F9D0 8E 00 00                   LDX  #$0000
0560 F9D0 8E 00 00                   LDX  #$0000
0561 F9D3 30 01              LOOP    LEAX $01,X
0561 F9D3 30 01              LOOP    LEAX $01,X
0562 F9D5 8C 00 00                   CMPX #$0000
0562 F9D5 8C 00 00                   CMPX #$0000
0563 F9D8 26 F9                      BNE  LOOP
0563 F9D8 26 F9                      BNE  LOOP
0564 F9DA 86 0F                      LDA  #$0F
0564 F9DA 86 0F                      LDA  #$0F
0565 F9DC B7 E0 18                   STA  CMDFDC
0565 F9DC B7 E0 18                   STA  CMDFDC
0566 F9DF 8D 37                      BSR  DELAY
0566 F9DF 8D 37                      BSR  DELAY
0567 F9E1 F6 E0 18           LOOP1   LDB  CMDFDC
0567 F9E1 F6 E0 18           LOOP1   LDB  CMDFDC
0568 F9E4 C5 01                      BITB #$01
0568 F9E4 C5 01                      BITB #$01
0569 F9E6 26 F9                      BNE  LOOP1
0569 F9E6 26 F9                      BNE  LOOP1
0570 F9E8 86 01                      LDA  #$01
0570 F9E8 86 01                      LDA  #$01
0571 F9EA B7 E0 1A                   STA  SECFDC
0571 F9EA B7 E0 1A                   STA  SECFDC
0572 F9ED 8D 29                      BSR  DELAY
0572 F9ED 8D 29                      BSR  DELAY
0573 F9EF 86 8C                      LDA  #$8C
0573 F9EF 86 8C                      LDA  #$8C
0574 F9F1 B7 E0 18                   STA  CMDFDC
0574 F9F1 B7 E0 18                   STA  CMDFDC
0575 F9F4 8D 22                      BSR  DELAY
0575 F9F4 8D 22                      BSR  DELAY
0576 F9F6 8E C0 00                   LDX  #$C000
0576 F9F6 8E C0 00                   LDX  #$C000
0577 F9F9 20 09                      BRA  LOOP3
0577 F9F9 20 09                      BRA  LOOP3
0578 F9FB C5 02              LOOP2   BITB #$02
0578 F9FB C5 02              LOOP2   BITB #$02
0579 F9FD 27 05                      BEQ  LOOP3
0579 F9FD 27 05                      BEQ  LOOP3
0580 F9FF B6 E0 1B                   LDA  DATFDC
0580 F9FF B6 E0 1B                   LDA  DATFDC
0581 FA02 A7 80                      STA ,X+
0581 FA02 A7 80                      STA ,X+
0582 FA04 F6 E0 18           LOOP3   LDB  CMDFDC
0582 FA04 F6 E0 18           LOOP3   LDB  CMDFDC
0583 FA07 C5 01                      BITB #$01
0583 FA07 C5 01                      BITB #$01
0584 FA09 26 F0                      BNE  LOOP2
0584 FA09 26 F0                      BNE  LOOP2
0585 FA0B C5 2C                      BITB #$2C
0585 FA0B C5 2C                      BITB #$2C
0586 FA0D 27 01                      BEQ  LOOP4
0586 FA0D 27 01                      BEQ  LOOP4
0587 FA0F 39                         RTS
0587 FA0F 39                         RTS
0588                         *
0588                         *
0589 FA10 8E C0 00           LOOP4   LDX  #$C000
0589 FA10 8E C0 00           LOOP4   LDX  #$C000
0590 FA13 AF 4A                      STX  $0A,U
0590 FA13 AF 4A                      STX  $0A,U
0591 FA15 1F 34                      TFR  U,S
0591 FA15 1F 34                      TFR  U,S
0592 FA17 3B                         RTI
0592 FA17 3B                         RTI
0593                         *
0593                         *
0594 FA18 C6 04              DELAY   LDB  #$04
0594 FA18 C6 04              DELAY   LDB  #$04
0595 FA1A 5A                 LOOP5   DECB
0595 FA1A 5A                 LOOP5   DECB
0596 FA1B 26 FD                      BNE  LOOP5
0596 FA1B 26 FD                      BNE  LOOP5
0597 FA1D 39                         RTS
0597 FA1D 39                         RTS
0598                                 ENDIF MFDCOPT
0598                                 ENDIF MFDCOPT
0599                         *
0599                         *
0600                                 IFD  DMAFOPT
0600                                 IFD  DMAFOPT
0601                         *
0601                         *
0602                         *** "D" DISK BOOT FOR DMAF2 ***
0602                         *** "D" DISK BOOT FOR DMAF2 ***
0603                         *
0603                         *
0604                         DBOOT   LDA  #$DE
0604                         DBOOT   LDA  #$DE
0605                                 STA  DRVREG
0605                                 STA  DRVREG
0606                                 LDA  #$FF
0606                                 LDA  #$FF
0607                                 STA  PRIREG     $FAF8
0607                                 STA  PRIREG     $FAF8
0608                                 STA  CCREG
0608                                 STA  CCREG
0609                                 STA  AAAREG
0609                                 STA  AAAREG
0610                                 STA  BBBREG
0610                                 STA  BBBREG
0611                                 TST  CCREG
0611                                 TST  CCREG
0612                                 LDA  #$D8
0612                                 LDA  #$D8
0613                                 STA  COMREG
0613                                 STA  COMREG
0614                                 LBSR DLY
0614                                 LBSR DLY
0615                         DBOOT0  LDA  COMREG
0615                         DBOOT0  LDA  COMREG
0616                                 BMI  DBOOT0
0616                                 BMI  DBOOT0
0617                                 LDA  #$09
0617                                 LDA  #$09
0618                                 STA  COMREG
0618                                 STA  COMREG
0619                                 LBSR DLY
0619                                 LBSR DLY
0620                         *
0620                         *
0621                         DISKWT  LDA  COMREG FETCH DRIVE STATUS
0621                         DISKWT  LDA  COMREG FETCH DRIVE STATUS
0622                                 BITA #1 TEST BUSY BIT
0622                                 BITA #1 TEST BUSY BIT
0623                                 BNE  DISKWT LOOP UNTIL NOT BUSY
0623                                 BNE  DISKWT LOOP UNTIL NOT BUSY
0624                         *
0624                         *
0625                                 BITA #$10
0625                                 BITA #$10
0626                                 BNE  DBOOT
0626                                 BNE  DBOOT
0627                         *
0627                         *
0628                                 LDX  #$C000 LOGICAL ADDR. = $C000
0628                                 LDX  #$C000 LOGICAL ADDR. = $C000
0629                                 BSR LRA  GET 20 BIT PHYSICAL ADDR. OF LOG. ADDR.
0629                                 BSR LRA  GET 20 BIT PHYSICAL ADDR. OF LOG. ADDR.
0630                                 ORA  #$10
0630                                 ORA  #$10
0631                                 STA  CCCREG
0631                                 STA  CCCREG
0632                                 TFR  X,D
0632                                 TFR  X,D
0633                                 COMA  ;
0633                                 COMA  ;
0634                                 COMB  ;
0634                                 COMB  ;
0635                                 STD  ADDREG
0635                                 STD  ADDREG
0636                                 LDX  #$FEFF LOAD DMA BYTE COUNT = $100
0636                                 LDX  #$FEFF LOAD DMA BYTE COUNT = $100
0637                                 STX  CNTREG STORE IN COUNT REGISTER
0637                                 STX  CNTREG STORE IN COUNT REGISTER
0638                                 LDA  #$FF LOAD THE CHANNEL REGISTER
0638                                 LDA  #$FF LOAD THE CHANNEL REGISTER
0639                                 STA  CCREG
0639                                 STA  CCREG
0640                                 LDA  #$FE SET CHANNEL 0
0640                                 LDA  #$FE SET CHANNEL 0
0641                                 STA  PRIREG
0641                                 STA  PRIREG
0642                                 LDA  #1 SET SECTOR TO "1"
0642                                 LDA  #1 SET SECTOR TO "1"
0643                                 STA  SECREG ISSUE COMMAND
0643                                 STA  SECREG ISSUE COMMAND
0644                                 LDA  #$8C SET SINGLE SECTOR READ
0644                                 LDA  #$8C SET SINGLE SECTOR READ
0645                                 STA  COMREG ISSUE COMMAND
0645                                 STA  COMREG ISSUE COMMAND
0646                                 BSR DLY
0646                                 BSR DLY
0647                         *
0647                         *
0648                         * THE FOLLOWING CODE TESTS THE STATUS OF THE
0648                         * THE FOLLOWING CODE TESTS THE STATUS OF THE
0649                         * CHANNEL CONTROL REGISTER. IF "D7" IS NOT
0649                         * CHANNEL CONTROL REGISTER. IF "D7" IS NOT
0650                         * ZERO THEN IT WILL LOOP WAITING FOR "D7"
0650                         * ZERO THEN IT WILL LOOP WAITING FOR "D7"
0651                         * TO GO TO ZERO. IF AFTER 65,536 TRIES IT
0651                         * TO GO TO ZERO. IF AFTER 65,536 TRIES IT
0652                         * IS STILL A ONE THE BOOT OPERATION WILL
0652                         * IS STILL A ONE THE BOOT OPERATION WILL
0653                         * BE STARTED OVER FROM THE BEGINING.
0653                         * BE STARTED OVER FROM THE BEGINING.
0654                         *
0654                         *
0655                                 CLRB  ;
0655                                 CLRB  ;
0656                         DBOOT1  PSHS B     $FB55
0656                         DBOOT1  PSHS B     $FB55
0657                                 CLRB  ;
0657                                 CLRB  ;
0658                         DBOOT2  TST  CCREG
0658                         DBOOT2  TST  CCREG
0659                                 BPL  DBOOT3
0659                                 BPL  DBOOT3
0660                                 DECB  ;
0660                                 DECB  ;
0661                                 BNE  DBOOT2
0661                                 BNE  DBOOT2
0662                                 PULS B
0662                                 PULS B
0663                                 DECB
0663                                 DECB
0664                                 BNE  DBOOT1
0664                                 BNE  DBOOT1
0665                                 BRA  DBOOT
0665                                 BRA  DBOOT
0666                         DBOOT3  PULS B
0666                         DBOOT3  PULS B
0667                                 LDA  COMREG
0667                                 LDA  COMREG
0668                                 BITA #$1C
0668                                 BITA #$1C
0669                                 BEQ  DBOOT4
0669                                 BEQ  DBOOT4
0670                                 RTS  ;
0670                                 RTS  ;
0671                         *
0671                         *
0672                         *
0672                         *
0673                         DBOOT4  LDB  #$DE
0673                         DBOOT4  LDB  #$DE
0674                                 STB  DRVREG
0674                                 STB  DRVREG
0675                                 LDX  #$C000
0675                                 LDX  #$C000
0676                                 STX  10,U
0676                                 STX  10,U
0677                                 TFR  U,S    $FB7B
0677                                 TFR  U,S    $FB7B
0678                                 RTI  ;
0678                                 RTI  ;
0679                                 ENDIF DMAFOPT
0679                                 ENDIF DMAFOPT
0679                                 ENDIF DMAFOPT
0679                                 ENDIF DMAFOPT
0680                         *
0680                         *
0681                                 IFD CF8OPT
0681                                 IFD CF8OPT
0682                         *
0682                         *
0683                         * COMPACT FLASH BOOT
0683                         * COMPACT FLASH BOOT
0684                         *
0684                         *
0685                         CFBOOT  BSR  WAITRDY
0685                         CFBOOT  BSR  WAITRDY
0686                                 LDA  #HEADLBA
0686                                 LDA  #HEADLBA
0687                                 STA  CF_HEAD
0687                                 STA  CF_HEAD
0688                                 BSR  WAITRDY
0688                                 BSR  WAITRDY
0689                                 LDA  #FEAT8BIT
0689                                 LDA  #FEAT8BIT
0690                                 STA  CF_FEATURE
0690                                 STA  CF_FEATURE
0691                                 LDA  #CMDFEATURE
0691                                 LDA  #CMDFEATURE
0692                                 STA  CF_COMAND
0692                                 STA  CF_COMAND
0693                                 BSR  WAITRDY
0693                                 BSR  WAITRDY
0694                         *
0694                         *
0695                         * READ SECTORS FROM CF
0695                         * READ SECTORS FROM CF
0696                         *
0696                         *
0697                         CFREAD  LDA  #$01
0697                         CFREAD  LDA  #$01
0698                                 STA  CF_SECCNT
0698                                 STA  CF_SECCNT
0699                                 CLRA
0699                                 CLRA
0700                                 STA  CF_SECNUM
0700                                 STA  CF_SECNUM
0701                                 STA  CF_CYLLO
0701                                 STA  CF_CYLLO
0702                                 STA  CF_CYLHI
0702                                 STA  CF_CYLHI
0703                         *
0703                         *
0704                                 LDA  #CMDREAD ; IDE READ MULTIPLE
0704                                 LDA  #CMDREAD ; IDE READ MULTIPLE
0705                                 STA  CF_COMAND
0705                                 STA  CF_COMAND
0706                                 BSR  WAITRDY
0706                                 BSR  WAITRDY
0707                                 LDX  #$C000
0707                                 LDX  #$C000
0708                         *
0708                         *
0709                         * READ LOOP
0709                         * READ LOOP
0710                         *
0710                         *
0711                         RDLOOP  BSR  WAITDRQ
0711                         RDLOOP  BSR  WAITDRQ
0712                                 LDA  CF_DATA
0712                                 LDA  CF_DATA
0713                                 STA  ,X+
0713                                 STA  ,X+
0714                                 CMPX #$C200
0714                                 CMPX #$C200
0715                                 BNE  RDLOOP
0715                                 BNE  RDLOOP
0716                         *
0716                         *
0717                                 LDX  #$C000
0717                                 LDX  #$C000
0718                                 STX  $0A,U
0718                                 STX  $0A,U
0719                                 TFR  U,S
0719                                 TFR  U,S
0720                                 RTI
0720                                 RTI
0721                         *
0721                         *
0722                         * WAIT UNTIL READY
0722                         * WAIT UNTIL READY
0723                         *
0723                         *
0724                         WAITRDY LDA  CF_STATUS
0724                         WAITRDY LDA  CF_STATUS
0725                                 BITA #BUSY
0725                                 BITA #BUSY
0726                                 BNE  WAITRDY
0726                                 BNE  WAITRDY
0727                                 LDA  CF_STATUS
0727                                 LDA  CF_STATUS
0728                                 BITA #DRDY
0728                                 BITA #DRDY
0729                                 BEQ  WAITRDY
0729                                 BEQ  WAITRDY
0730                                 RTS
0730                                 RTS
0731                         *
0731                         *
0732                         * WAIT FOR DATA REQUEST
0732                         * WAIT FOR DATA REQUEST
0733                         *
0733                         *
0734                         WAITDRQ LDA  CF_STATUS
0734                         WAITDRQ LDA  CF_STATUS
0735                                 BITA #DRQ
0735                                 BITA #DRQ
0736                                 BEQ  WAITDRQ
0736                                 BEQ  WAITDRQ
0737                                 RTS
0737                                 RTS
0738                                 ENDIF CF8OPT
0738                                 ENDIF CF8OPT
0738                                 ENDIF CF8OPT
0738                                 ENDIF CF8OPT
0739                         *
0739                         *
0740                                 IFD IDEOPT
0740                                 IFD IDEOPT
0741                         *
0741                         *
0742                         * XESS 16 BIT IDE BOOT
0742                         * XESS 16 BIT IDE BOOT
0743                         *
0743                         *
0744                         IDEBOOT LDD  #AUXRESET
0744                         IDEBOOT LDD  #AUXRESET
0745                                 STD  CF_AUX
0745                                 STD  CF_AUX
0746                                 LDD #AUXRSTREL
0746                                 LDD #AUXRSTREL
0747                                 STD CF_AUX
0747                                 STD CF_AUX
0748                                 LDD  #HEADLBA
0748                                 LDD  #HEADLBA
0749                                 STD  CF_HEAD
0749                                 STD  CF_HEAD
0750                                 BSR  WAITRDY
0750                                 BSR  WAITRDY
0751                         *
0751                         *
0752                         * READ SECTORS FROM CF
0752                         * READ SECTORS FROM CF
0753                         *
0753                         *
0754                                 LDD  #$01
0754                                 LDD  #$01
0755                                 STD  CF_SECCNT
0755                                 STD  CF_SECCNT
0756                                 CLRB
0756                                 CLRB
0757                                 STD  CF_SECNUM
0757                                 STD  CF_SECNUM
0758                                 STD  CF_CYLLO
0758                                 STD  CF_CYLLO
0759                                 STD  CF_CYLHI
0759                                 STD  CF_CYLHI
0760                         *
0760                         *
0761                                 LDB  #CMDREAD ; IDE READ MULTIPLE
0761                                 LDB  #CMDREAD ; IDE READ MULTIPLE
0762                                 STD  CF_COMAND
0762                                 STD  CF_COMAND
0763                                 BSR  WAITRDY
0763                                 BSR  WAITRDY
0764                                 LDX  #$C000
0764                                 LDX  #$C000
0765                         *
0765                         *
0766                         * READ LOOP
0766                         * READ LOOP
0767                         *
0767                         *
0768                         RDLOOP  BSR  WAITDRQ
0768                         RDLOOP  BSR  WAITDRQ
0769                                 LDD  CF_DATA
0769                                 LDD  CF_DATA
0770                                 STB  ,X+
0770                                 STB  ,X+
0771                                 CMPX #$C100
0771                                 CMPX #$C100
0772                                 BNE  RDLOOP
0772                                 BNE  RDLOOP
0773                         *
0773                         *
0774                                 LDX  #$C000
0774                                 LDX  #$C000
0775                                 STX  $0A,U
0775                                 STX  $0A,U
0776                                 TFR  U,S
0776                                 TFR  U,S
0777                                 RTI
0777                                 RTI
0778                         *
0778                         *
0779                         * WAIT UNTIL READY
0779                         * WAIT UNTIL READY
0780                         *
0780                         *
0781                         WAITRDY LDD  CF_STATUS
0781                         WAITRDY LDD  CF_STATUS
0782                                 BITB #BUSY
0782                                 BITB #BUSY
0783                                 BNE  WAITRDY
0783                                 BNE  WAITRDY
0784                                 LDD  CF_STATUS
0784                                 LDD  CF_STATUS
0785                                 BITB #DRDY
0785                                 BITB #DRDY
0786                                 BEQ  WAITRDY
0786                                 BEQ  WAITRDY
0787                                 RTS
0787                                 RTS
0788                         *
0788                         *
0789                         * WAIT FOR DATA REQUEST
0789                         * WAIT FOR DATA REQUEST
0790                         *
0790                         *
0791                         WAITDRQ LDD  CF_STATUS
0791                         WAITDRQ LDD  CF_STATUS
0792                                 BITB #DRQ
0792                                 BITB #DRQ
0793                                 BEQ  WAITDRQ
0793                                 BEQ  WAITDRQ
0794                                 RTS
0794                                 RTS
0795                                 ENDIF IDEOPT
0795                                 ENDIF IDEOPT
0795                                 ENDIF IDEOPT
0795                                 ENDIF IDEOPT
0796                         *
0796                         *
0797                                 IFD RTCOPT
0797                                 IFD RTCOPT
0798                         *
0798                         *
0799                         * CLOCK INTER FACE UTILITY
0799                         * CLOCK INTER FACE UTILITY
0800                         *
0800                         *
0801                         * TIME   
0801                         * TIME   
0802                         * If no argument is specified, the current time
0802                         * If no argument is specified, the current time
0803                         * will be displayed.
0803                         * will be displayed.
0804                         *
0804                         *
0805                         * READ A REGISTER FROM THE COUNTER.
0805                         * READ A REGISTER FROM THE COUNTER.
0806                         * The X Index rgister points to the register
0806                         * The X Index rgister points to the register
0807                         * to be read. The Status Register is checked
0807                         * to be read. The Status Register is checked
0808                         * before and after the register is read before
0808                         * before and after the register is read before
0809                         * returning a value in accumulator A
0809                         * returning a value in accumulator A
0810                         *
0810                         *
0811                         RDCLK  TST CLKSTA
0811                         RDCLK  TST CLKSTA
0812                                BNE RDCLK
0812                                BNE RDCLK
0813                         RDCLK1 LDA 0,X
0813                         RDCLK1 LDA 0,X
0814                                TST CLKSTA
0814                                TST CLKSTA
0815                                BNE RDCLK1
0815                                BNE RDCLK1
0816                                RTS
0816                                RTS
0817                         *
0817                         *
0818                         * MAIN PROGRAM:
0818                         * MAIN PROGRAM:
0819                         *
0819                         *
0820                         TIMSET LDX #COUNTR POINT TO TIMER
0820                         TIMSET LDX #COUNTR POINT TO TIMER
0821                               LBSR BYTE READ HOURS
0821                               LBSR BYTE READ HOURS
0822                               BVS  SHOWTM NO ARG, DISP TIME
0822                               BVS  SHOWTM NO ARG, DISP TIME
0823                               STA HOUR,X
0823                               STA HOUR,X
0824                               LBSR OUT1S
0824                               LBSR OUT1S
0825                               LBSR BYTE READ MINUITES
0825                               LBSR BYTE READ MINUITES
0826                               BVS  SHOWTM
0826                               BVS  SHOWTM
0827                               STA MINUIT,X
0827                               STA MINUIT,X
0828                               LBSR OUT1S
0828                               LBSR OUT1S
0829                               LBSR BYTE SECONDS.
0829                               LBSR BYTE SECONDS.
0830                               BVS SHOWTM
0830                               BVS SHOWTM
0831                               STA SECOND,X
0831                               STA SECOND,X
0832                         *
0832                         *
0833                         * DISPLAY CURRENT TIME
0833                         * DISPLAY CURRENT TIME
0834                         *
0834                         *
0835                         SHOWTM LBSR PCRLF
0835                         SHOWTM LBSR PCRLF
0836                                LDX #COUNTR+HOUR
0836                                LDX #COUNTR+HOUR
0837                                LDB #3
0837                                LDB #3
0838                         SHOWLP BSR RDCLK
0838                         SHOWLP BSR RDCLK
0839                                LBSR OUT2H
0839                                LBSR OUT2H
0840                                LDA #':
0840                                LDA #':
0841                                LBSR OUTCH
0841                                LBSR OUTCH
0842                                LEAX -1,X
0842                                LEAX -1,X
0843                                DECB
0843                                DECB
0844                                BNE SHOWLP
0844                                BNE SHOWLP
0845                                RTS
0845                                RTS
0846                         *
0846                         *
0847                         * INITIATE CLOCK.
0847                         * INITIATE CLOCK.
0848                         * MASK INTERRUPTS.
0848                         * MASK INTERRUPTS.
0849                         *
0849                         *
0850                         CLKINZ CLR CINTCR  MASK ALL INTERRUPTS
0850                         CLKINZ CLR CINTCR  MASK ALL INTERRUPTS
0851                                TST CINTSR  CLEAR ANY INTERRUPTS
0851                                TST CINTSR  CLEAR ANY INTERRUPTS
0852                                RTS
0852                                RTS
0853                                ENDIF RTCOPT
0853                                ENDIF RTCOPT
0853                                ENDIF RTCOPT
0853                                ENDIF RTCOPT
0854                                IFD DATOPT
0854                                IFD DATOPT
0855                         *
0855                         *
0856                         ***** LRA LOAD REAL ADDRESS *****
0856                         ***** LRA LOAD REAL ADDRESS *****
0857                         *
0857                         *
0858                         * THE FOLLOWING CODE LOADS THE 20-BIT
0858                         * THE FOLLOWING CODE LOADS THE 20-BIT
0859                         * PHYSICAL ADDRESS OF A MEMORY BYTE
0859                         * PHYSICAL ADDRESS OF A MEMORY BYTE
0860                         * INTO THE "A" AND "X" REGISTERS. THIS
0860                         * INTO THE "A" AND "X" REGISTERS. THIS
0861                         * ROUTINE IS ENTERED WITH THE LOGICAL
0861                         * ROUTINE IS ENTERED WITH THE LOGICAL
0862                         * ADDRESS OF A MEMORY BYTE IN THE "IX"
0862                         * ADDRESS OF A MEMORY BYTE IN THE "IX"
0863                         * REGISTER. EXIT IS MADE WITH THE HIGH-
0863                         * REGISTER. EXIT IS MADE WITH THE HIGH-
0864                         * ORDER FOUR BITS OF THE 20-BIT PHYSICAL
0864                         * ORDER FOUR BITS OF THE 20-BIT PHYSICAL
0865                         * ADDRESS IN THE "A" REGISTER, AND THE
0865                         * ADDRESS IN THE "A" REGISTER, AND THE
0866                         * LOW-ORDER 16-BITS OF THE 20-BIT
0866                         * LOW-ORDER 16-BITS OF THE 20-BIT
0867                         * PHYSICAL ADDRESS IN THE "IX" REGISTER.
0867                         * PHYSICAL ADDRESS IN THE "IX" REGISTER.
0868                         * ALL OTHER REGISTERS ARE PRESERVED.
0868                         * ALL OTHER REGISTERS ARE PRESERVED.
0869                         * THIS ROUTINE IS REQUIRED SINCE THE
0869                         * THIS ROUTINE IS REQUIRED SINCE THE
0870                         * DMAF1 AND DMAF2 DISK CONTROLLERS MUST
0870                         * DMAF1 AND DMAF2 DISK CONTROLLERS MUST
0871                         * PRESENT PHYSICAL ADDRESSES ON THE
0871                         * PRESENT PHYSICAL ADDRESSES ON THE
0872                         * SYSTEM BUS.
0872                         * SYSTEM BUS.
0873                         *
0873                         *
0874                         LRA     PSHS A,B,X,Y PUSH REGISTERS ON STACK
0874                         LRA     PSHS A,B,X,Y PUSH REGISTERS ON STACK
0875                                 LDA  2,S     GET MSB LOGICAL ADDR FRM X REG ON STACK
0875                                 LDA  2,S     GET MSB LOGICAL ADDR FRM X REG ON STACK
0876                                 LSRA         ;
0876                                 LSRA         ;
0877                                 LSRA         ADJ FOR INDEXED INTO
0877                                 LSRA         ADJ FOR INDEXED INTO
0878                                 LSRA         CORRESPONDING LOCATION
0878                                 LSRA         CORRESPONDING LOCATION
0879                                 LSRA         IN LRA TABLE
0879                                 LSRA         IN LRA TABLE
0880                                 LDY  #LRARAM LOAD LRA TABLE BASE ADDRESS
0880                                 LDY  #LRARAM LOAD LRA TABLE BASE ADDRESS
0881                                 LDB  A,Y     GET PHYSICAL ADDR. DATA FROM LRA TABLE
0881                                 LDB  A,Y     GET PHYSICAL ADDR. DATA FROM LRA TABLE
0882                                 LSRB         ADJ. REAL ADDR. TO REFLECT EXTENDED
0882                                 LSRB         ADJ. REAL ADDR. TO REFLECT EXTENDED
0883                                 LSRB         PHYSICAL ADDRESS.
0883                                 LSRB         PHYSICAL ADDRESS.
0884                                 LSRB         EXTENDED MS 4-BITS ARE RETURNED
0884                                 LSRB         EXTENDED MS 4-BITS ARE RETURNED
0885                                 LSRB         IN THE "A" ACCUMULATOR
0885                                 LSRB         IN THE "A" ACCUMULATOR
0886                                 STB  ,S      MS 4 BITS IN A ACCUM. STORED ON STACK
0886                                 STB  ,S      MS 4 BITS IN A ACCUM. STORED ON STACK
0887                                 LDB  A,Y     LOAD REAL ADDRESS DATA FROM LRA TABLE
0887                                 LDB  A,Y     LOAD REAL ADDRESS DATA FROM LRA TABLE
0888                                 COMB         COMP TO ADJ FOR PHYSICAL ADDR. IN X REG
0888                                 COMB         COMP TO ADJ FOR PHYSICAL ADDR. IN X REG
0889                                 ASLB         ADJ DATA FOR RELOCATION IN X REG
0889                                 ASLB         ADJ DATA FOR RELOCATION IN X REG
0890                                 ASLB         ;
0890                                 ASLB         ;
0891                                 ASLB         $FB97
0891                                 ASLB         $FB97
0892                                 ASLB         ;
0892                                 ASLB         ;
0893                                 LDA  2,S     GET MS BYTE OF LOGICAL ADDR.
0893                                 LDA  2,S     GET MS BYTE OF LOGICAL ADDR.
0894                                 ANDA #$0F    MASK MS NIBBLE OF LOGICAL ADDRESS
0894                                 ANDA #$0F    MASK MS NIBBLE OF LOGICAL ADDRESS
0895                                 STA  2,S     SAVE IT IN X REG ON STACK
0895                                 STA  2,S     SAVE IT IN X REG ON STACK
0896                                 ORB  2,S     SET MS BYTE IN X REG TO ADJ PHY ADDR.
0896                                 ORB  2,S     SET MS BYTE IN X REG TO ADJ PHY ADDR.
0897                         *
0897                         *
0898                         * PLUS LS NIBBLE OF LOGICAL ADDRESS
0898                         * PLUS LS NIBBLE OF LOGICAL ADDRESS
0899                                 STB  2,S     SAVE AS LS 16 BITS OF PHY ADDR IN X REG
0899                                 STB  2,S     SAVE AS LS 16 BITS OF PHY ADDR IN X REG
0900                         * ON STACK
0900                         * ON STACK
0901                                 PULS A,B,X,Y,PC POP REGS. FROM STACK
0901                                 PULS A,B,X,Y,PC POP REGS. FROM STACK
0902                                 ENDIF DATOPT
0902                                 ENDIF DATOPT
0902                                 ENDIF DATOPT
0902                                 ENDIF DATOPT
0903                         *
0903                         *
0904                         * DELAY LOOP
0904                         * DELAY LOOP
0905                         *
0905                         *
0906 FA1E 34 04              DLY     PSHS B       SAVE CONTENTS OF "B"
0906 FA1E 34 04              DLY     PSHS B       SAVE CONTENTS OF "B"
0907 FA20 C6 20                      LDB  #$20    GET LOOP DELAY VALUE
0907 FA20 C6 20                      LDB  #$20    GET LOOP DELAY VALUE
0908 FA22 5A                 SUB1    DECB         SUBTRACT ONE FROM VALUE
0908 FA22 5A                 SUB1    DECB         SUBTRACT ONE FROM VALUE
0909 FA23 26 FD                      BNE  SUB1    LOOP UNTIL ZERO
0909 FA23 26 FD                      BNE  SUB1    LOOP UNTIL ZERO
0910 FA25 35 84                      PULS B,PC    RESTORE CONTENTS OF "B"
0910 FA25 35 84                      PULS B,PC    RESTORE CONTENTS OF "B"
0911                         * RTS  ;
0911                         * RTS  ;
0912                         *
0912                         *
0913                         ***** "L" LOAD MIKBUG TAPE *****
0913                         ***** "L" LOAD MIKBUG TAPE *****
0914                         *
0914                         *
0915 FA27 BD FC 98           LOAD    JSR  ACINIZ
0915 FA27 BD FC 98           LOAD    JSR  ACINIZ
0916 FA2A 86 11                      LDA  #$11   LOAD 'DC1' CASS. READ ON CODE
0916 FA2A 86 11                      LDA  #$11   LOAD 'DC1' CASS. READ ON CODE
0917 FA2C 17 02 54                   LBSR OUTCH  OUTPUT IT TO TERMINAL PORT
0917 FA2C 17 02 54                   LBSR OUTCH  OUTPUT IT TO TERMINAL PORT
0918 FA2F 7F DF D2                   CLR  ECHO   TURN OFF ECHO FLAG
0918 FA2F 7F DF D2                   CLR  ECHO   TURN OFF ECHO FLAG
0919 FA32 17 02 26           LOAD1   LBSR ECHON  INPUT 8 BIT BYTE WITH NO ECHO
0919 FA32 17 02 26           LOAD1   LBSR ECHON  INPUT 8 BIT BYTE WITH NO ECHO
0920 FA35 81 53              LOAD2   CMPA #'S    IS IT AN "S", START CHARACTER ?
0920 FA35 81 53              LOAD2   CMPA #'S    IS IT AN "S", START CHARACTER ?
0921 FA37 26 F9                      BNE  LOAD1  IF NOT, DISCARD AND GET NEXT CHAR.
0921 FA37 26 F9                      BNE  LOAD1  IF NOT, DISCARD AND GET NEXT CHAR.
0922 FA39 17 02 1F                   LBSR ECHON
0922 FA39 17 02 1F                   LBSR ECHON
0923 FA3C 81 39                      CMPA #'9    IS IT A "9" , END OF FILE CHAR ?
0923 FA3C 81 39                      CMPA #'9    IS IT A "9" , END OF FILE CHAR ?
0924 FA3E 27 3D                      BEQ  LOAD21 IF SO, EXIT LOAD
0924 FA3E 27 3D                      BEQ  LOAD21 IF SO, EXIT LOAD
0925 FA40 81 31                      CMPA #'1    IS IT A "1" , FILE LOAD CHAR ?
0925 FA40 81 31                      CMPA #'1    IS IT A "1" , FILE LOAD CHAR ?
0926 FA42 26 F1                      BNE  LOAD2  IF NOT, LOOK FOR START CHAR.
0926 FA42 26 F1                      BNE  LOAD2  IF NOT, LOOK FOR START CHAR.
0927 FA44 17 01 A8                   LBSR BYTE   INPUT BYTE COUNT
0927 FA44 17 01 A8                   LBSR BYTE   INPUT BYTE COUNT
0928 FA47 34 02                      PSHS A      PUSH COUNT ON STACK
0928 FA47 34 02                      PSHS A      PUSH COUNT ON STACK
0929 FA49 29 26                      BVS  LODERR (V) C-CODE SET, ILLEGAL HEX
0929 FA49 29 26                      BVS  LODERR (V) C-CODE SET, ILLEGAL HEX
0930 FA4B 17 01 91                   LBSR IN1ADR INPUT LOAD ADDRESS
0930 FA4B 17 01 91                   LBSR IN1ADR INPUT LOAD ADDRESS
0931 FA4E 29 21                      BVS  LODERR (V) C-CODE SET, ADDR NOT HEX
0931 FA4E 29 21                      BVS  LODERR (V) C-CODE SET, ADDR NOT HEX
0932 FA50 34 10                      PSHS X      PUSH ADDR ON STACK
0932 FA50 34 10                      PSHS X      PUSH ADDR ON STACK
0933 FA52 E6 E0                      LDB  ,S+    LOAD MSB OF ADDR AS CHECKSUM BYTE
0933 FA52 E6 E0                      LDB  ,S+    LOAD MSB OF ADDR AS CHECKSUM BYTE
0934 FA54 EB E0                      ADDB ,S+    ADD LSB OF ADDR TO CHECKSUM
0934 FA54 EB E0                      ADDB ,S+    ADD LSB OF ADDR TO CHECKSUM
0935 FA56 EB E4                      ADDB ,S     ADD BYTE COUNT BYTE TO CHECKSUM
0935 FA56 EB E4                      ADDB ,S     ADD BYTE COUNT BYTE TO CHECKSUM
0936 FA58 6A E4                      DEC  ,S     $FC37 DECREMENT BYTE COUNT 2 TO BYPASS
0936 FA58 6A E4                      DEC  ,S     $FC37 DECREMENT BYTE COUNT 2 TO BYPASS
0937 FA5A 6A E4                      DEC  ,S     ADDRESS BYTES.
0937 FA5A 6A E4                      DEC  ,S     ADDRESS BYTES.
0938 FA5C 34 04              LOAD10  PSHS B      PUSH CHECKSUM ON STACK
0938 FA5C 34 04              LOAD10  PSHS B      PUSH CHECKSUM ON STACK
0939 FA5E 17 01 8E                   LBSR BYTE   INPUT DATA BYTE (2 HEX CHAR)
0939 FA5E 17 01 8E                   LBSR BYTE   INPUT DATA BYTE (2 HEX CHAR)
0940 FA61 35 04                      PULS B      POP CHECKSUM FROM STACK
0940 FA61 35 04                      PULS B      POP CHECKSUM FROM STACK
0941 FA63 29 0C                      BVS  LODERR (V) SET, DATA BYTE NOT HEX
0941 FA63 29 0C                      BVS  LODERR (V) SET, DATA BYTE NOT HEX
0942 FA65 34 02                      PSHS A      PUSH DATA BYTE ON STACK
0942 FA65 34 02                      PSHS A      PUSH DATA BYTE ON STACK
0943 FA67 EB E0                      ADDB ,S+    ADD DATA TO CHECKSUM, AUTO INC STACK
0943 FA67 EB E0                      ADDB ,S+    ADD DATA TO CHECKSUM, AUTO INC STACK
0944 FA69 6A E4                      DEC  ,S     DECREMENT BYTE COUNT 1
0944 FA69 6A E4                      DEC  ,S     DECREMENT BYTE COUNT 1
0945 FA6B 27 05                      BEQ  LOAD16 IF BYTE COUNT ZERO, TEST CHECKSUM
0945 FA6B 27 05                      BEQ  LOAD16 IF BYTE COUNT ZERO, TEST CHECKSUM
0946 FA6D A7 80                      STA  ,X+    SAVE DATA BYTE IN MEMORY
0946 FA6D A7 80                      STA  ,X+    SAVE DATA BYTE IN MEMORY
0947 FA6F 20 EB                      BRA  LOAD10 GET NEXT DATA BYTE
0947 FA6F 20 EB                      BRA  LOAD10 GET NEXT DATA BYTE
0948 FA71 5F                 LODERR  CLRB        ;ERROR CONDITION, ZERO CHECKSUM  ;
0948 FA71 5F                 LODERR  CLRB        ;ERROR CONDITION, ZERO CHECKSUM  ;
0949 FA72 35 02              LOAD16  PULS A      ADJUST STACK (REMOVE BYTE COUNT)
0949 FA72 35 02              LOAD16  PULS A      ADJUST STACK (REMOVE BYTE COUNT)
0950 FA74 C1 FF                      CMPB #$FF   CHECKSUM OK?
0950 FA74 C1 FF                      CMPB #$FF   CHECKSUM OK?
0951 FA76 27 BA                      BEQ  LOAD1  IF SO, LOAD NEXT LINE
0951 FA76 27 BA                      BEQ  LOAD1  IF SO, LOAD NEXT LINE
0952 FA78 86 3F                      LDA  #'?    LOAD (?) ERROR INDICATOR
0952 FA78 86 3F                      LDA  #'?    LOAD (?) ERROR INDICATOR
0953 FA7A 17 02 06                   LBSR OUTCH  OUTPUT IT TO TERMINAL
0953 FA7A 17 02 06                   LBSR OUTCH  OUTPUT IT TO TERMINAL
0954 FA7D 73 DF D2           LOAD21  COM  ECHO   TURN ECHO ON
0954 FA7D 73 DF D2           LOAD21  COM  ECHO   TURN ECHO ON
0955 FA80 86 13                      LDA  #$13   $FC5F LOAD 'DC3' CASS. READ OFF CODE
0955 FA80 86 13                      LDA  #$13   $FC5F LOAD 'DC3' CASS. READ OFF CODE
0956 FA82 16 01 FE                   LBRA OUTCH  OUTPUT IT
0956 FA82 16 01 FE                   LBRA OUTCH  OUTPUT IT
0957                         *
0957                         *
0958                         ***** "P" PUNCH MIKBUG TAPE *****
0958                         ***** "P" PUNCH MIKBUG TAPE *****
0959                         *
0959                         *
0960 FA85 6F E2              PUNCH   CLR  ,-S CLEAR RESERVED BYTE ON STACK
0960 FA85 6F E2              PUNCH   CLR  ,-S CLEAR RESERVED BYTE ON STACK
0961 FA87 17 01 4A                   LBSR IN2ADR GET BEGIN AND END ADDRESS
0961 FA87 17 01 4A                   LBSR IN2ADR GET BEGIN AND END ADDRESS
0962 FA8A 34 30                      PSHS X,Y SAVE ADDRESSES ON STACK
0962 FA8A 34 30                      PSHS X,Y SAVE ADDRESSES ON STACK
0963 FA8C 29 4D                      BVS  PUNEXT (V) C-CODE SET, EXIT PUNCH
0963 FA8C 29 4D                      BVS  PUNEXT (V) C-CODE SET, EXIT PUNCH
0964 FA8E AC 62                      CMPX 2,S COMPARE BEGIN TO END ADDR
0964 FA8E AC 62                      CMPX 2,S COMPARE BEGIN TO END ADDR
0965 FA90 25 49                      BCS  PUNEXT IF BEGIN GREATER THAN END, EXIT PUNCH
0965 FA90 25 49                      BCS  PUNEXT IF BEGIN GREATER THAN END, EXIT PUNCH
0966 FA92 30 01                      LEAX 1,X INCREMENT END ADDRESS
0966 FA92 30 01                      LEAX 1,X INCREMENT END ADDRESS
0967 FA94 AF E4                      STX  ,S STORE END ADDR ON STACK
0967 FA94 AF E4                      STX  ,S STORE END ADDR ON STACK
0968 FA96 BD FC 98                   JSR  ACINIZ
0968 FA96 BD FC 98                   JSR  ACINIZ
0969 FA99 86 12                      LDA  #$12 LOAD 'DC2' PUNCH ON CODE
0969 FA99 86 12                      LDA  #$12 LOAD 'DC2' PUNCH ON CODE
0970 FA9B 17 01 E5                   LBSR OUTCH OUTPUT IT TO TERMINAL
0970 FA9B 17 01 E5                   LBSR OUTCH OUTPUT IT TO TERMINAL
0971 FA9E EC E4              PUNCH2  LDD  ,S LOAD END ADDR IN D-ACC
0971 FA9E EC E4              PUNCH2  LDD  ,S LOAD END ADDR IN D-ACC
0972 FAA0 A3 62                      SUBD 2,S SUBTRACT BEGIN FROM END
0972 FAA0 A3 62                      SUBD 2,S SUBTRACT BEGIN FROM END
0973 FAA2 27 06                      BEQ  PUNCH3 SAME, PUNCH 32 BYTES DEFAULT
0973 FAA2 27 06                      BEQ  PUNCH3 SAME, PUNCH 32 BYTES DEFAULT
0974 FAA4 10 83 00 20                CMPD #$20 LESS THAN 32 BYTES?
0974 FAA4 10 83 00 20                CMPD #$20 LESS THAN 32 BYTES?
0975 FAA8 23 02                      BLS  PUNCH4 PUNCH THAT MANY BYTES
0975 FAA8 23 02                      BLS  PUNCH4 PUNCH THAT MANY BYTES
0976 FAAA C6 20              PUNCH3  LDB  #$20 LOAD BYTE COUNT OF 32.
0976 FAAA C6 20              PUNCH3  LDB  #$20 LOAD BYTE COUNT OF 32.
0977 FAAC E7 64              PUNCH4  STB  4,S STORE ON STACK AS BYTE COUNT
0977 FAAC E7 64              PUNCH4  STB  4,S STORE ON STACK AS BYTE COUNT
0978 FAAE 8E FF 03                   LDX  #MSG20 POINT TO MSG "S1"
0978 FAAE 8E FF 03                   LDX  #MSG20 POINT TO MSG "S1"
0979 FAB1 17 00 2F                   LBSR PSTRNG PRINT MSG
0979 FAB1 17 00 2F                   LBSR PSTRNG PRINT MSG
0980 FAB4 CB 03                      ADDB #3 ADD 3 BYTES TO BYTE COUNT
0980 FAB4 CB 03                      ADDB #3 ADD 3 BYTES TO BYTE COUNT
0981 FAB6 1F 98                      TFR  B,A GET BYTE COUNT IN A-ACC TO PUNCH
0981 FAB6 1F 98                      TFR  B,A GET BYTE COUNT IN A-ACC TO PUNCH
0982 FAB8 17 01 75                   LBSR OUT2H OUTPUT BYTE COUNT
0982 FAB8 17 01 75                   LBSR OUT2H OUTPUT BYTE COUNT
0983 FABB AE 62                      LDX  2,S LOAD BEGIN ADDRESS
0983 FABB AE 62                      LDX  2,S LOAD BEGIN ADDRESS
0984 FABD 17 01 68                   LBSR OUT4H PUNCH ADDRESS
0984 FABD 17 01 68                   LBSR OUT4H PUNCH ADDRESS
0985 FAC0 EB 62                      ADDB 2,S ADD ADDR MSB TO CHECKSUM
0985 FAC0 EB 62                      ADDB 2,S ADD ADDR MSB TO CHECKSUM
0986 FAC2 EB 63                      ADDB 3,S ADD ADDR LSB TO CHECKSUM
0986 FAC2 EB 63                      ADDB 3,S ADD ADDR LSB TO CHECKSUM
0987 FAC4 EB 84              PUNCHL  ADDB ,X ADD DATA BYTE TO CHECKSUM
0987 FAC4 EB 84              PUNCHL  ADDB ,X ADD DATA BYTE TO CHECKSUM
0988 FAC6 A6 80                      LDA  ,X+ LOAD DATA BYTE TO PUNCH
0988 FAC6 A6 80                      LDA  ,X+ LOAD DATA BYTE TO PUNCH
0989 FAC8 17 01 65                   LBSR OUT2H OUTPUT DATA BYTE
0989 FAC8 17 01 65                   LBSR OUT2H OUTPUT DATA BYTE
0990 FACB 6A 64                      DEC  4,S DECREMENT BYTE COUNT
0990 FACB 6A 64                      DEC  4,S DECREMENT BYTE COUNT
0991 FACD 26 F5                      BNE  PUNCHL NOT DONE, PUNCH NEXT BYTE
0991 FACD 26 F5                      BNE  PUNCHL NOT DONE, PUNCH NEXT BYTE
0992 FACF 53                         COMB  1's COMPLIMENT CHECKSUM BYTE
0992 FACF 53                         COMB  1's COMPLIMENT CHECKSUM BYTE
0993 FAD0 1F 98                      TFR  B,A GET IT IN A-ACC TO PUNCH
0993 FAD0 1F 98                      TFR  B,A GET IT IN A-ACC TO PUNCH
0994 FAD2 17 01 5B                   LBSR OUT2H OUTPUT CHECKSUM BYTE
0994 FAD2 17 01 5B                   LBSR OUT2H OUTPUT CHECKSUM BYTE
0995 FAD5 AF 62                      STX  2,S SAVE X-REG IN STACK AS NEW PUNCH ADDR
0995 FAD5 AF 62                      STX  2,S SAVE X-REG IN STACK AS NEW PUNCH ADDR
0996 FAD7 AC E4                      CMPX ,S COMPARE IT TO END ADDR
0996 FAD7 AC E4                      CMPX ,S COMPARE IT TO END ADDR
0997 FAD9 26 C3                      BNE  PUNCH2      $FCB5 PUNCH NOT DONE, CONT.
0997 FAD9 26 C3                      BNE  PUNCH2      $FCB5 PUNCH NOT DONE, CONT.
0998 FADB 86 14              PUNEXT  LDA  #$14 LOAD 'DC4' PUNCH OFF CODE
0998 FADB 86 14              PUNEXT  LDA  #$14 LOAD 'DC4' PUNCH OFF CODE
0999 FADD 17 01 A3                   LBSR OUTCH OUTPUT IT
0999 FADD 17 01 A3                   LBSR OUTCH OUTPUT IT
1000 FAE0 32 65                      LEAS 5,S READJUST STACK POINTER
1000 FAE0 32 65                      LEAS 5,S READJUST STACK POINTER
1001 FAE2 39                         RTS  ;
1001 FAE2 39                         RTS  ;
1002                         *
1002                         *
1003                         * PRINT STRING PRECEEDED BY A CR & LF.
1003                         * PRINT STRING PRECEEDED BY A CR & LF.
1004                         *
1004                         *
1005 FAE3 8D 02              PSTRNG BSR PCRLF PRINT CR/LF
1005 FAE3 8D 02              PSTRNG BSR PCRLF PRINT CR/LF
1006 FAE5 20 71                     BRA  PDATA  PRINT STRING POINTED TO BY IX
1006 FAE5 20 71                     BRA  PDATA  PRINT STRING POINTED TO BY IX
1007                         *
1007                         *
1008                         * PCRLF
1008                         * PCRLF
1009                         *
1009                         *
1010 FAE7 34 10              PCRLF  PSHS X SAVE IX
1010 FAE7 34 10              PCRLF  PSHS X SAVE IX
1011 FAE9 8E FE B4                  LDX  #MSG2+1  POINT TO MSG CR/LF + 3 NULS
1011 FAE9 8E FE B4                  LDX  #MSG2+1  POINT TO MSG CR/LF + 3 NULS
1012 FAEC 17 00 69                  LBSR PDATA  PRINT MSG
1012 FAEC 17 00 69                  LBSR PDATA  PRINT MSG
1013 FAEF 35 90                     PULS X,PC RESTORE IX & RETURN
1013 FAEF 35 90                     PULS X,PC RESTORE IX & RETURN
1014                         *
1014                         *
1015                         * LONG BRANCHES TO COMMON ROUTINES
1015                         * LONG BRANCHES TO COMMON ROUTINES
1016                         *
1016                         *
1017 FAF1 16 01 8D           JOUT1S  LBRA OUT1S
1017 FAF1 16 01 8D           JOUT1S  LBRA OUT1S
1018 FAF4 16 00 F8           JBYTE   LBRA BYTE
1018 FAF4 16 00 F8           JBYTE   LBRA BYTE
1019 FAF7 16 00 E5           JIN1ADR LBRA IN1ADR
1019 FAF7 16 00 E5           JIN1ADR LBRA IN1ADR
1020                         *
1020                         *
1021                         * ALTER "PC" PROGRAM COUNTER
1021                         * ALTER "PC" PROGRAM COUNTER
1022                         *
1022                         *
1023 FAFA 17 00 91           ALTRPC  LBSR  PRTPC   $FCF5 PRINT MSG " PC = "
1023 FAFA 17 00 91           ALTRPC  LBSR  PRTPC   $FCF5 PRINT MSG " PC = "
1024 FAFD 8D F2              ALTPC1  BSR  JOUT1S   OUTPUT SPACE
1024 FAFD 8D F2              ALTPC1  BSR  JOUT1S   OUTPUT SPACE
1025 FAFF 8D F6                      BSR  JIN1ADR  GET NEW CONTENTS FOR "PC"
1025 FAFF 8D F6                      BSR  JIN1ADR  GET NEW CONTENTS FOR "PC"
1026 FB01 29 02                      BVS  ALTPCD  EXIT IF INVALID HEX
1026 FB01 29 02                      BVS  ALTPCD  EXIT IF INVALID HEX
1027 FB03 AF 4A                      STX  10,U    POKE IN NEW CONTENTS
1027 FB03 AF 4A                      STX  10,U    POKE IN NEW CONTENTS
1028 FB05 39                 ALTPCD  RTS          ;
1028 FB05 39                 ALTPCD  RTS          ;
1029                         *
1029                         *
1030                         * ALTER "U" USER STACK POINTER
1030                         * ALTER "U" USER STACK POINTER
1031                         *
1031                         *
1032 FB06 8D 61              ALTRU   BSR  PRTUS   $FCCA PRINT MSG " US = "
1032 FB06 8D 61              ALTRU   BSR  PRTUS   $FCCA PRINT MSG " US = "
1033 FB08 8D E7                      BSR  JOUT1S   OUTPUT SPACE
1033 FB08 8D E7                      BSR  JOUT1S   OUTPUT SPACE
1034 FB0A 8D EB                      BSR  JIN1ADR
1034 FB0A 8D EB                      BSR  JIN1ADR
1035 FB0C 29 02                      BVS  ALTUD
1035 FB0C 29 02                      BVS  ALTUD
1036 FB0E AF 48                      STX  8,U
1036 FB0E AF 48                      STX  8,U
1037 FB10 39                 ALTUD   RTS ;
1037 FB10 39                 ALTUD   RTS ;
1038                         *
1038                         *
1039                         * ALTER "Y" INDEX REGISTER
1039                         * ALTER "Y" INDEX REGISTER
1040                         *
1040                         *
1041 FB11 8D 72              ALTRY   BSR  PRTIY   PRINT MSG " IY = "
1041 FB11 8D 72              ALTRY   BSR  PRTIY   PRINT MSG " IY = "
1042 FB13 8D DC                      BSR  JOUT1S   OUTPUT SPACE
1042 FB13 8D DC                      BSR  JOUT1S   OUTPUT SPACE
1043 FB15 8D E0                      BSR  JIN1ADR
1043 FB15 8D E0                      BSR  JIN1ADR
1044 FB17 29 02                      BVS  ALTYD
1044 FB17 29 02                      BVS  ALTYD
1045 FB19 AF 46                      STX  6,U     $F8F0
1045 FB19 AF 46                      STX  6,U     $F8F0
1046 FB1B 39                 ALTYD   RTS ;
1046 FB1B 39                 ALTYD   RTS ;
1047                         *
1047                         *
1048                         * ALTER "X" INDEX REGISTER
1048                         * ALTER "X" INDEX REGISTER
1049                         *
1049                         *
1050 FB1C 8D 5E              ALTRX   BSR  PRTIX   $FCE0 PRINT MSG " IX = "
1050 FB1C 8D 5E              ALTRX   BSR  PRTIX   $FCE0 PRINT MSG " IX = "
1051 FB1E 8D D1                      BSR  JOUT1S   OUTPUT SPACE
1051 FB1E 8D D1                      BSR  JOUT1S   OUTPUT SPACE
1052 FB20 8D D5                      BSR  JIN1ADR
1052 FB20 8D D5                      BSR  JIN1ADR
1053 FB22 29 02                      BVS  ALTXD
1053 FB22 29 02                      BVS  ALTXD
1054 FB24 AF 44                      STX  4,U
1054 FB24 AF 44                      STX  4,U
1055 FB26 39                 ALTXD   RTS ;
1055 FB26 39                 ALTXD   RTS ;
1056                         *
1056                         *
1057                         * ALTER "DP" DIRECT PAGE REGISTER
1057                         * ALTER "DP" DIRECT PAGE REGISTER
1058                         *
1058                         *
1059 FB27 8D 49              ALTRDP  BSR  PRTDP   $FCD5 PRINT MSG " DP = "
1059 FB27 8D 49              ALTRDP  BSR  PRTDP   $FCD5 PRINT MSG " DP = "
1060 FB29 8D C6                      BSR  JOUT1S   OUTPUT SPACE
1060 FB29 8D C6                      BSR  JOUT1S   OUTPUT SPACE
1061 FB2B 8D C7                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1061 FB2B 8D C7                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1062 FB2D 29 02                      BVS  ALTDPD
1062 FB2D 29 02                      BVS  ALTDPD
1063 FB2F A7 43                      STA  3,U
1063 FB2F A7 43                      STA  3,U
1064 FB31 39                 ALTDPD  RTS ;
1064 FB31 39                 ALTDPD  RTS ;
1065                         *
1065                         *
1066                         * ALTER "B" ACCUMULATOR
1066                         * ALTER "B" ACCUMULATOR
1067                         *
1067                         *
1068 FB32 8D 6C              ALTRB   BSR  PRTB    $FD09 PRINT MSG " B = "
1068 FB32 8D 6C              ALTRB   BSR  PRTB    $FD09 PRINT MSG " B = "
1069 FB34 8D BB                      BSR  JOUT1S   OUTPUT SPACE
1069 FB34 8D BB                      BSR  JOUT1S   OUTPUT SPACE
1070 FB36 8D BC                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1070 FB36 8D BC                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1071 FB38 29 02                      BVS  ALTBD
1071 FB38 29 02                      BVS  ALTBD
1072 FB3A A7 42                      STA  2,U
1072 FB3A A7 42                      STA  2,U
1073 FB3C 39                 ALTBD   RTS          $F91C
1073 FB3C 39                 ALTBD   RTS          $F91C
1074                         *
1074                         *
1075                         * ALTER "A" ACCUMULATOR
1075                         * ALTER "A" ACCUMULATOR
1076                         *
1076                         *
1077 FB3D 8D 58              ALTRA   BSR  PRTA    $FCFF RINT MSG " A = "
1077 FB3D 8D 58              ALTRA   BSR  PRTA    $FCFF RINT MSG " A = "
1078 FB3F 8D B0                      BSR  JOUT1S   OUTPUT SPACE
1078 FB3F 8D B0                      BSR  JOUT1S   OUTPUT SPACE
1079 FB41 8D B1                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1079 FB41 8D B1                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1080 FB43 29 02                      BVS  ALTAD
1080 FB43 29 02                      BVS  ALTAD
1081 FB45 A7 41                      STA  1,U
1081 FB45 A7 41                      STA  1,U
1082 FB47 39                 ALTAD   RTS ;
1082 FB47 39                 ALTAD   RTS ;
1083                         *
1083                         *
1084                         * ALTER "CC" REGISTER
1084                         * ALTER "CC" REGISTER
1085                         *
1085                         *
1086 FB48 8D 5F              ALTRCC  BSR  PRTCC   $FD13 PRINT MSG " CC: "
1086 FB48 8D 5F              ALTRCC  BSR  PRTCC   $FD13 PRINT MSG " CC: "
1087 FB4A 8D A5                      BSR  JOUT1S   OUTPUT SPACE
1087 FB4A 8D A5                      BSR  JOUT1S   OUTPUT SPACE
1088 FB4C 8D A6                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1088 FB4C 8D A6                      BSR  JBYTE    INPUT BYTE (2 HEX CHAR)
1089 FB4E 29 04                      BVS  ALTCCD
1089 FB4E 29 04                      BVS  ALTCCD
1090 FB50 8A 80                      ORA  #$80    SETS "E" FLAG IN PRINT LIST
1090 FB50 8A 80                      ORA  #$80    SETS "E" FLAG IN PRINT LIST
1091 FB52 A7 C4                      STA  ,U
1091 FB52 A7 C4                      STA  ,U
1092 FB54 39                 ALTCCD  RTS ;
1092 FB54 39                 ALTCCD  RTS ;
1093                         *
1093                         *
1094                         * PDATA
1094                         * PDATA
1095                         *
1095                         *
1096 FB55 17 01 2B           PRINT LBSR OUTCH
1096 FB55 17 01 2B           PRINT LBSR OUTCH
1097 FB58 A6 80              PDATA LDA  ,X+ GET 1st CHAR. TO PRINT
1097 FB58 A6 80              PDATA LDA  ,X+ GET 1st CHAR. TO PRINT
1098 FB5A 81 04                    CMPA #4 IS IT EOT?
1098 FB5A 81 04                    CMPA #4 IS IT EOT?
1099 FB5C 26 F7                    BNE  PRINT IF NOT EOT PRINT IT
1099 FB5C 26 F7                    BNE  PRINT IF NOT EOT PRINT IT
1100 FB5E 39                       RTS  ;
1100 FB5E 39                       RTS  ;
1101                         *
1101                         *
1102                         * PRINT REGISTERS
1102                         * PRINT REGISTERS
1103                         *
1103                         *
1104 FB5F 8E FE C6           PRTSP  LDX  #MSG10 POINT TO MSG "SP="
1104 FB5F 8E FE C6           PRTSP  LDX  #MSG10 POINT TO MSG "SP="
1105 FB62 8D F4                     BSR  PDATA  PRINT MSG
1105 FB62 8D F4                     BSR  PDATA  PRINT MSG
1106 FB64 1F 31                     TFR  U,X
1106 FB64 1F 31                     TFR  U,X
1107 FB66 16 00 BF           JOUT4H LBRA OUT4H
1107 FB66 16 00 BF           JOUT4H LBRA OUT4H
1108                         *
1108                         *
1109 FB69 8E FE D2           PRTUS  LDX  #MSG12 POINT TO MSG "US="
1109 FB69 8E FE D2           PRTUS  LDX  #MSG12 POINT TO MSG "US="
1110 FB6C 8D EA                     BSR  PDATA  PRINT MSG
1110 FB6C 8D EA                     BSR  PDATA  PRINT MSG
1111 FB6E AE 48                     LDX  8,U
1111 FB6E AE 48                     LDX  8,U
1112 FB70 20 F4                     BRA  JOUT4H
1112 FB70 20 F4                     BRA  JOUT4H
1113                         *
1113                         *
1114 FB72 8E FE E4           PRTDP  LDX   #MSG15 POINT TO MSG "DP="
1114 FB72 8E FE E4           PRTDP  LDX   #MSG15 POINT TO MSG "DP="
1115 FB75 8D E1                     BSR  PDATA  PRINT MSG
1115 FB75 8D E1                     BSR  PDATA  PRINT MSG
1116 FB77 A6 43                     LDA  3,U
1116 FB77 A6 43                     LDA  3,U
1117 FB79 16 00 B4           JOUT2H LBRA OUT2H OUTPUT HEX BYTE AS ASCII
1117 FB79 16 00 B4           JOUT2H LBRA OUT2H OUTPUT HEX BYTE AS ASCII
1118                         *
1118                         *
1119 FB7C 8E FE DE           PRTIX  LDX  #MSG14 POINT TO MSG "IX="
1119 FB7C 8E FE DE           PRTIX  LDX  #MSG14 POINT TO MSG "IX="
1120 FB7F 8D D7                     BSR  PDATA  PRINT MSG
1120 FB7F 8D D7                     BSR  PDATA  PRINT MSG
1121 FB81 AE 44                     LDX  4,U      $FCE6
1121 FB81 AE 44                     LDX  4,U      $FCE6
1122 FB83 20 E1                     BRA  JOUT4H
1122 FB83 20 E1                     BRA  JOUT4H
1123                         *
1123                         *
1124 FB85 8E FE D8           PRTIY  LDX  #MSG13 POINT TO MSG "IY="
1124 FB85 8E FE D8           PRTIY  LDX  #MSG13 POINT TO MSG "IY="
1125 FB88 8D CE                     BSR  PDATA  PRINT MSG
1125 FB88 8D CE                     BSR  PDATA  PRINT MSG
1126 FB8A AE 46                     LDX  6,U
1126 FB8A AE 46                     LDX  6,U
1127 FB8C 20 D8                     BRA  JOUT4H
1127 FB8C 20 D8                     BRA  JOUT4H
1128                         *
1128                         *
1129 FB8E 8E FE CC           PRTPC  LDX  #MSG11 POINT TO MSG "PC="
1129 FB8E 8E FE CC           PRTPC  LDX  #MSG11 POINT TO MSG "PC="
1130 FB91 8D C5                     BSR  PDATA  PRINT MSG
1130 FB91 8D C5                     BSR  PDATA  PRINT MSG
1131 FB93 AE 4A                     LDX  10,U
1131 FB93 AE 4A                     LDX  10,U
1132 FB95 20 CF                     BRA  JOUT4H
1132 FB95 20 CF                     BRA  JOUT4H
1133                         *
1133                         *
1134 FB97 8E FE EA           PRTA   LDX  #MSG16 POINT TO MSG "A="
1134 FB97 8E FE EA           PRTA   LDX  #MSG16 POINT TO MSG "A="
1135 FB9A 8D BC                     BSR  PDATA  PRINT MSG
1135 FB9A 8D BC                     BSR  PDATA  PRINT MSG
1136 FB9C A6 41                     LDA  1,U
1136 FB9C A6 41                     LDA  1,U
1137 FB9E 20 D9                     BRA  JOUT2H OUTPUT HEX BYTE AS ASCII
1137 FB9E 20 D9                     BRA  JOUT2H OUTPUT HEX BYTE AS ASCII
1138                         *
1138                         *
1139 FBA0 8E FE EF           PRTB   LDX  #MSG17 POINT TO MSG "B="
1139 FBA0 8E FE EF           PRTB   LDX  #MSG17 POINT TO MSG "B="
1140 FBA3 8D B3                     BSR  PDATA  PRINT MSG
1140 FBA3 8D B3                     BSR  PDATA  PRINT MSG
1141 FBA5 A6 42                     LDA  2,U
1141 FBA5 A6 42                     LDA  2,U
1142 FBA7 20 D0                     BRA  JOUT2H OUTPUT HEX BYTE AS ASCII
1142 FBA7 20 D0                     BRA  JOUT2H OUTPUT HEX BYTE AS ASCII
1143                         *
1143                         *
1144 FBA9 8E FE F4           PRTCC  LDX  #MSG18 POINT TO MSG "CC:"
1144 FBA9 8E FE F4           PRTCC  LDX  #MSG18 POINT TO MSG "CC:"
1145 FBAC 8D AA                     BSR  PDATA  PRINT MSG
1145 FBAC 8D AA                     BSR  PDATA  PRINT MSG
1146 FBAE A6 C4                     LDA  ,U
1146 FBAE A6 C4                     LDA  ,U
1147 FBB0 8E FE FB                  LDX  #MSG19 POINT TO MSG "EFHINZVC"
1147 FBB0 8E FE FB                  LDX  #MSG19 POINT TO MSG "EFHINZVC"
1148 FBB3 16 00 90                  LBRA BIASCI OUTPUT IN BINARY/ASCII FORMAT
1148 FBB3 16 00 90                  LBRA BIASCI OUTPUT IN BINARY/ASCII FORMAT
1149                         *
1149                         *
1150                         * "R" DISPLAY REGISTERS
1150                         * "R" DISPLAY REGISTERS
1151                         *
1151                         *
1152 FBB6 8E FE C2           REGSTR  LDX  #MSG5   POINT TO MSG " - "
1152 FBB6 8E FE C2           REGSTR  LDX  #MSG5   POINT TO MSG " - "
1153 FBB9 17 FF 27                   LBSR PSTRNG  PRINT MSG
1153 FBB9 17 FF 27                   LBSR PSTRNG  PRINT MSG
1154 FBBC 8D A1                      BSR PRTSP   $FCBF
1154 FBBC 8D A1                      BSR PRTSP   $FCBF
1155 FBBE 8D A9                      BSR PRTUS   $FCCA
1155 FBBE 8D A9                      BSR PRTUS   $FCCA
1156 FBC0 8D B0                      BSR PRTDP   $FCD5
1156 FBC0 8D B0                      BSR PRTDP   $FCD5
1157 FBC2 8D B8                      BSR PRTIX   $FCE0
1157 FBC2 8D B8                      BSR PRTIX   $FCE0
1158 FBC4 8D BF                      BSR PRTIY   $FCEB
1158 FBC4 8D BF                      BSR PRTIY   $FCEB
1159 FBC6 8E FE C2                   LDX  #MSG5   POINT TO MSG " - "
1159 FBC6 8E FE C2                   LDX  #MSG5   POINT TO MSG " - "
1160 FBC9 17 FF 17                   LBSR PSTRNG  PRINT MSG
1160 FBC9 17 FF 17                   LBSR PSTRNG  PRINT MSG
1161 FBCC 8D C0                      BSR PRTPC   $FCF5
1161 FBCC 8D C0                      BSR PRTPC   $FCF5
1162 FBCE 8D C7                      BSR PRTA    $FCFF
1162 FBCE 8D C7                      BSR PRTA    $FCFF
1163 FBD0 8D CE                      BSR PRTB    $FD09
1163 FBD0 8D CE                      BSR PRTB    $FD09
1164 FBD2 20 D5                      BRA PRTCC   $FD13
1164 FBD2 20 D5                      BRA PRTCC   $FD13
1165                         *
1165                         *
1166                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
1166                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
1167                         * OPERATOR TO INPUT TWO VALID HEX ADDRESSES.
1167                         * OPERATOR TO INPUT TWO VALID HEX ADDRESSES.
1168                         * THE FIRST ADDRESS INPUT IS RETURNED IN "IY".
1168                         * THE FIRST ADDRESS INPUT IS RETURNED IN "IY".
1169                         * THE SECOND IS RETURNED IN "IX". THE "V" BIT
1169                         * THE SECOND IS RETURNED IN "IX". THE "V" BIT
1170                         * IN THE C-CODE REG. IS SET IF AN INVALID HEX
1170                         * IN THE C-CODE REG. IS SET IF AN INVALID HEX
1171                         * ADDRESS IS INPUT.
1171                         * ADDRESS IS INPUT.
1172                         *
1172                         *
1173 FBD4 8D 09              IN2ADR BSR IN1ADR GET FIRST ADDRESS
1173 FBD4 8D 09              IN2ADR BSR IN1ADR GET FIRST ADDRESS
1174 FBD6 29 4D                     BVS NOTHEX EXIT IF NOT VALID HEX
1174 FBD6 29 4D                     BVS NOTHEX EXIT IF NOT VALID HEX
1175 FBD8 1F 12                     TFR  X,Y SAVE FIRST ADDR. IN "IY"
1175 FBD8 1F 12                     TFR  X,Y SAVE FIRST ADDR. IN "IY"
1176 FBDA 86 2D                     LDA #'-
1176 FBDA 86 2D                     LDA #'-
1177 FBDC 17 00 A4                  LBSR OUTCH PRINT " - "
1177 FBDC 17 00 A4                  LBSR OUTCH PRINT " - "
1178                         *
1178                         *
1179                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
1179                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
1180                         * OPERATOR TO INPUT ONE VALID HEX ADDRESS. THE
1180                         * OPERATOR TO INPUT ONE VALID HEX ADDRESS. THE
1181                         * ADDRESS IS RETURNED IN THE "X" REGISTER.
1181                         * ADDRESS IS RETURNED IN THE "X" REGISTER.
1182                         *
1182                         *
1183 FBDF 8D 0E              IN1ADR BSR BYTE INPUT BYTE (2 HEX CHAR)
1183 FBDF 8D 0E              IN1ADR BSR BYTE INPUT BYTE (2 HEX CHAR)
1184 FBE1 29 42                     BVS NOTHEX EXIT IF NOT VALID HEX
1184 FBE1 29 42                     BVS NOTHEX EXIT IF NOT VALID HEX
1185 FBE3 1F 01                     TFR  D,X
1185 FBE3 1F 01                     TFR  D,X
1186 FBE5 8D 08                     BSR BYTE INPUT BYTE (2 HEX CHAR)
1186 FBE5 8D 08                     BSR BYTE INPUT BYTE (2 HEX CHAR)
1187 FBE7 29 3C                     BVS NOTHEX
1187 FBE7 29 3C                     BVS NOTHEX
1188 FBE9 34 10                     PSHS X
1188 FBE9 34 10                     PSHS X
1189 FBEB A7 61                     STA  1,S
1189 FBEB A7 61                     STA  1,S
1190 FBED 35 90                     PULS X,PC
1190 FBED 35 90                     PULS X,PC
1191                         *
1191                         *
1192                         ***** INPUT BYTE (2 HEX CHAR.) *****
1192                         ***** INPUT BYTE (2 HEX CHAR.) *****
1193                         *
1193                         *
1194 FBEF 8D 11              BYTE   BSR INHEX GET HEX LEFT
1194 FBEF 8D 11              BYTE   BSR INHEX GET HEX LEFT
1195 FBF1 29 32                     BVS NOTHEX EXIT IF NOT VALID HEX
1195 FBF1 29 32                     BVS NOTHEX EXIT IF NOT VALID HEX
1196 FBF3 48                        ASLA   ;
1196 FBF3 48                        ASLA   ;
1197 FBF4 48                        ASLA   ;
1197 FBF4 48                        ASLA   ;
1198 FBF5 48                        ASLA   ; SHIFT INTO LEFT NIBBLE
1198 FBF5 48                        ASLA   ; SHIFT INTO LEFT NIBBLE
1199 FBF6 48                        ASLA   ;
1199 FBF6 48                        ASLA   ;
1200 FBF7 1F 89                     TFR  A,B PUT HEXL IN "B"
1200 FBF7 1F 89                     TFR  A,B PUT HEXL IN "B"
1201 FBF9 8D 07                     BSR INHEX GET HEX RIGHT
1201 FBF9 8D 07                     BSR INHEX GET HEX RIGHT
1202 FBFB 29 28                     BVS NOTHEX EXIT IF NOT VALID HEX
1202 FBFB 29 28                     BVS NOTHEX EXIT IF NOT VALID HEX
1203 FBFD 34 04                     PSHS B PUSH HEXL ON STACK
1203 FBFD 34 04                     PSHS B PUSH HEXL ON STACK
1204 FBFF AB E0                     ADDA ,S+ ADD HEXL TO HEXR AND ADJ. STK
1204 FBFF AB E0                     ADDA ,S+ ADD HEXL TO HEXR AND ADJ. STK
1205 FC01 39                        RTS  RETURN WITH HEX L&R IN "A"
1205 FC01 39                        RTS  RETURN WITH HEX L&R IN "A"
1206                         *
1206                         *
1207                         *
1207                         *
1208 FC02 8D 57              INHEX  BSR ECHON INPUT ASCII CHAR.
1208 FC02 8D 57              INHEX  BSR ECHON INPUT ASCII CHAR.
1209 FC04 81 30                     CMPA #'0 IS IT > OR = "0" ?
1209 FC04 81 30                     CMPA #'0 IS IT > OR = "0" ?
1210 FC06 25 1D                     BCS NOTHEX IF LESS IT AIN'T HEX
1210 FC06 25 1D                     BCS NOTHEX IF LESS IT AIN'T HEX
1211 FC08 81 39                     CMPA #'9 IS IT < OR = "9" ?
1211 FC08 81 39                     CMPA #'9 IS IT < OR = "9" ?
1212 FC0A 22 03                     BHI INHEXA IF > MAYBE IT'S ALPHA
1212 FC0A 22 03                     BHI INHEXA IF > MAYBE IT'S ALPHA
1213 FC0C 80 30                     SUBA #$30 ASCII ADJ. NUMERIC
1213 FC0C 80 30                     SUBA #$30 ASCII ADJ. NUMERIC
1214 FC0E 39                        RTS  ;
1214 FC0E 39                        RTS  ;
1215                         *
1215                         *
1216                         *
1216                         *
1217 FC0F 81 41              INHEXA CMPA #'A IS IT > OR = "A"
1217 FC0F 81 41              INHEXA CMPA #'A IS IT > OR = "A"
1218 FC11 25 12                     BCS NOTHEX IF LESS IT AIN'T HEX
1218 FC11 25 12                     BCS NOTHEX IF LESS IT AIN'T HEX
1219 FC13 81 46                     CMPA #'F IS IT < OR = "F" ?
1219 FC13 81 46                     CMPA #'F IS IT < OR = "F" ?
1220 FC15 22 03                     BHI INHEXL IF > IT AIN'T HEX
1220 FC15 22 03                     BHI INHEXL IF > IT AIN'T HEX
1221 FC17 80 37                     SUBA #$37 ASCII ADJ. ALPHA
1221 FC17 80 37                     SUBA #$37 ASCII ADJ. ALPHA
1222 FC19 39                        RTS  ;
1222 FC19 39                        RTS  ;
1223                         *
1223                         *
1224 FC1A 81 61              INHEXL CMPA #'a IS IT > OR = "a"
1224 FC1A 81 61              INHEXL CMPA #'a IS IT > OR = "a"
1225 FC1C 25 07                     BCS NOTHEX IF LESS IT AIN'T HEX
1225 FC1C 25 07                     BCS NOTHEX IF LESS IT AIN'T HEX
1226 FC1E 81 66                     CMPA #'f IS IT < "f"
1226 FC1E 81 66                     CMPA #'f IS IT < "f"
1227 FC20 22 03                     BHI NOTHEX IF > IT AIN'T HEX
1227 FC20 22 03                     BHI NOTHEX IF > IT AIN'T HEX
1228 FC22 80 57                     SUBA #$57 ADJUST TO LOWER CASE
1228 FC22 80 57                     SUBA #$57 ADJUST TO LOWER CASE
1229 FC24 39                        RTS  ;
1229 FC24 39                        RTS  ;
1230                         *
1230                         *
1231                         *
1231                         *
1232 FC25 1A 02              NOTHEX ORCC #2 SET (V) FLAG IN C-CODES REGISTER
1232 FC25 1A 02              NOTHEX ORCC #2 SET (V) FLAG IN C-CODES REGISTER
1233 FC27 39                        RTS  ;
1233 FC27 39                        RTS  ;
1234                         *
1234                         *
1235                         *
1235                         *
1236 FC28 34 10              OUT4H  PSHS X PUSH X-REG. ON THE STACK
1236 FC28 34 10              OUT4H  PSHS X PUSH X-REG. ON THE STACK
1237 FC2A 35 02                     PULS A POP MS BYTE OF X-REG INTO A-ACC.
1237 FC2A 35 02                     PULS A POP MS BYTE OF X-REG INTO A-ACC.
1238 FC2C 8D 02                     BSR OUTHL OUTPUT HEX LEFT
1238 FC2C 8D 02                     BSR OUTHL OUTPUT HEX LEFT
1239 FC2E 35 02                     PULS A POP LS BYTE OF X-REG INTO A-ACC.
1239 FC2E 35 02                     PULS A POP LS BYTE OF X-REG INTO A-ACC.
1240 FC30                    OUTHL  EQU *
1240 FC30                    OUTHL  EQU *
1241 FC30 34 02              OUT2H  PSHS A SAVE IT BACK ON STACK
1241 FC30 34 02              OUT2H  PSHS A SAVE IT BACK ON STACK
1242 FC32 44                        LSRA CONVERT UPPER HEX NIBBLE TO ASCII
1242 FC32 44                        LSRA CONVERT UPPER HEX NIBBLE TO ASCII
1243 FC33 44                        LSRA  ;
1243 FC33 44                        LSRA  ;
1244 FC34 44                        LSRA  ;
1244 FC34 44                        LSRA  ;
1245 FC35 44                        LSRA  ;
1245 FC35 44                        LSRA  ;
1246 FC36 8D 04                     BSR XASCII PRINT HEX NIBBLE AS ASCII
1246 FC36 8D 04                     BSR XASCII PRINT HEX NIBBLE AS ASCII
1247 FC38 35 02              OUTHR  PULS A CONVERT LOWER HEX NIBBLE TO ASCII
1247 FC38 35 02              OUTHR  PULS A CONVERT LOWER HEX NIBBLE TO ASCII
1248 FC3A 84 0F                     ANDA #$0F STRIP LEFT NIBBLE
1248 FC3A 84 0F                     ANDA #$0F STRIP LEFT NIBBLE
1249 FC3C 8B 30              XASCII ADDA #$30 ASCII ADJ
1249 FC3C 8B 30              XASCII ADDA #$30 ASCII ADJ
1250 FC3E 81 39                     CMPA #$39 IS IT < OR = "9" ?
1250 FC3E 81 39                     CMPA #$39 IS IT < OR = "9" ?
1251 FC40 2F 02                     BLE  OUTC IF LESS, OUTPUT IT
1251 FC40 2F 02                     BLE  OUTC IF LESS, OUTPUT IT
1252 FC42 8B 07                     ADDA #7 IF > MAKE ASCII LETTER
1252 FC42 8B 07                     ADDA #7 IF > MAKE ASCII LETTER
1253 FC44 20 3D              OUTC   BRA  OUTCH OUTPUT CHAR
1253 FC44 20 3D              OUTC   BRA  OUTCH OUTPUT CHAR
1254                         *
1254                         *
1255                         * BINARY / ASCII --- THIS ROUTINE
1255                         * BINARY / ASCII --- THIS ROUTINE
1256                         * OUTPUTS A BYTE IN ENHANCED
1256                         * OUTPUTS A BYTE IN ENHANCED
1257                         * BINARY FORMAT. THE ENHANCEMENT
1257                         * BINARY FORMAT. THE ENHANCEMENT
1258                         * IS DONE BY SUBSTITUTING ASCII
1258                         * IS DONE BY SUBSTITUTING ASCII
1259                         * LETTERS FOR THE ONES IN THE BYTE.
1259                         * LETTERS FOR THE ONES IN THE BYTE.
1260                         * THE ASCII ENHANCEMENT LETTERS
1260                         * THE ASCII ENHANCEMENT LETTERS
1261                         * ARE OBTAINED FROM THE STRING
1261                         * ARE OBTAINED FROM THE STRING
1262                         * POINTED TO BY THE INDEX REG. "X".
1262                         * POINTED TO BY THE INDEX REG. "X".
1263                         *
1263                         *
1264 FC46 34 02              BIASCI PSHS A SAVE "A" ON STACK
1264 FC46 34 02              BIASCI PSHS A SAVE "A" ON STACK
1265 FC48 C6 08                     LDB  #8 PRESET LOOP# TO BITS PER BYTE
1265 FC48 C6 08                     LDB  #8 PRESET LOOP# TO BITS PER BYTE
1266 FC4A A6 80              OUTBA  LDA ,X+ GET LETTER FROM STRING
1266 FC4A A6 80              OUTBA  LDA ,X+ GET LETTER FROM STRING
1267 FC4C 68 E4                     ASL  ,S TEST BYTE FOR "1" IN B7
1267 FC4C 68 E4                     ASL  ,S TEST BYTE FOR "1" IN B7
1268 FC4E 25 02                     BCS PRTBA IF ONE PRINT LETTER
1268 FC4E 25 02                     BCS PRTBA IF ONE PRINT LETTER
1269 FC50 86 2D                     LDA #'- IF ZERO PRINT "-"
1269 FC50 86 2D                     LDA #'- IF ZERO PRINT "-"
1270 FC52 8D 2F              PRTBA  BSR OUTCH PRINT IT
1270 FC52 8D 2F              PRTBA  BSR OUTCH PRINT IT
1271 FC54 8D 2B                     BSR OUT1S PRINT SPACE
1271 FC54 8D 2B                     BSR OUT1S PRINT SPACE
1272 FC56 5A                        DECB SUB 1 FROM #BITS YET TO PRINT
1272 FC56 5A                        DECB SUB 1 FROM #BITS YET TO PRINT
1273 FC57 26 F1                     BNE OUTBA
1273 FC57 26 F1                     BNE OUTBA
1274 FC59 35 82                     PULS A,PC
1274 FC59 35 82                     PULS A,PC
1275                         *
1275                         *
1276                                IFD EXTOPT
1276                                IFD EXTOPT
1277                         *
1277                         *
1278                         * EXTENDED USER COMMANDS
1278                         * EXTENDED USER COMMANDS
1279                         *
1279                         *
1280                         USRCMD JMP [MONEXT+EXTCMD]
1280                         USRCMD JMP [MONEXT+EXTCMD]
1281                                ENDIF EXTOPT
1281                                ENDIF EXTOPT
1281                                ENDIF EXTOPT
1281                                ENDIF EXTOPT
1282                         *
1282                         *
1283                         *
1283                         *
1284 FC5B 7D DF D2           ECHON  TST  ECHO IS ECHO REQUIRED ?
1284 FC5B 7D DF D2           ECHON  TST  ECHO IS ECHO REQUIRED ?
1285 FC5E 27 06                     BEQ  INCH ECHO NOT REQ. IF CLEAR
1285 FC5E 27 06                     BEQ  INCH ECHO NOT REQ. IF CLEAR
1286                         *
1286                         *
1287                         * INCHE
1287                         * INCHE
1288                         *
1288                         *
1289                         * ---GETS CHARACTER FROM TERMINAL AND
1289                         * ---GETS CHARACTER FROM TERMINAL AND
1290                         * ECHOS SAME. THE CHARACTER IS RETURNED
1290                         * ECHOS SAME. THE CHARACTER IS RETURNED
1291                         * IN THE "A" ACCUMULATOR WITH THE PARITY
1291                         * IN THE "A" ACCUMULATOR WITH THE PARITY
1292                         * BIT MASKED OFF. ALL OTHER REGISTERS
1292                         * BIT MASKED OFF. ALL OTHER REGISTERS
1293                         * ARE PRESERVED.
1293                         * ARE PRESERVED.
1294                         *
1294                         *
1295 FC60 8D 04              INCHE  BSR INCH GET CHAR FROM TERMINAL
1295 FC60 8D 04              INCHE  BSR INCH GET CHAR FROM TERMINAL
1296 FC62 84 7F                     ANDA #$7F      STRIP PARITY FROM CHAR.
1296 FC62 84 7F                     ANDA #$7F      STRIP PARITY FROM CHAR.
1297 FC64 20 1D                     BRA  OUTCH     ECHO CHAR TO TERMINAL
1297 FC64 20 1D                     BRA  OUTCH     ECHO CHAR TO TERMINAL
1298                         *
1298                         *
1299                         * INCH
1299                         * INCH
1300                         *
1300                         *
1301                         * GET CHARACTER FROM TERMINAL. RETURN
1301                         * GET CHARACTER FROM TERMINAL. RETURN
1302                         * CHARACTER IN "A" ACCUMULATOR AND PRESERVE
1302                         * CHARACTER IN "A" ACCUMULATOR AND PRESERVE
1303                         * ALL OTHER REGISTERS. THE INPUT CHARACTER
1303                         * ALL OTHER REGISTERS. THE INPUT CHARACTER
1304                         * IS 8 BITS AND IS NOT ECHOED.
1304                         * IS 8 BITS AND IS NOT ECHOED.
1305                         *
1305                         *
1306                         *
1306                         *
1307 FC66 34 10              INCH   PSHS X SAVE IX
1307 FC66 34 10              INCH   PSHS X SAVE IX
1308 FC68 BE DF D0           GETSTA LDX  CPORT POINT TO TERMINAL PORT
1308 FC68 BE DF D0           GETSTA LDX  CPORT POINT TO TERMINAL PORT
1309 FC6B A6 84                     LDA  ,X  FETCH PORT STATUS
1309 FC6B A6 84                     LDA  ,X  FETCH PORT STATUS
1310 FC6D 85 01                     BITA #1 TEST READY BIT, RDRF ?
1310 FC6D 85 01                     BITA #1 TEST READY BIT, RDRF ?
1311                                IFD  PS2OPT
1311                                IFD  PS2OPT
1312                                BNE GETST1
1312                                BNE GETST1
1313                                LDX  #PS2KBD
1313                                LDX  #PS2KBD
1314                                LDA  ,X
1314                                LDA  ,X
1315                                BITA #1
1315                                BITA #1
1316                                ENDIF PS2OPT
1316                                ENDIF PS2OPT
1316                                ENDIF PS2OPT
1316                                ENDIF PS2OPT
1317 FC6F 27 F7                     BEQ  GETSTA IF NOT RDY, THEN TRY AGAIN
1317 FC6F 27 F7                     BEQ  GETSTA IF NOT RDY, THEN TRY AGAIN
1318 FC71 A6 01              GETST1 LDA  1,X FETCH CHAR
1318 FC71 A6 01              GETST1 LDA  1,X FETCH CHAR
1319 FC73 35 90                     PULS X,PC RESTORE IX
1319 FC73 35 90                     PULS X,PC RESTORE IX
1320                         *
1320                         *
1321                         * INCHEK
1321                         * INCHEK
1322                         *
1322                         *
1323                         * CHECK FOR A CHARACTER AVAILABLE FROM
1323                         * CHECK FOR A CHARACTER AVAILABLE FROM
1324                         * THE TERMINAL. THE SERIAL PORT IS CHECKED
1324                         * THE TERMINAL. THE SERIAL PORT IS CHECKED
1325                         * FOR READ READY. ALL REGISTERS ARE
1325                         * FOR READ READY. ALL REGISTERS ARE
1326                         * PRESERVED, AND THE "Z" BIT WILL BE
1326                         * PRESERVED, AND THE "Z" BIT WILL BE
1327                         * CLEAR IF A CHARACTER CAN BE READ.
1327                         * CLEAR IF A CHARACTER CAN BE READ.
1328                         *
1328                         *
1329                         *
1329                         *
1330 FC75 34 02              INCHEK  PSHS A SAVE A ACCUM.
1330 FC75 34 02              INCHEK  PSHS A SAVE A ACCUM.
1331 FC77 A6 9F DF D0                LDA  [CPORT] FETCH PORT STATUS
1331 FC77 A6 9F DF D0                LDA  [CPORT] FETCH PORT STATUS
1332 FC7B 85 01                      BITA #1 TEST READY BIT, RDRF ?
1332 FC7B 85 01                      BITA #1 TEST READY BIT, RDRF ?
1333                                 IFD PS2OPT
1333                                 IFD PS2OPT
1334                                 BNE  INCHEK1
1334                                 BNE  INCHEK1
1335                                 LDA  PS2KBD
1335                                 LDA  PS2KBD
1336                                 BITA #1 TEST READY BIT< RDRF ?
1336                                 BITA #1 TEST READY BIT< RDRF ?
1337                                 ENDIF PS2OPT
1337                                 ENDIF PS2OPT
1337                                 ENDIF PS2OPT
1337                                 ENDIF PS2OPT
1338 FC7D 35 82              INCHEK1 PULS A,PC RESTORE A ACCUM.
1338 FC7D 35 82              INCHEK1 PULS A,PC RESTORE A ACCUM.
1339                         *
1339                         *
1340 FC7F 8D 00              OUT2S BSR OUT1S OUTPUT 2 SPACES
1340 FC7F 8D 00              OUT2S BSR OUT1S OUTPUT 2 SPACES
1341 FC81 86 20              OUT1S LDA  #$20  OUTPUT 1 SPACE
1341 FC81 86 20              OUT1S LDA  #$20  OUTPUT 1 SPACE
1342                         *
1342                         *
1343                         *
1343                         *
1344                         * OUTCH
1344                         * OUTCH
1345                         *
1345                         *
1346                         * OUTPUT CHARACTER TO TERMINAL.
1346                         * OUTPUT CHARACTER TO TERMINAL.
1347                         * THE CHAR. TO BE OUTPUT IS
1347                         * THE CHAR. TO BE OUTPUT IS
1348                         * PASSED IN THE A REGISTER.
1348                         * PASSED IN THE A REGISTER.
1349                         * ALL REGISTERS ARE PRESERVED.
1349                         * ALL REGISTERS ARE PRESERVED.
1350                         *
1350                         *
1351                         OUTCH   IFD VDUOPT
1351                         OUTCH   IFD VDUOPT
1352                                 BSR  VOUTCH
1352                                 BSR  VOUTCH
1353                                 ENDIF VDUOPT
1353                                 ENDIF VDUOPT
1353                                 ENDIF VDUOPT
1353                                 ENDIF VDUOPT
1354                                 IFD  DG640OPT
1354                                 IFD  DG640OPT
1355 FC83 8D 3B                      BSR  VOUTCH
1355 FC83 8D 3B                      BSR  VOUTCH
1356                                 ENDIF DG640OPT
1356                                 ENDIF DG640OPT
1357 FC85 34 12              AOUTCH  PSHS A,X    SAVE A ACCUM AND IX
1357 FC85 34 12              AOUTCH  PSHS A,X    SAVE A ACCUM AND IX
1358 FC87 BE DF D0                   LDX  CPORT  GET ADDR. OF TERMINAL
1358 FC87 BE DF D0                   LDX  CPORT  GET ADDR. OF TERMINAL
1359 FC8A A6 84              FETSTA  LDA  ,X     FETCH PORT STATUS
1359 FC8A A6 84              FETSTA  LDA  ,X     FETCH PORT STATUS
1360 FC8C 85 02                      BITA #2     TEST TDRE, OK TO XMIT ?
1360 FC8C 85 02                      BITA #2     TEST TDRE, OK TO XMIT ?
1361 FC8E 27 FA                      BEQ  FETSTA IF NOT LOOP UNTIL RDY
1361 FC8E 27 FA                      BEQ  FETSTA IF NOT LOOP UNTIL RDY
1362 FC90 35 02                      PULS A      GET CHAR. FOR XMIT
1362 FC90 35 02                      PULS A      GET CHAR. FOR XMIT
1363 FC92 A7 01                      STA  1,X    XMIT CHAR.
1363 FC92 A7 01                      STA  1,X    XMIT CHAR.
1364 FC94 35 90                      PULS X,PC   RESTORE IX
1364 FC94 35 90                      PULS X,PC   RESTORE IX
1365                         *
1365                         *
1366                         * IO INITIALIZATION
1366                         * IO INITIALIZATION
1367                         *
1367                         *
1368 FC96                    IOINIZ  EQU  *
1368 FC96                    IOINIZ  EQU  *
1369                                 IFD  VDUOPT
1369                                 IFD  VDUOPT
1370                                 BSR  VINIZ
1370                                 BSR  VINIZ
1371                                 ENDIF VDUOPT
1371                                 ENDIF VDUOPT
1371                                 ENDIF VDUOPT
1371                                 ENDIF VDUOPT
1372                                 IFD  DG640OPT
1372                                 IFD  DG640OPT
1373 FC96 8D 13                      BSR  VINIZ
1373 FC96 8D 13                      BSR  VINIZ
1374                                 ENDIF DG640OPT
1374                                 ENDIF DG640OPT
1375 FC98 BE DF D0           ACINIZ  LDX  CPORT  POINT TO CONTROL PORT ADDRESS
1375 FC98 BE DF D0           ACINIZ  LDX  CPORT  POINT TO CONTROL PORT ADDRESS
1376 FC9B 86 03                      LDA  #3     RESET ACIA PORT CODE
1376 FC9B 86 03                      LDA  #3     RESET ACIA PORT CODE
1377 FC9D A7 84                      STA  ,X     STORE IN CONTROL REGISTER
1377 FC9D A7 84                      STA  ,X     STORE IN CONTROL REGISTER
1378 FC9F 86 11                      LDA  #$11   SET 8 DATA, 2 STOP AN 0 PARITY
1378 FC9F 86 11                      LDA  #$11   SET 8 DATA, 2 STOP AN 0 PARITY
1379 FCA1 A7 84                      STA  ,X     STORE IN CONTROL REGISTER
1379 FCA1 A7 84                      STA  ,X     STORE IN CONTROL REGISTER
1380 FCA3 6D 01                      TST  1,X    ANYTHING IN DATA REGISTER?
1380 FCA3 6D 01                      TST  1,X    ANYTHING IN DATA REGISTER?
1381 FCA5 86 FF                      LDA  #$FF   TURN ON ECHO FLAG
1381 FCA5 86 FF                      LDA  #$FF   TURN ON ECHO FLAG
1382 FCA7 B7 DF D2                   STA  ECHO
1382 FCA7 B7 DF D2                   STA  ECHO
1383 FCAA 39                         RTS
1383 FCAA 39                         RTS
1384                         *
1384                         *
1385                                 IFD VDUOPT
1385                                 IFD VDUOPT
1386                         *
1386                         *
1387                         ***************************************************
1387                         ***************************************************
1388                         *      VDU8 ADM3A REGISTER-MAPPED EMULATOR        *
1388                         *      VDU8 ADM3A REGISTER-MAPPED EMULATOR        *
1389                         *                                                 *
1389                         *                                                 *
1390                         *      80 x 25 Characters
1390                         *      80 x 25 Characters
1391                         *
1391                         *
1392                         ***************************************************
1392                         ***************************************************
1393                         *
1393                         *
1394                         ***************************************************
1394                         ***************************************************
1395                         *               INITIALIZE EMULATOR               *
1395                         *               INITIALIZE EMULATOR               *
1396                         ***************************************************
1396                         ***************************************************
1397                         *
1397                         *
1398                         VINIZ   LDX    #VDU
1398                         VINIZ   LDX    #VDU
1399                                 LDD    #0
1399                                 LDD    #0
1400                                 STD    COLADX    AND ROWADX
1400                                 STD    COLADX    AND ROWADX
1401                                 STA    VDUCOL,X
1401                                 STA    VDUCOL,X
1402                                 STB    VDUROW,X
1402                                 STB    VDUROW,X
1403                                 STB    VDUOFF,X
1403                                 STB    VDUOFF,X
1404                                 STD    NEWROW    AND ESCFLG
1404                                 STD    NEWROW    AND ESCFLG
1405                                 LDB    #$02
1405                                 LDB    #$02
1406                                 STB    VDUATT,X
1406                                 STB    VDUATT,X
1407                                 CLR    ESCFLG
1407                                 CLR    ESCFLG
1408                                 LDA    #$1B      SEND ESCAPE
1408                                 LDA    #$1B      SEND ESCAPE
1409                                 BSR    VOUTCH
1409                                 BSR    VOUTCH
1410                                 LDA    #'Y       CLEAR TO END OF SCREEN
1410                                 LDA    #'Y       CLEAR TO END OF SCREEN
1411                         *
1411                         *
1412                         ** VIDEO OUTPUT ROUTINE
1412                         ** VIDEO OUTPUT ROUTINE
1413                         *
1413                         *
1414                         VOUTCH  PSHS   A,B,X     SAVE REGISTERS
1414                         VOUTCH  PSHS   A,B,X     SAVE REGISTERS
1415                                 LDX    #VDU      POINT TO VDU REGISTERS
1415                                 LDX    #VDU      POINT TO VDU REGISTERS
1416                         *
1416                         *
1417                         ** CHECK FOR ESCAPE SEQUENCE
1417                         ** CHECK FOR ESCAPE SEQUENCE
1418                         *
1418                         *
1419                                 TST    ESCFLG    ESCAPE ACTIVE?
1419                                 TST    ESCFLG    ESCAPE ACTIVE?
1420                                 BEQ    SOROU1    BRANCH IF NOT
1420                                 BEQ    SOROU1    BRANCH IF NOT
1421                                 BSR    ESCAPE    ELSE DO ESCAPE
1421                                 BSR    ESCAPE    ELSE DO ESCAPE
1422                                 BRA    RETURN    AND RETURN
1422                                 BRA    RETURN    AND RETURN
1423                         *
1423                         *
1424                         ** CHECK FOR CONTROL CHARACTERS
1424                         ** CHECK FOR CONTROL CHARACTERS
1425                         *
1425                         *
1426                         SOROU1  CMPA   #$20      CONTROL CODES?
1426                         SOROU1  CMPA   #$20      CONTROL CODES?
1427                                 BHS    SOROU2
1427                                 BHS    SOROU2
1428                                 BSR    CONTRL    BRANCH IF SO
1428                                 BSR    CONTRL    BRANCH IF SO
1429                                 BRA    RETURN
1429                                 BRA    RETURN
1430                         *
1430                         *
1431                         ** OUTPUT TEXT CHARACTER
1431                         ** OUTPUT TEXT CHARACTER
1432                         *
1432                         *
1433                         SOROU2  STAA   VDUCHR,X  DISPLAY CHARACTER
1433                         SOROU2  STAA   VDUCHR,X  DISPLAY CHARACTER
1434                                 LBSR   NEWCOL    UPDATE COLUMN
1434                                 LBSR   NEWCOL    UPDATE COLUMN
1435                         *
1435                         *
1436                         ** DISPLAY CURSOR AND RETURN
1436                         ** DISPLAY CURSOR AND RETURN
1437                         *
1437                         *
1438                         RETURN  PULS   A,B,X,PC  RESTORE REGISTERS AND RETURN
1438                         RETURN  PULS   A,B,X,PC  RESTORE REGISTERS AND RETURN
1439                         *
1439                         *
1440                         ***************************************************
1440                         ***************************************************
1441                         *              CONTROL CODE HANDLERS              *
1441                         *              CONTROL CODE HANDLERS              *
1442                         ***************************************************
1442                         ***************************************************
1443                         *
1443                         *
1444                         CONTRL  CMPA   #$08      CTRL H - BACKSPACE ?
1444                         CONTRL  CMPA   #$08      CTRL H - BACKSPACE ?
1445                                 LBEQ   BACKSP
1445                                 LBEQ   BACKSP
1446                                 CMPA   #$1B      ESCAPE SEQUENCE?
1446                                 CMPA   #$1B      ESCAPE SEQUENCE?
1447                                 LBEQ   SETESC
1447                                 LBEQ   SETESC
1448                                 CMPA   #$1A      CTRL Z - Clear Screen
1448                                 CMPA   #$1A      CTRL Z - Clear Screen
1449                                 LBEQ   CLRSCR
1449                                 LBEQ   CLRSCR
1450                                 CMPA   #$16      CTRL ^ - Home
1450                                 CMPA   #$16      CTRL ^ - Home
1451                                 LBEQ   HOME
1451                                 LBEQ   HOME
1452                                 CMPA   #$D       CTRL M - RETURN?
1452                                 CMPA   #$D       CTRL M - RETURN?
1453                                 LBEQ   CRETN
1453                                 LBEQ   CRETN
1454                                 CMPA   #$0C      CTRL L - CHAR RIGHT
1454                                 CMPA   #$0C      CTRL L - CHAR RIGHT
1455                                 LBEQ   CHRIGHT
1455                                 LBEQ   CHRIGHT
1456                                 CMPA   #$0B      CTRL K - MOVE UP ONE LINE
1456                                 CMPA   #$0B      CTRL K - MOVE UP ONE LINE
1457                                 LBEQ   LINEUP
1457                                 LBEQ   LINEUP
1458                                 CMPA   #$0A      CTRL J - LINE FEED
1458                                 CMPA   #$0A      CTRL J - LINE FEED
1459                                 BNE    RETESC    NONE OF THESE, RETURN
1459                                 BNE    RETESC    NONE OF THESE, RETURN
1460                         *
1460                         *
1461                         ***************************************** LINE FEED
1461                         ***************************************** LINE FEED
1462                         *
1462                         *
1463                         LINEFD  LDD    COLADX    GET CURRENT COLUMN AND ROW
1463                         LINEFD  LDD    COLADX    GET CURRENT COLUMN AND ROW
1464                                 INCB             BUMP ROW
1464                                 INCB             BUMP ROW
1465                                 CMPB   #NUMLIN   SCROLL TIME?
1465                                 CMPB   #NUMLIN   SCROLL TIME?
1466                                 LBNE   NEWCUR    POSITION CURSOR IF NOT
1466                                 LBNE   NEWCUR    POSITION CURSOR IF NOT
1467                                 LBRA   SCROLL    ELSE SCROLL IT
1467                                 LBRA   SCROLL    ELSE SCROLL IT
1468                         *
1468                         *
1469                         ***************************************** LINE FEED
1469                         ***************************************** LINE FEED
1470                         *
1470                         *
1471                         LINEUP  LDD    COLADX    GET CURRENT COLUMN AND ROW
1471                         LINEUP  LDD    COLADX    GET CURRENT COLUMN AND ROW
1472                                 TSTB                AT TOP OF SCREEN ?
1472                                 TSTB                AT TOP OF SCREEN ?
1473                                 LBEQ   RETESC    Yes, Ignore
1473                                 LBEQ   RETESC    Yes, Ignore
1474                                 DECB             No, Decrement ROW
1474                                 DECB             No, Decrement ROW
1475                                 LBRA   NEWCUR    POSITION CURSOR
1475                                 LBRA   NEWCUR    POSITION CURSOR
1476                         *
1476                         *
1477                         *********************************** BACK SPACE
1477                         *********************************** BACK SPACE
1478                         *
1478                         *
1479                         BACKSP  LDA    COLADX
1479                         BACKSP  LDA    COLADX
1480                                 BEQ    RETESC      RETURN
1480                                 BEQ    RETESC      RETURN
1481                                 DECA
1481                                 DECA
1482                                 LBRA   POSCOL    POSITION CURSOR
1482                                 LBRA   POSCOL    POSITION CURSOR
1483                         *
1483                         *
1484                         *********************************** CURSOR RIGHT
1484                         *********************************** CURSOR RIGHT
1485                         *
1485                         *
1486                         CHRIGHT LDA    COLADX
1486                         CHRIGHT LDA    COLADX
1487                                 INCA
1487                                 INCA
1488                                 CMPA   #LINLEN
1488                                 CMPA   #LINLEN
1489                                 LBEQ   RETESC
1489                                 LBEQ   RETESC
1490                                 LBRA   POSCOL
1490                                 LBRA   POSCOL
1491                         *
1491                         *
1492                         *********************************** CURSOR RIGHT
1492                         *********************************** CURSOR RIGHT
1493                         *
1493                         *
1494                         HOME    LDD    #0        HOME - POSITION TOP OF SCREEN
1494                         HOME    LDD    #0        HOME - POSITION TOP OF SCREEN
1495                                 LBRA    NEWCUR
1495                                 LBRA    NEWCUR
1496                         *
1496                         *
1497                         ***************************************************
1497                         ***************************************************
1498                         *                 ESCAPE HANDLERS                 *
1498                         *                 ESCAPE HANDLERS                 *
1499                         ***************************************************
1499                         ***************************************************
1500                         *
1500                         *
1501                         ESCAPE  LDAB   ESCFLG    GET FLAG
1501                         ESCAPE  LDAB   ESCFLG    GET FLAG
1502                                 CMPB   #'=       SETTING CURSOR?
1502                                 CMPB   #'=       SETTING CURSOR?
1503                                 BEQ    ESCCUR    BRANCH IF SO
1503                                 BEQ    ESCCUR    BRANCH IF SO
1504                                 CMPA   #'Y       CLEAR TO END OF SCREEN?
1504                                 CMPA   #'Y       CLEAR TO END OF SCREEN?
1505                                 LBEQ   ESCCLS
1505                                 LBEQ   ESCCLS
1506                                 CMPA   #'T       CLEAR TO END OF LINE?
1506                                 CMPA   #'T       CLEAR TO END OF LINE?
1507                                 BEQ   ESCCLL
1507                                 BEQ   ESCCLL
1508                                 CMPA   #'=       STARTING CURSOR SET?
1508                                 CMPA   #'=       STARTING CURSOR SET?
1509                                 BNE    CLRESC    BRANCH IF NOT
1509                                 BNE    CLRESC    BRANCH IF NOT
1510                         *
1510                         *
1511                         ***************************** START ESCAPE SEQUENCE
1511                         ***************************** START ESCAPE SEQUENCE
1512                         *
1512                         *
1513                         SETESC  STAA   ESCFLG    ELSE START CURSORING
1513                         SETESC  STAA   ESCFLG    ELSE START CURSORING
1514                                 RTS              AND RETURN
1514                                 RTS              AND RETURN
1515                         *
1515                         *
1516                         CLRESC  CLR    ESCFLG    NO OTHERS SUPPORTED
1516                         CLRESC  CLR    ESCFLG    NO OTHERS SUPPORTED
1517                         RETESC  RTS              SO RETURN
1517                         RETESC  RTS              SO RETURN
1518                         *
1518                         *
1519                         ********************************* SET SCREEN CURSOR
1519                         ********************************* SET SCREEN CURSOR
1520                         *
1520                         *
1521                         ESCCUR  TST    NEWROW    ROW SET?
1521                         ESCCUR  TST    NEWROW    ROW SET?
1522                                 BNE    ESCCU1    BRANCH IF SO
1522                                 BNE    ESCCU1    BRANCH IF SO
1523                                 STAA   NEWROW    ELSE SET NEW ROW
1523                                 STAA   NEWROW    ELSE SET NEW ROW
1524                                 RTS              AND RETURN
1524                                 RTS              AND RETURN
1525                         *
1525                         *
1526                         ESCCU1  CLR    ESCFLG
1526                         ESCCU1  CLR    ESCFLG
1527                                 SUBA   #$20      ADJUST COLUMN ADDRESS
1527                                 SUBA   #$20      ADJUST COLUMN ADDRESS
1528                                 CMPA   #LINLEN-1 CHECK FOR ACCEPTABLE COLUM
1528                                 CMPA   #LINLEN-1 CHECK FOR ACCEPTABLE COLUM
1529                                 BHI    RETESC    NOT OK, DO NOTHING
1529                                 BHI    RETESC    NOT OK, DO NOTHING
1530                         *
1530                         *
1531                         ESCCU2  LDAB   NEWROW
1531                         ESCCU2  LDAB   NEWROW
1532                                 CLR    NEWROW
1532                                 CLR    NEWROW
1533                                 SUBB   #$20      ADJUST TO ROW ADDRESS
1533                                 SUBB   #$20      ADJUST TO ROW ADDRESS
1534                                 CMPB   #NUMLIN-1 CHECK FOR ACCEPTABLE ROW
1534                                 CMPB   #NUMLIN-1 CHECK FOR ACCEPTABLE ROW
1535                                 BHI    RETESC    ELSE RETURN DOING NOTHING
1535                                 BHI    RETESC    ELSE RETURN DOING NOTHING
1536                                 BRA    NEWCUR    GO SET NEW CURSOR IF SO
1536                                 BRA    NEWCUR    GO SET NEW CURSOR IF SO
1537                         *
1537                         *
1538                         ****************** CLEAR FROM CURSOR TO END OF LINE
1538                         ****************** CLEAR FROM CURSOR TO END OF LINE
1539                         CLRSCR  LDD    #0        CLEAR FROM TOP OF SCREEN
1539                         CLRSCR  LDD    #0        CLEAR FROM TOP OF SCREEN
1540                                 BSR    NEWCUR
1540                                 BSR    NEWCUR
1541                         ESCCLL  LDA    COLADX
1541                         ESCCLL  LDA    COLADX
1542                                 LDB    #$20      AND CLEAR CHAR
1542                                 LDB    #$20      AND CLEAR CHAR
1543                         ESCCL1  STB    VDUCHR,X  DISPLAY TEXT
1543                         ESCCL1  STB    VDUCHR,X  DISPLAY TEXT
1544                                 INCA
1544                                 INCA
1545                            STA    VDUCOL,X
1545                            STA    VDUCOL,X
1546                                 CMPA   #LINLEN   UNTIL END OF LINE
1546                                 CMPA   #LINLEN   UNTIL END OF LINE
1547                                 BNE    ESCCL1
1547                                 BNE    ESCCL1
1548                                 CLR    ESCFLG
1548                                 CLR    ESCFLG
1549                                 RTS
1549                                 RTS
1550                         *
1550                         *
1551                         *********************************** CARRIAGE RETURN
1551                         *********************************** CARRIAGE RETURN
1552                         *
1552                         *
1553                         CRETN   CLRA               SET COLUMN ZERO
1553                         CRETN   CLRA               SET COLUMN ZERO
1554                         POSCOL  LDB    ROWADX    GET CURRENT ROW
1554                         POSCOL  LDB    ROWADX    GET CURRENT ROW
1555                         *
1555                         *
1556                         *********** GENERATE NEW CURSOR POSITION AND RETURN
1556                         *********** GENERATE NEW CURSOR POSITION AND RETURN
1557                         *
1557                         *
1558                         NEWCUR  STD    COLADX    SAVE NEW ROW AND COLUMN
1558                         NEWCUR  STD    COLADX    SAVE NEW ROW AND COLUMN
1559                            STA    VDUCOL,X  SET NEW COLUMN
1559                            STA    VDUCOL,X  SET NEW COLUMN
1560                                 STB    VDUROW,X  SET NEW ROW
1560                                 STB    VDUROW,X  SET NEW ROW
1561                                 RTS              AND RETURN
1561                                 RTS              AND RETURN
1562                         *
1562                         *
1563                         ********************* UPDATE CURRENT COLUMN AND ROW
1563                         ********************* UPDATE CURRENT COLUMN AND ROW
1564                         *
1564                         *
1565                         NEWCOL  LDD    COLADX    GET ROW AND COLUMN
1565                         NEWCOL  LDD    COLADX    GET ROW AND COLUMN
1566                                 INCA             BUMP COLUMN
1566                                 INCA             BUMP COLUMN
1567                                 CMPA   #LINLEN   ROLL?
1567                                 CMPA   #LINLEN   ROLL?
1568                                 BNE    NEWCUR    BRANCH IF NOT
1568                                 BNE    NEWCUR    BRANCH IF NOT
1569                                 CLRA             ELSE RESET TO ZERO
1569                                 CLRA             ELSE RESET TO ZERO
1570                                 INCB             AND BUMP ROW
1570                                 INCB             AND BUMP ROW
1571                                 CMPB   #NUMLIN
1571                                 CMPB   #NUMLIN
1572                                 BNE    NEWCUR
1572                                 BNE    NEWCUR
1573                                 DECB             BOTTOM ROW
1573                                 DECB             BOTTOM ROW
1574                                 BSR    NEWCUR
1574                                 BSR    NEWCUR
1575                         *
1575                         *
1576                         ********************************* SCROLL THE SCREEN
1576                         ********************************* SCROLL THE SCREEN
1577                         *
1577                         *
1578                         SCROLL  LDB    VDUOFF,X
1578                         SCROLL  LDB    VDUOFF,X
1579                                 INCB
1579                                 INCB
1580                                 CMPB   #NUMLIN
1580                                 CMPB   #NUMLIN
1581                                 BLO    SCROL1
1581                                 BLO    SCROL1
1582                                 CLRB
1582                                 CLRB
1583                         SCROL1  STB    VDUOFF,X
1583                         SCROL1  STB    VDUOFF,X
1584                         *
1584                         *
1585                         **************** CLEAR FROM CURSOR TO END OF SCREEN
1585                         **************** CLEAR FROM CURSOR TO END OF SCREEN
1586                         *
1586                         *
1587                         ESCCLS  LDB    COLADX    GET CURSOR
1587                         ESCCLS  LDB    COLADX    GET CURSOR
1588                                 LDA    #$20      GET A SPACE
1588                                 LDA    #$20      GET A SPACE
1589                         ESCCLS1    STB    COLADX
1589                         ESCCLS1    STB    COLADX
1590                                 STB    VDUCOL,X
1590                                 STB    VDUCOL,X
1591                                 STA    VDUCHR,X
1591                                 STA    VDUCHR,X
1592                                 INCB
1592                                 INCB
1593                                 CMPB   #LINLEN
1593                                 CMPB   #LINLEN
1594                                 BNE    ESCCLS1
1594                                 BNE    ESCCLS1
1595                         *
1595                         *
1596                                 LDB    ROWADX
1596                                 LDB    ROWADX
1597                                 INCB
1597                                 INCB
1598                                 CMPB   #NUMLIN
1598                                 CMPB   #NUMLIN
1599                                 BEQ    ESCCLS2
1599                                 BEQ    ESCCLS2
1600                                 STB    ROWADX
1600                                 STB    ROWADX
1601                                 STB    VDUROW,X
1601                                 STB    VDUROW,X
1602                                 CLRB
1602                                 CLRB
1603                                 BRA    ESCCLS1
1603                                 BRA    ESCCLS1
1604                         *
1604                         *
1605                         ESCCLS2 CLRB
1605                         ESCCLS2 CLRB
1606                                 STB    COLADX
1606                                 STB    COLADX
1607                                 STB    VDUCOL,X
1607                                 STB    VDUCOL,X
1608                                 STB    ESCFLG
1608                                 STB    ESCFLG
1609                                 RTS
1609                                 RTS
1610                                 ENDIF VDUOPT
1610                                 ENDIF VDUOPT
1610                                 ENDIF VDUOPT
1610                                 ENDIF VDUOPT
1611                         *
1611                         *
1612                                 IFD DG640OPT
1612                                 IFD DG640OPT
1613                         ***************************************************
1613                         ***************************************************
1614                         *      TELEVIDEO-TYPE MEMORY-MAPPED EMULATOR      *
1614                         *      TELEVIDEO-TYPE MEMORY-MAPPED EMULATOR      *
1615                         *                                                 *
1615                         *                                                 *
1616                         * FOR HARD-WIRED MEMORY-MAPPED DISPLAYS USING THE *
1616                         * FOR HARD-WIRED MEMORY-MAPPED DISPLAYS USING THE *
1617                         * HIGH ORDER BIT OF EACH BYTE FOR  REVERSE  VIDEO *
1617                         * HIGH ORDER BIT OF EACH BYTE FOR  REVERSE  VIDEO *
1618                         * CURSORING  (SUCH  AS THE THOMAS INSTRUMENTATION *
1618                         * CURSORING  (SUCH  AS THE THOMAS INSTRUMENTATION *
1619                         * 16x64 BOARD).                                   *
1619                         * 16x64 BOARD).                                   *
1620                         ***************************************************
1620                         ***************************************************
1621
1621
1622                         ***************************************************
1622                         ***************************************************
1623                         *               INITIALIZE EMULATOR               *
1623                         *               INITIALIZE EMULATOR               *
1624                         ***************************************************
1624                         ***************************************************
1625
1625
1626 FCAB 8E 00 00           VINIZ   LDX    #0
1626 FCAB 8E 00 00           VINIZ   LDX    #0
1627 FCAE BF DF EB                   STX    COLADX    AND ROWADX
1627 FCAE BF DF EB                   STX    COLADX    AND ROWADX
1628 FCB1 BF DF EF                   STX    NEWROW    AND ESCFLG
1628 FCB1 BF DF EF                   STX    NEWROW    AND ESCFLG
1629 FCB4 8E E8 00                   LDX    #SCREEN   POINT TO SCREEN
1629 FCB4 8E E8 00                   LDX    #SCREEN   POINT TO SCREEN
1630 FCB7 BF DF ED                   STX    CURSOR    SET PROGRAM CURSOR
1630 FCB7 BF DF ED                   STX    CURSOR    SET PROGRAM CURSOR
1631 FCBA 86 1B                      LDA    #$1B      SEND ESCAPE
1631 FCBA 86 1B                      LDA    #$1B      SEND ESCAPE
1632 FCBC 8D 02                      BSR    VOUTCH
1632 FCBC 8D 02                      BSR    VOUTCH
1633 FCBE 86 59                      LDA    #'Y       CLEAR TO END OF SCREEN
1633 FCBE 86 59                      LDA    #'Y       CLEAR TO END OF SCREEN
1634                         *
1634                         *
1635                         ** VIDEO OUTPUT ROUTINE
1635                         ** VIDEO OUTPUT ROUTINE
1636                         *
1636                         *
1637 FCC0 34 16              VOUTCH  PSHS   A,B,X     SAVE REGISTERS
1637 FCC0 34 16              VOUTCH  PSHS   A,B,X     SAVE REGISTERS
1638                         *
1638                         *
1639                         ** CLEAR CURSOR
1639                         ** CLEAR CURSOR
1640 FCC2 BE DF ED                   LDX    CURSOR
1640 FCC2 BE DF ED                   LDX    CURSOR
1641 FCC5 E6 84                      LDB   0,X
1641 FCC5 E6 84                      LDB   0,X
1642 FCC7 C4 7F                      ANDB   #$7F
1642 FCC7 C4 7F                      ANDB   #$7F
1643 FCC9 E7 84                      STB   0,X
1643 FCC9 E7 84                      STB   0,X
1644                         *
1644                         *
1645                         ** CHECK FOR ESCAPE SEQUENCE
1645                         ** CHECK FOR ESCAPE SEQUENCE
1646 FCCB 7D DF F0                   TST    ESCFLG    ESCAPE ACTIVE?
1646 FCCB 7D DF F0                   TST    ESCFLG    ESCAPE ACTIVE?
1647 FCCE 27 04                      BEQ    SOROU1    BRANCH IF NOT
1647 FCCE 27 04                      BEQ    SOROU1    BRANCH IF NOT
1648 FCD0 8D 5E                      BSR   ESCAPE    ELSE DO ESCAPE
1648 FCD0 8D 5E                      BSR   ESCAPE    ELSE DO ESCAPE
1649 FCD2 20 10                      BRA    RETURN    AND RETURN
1649 FCD2 20 10                      BRA    RETURN    AND RETURN
1650                         *
1650                         *
1651                         ** CHECK FOR CONTROL CHARACTERS
1651                         ** CHECK FOR CONTROL CHARACTERS
1652 FCD4 81 20              SOROU1  CMPA   #$20      CONTROL CODES?
1652 FCD4 81 20              SOROU1  CMPA   #$20      CONTROL CODES?
1653 FCD6 24 04                      BHS    SOROU2
1653 FCD6 24 04                      BHS    SOROU2
1654 FCD8 8D 15                      BSR    CONTRL    BRANCH IF SO
1654 FCD8 8D 15                      BSR    CONTRL    BRANCH IF SO
1655 FCDA 20 08                      BRA    RETURN
1655 FCDA 20 08                      BRA    RETURN
1656                         *
1656                         *
1657                         ** OUTPUT TEXT CHARACTER
1657                         ** OUTPUT TEXT CHARACTER
1658 FCDC BE DF ED           SOROU2  LDX    CURSOR    ELSE GET CURSOR
1658 FCDC BE DF ED           SOROU2  LDX    CURSOR    ELSE GET CURSOR
1659 FCDF A7 84                      STAA   0,X       DISPLAY CHARACTER
1659 FCDF A7 84                      STAA   0,X       DISPLAY CHARACTER
1660 FCE1 17 00 E9                   LBSR   NEWCOL    UPDATE COLUMN
1660 FCE1 17 00 E9                   LBSR   NEWCOL    UPDATE COLUMN
1661                         *
1661                         *
1662                         ** DISPLAY CURSOR AND RETURN
1662                         ** DISPLAY CURSOR AND RETURN
1663 FCE4 BE DF ED           RETURN  LDX    CURSOR    AND DISPLAY IT
1663 FCE4 BE DF ED           RETURN  LDX    CURSOR    AND DISPLAY IT
1664 FCE7 E6 84                      LDB    ,X
1664 FCE7 E6 84                      LDB    ,X
1665 FCE9 CA 80                      ORAB   #$80      WITH REVID
1665 FCE9 CA 80                      ORAB   #$80      WITH REVID
1666 FCEB E7 84                      STB    ,X
1666 FCEB E7 84                      STB    ,X
1667 FCED 35 96                      PULS   A,B,X,PC  RESTORE REGISTERS AND RETURN
1667 FCED 35 96                      PULS   A,B,X,PC  RESTORE REGISTERS AND RETURN
1668
1668
1669                         ***************************************************
1669                         ***************************************************
1670                         *              CONTROL CODE HANDLERS              *
1670                         *              CONTROL CODE HANDLERS              *
1671                         ***************************************************
1671                         ***************************************************
1672
1672
1673 FCEF 81 08              CONTRL  CMPA   #$08      CTRL H - BACKSPACE ?
1673 FCEF 81 08              CONTRL  CMPA   #$08      CTRL H - BACKSPACE ?
1674 FCF1 10 27 00 27                LBEQ   BACKSP
1674 FCF1 10 27 00 27                LBEQ   BACKSP
1675 FCF5 81 1B                      CMPA   #$1B      ESCAPE SEQUENCE?
1675 FCF5 81 1B                      CMPA   #$1B      ESCAPE SEQUENCE?
1676 FCF7 10 27 00 52                LBEQ   SETESC
1676 FCF7 10 27 00 52                LBEQ   SETESC
1677 FCFB 81 0D                      CMPA   #$D       CTRL M - RETURN?
1677 FCFB 81 0D                      CMPA   #$D       CTRL M - RETURN?
1678 FCFD 10 27 00 B4                LBEQ   CRETN
1678 FCFD 10 27 00 B4                LBEQ   CRETN
1679 FD01 81 0A                      CMPA   #$0A      CTRL J - LINE FEED
1679 FD01 81 0A                      CMPA   #$0A      CTRL J - LINE FEED
1680 FD03 26 4F                      BNE    RETESC    NONE OF THESE, RETURN
1680 FD03 26 4F                      BNE    RETESC    NONE OF THESE, RETURN
1681
1681
1682                         ***************************************** LINE FEED
1682                         ***************************************** LINE FEED
1683
1683
1684 FD05 FC DF EB           LINEFD  LDD    COLADX    GET CURRENT COLUMN AND ROW
1684 FD05 FC DF EB           LINEFD  LDD    COLADX    GET CURRENT COLUMN AND ROW
1685 FD08 5C                         INCB             BUMP ROW
1685 FD08 5C                         INCB             BUMP ROW
1686 FD09 C1 10                      CMPB   #NUMLIN   SCROLL TIME?
1686 FD09 C1 10                      CMPB   #NUMLIN   SCROLL TIME?
1687 FD0B 10 26 00 AA                LBNE   NEWCUR    POSITION CURSOR IF NOT
1687 FD0B 10 26 00 AA                LBNE   NEWCUR    POSITION CURSOR IF NOT
1688 FD0F 16 00 CC                   LBRA   SCROLL    ELSE SCROLL IT
1688 FD0F 16 00 CC                   LBRA   SCROLL    ELSE SCROLL IT
1689
1689
1690                         ***************************************** LINE FEED
1690                         ***************************************** LINE FEED
1691
1691
1692 FD12 FC DF EB           LINEUP  LDD    COLADX    GET CURRENT COLUMN AND ROW
1692 FD12 FC DF EB           LINEUP  LDD    COLADX    GET CURRENT COLUMN AND ROW
1693 FD15 5D                         TSTB                AT TOP OF SCREEN ?
1693 FD15 5D                         TSTB                AT TOP OF SCREEN ?
1694 FD16 27 3C                      BEQ   RETESC    Yes, Ignore
1694 FD16 27 3C                      BEQ   RETESC    Yes, Ignore
1695 FD18 5A                         DECB             No, Decrement ROW
1695 FD18 5A                         DECB             No, Decrement ROW
1696 FD19 16 00 9D                   LBRA   NEWCUR    POSITION CURSOR
1696 FD19 16 00 9D                   LBRA   NEWCUR    POSITION CURSOR
1697
1697
1698
1698
1699                         *********************************** BACK SPACE
1699                         *********************************** BACK SPACE
1700
1700
1701 FD1C B6 DF EB           BACKSP  LDA    COLADX
1701 FD1C B6 DF EB           BACKSP  LDA    COLADX
1702 FD1F 27 33                      BEQ    RETESC      RETURN
1702 FD1F 27 33                      BEQ    RETESC      RETURN
1703 FD21 4A                         DECA
1703 FD21 4A                         DECA
1704 FD22 16 00 91                   LBRA   POSCOL    POSITION CURSOR
1704 FD22 16 00 91                   LBRA   POSCOL    POSITION CURSOR
1705
1705
1706                         *********************************** CURSOR RIGHT
1706                         *********************************** CURSOR RIGHT
1707
1707
1708 FD25 B6 DF EB           CHRIGHT LDA    COLADX
1708 FD25 B6 DF EB           CHRIGHT LDA    COLADX
1709 FD28 4C                         INCA
1709 FD28 4C                         INCA
1710 FD29 81 40                      CMPA   #LINLEN
1710 FD29 81 40                      CMPA   #LINLEN
1711 FD2B 27 27                      BEQ   RETESC
1711 FD2B 27 27                      BEQ   RETESC
1712 FD2D 16 00 86                   LBRA   POSCOL
1712 FD2D 16 00 86                   LBRA   POSCOL
1713
1713
1714                         ***************************************************
1714                         ***************************************************
1715                         *                 ESCAPE HANDLERS                 *
1715                         *                 ESCAPE HANDLERS                 *
1716                         ***************************************************
1716                         ***************************************************
1717
1717
1718 FD30 F6 DF F0           ESCAPE  LDAB   ESCFLG    GET FLAG
1718 FD30 F6 DF F0           ESCAPE  LDAB   ESCFLG    GET FLAG
1719 FD33 C1 3D                      CMPB   #'=       SETTING CURSOR?
1719 FD33 C1 3D                      CMPB   #'=       SETTING CURSOR?
1720 FD35 27 1E                      BEQ    ESCCUR    BRANCH IF SO
1720 FD35 27 1E                      BEQ    ESCCUR    BRANCH IF SO
1721 FD37 81 59                      CMPA   #'Y       CLEAR TO END OF SCREEN?
1721 FD37 81 59                      CMPA   #'Y       CLEAR TO END OF SCREEN?
1722 FD39 10 27 00 B8                LBEQ   ESCCLS
1722 FD39 10 27 00 B8                LBEQ   ESCCLS
1723 FD3D 81 54                      CMPA   #'T       CLEAR TO END OF LINE?
1723 FD3D 81 54                      CMPA   #'T       CLEAR TO END OF LINE?
1724 FD3F 27 5D                      BEQ   ESCCLL
1724 FD3F 27 5D                      BEQ   ESCCLL
1725 FD41 81 45                      CMPA   #'E       INSERT LINE?
1725 FD41 81 45                      CMPA   #'E       INSERT LINE?
1726 FD43 27 3B                      BEQ   ESCINL
1726 FD43 27 3B                      BEQ   ESCINL
1727 FD45 81 52                      CMPA   #'R       DELETE LINE?
1727 FD45 81 52                      CMPA   #'R       DELETE LINE?
1728 FD47 27 2C                      BEQ   ESCDLL
1728 FD47 27 2C                      BEQ   ESCDLL
1729 FD49 81 3D                      CMPA   #'=       STARTING CURSOR SET?
1729 FD49 81 3D                      CMPA   #'=       STARTING CURSOR SET?
1730 FD4B 26 04                      BNE    CLRESC    BRANCH IF NOT
1730 FD4B 26 04                      BNE    CLRESC    BRANCH IF NOT
1731
1731
1732                         ***************************** START ESCAPE SEQUENCE
1732                         ***************************** START ESCAPE SEQUENCE
1733
1733
1734 FD4D B7 DF F0           SETESC  STAA   ESCFLG    ELSE START CURSORING
1734 FD4D B7 DF F0           SETESC  STAA   ESCFLG    ELSE START CURSORING
1735 FD50 39                         RTS              AND RETURN
1735 FD50 39                         RTS              AND RETURN
1736
1736
1737 FD51 7F DF F0           CLRESC  CLR    ESCFLG    NO OTHERS SUPPORTED
1737 FD51 7F DF F0           CLRESC  CLR    ESCFLG    NO OTHERS SUPPORTED
1738 FD54 39                 RETESC  RTS              SO RETURN
1738 FD54 39                 RETESC  RTS              SO RETURN
1739
1739
1740                         ********************************* SET SCREEN CURSOR
1740                         ********************************* SET SCREEN CURSOR
1741
1741
1742 FD55 7D DF EF           ESCCUR  TST   NEWROW    ROW SET?
1742 FD55 7D DF EF           ESCCUR  TST   NEWROW    ROW SET?
1743 FD58 26 04                      BNE   ESCCU1    BRANCH IF SO
1743 FD58 26 04                      BNE   ESCCU1    BRANCH IF SO
1744 FD5A B7 DF EF                   STAA  NEWROW    ELSE SET NEW ROW
1744 FD5A B7 DF EF                   STAA  NEWROW    ELSE SET NEW ROW
1745 FD5D 39                         RTS              AND RETURN
1745 FD5D 39                         RTS              AND RETURN
1746
1746
1747 FD5E 7F DF F0           ESCCU1  CLR   ESCFLG
1747 FD5E 7F DF F0           ESCCU1  CLR   ESCFLG
1748 FD61 80 20                      SUBA  #$20      ADJUST COLUMN ADDRESS
1748 FD61 80 20                      SUBA  #$20      ADJUST COLUMN ADDRESS
1749 FD63 81 3F                      CMPA  #LINLEN-1 CHECK FOR ACCEPTABLE COLUM
1749 FD63 81 3F                      CMPA  #LINLEN-1 CHECK FOR ACCEPTABLE COLUM
1750 FD65 22 ED                      BHI   RETESC    NOT OK, DO NOTHING
1750 FD65 22 ED                      BHI   RETESC    NOT OK, DO NOTHING
1751
1751
1752 FD67 F6 DF EF           ESCCU2  LDAB  NEWROW
1752 FD67 F6 DF EF           ESCCU2  LDAB  NEWROW
1753 FD6A 7F DF EF                   CLR   NEWROW
1753 FD6A 7F DF EF                   CLR   NEWROW
1754 FD6D C0 20                      SUBB  #$20      ADJUST TO ROW ADDRESS
1754 FD6D C0 20                      SUBB  #$20      ADJUST TO ROW ADDRESS
1755 FD6F C1 0F                      CMPB  #NUMLIN-1 CHECK FOR ACCEPTABLE ROW
1755 FD6F C1 0F                      CMPB  #NUMLIN-1 CHECK FOR ACCEPTABLE ROW
1756 FD71 22 E1                      BHI   RETESC    ELSE RETURN DOING NOTHING
1756 FD71 22 E1                      BHI   RETESC    ELSE RETURN DOING NOTHING
1757 FD73 20 44                      BRA   NEWCUR    GO SET NEW CURSOR IF SO
1757 FD73 20 44                      BRA   NEWCUR    GO SET NEW CURSOR IF SO
1758                         *
1758                         *
1759                         *************************** DELETE LINE FROM SCREEN
1759                         *************************** DELETE LINE FROM SCREEN
1760
1760
1761 FD75 8D 3E              ESCDLL  BSR   CRETN     GO COL. ZERO
1761 FD75 8D 3E              ESCDLL  BSR   CRETN     GO COL. ZERO
1762 FD77 F6 DF EC                   LDB   ROWADX
1762 FD77 F6 DF EC                   LDB   ROWADX
1763 FD7A C1 0F                      CMPB  #NUMLIN-1
1763 FD7A C1 0F                      CMPB  #NUMLIN-1
1764 FD7C 27 7A                      BEQ   SCROL3
1764 FD7C 27 7A                      BEQ   SCROL3
1765 FD7E 20 61                      BRA   SCROL1    AND DELETE THIS LINE
1765 FD7E 20 61                      BRA   SCROL1    AND DELETE THIS LINE
1766
1766
1767                         *************************** INSERT LINE INTO SCREEN
1767                         *************************** INSERT LINE INTO SCREEN
1768
1768
1769 FD80 8D 33              ESCINL  BSR   CRETN    GO TO COL. ZERO
1769 FD80 8D 33              ESCINL  BSR   CRETN    GO TO COL. ZERO
1770 FD82 F6 DF EC                   LDAB  ROWADX
1770 FD82 F6 DF EC                   LDAB  ROWADX
1771 FD85 C1 0F                      CMPB  #NUMLIN-1
1771 FD85 C1 0F                      CMPB  #NUMLIN-1
1772 FD87 27 15                      BEQ   ESCCLL
1772 FD87 27 15                      BEQ   ESCCLL
1773                         *
1773                         *
1774                         ** SCROLL SCREEN DOWN FROM CURSOR
1774                         ** SCROLL SCREEN DOWN FROM CURSOR
1775                         *
1775                         *
1776 FD89 8E EB C0                   LDX   #SCREEN+SCNLEN-LINLEN
1776 FD89 8E EB C0                   LDX   #SCREEN+SCNLEN-LINLEN
1777 FD8C A6 82              ESCIN0  LDAA  0,-X
1777 FD8C A6 82              ESCIN0  LDAA  0,-X
1778 FD8E A7 88 40                   STAA  LINLEN,X
1778 FD8E A7 88 40                   STAA  LINLEN,X
1779 FD91 A6 89 04 00                LDA   SCNLEN,X
1779 FD91 A6 89 04 00                LDA   SCNLEN,X
1780 FD95 A7 89 04 40                STA   SCNLEN+LINLEN,X
1780 FD95 A7 89 04 40                STA   SCNLEN+LINLEN,X
1781 FD99 BC DF ED                   CPX   CURSOR
1781 FD99 BC DF ED                   CPX   CURSOR
1782 FD9C 26 EE                      BNE   ESCIN0
1782 FD9C 26 EE                      BNE   ESCIN0
1783
1783
1784                         ****************** CLEAR FROM CURSOR TO END OF LINE
1784                         ****************** CLEAR FROM CURSOR TO END OF LINE
1785
1785
1786 FD9E B6 DF EB           ESCCLL  LDA   COLADX    GET CURRENT COLUMN
1786 FD9E B6 DF EB           ESCCLL  LDA   COLADX    GET CURRENT COLUMN
1787 FDA1 BE DF ED                   LDX   CURSOR    GET CURSOR
1787 FDA1 BE DF ED                   LDX   CURSOR    GET CURSOR
1788 FDA4 C6 20                      LDB   #$20      AND CLEAR CHAR
1788 FDA4 C6 20                      LDB   #$20      AND CLEAR CHAR
1789 FDA6 E7 89 04 00        ESCLL1  STB   SCNLEN,X  CLEAR ATTRIBUTE
1789 FDA6 E7 89 04 00        ESCLL1  STB   SCNLEN,X  CLEAR ATTRIBUTE
1790 FDAA E7 80                      STB   ,X+       CLEAR TEXT
1790 FDAA E7 80                      STB   ,X+       CLEAR TEXT
1791 FDAC 4C                         INCA
1791 FDAC 4C                         INCA
1792 FDAD 81 40                      CMPA  #LINLEN   UNTIL END OF LINE
1792 FDAD 81 40                      CMPA  #LINLEN   UNTIL END OF LINE
1793 FDAF 26 F5                      BNE   ESCLL1
1793 FDAF 26 F5                      BNE   ESCLL1
1794 FDB1 7F DF F0                   CLR   ESCFLG
1794 FDB1 7F DF F0                   CLR   ESCFLG
1795 FDB4 39                         RTS
1795 FDB4 39                         RTS
1796
1796
1797                         *********************************** CARRIAGE RETURN
1797                         *********************************** CARRIAGE RETURN
1798
1798
1799 FDB5 4F                 CRETN   CLRA               SET COLUMN ZERO
1799 FDB5 4F                 CRETN   CLRA               SET COLUMN ZERO
1800 FDB6 F6 DF EC           POSCOL  LDB   ROWADX    GET CURRENT ROW
1800 FDB6 F6 DF EC           POSCOL  LDB   ROWADX    GET CURRENT ROW
1801
1801
1802                         *********** GENERATE NEW CURSOR POSITION AND RETURN
1802                         *********** GENERATE NEW CURSOR POSITION AND RETURN
1803
1803
1804 FDB9 FD DF EB           NEWCUR  STD   COLADX    SAVE NEW ROW AND COLUMN
1804 FDB9 FD DF EB           NEWCUR  STD   COLADX    SAVE NEW ROW AND COLUMN
1805 FDBC 86 40                      LDA   #LINLEN   ELSE ADD A LINE
1805 FDBC 86 40                      LDA   #LINLEN   ELSE ADD A LINE
1806 FDBE 3D                         MUL              LINLEN * ROWADX
1806 FDBE 3D                         MUL              LINLEN * ROWADX
1807 FDBF FB DF EB                   ADDB  COLADX
1807 FDBF FB DF EB                   ADDB  COLADX
1808 FDC2 89 00                      ADCA  #0
1808 FDC2 89 00                      ADCA  #0
1809 FDC4 C3 E8 00                   ADDD  #SCREEN   ADD SCREEN BASE.
1809 FDC4 C3 E8 00                   ADDD  #SCREEN   ADD SCREEN BASE.
1810 FDC7 FD DF ED                   STD   CURSOR    SAVE NEW CURSOR
1810 FDC7 FD DF ED                   STD   CURSOR    SAVE NEW CURSOR
1811 FDCA 1F 01                      TFR   D,X       GET CURSOR IN X
1811 FDCA 1F 01                      TFR   D,X       GET CURSOR IN X
1812 FDCC 39                         RTS              AND RETURN
1812 FDCC 39                         RTS              AND RETURN
1813
1813
1814                         ********************* UPDATE CURRENT COLUMN AND ROW
1814                         ********************* UPDATE CURRENT COLUMN AND ROW
1815
1815
1816 FDCD FC DF EB           NEWCOL  LDD   COLADX    GET ROW AND COLUMN
1816 FDCD FC DF EB           NEWCOL  LDD   COLADX    GET ROW AND COLUMN
1817 FDD0 4C                         INCA             BUMP COLUMN
1817 FDD0 4C                         INCA             BUMP COLUMN
1818 FDD1 81 40                      CMPA  #LINLEN   ROLL?
1818 FDD1 81 40                      CMPA  #LINLEN   ROLL?
1819 FDD3 26 E4                      BNE   NEWCUR    BRANCH IF NOT
1819 FDD3 26 E4                      BNE   NEWCUR    BRANCH IF NOT
1820 FDD5 4F                         CLRA             ELSE RESET TO ZERO
1820 FDD5 4F                         CLRA             ELSE RESET TO ZERO
1821 FDD6 5C                         INCB             AND BUMP ROW
1821 FDD6 5C                         INCB             AND BUMP ROW
1822 FDD7 C1 10                      CMPB  #NUMLIN
1822 FDD7 C1 10                      CMPB  #NUMLIN
1823 FDD9 26 DE                      BNE   NEWCUR
1823 FDD9 26 DE                      BNE   NEWCUR
1824 FDDB 5A                         DECB             BOTTOM ROW
1824 FDDB 5A                         DECB             BOTTOM ROW
1825 FDDC 8D DB                      BSR   NEWCUR
1825 FDDC 8D DB                      BSR   NEWCUR
1826
1826
1827                         ********************************* SCROLL THE SCREEN
1827                         ********************************* SCROLL THE SCREEN
1828
1828
1829 FDDE 8E E8 00           SCROLL  LDX   #SCREEN   POINT TO SCREEN
1829 FDDE 8E E8 00           SCROLL  LDX   #SCREEN   POINT TO SCREEN
1830 FDE1 A6 89 04 40        SCROL1  LDA   SCNLEN+LINLEN,X
1830 FDE1 A6 89 04 40        SCROL1  LDA   SCNLEN+LINLEN,X
1831 FDE5 A7 89 04 00                STA   SCNLEN,X
1831 FDE5 A7 89 04 00                STA   SCNLEN,X
1832 FDE9 A6 88 40                   LDAA  LINLEN,X  MOVE TWO BYTES
1832 FDE9 A6 88 40                   LDAA  LINLEN,X  MOVE TWO BYTES
1833 FDEC A7 80                      STAA  0,X+      UP ONE LINE
1833 FDEC A7 80                      STAA  0,X+      UP ONE LINE
1834 FDEE 8C EB C0                   CMPX  #SCREEN+SCNLEN-LINLEN
1834 FDEE 8C EB C0                   CMPX  #SCREEN+SCNLEN-LINLEN
1835 FDF1 26 EE                      BNE   SCROL1    LOOP UNTIL DONE
1835 FDF1 26 EE                      BNE   SCROL1    LOOP UNTIL DONE
1836 FDF3 20 03                      BRA   SCROL3
1836 FDF3 20 03                      BRA   SCROL3
1837
1837
1838                         **************** CLEAR FROM CURSOR TO END OF SCREEN
1838                         **************** CLEAR FROM CURSOR TO END OF SCREEN
1839
1839
1840 FDF5 BE DF ED           ESCCLS  LDX   CURSOR    GET CURSOR
1840 FDF5 BE DF ED           ESCCLS  LDX   CURSOR    GET CURSOR
1841 FDF8 86 20              SCROL3  LDAA  #$20      GET A SPACE
1841 FDF8 86 20              SCROL3  LDAA  #$20      GET A SPACE
1842 FDFA A7 89 04 00        SCROL2  STA   SCNLEN,X  CLEAR ATTRIBUTES
1842 FDFA A7 89 04 00        SCROL2  STA   SCNLEN,X  CLEAR ATTRIBUTES
1843 FDFE A7 80                      STA   ,X+       AND TEXT
1843 FDFE A7 80                      STA   ,X+       AND TEXT
1844 FE00 8C EC 00                   CMPX  #SCREEN+SCNLEN
1844 FE00 8C EC 00                   CMPX  #SCREEN+SCNLEN
1845 FE03 26 F5                      BNE   SCROL2    UNTIL DONE
1845 FE03 26 F5                      BNE   SCROL2    UNTIL DONE
1846 FE05 7F DF F0                   CLR   ESCFLG
1846 FE05 7F DF F0                   CLR   ESCFLG
1847 FE08 39                         RTS
1847 FE08 39                         RTS
1848                                 ENDIF DG640OPT
1848                                 ENDIF DG640OPT
1849                         *
1849                         *
1850                                 IFD PRTOPT
1850                                 IFD PRTOPT
1851                         *************************************
1851                         *************************************
1852                         *
1852                         *
1853                         ** PRINTER DRIVER ROUTINES
1853                         ** PRINTER DRIVER ROUTINES
1854                         *
1854                         *
1855                         *************************************
1855                         *************************************
1856                         *
1856                         *
1857                         ** PINIZ - INITIATE PRINTER PORT
1857                         ** PINIZ - INITIATE PRINTER PORT
1858                         *
1858                         *
1859 FE09 34 04              PINIZ   PSHS B
1859 FE09 34 04              PINIZ   PSHS B
1860 FE0B CC 0C 04                   LDD #DIRMSK*256+$04 ACCA=DIRMSK ACCB=$04
1860 FE0B CC 0C 04                   LDD #DIRMSK*256+$04 ACCA=DIRMSK ACCB=$04
1861 FE0E FD E4 04                   STD PADATA SET DDR AND SELECT DATA
1861 FE0E FD E4 04                   STD PADATA SET DDR AND SELECT DATA
1862                         *
1862                         *
1863                         ** RESET PRINTER
1863                         ** RESET PRINTER
1864 FE11 C6 04                      LDB #PRESET
1864 FE11 C6 04                      LDB #PRESET
1865 FE13 F7 E4 04                   STAB PADATA
1865 FE13 F7 E4 04                   STAB PADATA
1866 FE16 5C                 RESTLP  INCB DELAY FOR RESET
1866 FE16 5C                 RESTLP  INCB DELAY FOR RESET
1867 FE17 26 FD                      BNE RESTLP
1867 FE17 26 FD                      BNE RESTLP
1868 FE19 B7 E4 04                   STAA PADATA ACCA=DIRMSK
1868 FE19 B7 E4 04                   STAA PADATA ACCA=DIRMSK
1869                         *
1869                         *
1870                         ** INITALIZE PORT B (DATA PORT)
1870                         ** INITALIZE PORT B (DATA PORT)
1871 FE1C 86 2A                      LDAA #$2A
1871 FE1C 86 2A                      LDAA #$2A
1872 FE1E B7 E4 07                   STAA PBCTRL
1872 FE1E B7 E4 07                   STAA PBCTRL
1873 FE21 CC FF 2E                   LDD #$FF2E ACCA=$FF ACCB =%00101110
1873 FE21 CC FF 2E                   LDD #$FF2E ACCA=$FF ACCB =%00101110
1874 FE24 FD E4 06                   STD PBDATA PBDREG   PBCTRL
1874 FE24 FD E4 06                   STD PBDATA PBDREG   PBCTRL
1875                         *
1875                         *
1876                         ** SELECT 66 LINES/PAGE
1876                         ** SELECT 66 LINES/PAGE
1877 FE27 86 1B                      LDAA #$1B
1877 FE27 86 1B                      LDAA #$1B
1878 FE29 8D 08                      BSR POUTCH
1878 FE29 8D 08                      BSR POUTCH
1879 FE2B 86 43                      LDAA #'C
1879 FE2B 86 43                      LDAA #'C
1880 FE2D 8D 04                      BSR POUTCH
1880 FE2D 8D 04                      BSR POUTCH
1881 FE2F 86 42                      LDAA #66
1881 FE2F 86 42                      LDAA #66
1882 FE31 35 04                      PULS B
1882 FE31 35 04                      PULS B
1883                         *************************************
1883                         *************************************
1884                         *
1884                         *
1885                         ** OUTPUT A CHARACTER TO THE PRINTER
1885                         ** OUTPUT A CHARACTER TO THE PRINTER
1886                         *
1886                         *
1887                         *************************************
1887                         *************************************
1888 FE33 34 04              POUTCH  PSHS B
1888 FE33 34 04              POUTCH  PSHS B
1889 FE35 F6 E4 06                   LDAB PBDATA CLEAR INTERRUPT BIT
1889 FE35 F6 E4 06                   LDAB PBDATA CLEAR INTERRUPT BIT
1890                         *
1890                         *
1891                         ** WAIT TILL NOT BUSY
1891                         ** WAIT TILL NOT BUSY
1892 FE38 F6 E4 04           BUSYLP  LDAB PADATA
1892 FE38 F6 E4 04           BUSYLP  LDAB PADATA
1893 FE3B C5 10                      BITB #PERROR
1893 FE3B C5 10                      BITB #PERROR
1894 FE3D 27 06                      BEQ PEXIT
1894 FE3D 27 06                      BEQ PEXIT
1895 FE3F 5D                         TSTB
1895 FE3F 5D                         TSTB
1896 FE40 2B F6                      BMI BUSYLP
1896 FE40 2B F6                      BMI BUSYLP
1897                         *
1897                         *
1898                         ** NOW OUTPUT CHARACTER
1898                         ** NOW OUTPUT CHARACTER
1899 FE42 B7 E4 06                   STAA PBDATA
1899 FE42 B7 E4 06                   STAA PBDATA
1900 FE45 35 84              PEXIT   PULS B,PC
1900 FE45 35 84              PEXIT   PULS B,PC
1901                         *************************************
1901                         *************************************
1902                         *
1902                         *
1903                         ** PCHK TEST IFD PRINTER READY
1903                         ** PCHK TEST IFD PRINTER READY
1904                         *
1904                         *
1905                         *************************************
1905                         *************************************
1906 FE47 7D E4 07           PCHK    TST PBCTRL TEST STATE OF CRB7
1906 FE47 7D E4 07           PCHK    TST PBCTRL TEST STATE OF CRB7
1907 FE4A 39                         RTS SET ON ACKNOWLEDGE
1907 FE4A 39                         RTS SET ON ACKNOWLEDGE
1908                                 ENDIF PRTOPT
1908                                 ENDIF PRTOPT
1909                         *************************************
1909                         *************************************
1910                         *
1910                         *
1911                         * MONITOR KEYBOARD COMMAND JUMP TABLE
1911                         * MONITOR KEYBOARD COMMAND JUMP TABLE
1912                         *
1912                         *
1913                         *************************************
1913                         *************************************
1914                         *
1914                         *
1915 FE4B                    JMPTAB EQU *
1915 FE4B                    JMPTAB EQU *
1916 FE4B 01                  FCB 1 " ^A "
1916 FE4B 01                  FCB 1 " ^A "
1917 FE4C FB 3D               FDB ALTRA
1917 FE4C FB 3D               FDB ALTRA
1918 FE4E 02                  FCB 2 " ^B "
1918 FE4E 02                  FCB 2 " ^B "
1919 FE4F FB 32               FDB ALTRB
1919 FE4F FB 32               FDB ALTRB
1920 FE51 03                  FCB 3 " ^C "
1920 FE51 03                  FCB 3 " ^C "
1921 FE52 FB 48               FDB ALTRCC
1921 FE52 FB 48               FDB ALTRCC
1922 FE54 04                  FCB 4 " ^D "
1922 FE54 04                  FCB 4 " ^D "
1923 FE55 FB 27               FDB ALTRDP
1923 FE55 FB 27               FDB ALTRDP
1924 FE57 10                  FCB $10 " ^P "
1924 FE57 10                  FCB $10 " ^P "
1925 FE58 FA FA               FDB ALTRPC
1925 FE58 FA FA               FDB ALTRPC
1926 FE5A 15                  FCB $15 " ^U "
1926 FE5A 15                  FCB $15 " ^U "
1927 FE5B FB 06               FDB ALTRU
1927 FE5B FB 06               FDB ALTRU
1928 FE5D 18                  FCB $18 " ^X "
1928 FE5D 18                  FCB $18 " ^X "
1929 FE5E FB 1C               FDB ALTRX
1929 FE5E FB 1C               FDB ALTRX
1930 FE60 19                  FCB $19 " ^Y "
1930 FE60 19                  FCB $19 " ^Y "
1931 FE61 FB 11               FDB ALTRY
1931 FE61 FB 11               FDB ALTRY
1932                         *
1932                         *
1933 FE63 42                  FCC 'B'
1933 FE63 42                  FCC 'B'
1934 FE64 F9 51               FDB BRKPNT
1934 FE64 F9 51               FDB BRKPNT
1935 FE66 45                  FCC 'E'
1935 FE66 45                  FCC 'E'
1936 FE67 F8 F2               FDB MEMDUMP
1936 FE67 F8 F2               FDB MEMDUMP
1937 FE69 47                  FCC 'G'
1937 FE69 47                  FCC 'G'
1938 FE6A F8 9A               FDB GO
1938 FE6A F8 9A               FDB GO
1939 FE6C 4C                  FCC 'L'
1939 FE6C 4C                  FCC 'L'
1940 FE6D FA 27               FDB LOAD
1940 FE6D FA 27               FDB LOAD
1941 FE6F 50                  FCC 'P'
1941 FE6F 50                  FCC 'P'
1942 FE70 FA 85               FDB PUNCH
1942 FE70 FA 85               FDB PUNCH
1943 FE72 4D                  FCC 'M'
1943 FE72 4D                  FCC 'M'
1944 FE73 F8 9D               FDB MEMCHG
1944 FE73 F8 9D               FDB MEMCHG
1945 FE75 52                  FCC 'R'
1945 FE75 52                  FCC 'R'
1946 FE76 FB B6               FDB REGSTR
1946 FE76 FB B6               FDB REGSTR
1947 FE78 53                  FCC 'S'
1947 FE78 53                  FCC 'S'
1948 FE79 F8 E6               FDB DISSTK
1948 FE79 F8 E6               FDB DISSTK
1949 FE7B 58                  FCC 'X'
1949 FE7B 58                  FCC 'X'
1950 FE7C F9 7D               FDB XBKPNT
1950 FE7C F9 7D               FDB XBKPNT
1951                          IFD MFDCOPT
1951                          IFD MFDCOPT
1952 FE7E 44                  FCC 'D'      *** SWTPC USES 'U' FOR MINIBOOT
1952 FE7E 44                  FCC 'D'      *** SWTPC USES 'U' FOR MINIBOOT
1953 FE7F F9 CA               FDB MINBOOT
1953 FE7F F9 CA               FDB MINBOOT
1954                          ENDIF MFDCOPT
1954                          ENDIF MFDCOPT
1955                          IFD CF8OPT
1955                          IFD CF8OPT
1956                          FCC 'D'      *** FPGA 8 BIT USES 'D' FOR CFBOOT
1956                          FCC 'D'      *** FPGA 8 BIT USES 'D' FOR CFBOOT
1957                          FDB CFBOOT
1957                          FDB CFBOOT
1958                          ENDIF CF8OPT
1958                          ENDIF CF8OPT
1958                          ENDIF CF8OPT
1958                          ENDIF CF8OPT
1959                          IFD IDEOPT
1959                          IFD IDEOPT
1960                          FCC 'D'      *** XESS FPGA 16 BIT IDE USES 'D' FOR IDEBOOT
1960                          FCC 'D'      *** XESS FPGA 16 BIT IDE USES 'D' FOR IDEBOOT
1961                          FDB IDEBOOT
1961                          FDB IDEBOOT
1962                          ENDIF IDEOPT
1962                          ENDIF IDEOPT
1962                          ENDIF IDEOPT
1962                          ENDIF IDEOPT
1963                          IFD DMAFOPT
1963                          IFD DMAFOPT
1964                          FCC 'U'      *** SWTPC USES 'D' FOR DMAF2 BOOT
1964                          FCC 'U'      *** SWTPC USES 'D' FOR DMAF2 BOOT
1965                          FDB DBOOT
1965                          FDB DBOOT
1966                          ENDIF DMAFOPT
1966                          ENDIF DMAFOPT
1966                          ENDIF DMAFOPT
1966                          ENDIF DMAFOPT
1967                          IFD EXTOPT
1967                          IFD EXTOPT
1968                          FCC 'U'      *** IF FPGA, 'U' IS FOR USER
1968                          FCC 'U'      *** IF FPGA, 'U' IS FOR USER
1969                          FDB USRCMD
1969                          FDB USRCMD
1970                          ENDIF EXTOPT
1970                          ENDIF EXTOPT
1970                          ENDIF EXTOPT
1970                          ENDIF EXTOPT
1971                          IFD RTCOPT
1971                          IFD RTCOPT
1972                          FCC 'T'
1972                          FCC 'T'
1973                          FDB TIMSET
1973                          FDB TIMSET
1974                          ENDIF RTCOPT
1974                          ENDIF RTCOPT
1974                          ENDIF RTCOPT
1974                          ENDIF RTCOPT
1975                          IFD TRAOPT
1975                          IFD TRAOPT
1976                          FCC "T"
1976                          FCC "T"
1977                          FDB TRACE
1977                          FDB TRACE
1978                          ENDIF TRAOPT
1978                          ENDIF TRAOPT
1978                          ENDIF TRAOPT
1978                          ENDIF TRAOPT
1979                         *
1979                         *
1980 FE81                    TABEND EQU *
1980 FE81                    TABEND EQU *
1981                         *
1981                         *
1982                         * ** 6809 VECTOR ADDRESSES **
1982                         * ** 6809 VECTOR ADDRESSES **
1983                         *
1983                         *
1984                         * FOLLOWING ARE THE ADDRESSES OF THE VECTOR ROUTINES
1984                         * FOLLOWING ARE THE ADDRESSES OF THE VECTOR ROUTINES
1985                         * FOR THE 6809 PROCESSOR. DURING INITIALIZATION THEY
1985                         * FOR THE 6809 PROCESSOR. DURING INITIALIZATION THEY
1986                         * ARE RELOCATED TO RAM FROM $DFC0 TO $DFCF. THEY ARE
1986                         * ARE RELOCATED TO RAM FROM $DFC0 TO $DFCF. THEY ARE
1987                         * RELOCATED TO RAM SO THAT THE USER MAY REVECTOR TO
1987                         * RELOCATED TO RAM SO THAT THE USER MAY REVECTOR TO
1988                         * HIS OWN ROUTINES IF HE SO DESIRES.
1988                         * HIS OWN ROUTINES IF HE SO DESIRES.
1989                         *
1989                         *
1990                         *
1990                         *
1991 FE81 F9 89              RAMVEC FDB SWIE  USER-V
1991 FE81 F9 89              RAMVEC FDB SWIE  USER-V
1992 FE83 F8 9C               FDB RTI    SWI3-V
1992 FE83 F8 9C               FDB RTI    SWI3-V
1993 FE85 F8 9C               FDB RTI    SWI2-V
1993 FE85 F8 9C               FDB RTI    SWI2-V
1994 FE87 F8 9C               FDB RTI    FIRQ-V
1994 FE87 F8 9C               FDB RTI    FIRQ-V
1995 FE89 F8 9C               FDB RTI    IRQ-V
1995 FE89 F8 9C               FDB RTI    IRQ-V
1996 FE8B F9 89               FDB SWIE   SWI-V
1996 FE8B F9 89               FDB SWIE   SWI-V
1997 FE8D FF FF               FDB $FFFF  SVC-VO
1997 FE8D FF FF               FDB $FFFF  SVC-VO
1998 FE8F FF FF               FDB $FFFF  SVC-VL
1998 FE8F FF FF               FDB $FFFF  SVC-VL
1999                         *
1999                         *
2000                         * PRINTABLE MESSAGE STRINGS
2000                         * PRINTABLE MESSAGE STRINGS
2001                         *
2001                         *
2002 FE91 0D 0A 00 00 00     MSG1  FCB $D,$A,$0,$0,$0 * 0, CR/LF, 0
2002 FE91 0D 0A 00 00 00     MSG1  FCB $D,$A,$0,$0,$0 * 0, CR/LF, 0
2003 FE96 53 59 53 30 39 42        FCC 'SYS09BUG 1.4 FOR '
2003 FE96 53 59 53 30 39 42        FCC 'SYS09BUG 1.4 FOR '
          55 47 20 31 2E 34
          55 47 20 31 2E 34
          20 46 4F 52 20
          20 46 4F 52 20
2004                               IFD S3EOPT
2004                               IFD S3EOPT
2005                               FCC 'S3E '
2005                               FCC 'S3E '
2006                               ENDIF S3EOPT
2006                               ENDIF S3EOPT
2006                               ENDIF S3EOPT
2006                               ENDIF S3EOPT
2007                               IFD B5XOPT
2007                               IFD B5XOPT
2008                               FCC 'B5-X300 '
2008                               FCC 'B5-X300 '
2009                               ENDIF B5XOPT
2009                               ENDIF B5XOPT
2009                               ENDIF B5XOPT
2009                               ENDIF B5XOPT
2010                               IFD S3SOPT
2010                               IFD S3SOPT
2011                               FCC 'S3STARTER '
2011                               FCC 'S3STARTER '
2012                               ENDIF S3SOPT
2012                               ENDIF S3SOPT
2012                               ENDIF S3SOPT
2012                               ENDIF S3SOPT
2013                               IFD ADSOPT
2013                               IFD ADSOPT
2014 FEA7 41 44 53 36 38 30        FCC 'ADS6809 '
2014 FEA7 41 44 53 36 38 30        FCC 'ADS6809 '
          39 20
          39 20
2015                               ENDIF ADSOPT
2015                               ENDIF ADSOPT
2016                               IFD SWTOPT`
2016                               IFD SWTOPT`
2017                               FCC 'SWTPC '
2017                               FCC 'SWTPC '
2018                               ENDIF SWTOPT
2018                               ENDIF SWTOPT
2018                               ENDIF SWTOPT
2018                               ENDIF SWTOPT
2019                               IFD XESOPT`
2019                               IFD XESOPT`
2020                               FCC  'XESS '
2020                               FCC  'XESS '
2021                               ENDIF XESOPT
2021                               ENDIF XESOPT
2021                               ENDIF XESOPT
2021                               ENDIF XESOPT
2022 FEAF 20 2D 20                 FCC ' - '
2022 FEAF 20 2D 20                 FCC ' - '
2023 FEB2 04                       FCB 4
2023 FEB2 04                       FCB 4
2024 FEB3 4B 0D 0A 00 00 00  MSG2  FCB 'K,$D,$A,$00,$00,$00,$04 K, * CR/LF + 3 NULS
2024 FEB3 4B 0D 0A 00 00 00  MSG2  FCB 'K,$D,$A,$00,$00,$00,$04 K, * CR/LF + 3 NULS
          04
          04
2025 FEBA 3E                 MSG3  FCC '>'
2025 FEBA 3E                 MSG3  FCC '>'
2026 FEBB 04                       FCB 4
2026 FEBB 04                       FCB 4
2027 FEBC 57 48 41 54 3F     MSG4  FCC 'WHAT?'
2027 FEBC 57 48 41 54 3F     MSG4  FCC 'WHAT?'
2028 FEC1 04                       FCB 4
2028 FEC1 04                       FCB 4
2029 FEC2 20 2D 20           MSG5  FCC ' - '
2029 FEC2 20 2D 20           MSG5  FCC ' - '
2030 FEC5 04                       FCB 4'
2030 FEC5 04                       FCB 4'
2031 FEC6 20 20 53 50 3D     MSG10 FCC '  SP='
2031 FEC6 20 20 53 50 3D     MSG10 FCC '  SP='
2032 FECB 04                       FCB 4
2032 FECB 04                       FCB 4
2033 FECC 20 20 50 43 3D     MSG11 FCC '  PC='
2033 FECC 20 20 50 43 3D     MSG11 FCC '  PC='
2034 FED1 04                       FCB 4
2034 FED1 04                       FCB 4
2035 FED2 20 20 55 53 3D     MSG12 FCC '  US='
2035 FED2 20 20 55 53 3D     MSG12 FCC '  US='
2036 FED7 04                       FCB 4
2036 FED7 04                       FCB 4
2037 FED8 20 20 49 59 3D     MSG13 FCC '  IY='
2037 FED8 20 20 49 59 3D     MSG13 FCC '  IY='
2038 FEDD 04                       FCB 4
2038 FEDD 04                       FCB 4
2039 FEDE 20 20 49 58 3D     MSG14 FCC '  IX='
2039 FEDE 20 20 49 58 3D     MSG14 FCC '  IX='
2040 FEE3 04                       FCB 4
2040 FEE3 04                       FCB 4
2041 FEE4 20 20 44 50 3D     MSG15 FCC '  DP='
2041 FEE4 20 20 44 50 3D     MSG15 FCC '  DP='
2042 FEE9 04                       FCB 4
2042 FEE9 04                       FCB 4
2043 FEEA 20 20 41 3D        MSG16 FCC '  A='
2043 FEEA 20 20 41 3D        MSG16 FCC '  A='
2044 FEEE 04                       FCB 4
2044 FEEE 04                       FCB 4
2045 FEEF 20 20 42 3D        MSG17 FCC '  B='
2045 FEEF 20 20 42 3D        MSG17 FCC '  B='
2046 FEF3 04                       FCB 4
2046 FEF3 04                       FCB 4
2047 FEF4 20 20 43 43 3A 20  MSG18 FCC '  CC: '
2047 FEF4 20 20 43 43 3A 20  MSG18 FCC '  CC: '
2048 FEFA 04                       FCB 4
2048 FEFA 04                       FCB 4
2049 FEFB 45 46 48 49 4E 5A  MSG19 FCC 'EFHINZVC'
2049 FEFB 45 46 48 49 4E 5A  MSG19 FCC 'EFHINZVC'
          56 43
          56 43
2050 FF03 53 31              MSG20 FCC 'S1'
2050 FF03 53 31              MSG20 FCC 'S1'
2051 FF05 04                       FCB 4
2051 FF05 04                       FCB 4
2052                                 IFD DATOPT
2052                                 IFD DATOPT
2053                         *
2053                         *
2054                         * POWER UP/ RESET/ NMI ENTRY POINT
2054                         * POWER UP/ RESET/ NMI ENTRY POINT
2055                         *
2055                         *
2056                          ORG $FF00
2056                          ORG $FF00
2057                         *
2057                         *
2058                         *
2058                         *
2059                         START LDX  #IC11  POINT TO DAT RAM IC11
2059                         START LDX  #IC11  POINT TO DAT RAM IC11
2060                                 LDA  #$F GET COMPLIMENT OF ZERO
2060                                 LDA  #$F GET COMPLIMENT OF ZERO
2061                         *
2061                         *
2062                         *
2062                         *
2063                         * INITIALIZE DAT RAM --- LOADS $F-$0 IN LOCATIONS $0-$F
2063                         * INITIALIZE DAT RAM --- LOADS $F-$0 IN LOCATIONS $0-$F
2064                         * OF DAT RAM, THUS STORING COMPLEMENT OF MSB OF ADDRESS
2064                         * OF DAT RAM, THUS STORING COMPLEMENT OF MSB OF ADDRESS
2065                         * IN THE DAT RAM. THE COMPLEMENT IS REQUIRED BECAUSE THE
2065                         * IN THE DAT RAM. THE COMPLEMENT IS REQUIRED BECAUSE THE
2066                         * OUTPUT OF IC11, A 74S189, IS THE INVERSE OF THE DATA
2066                         * OUTPUT OF IC11, A 74S189, IS THE INVERSE OF THE DATA
2067                         * STORED IN IT.
2067                         * STORED IN IT.
2068                         *
2068                         *
2069                         *
2069                         *
2070                         DATLP STA  ,X+ STORE & POINT TO NEXT RAM LOCATION
2070                         DATLP STA  ,X+ STORE & POINT TO NEXT RAM LOCATION
2071                                 DECA  GET COMP. VALUE FOR NEXT LOCATION
2071                                 DECA  GET COMP. VALUE FOR NEXT LOCATION
2072                                 BNE  DATLP ALL 16 LOCATIONS INITIALIZED ?
2072                                 BNE  DATLP ALL 16 LOCATIONS INITIALIZED ?
2073                         *
2073                         *
2074                         * NOTE: IX NOW CONTAINS $0000, DAT RAM IS NO LONGER
2074                         * NOTE: IX NOW CONTAINS $0000, DAT RAM IS NO LONGER
2075                         *       ADDRESSED, AND LOGICAL ADDRESSES NOW EQUAL
2075                         *       ADDRESSED, AND LOGICAL ADDRESSES NOW EQUAL
2076                         *       PHYSICAL ADDRESSES.
2076                         *       PHYSICAL ADDRESSES.
2077                         *
2077                         *
2078                                 LDA  #$F0
2078                                 LDA  #$F0
2079                                 STA  ,X STORE $F0 AT $FFFF
2079                                 STA  ,X STORE $F0 AT $FFFF
2080                                 LDX  #$D0A0 ASSUME RAM TO BE AT $D000-$DFFF
2080                                 LDX  #$D0A0 ASSUME RAM TO BE AT $D000-$DFFF
2081                                 LDY  #TSTPAT LOAD TEST DATA PATTERN INTO "Y"
2081                                 LDY  #TSTPAT LOAD TEST DATA PATTERN INTO "Y"
2082                         TSTRAM LDU  ,X SAVE DATA FROM TEST LOCATION
2082                         TSTRAM LDU  ,X SAVE DATA FROM TEST LOCATION
2083                                 STY  ,X STORE TEST PATTERN AT $D0A0
2083                                 STY  ,X STORE TEST PATTERN AT $D0A0
2084                                 CMPY ,X IS THERE RAM AT THIS LOCATION ?
2084                                 CMPY ,X IS THERE RAM AT THIS LOCATION ?
2085                                 BEQ  CNVADR IF MATCH THERE'S RAM, SO SKIP
2085                                 BEQ  CNVADR IF MATCH THERE'S RAM, SO SKIP
2086                                 LEAX -$1000,X ELSE POINT 4K LOWER
2086                                 LEAX -$1000,X ELSE POINT 4K LOWER
2087                                 CMPX #$F0A0 DECREMENTED PAST ZER0 YET ?
2087                                 CMPX #$F0A0 DECREMENTED PAST ZER0 YET ?
2088                                 BNE  TSTRAM IF NOT CONTINUE TESTING FOR RAM
2088                                 BNE  TSTRAM IF NOT CONTINUE TESTING FOR RAM
2089                                 BRA  START ELSE START ALL OVER AGAIN
2089                                 BRA  START ELSE START ALL OVER AGAIN
2090                         *
2090                         *
2091                         *
2091                         *
2092                         * THE FOLLOWING CODE STORES THE COMPLEMENT OF
2092                         * THE FOLLOWING CODE STORES THE COMPLEMENT OF
2093                         * THE MS CHARACTER OF THE FOUR CHARACTER HEX
2093                         * THE MS CHARACTER OF THE FOUR CHARACTER HEX
2094                         * ADDRESS OF THE FIRST 4K BLOCK OF RAM LOCATED
2094                         * ADDRESS OF THE FIRST 4K BLOCK OF RAM LOCATED
2095                         * BY THE ROUTINE "TSTRAM" INTO THE DAT RAM. IT
2095                         * BY THE ROUTINE "TSTRAM" INTO THE DAT RAM. IT
2096                         * IS STORED IN RAM IN THE LOCATION THAT IS
2096                         * IS STORED IN RAM IN THE LOCATION THAT IS
2097                         * ADDRESSED WHEN THE PROCESSOR ADDRESS IS $D---,
2097                         * ADDRESSED WHEN THE PROCESSOR ADDRESS IS $D---,
2098                         * THUS IF THE FIRST 4K BLOCK OF RAM IS FOUND
2098                         * THUS IF THE FIRST 4K BLOCK OF RAM IS FOUND
2099                         * WHEN TESTING LOCATION $70A0, MEANING THERE
2099                         * WHEN TESTING LOCATION $70A0, MEANING THERE
2100                         * IS NO RAM PHYSICALLY ADDRESSED IN THE RANGE
2100                         * IS NO RAM PHYSICALLY ADDRESSED IN THE RANGE
2101                         * $8000-$DFFF, THEN THE COMPLEMENT OF THE
2101                         * $8000-$DFFF, THEN THE COMPLEMENT OF THE
2102                         * "7" IN THE $70A0 WILL BE STORED IN
2102                         * "7" IN THE $70A0 WILL BE STORED IN
2103                         * THE DAT RAM. THUS WHEN THE PROCESSOR OUTPUTS
2103                         * THE DAT RAM. THUS WHEN THE PROCESSOR OUTPUTS
2104                         * AN ADDRESS OF $D---, THE DAT RAM WILL RESPOND
2104                         * AN ADDRESS OF $D---, THE DAT RAM WILL RESPOND
2105                         * BY RECOMPLEMENTING THE "7" AND OUTPUTTING THE
2105                         * BY RECOMPLEMENTING THE "7" AND OUTPUTTING THE
2106                         * 7 ONTO THE A12-A15 ADDRESS LINES. THUS THE
2106                         * 7 ONTO THE A12-A15 ADDRESS LINES. THUS THE
2107                         * RAM THAT IS PHYSICALLY ADDRESSED AT $7---
2107                         * RAM THAT IS PHYSICALLY ADDRESSED AT $7---
2108                         * WILL RESPOND AND APPEAR TO THE 6809 THAT IT
2108                         * WILL RESPOND AND APPEAR TO THE 6809 THAT IT
2109                         * IS AT $D--- SINCE THAT IS THE ADDRESS THE
2109                         * IS AT $D--- SINCE THAT IS THE ADDRESS THE
2110                         * 6809 WILL BE OUTPUTING WHEN THAT 4K BLOCK
2110                         * 6809 WILL BE OUTPUTING WHEN THAT 4K BLOCK
2111                         * OF RAM RESPONDS.
2111                         * OF RAM RESPONDS.
2112                         *
2112                         *
2113                         *
2113                         *
2114                         CNVADR  STU  ,X RESTORE DATA AT TEST LOCATION
2114                         CNVADR  STU  ,X RESTORE DATA AT TEST LOCATION
2115                                 TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
2115                                 TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
2116                                 COMA  COMPLEMENT MSB OF THAT ADDRESS
2116                                 COMA  COMPLEMENT MSB OF THAT ADDRESS
2117                                 LSRA  PUT MS 4 BITS OF ADDRESS IN
2117                                 LSRA  PUT MS 4 BITS OF ADDRESS IN
2118                                 LSRA  LOCATION D0-D3 TO ALLOW STORING
2118                                 LSRA  LOCATION D0-D3 TO ALLOW STORING
2119                                 LSRA  IT IN THE DYNAMIC ADDRESS
2119                                 LSRA  IT IN THE DYNAMIC ADDRESS
2120                                 LSRA  TRANSLATION RAM.
2120                                 LSRA  TRANSLATION RAM.
2121                                 STA  $FFFD STORE XLATION FACTOR IN DAT "D"
2121                                 STA  $FFFD STORE XLATION FACTOR IN DAT "D"
2122                         *
2122                         *
2123                                 LDS  #STACK INITIALIZE STACK POINTER
2123                                 LDS  #STACK INITIALIZE STACK POINTER
2124                         *
2124                         *
2125                         *
2125                         *
2126                         * THE FOLLOWING CHECKS TO FIND THE REAL PHYSICAL ADDRESSES
2126                         * THE FOLLOWING CHECKS TO FIND THE REAL PHYSICAL ADDRESSES
2127                         * OF ALL 4K BLKS OF RAM IN THE SYSTEM. WHEN EACH 4K BLK
2127                         * OF ALL 4K BLKS OF RAM IN THE SYSTEM. WHEN EACH 4K BLK
2128                         * OF RAM IS LOCATED, THE COMPLEMENT OF IT'S REAL ADDRESS
2128                         * OF RAM IS LOCATED, THE COMPLEMENT OF IT'S REAL ADDRESS
2129                         * IS THEN STORED IN A "LOGICAL" TO "REAL" ADDRESS XLATION
2129                         * IS THEN STORED IN A "LOGICAL" TO "REAL" ADDRESS XLATION
2130                         * TABLE THAT IS BUILT FROM $DFD0 TO $DFDF. FOR EXAMPLE IF
2130                         * TABLE THAT IS BUILT FROM $DFD0 TO $DFDF. FOR EXAMPLE IF
2131                         * THE SYSTEM HAS RAM THAT IS PHYSICALLY LOCATED (WIRED TO
2131                         * THE SYSTEM HAS RAM THAT IS PHYSICALLY LOCATED (WIRED TO
2132                         * RESPOND) AT THE HEX LOCATIONS $0--- THRU $F---....
2132                         * RESPOND) AT THE HEX LOCATIONS $0--- THRU $F---....
2133                         *
2133                         *
2134                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
2134                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
2135                         * 4K 4K 4K 4K 4K 4K 4K 4K -- 4K 4K 4K 4K -- -- --
2135                         * 4K 4K 4K 4K 4K 4K 4K 4K -- 4K 4K 4K 4K -- -- --
2136                         *
2136                         *
2137                         * ....FOR A TOTAL OF 48K OF RAM, THEN THE TRANSLATION TABLE
2137                         * ....FOR A TOTAL OF 48K OF RAM, THEN THE TRANSLATION TABLE
2138                         * CREATED FROM $DFD0 TO $DFDF WILL CONSIST OF THE FOLLOWING....
2138                         * CREATED FROM $DFD0 TO $DFDF WILL CONSIST OF THE FOLLOWING....
2139                         *
2139                         *
2140                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
2140                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
2141                         * 0F 0E 0D 0C 0B 0A 09 08 06 05 00 00 04 03 F1 F0
2141                         * 0F 0E 0D 0C 0B 0A 09 08 06 05 00 00 04 03 F1 F0
2142                         *
2142                         *
2143                         *
2143                         *
2144                         * HERE WE SEE THE LOGICAL ADDRESSES OF MEMORY FROM $0000-$7FFF
2144                         * HERE WE SEE THE LOGICAL ADDRESSES OF MEMORY FROM $0000-$7FFF
2145                         * HAVE NOT BEEN SELECTED FOR RELOCATION SO THAT THEIR PHYSICAL
2145                         * HAVE NOT BEEN SELECTED FOR RELOCATION SO THAT THEIR PHYSICAL
2146                         * ADDRESS WILL = THEIR LOGICAL ADDRESS; HOWEVER, THE 4K BLOCK
2146                         * ADDRESS WILL = THEIR LOGICAL ADDRESS; HOWEVER, THE 4K BLOCK
2147                         * PHYSICALLY AT $9000 WILL HAVE ITS ADDRESS TRANSLATED SO THAT
2147                         * PHYSICALLY AT $9000 WILL HAVE ITS ADDRESS TRANSLATED SO THAT
2148                         * IT WILL LOGICALLY RESPOND AT $8000. LIKEWISE $A,$B, AND $C000
2148                         * IT WILL LOGICALLY RESPOND AT $8000. LIKEWISE $A,$B, AND $C000
2149                         * WILL BE TRANSLATED TO RESPOND TO $9000,$C000, AND $D000
2149                         * WILL BE TRANSLATED TO RESPOND TO $9000,$C000, AND $D000
2150                         * RESPECTIVELY. THE USER SYSTEM WILL LOGICALLY APPEAR TO HAVE
2150                         * RESPECTIVELY. THE USER SYSTEM WILL LOGICALLY APPEAR TO HAVE
2151                         * MEMORY ADDRESSED AS FOLLOWS....
2151                         * MEMORY ADDRESSED AS FOLLOWS....
2152                         *
2152                         *
2153                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
2153                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
2154                         * 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K -- -- 4K 4K -- --
2154                         * 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K -- -- 4K 4K -- --
2155                         *
2155                         *
2156                         *
2156                         *
2157                                 LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
2157                                 LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
2158                                 STA  13,Y STORE $D--- XLATION FACTOR AT $DFDD
2158                                 STA  13,Y STORE $D--- XLATION FACTOR AT $DFDD
2159                                 CLR  14,Y CLEAR $DFDE
2159                                 CLR  14,Y CLEAR $DFDE
2160                                 LDA  #$F0 DESTINED FOR IC8 AN MEM EXPANSION ?
2160                                 LDA  #$F0 DESTINED FOR IC8 AN MEM EXPANSION ?
2161                                 STA  15,Y STORE AT $DFDF
2161                                 STA  15,Y STORE AT $DFDF
2162                                 LDA  #$0C PRESET NUMBER OF BYTES TO CLEAR
2162                                 LDA  #$0C PRESET NUMBER OF BYTES TO CLEAR
2163                         CLRLRT CLR  A,Y CLEAR $DFDC THRU $DFD0
2163                         CLRLRT CLR  A,Y CLEAR $DFDC THRU $DFD0
2164                                 DECA SUB. 1 FROM BYTES LEFT TO CLEAR
2164                                 DECA SUB. 1 FROM BYTES LEFT TO CLEAR
2165                                 BPL  CLRLRT CONTINUE IF NOT DONE CLEARING
2165                                 BPL  CLRLRT CONTINUE IF NOT DONE CLEARING
2166                         FNDRAM LEAX -$1000,X POINT TO NEXT LOWER 4K OF RAM
2166                         FNDRAM LEAX -$1000,X POINT TO NEXT LOWER 4K OF RAM
2167                                 CMPX #$F0A0 TEST FOR DECREMENT PAST ZERO
2167                                 CMPX #$F0A0 TEST FOR DECREMENT PAST ZERO
2168                                 BEQ  FINTAB SKIP IF FINISHED
2168                                 BEQ  FINTAB SKIP IF FINISHED
2169                                 LDU  ,X SAVE DATA AT CURRENT TEST LOCATION
2169                                 LDU  ,X SAVE DATA AT CURRENT TEST LOCATION
2170                                 LDY  #TSTPAT LOAD TEST DATA PATTERN INTO Y REG.
2170                                 LDY  #TSTPAT LOAD TEST DATA PATTERN INTO Y REG.
2171                                 STY  ,X STORE TEST PATT. INTO RAM TEST LOC.
2171                                 STY  ,X STORE TEST PATT. INTO RAM TEST LOC.
2172                                 CMPY ,X VERIFY RAM AT TEST LOCATION
2172                                 CMPY ,X VERIFY RAM AT TEST LOCATION
2173                                 BNE  FNDRAM IF NO RAM GO LOOK 4K LOWER
2173                                 BNE  FNDRAM IF NO RAM GO LOOK 4K LOWER
2174                                 STU  ,X ELSE RESTORE DATA TO TEST LOCATION
2174                                 STU  ,X ELSE RESTORE DATA TO TEST LOCATION
2175                                 LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
2175                                 LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
2176                                 TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
2176                                 TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
2177                                 LSRA  PUT MS 4 BITS OF ADDR. IN LOC. D0-D3
2177                                 LSRA  PUT MS 4 BITS OF ADDR. IN LOC. D0-D3
2178                                 LSRA  TO ALLOW STORING IT IN THE DAT RAM.
2178                                 LSRA  TO ALLOW STORING IT IN THE DAT RAM.
2179                                 LSRA
2179                                 LSRA
2180                                 LSRA
2180                                 LSRA
2181                                 TFR  A,B SAVE OFFSET INTO LRARAM TABLE
2181                                 TFR  A,B SAVE OFFSET INTO LRARAM TABLE
2182                                 EORA #$0F INVERT MSB OF ADDR. OF CURRENT 4K BLK
2182                                 EORA #$0F INVERT MSB OF ADDR. OF CURRENT 4K BLK
2183                                 STA  B,Y SAVE TRANSLATION FACTOR IN LRARAM TABLE
2183                                 STA  B,Y SAVE TRANSLATION FACTOR IN LRARAM TABLE
2184                                 BRA  FNDRAM GO TRANSLATE ADDR. OF NEXT 4K BLK
2184                                 BRA  FNDRAM GO TRANSLATE ADDR. OF NEXT 4K BLK
2185                         FINTAB LDA  #$F1 DESTINED FOR IC8 AND MEM EXPANSION ?
2185                         FINTAB LDA  #$F1 DESTINED FOR IC8 AND MEM EXPANSION ?
2186                                 LDY  #LRARAM POINT TO LRARAM TABLE
2186                                 LDY  #LRARAM POINT TO LRARAM TABLE
2187                                 STA  14,Y STORE $F1 AT $DFCE
2187                                 STA  14,Y STORE $F1 AT $DFCE
2188                         *
2188                         *
2189                         * THE FOLLOWING CHECKS TO SEE IF THERE IS A 4K BLK OF
2189                         * THE FOLLOWING CHECKS TO SEE IF THERE IS A 4K BLK OF
2190                         * RAM LOCATED AT $C000-$CFFF. IF NONE THERE IT LOCATES
2190                         * RAM LOCATED AT $C000-$CFFF. IF NONE THERE IT LOCATES
2191                         * THE NEXT LOWER 4K BLK AN XLATES ITS ADDR SO IT
2191                         * THE NEXT LOWER 4K BLK AN XLATES ITS ADDR SO IT
2192                         * LOGICALLY RESPONDS TO THE ADDRESS $C---.
2192                         * LOGICALLY RESPONDS TO THE ADDRESS $C---.
2193                         *
2193                         *
2194                         *
2194                         *
2195                                 LDA  #$0C PRESET NUMBER HEX "C"
2195                                 LDA  #$0C PRESET NUMBER HEX "C"
2196                         FINDC   LDB  A,Y GET ENTRY FROM LRARAM TABLE
2196                         FINDC   LDB  A,Y GET ENTRY FROM LRARAM TABLE
2197                                 BNE  FOUNDC BRANCH IF RAM THIS PHYSICAL ADDR.
2197                                 BNE  FOUNDC BRANCH IF RAM THIS PHYSICAL ADDR.
2198                                 DECA  ELSE POINT 4K LOWER
2198                                 DECA  ELSE POINT 4K LOWER
2199                                 BPL  FINDC GO TRY AGAIN
2199                                 BPL  FINDC GO TRY AGAIN
2200                                 BRA  XFERTF
2200                                 BRA  XFERTF
2201                         FOUNDC  CLR  A,Y CLR XLATION FACTOR OF 4K BLOCK FOUND
2201                         FOUNDC  CLR  A,Y CLR XLATION FACTOR OF 4K BLOCK FOUND
2202                                 STB  $C,Y GIVE IT XLATION FACTOR MOVING IT TO $C---
2202                                 STB  $C,Y GIVE IT XLATION FACTOR MOVING IT TO $C---
2203                         *
2203                         *
2204                         * THE FOLLOWING CODE ADJUSTS THE TRANSLATION
2204                         * THE FOLLOWING CODE ADJUSTS THE TRANSLATION
2205                         * FACTORS SUCH THAT ALL REMAINING RAM WILL
2205                         * FACTORS SUCH THAT ALL REMAINING RAM WILL
2206                         * RESPOND TO A CONTIGUOUS BLOCK OF LOGICAL
2206                         * RESPOND TO A CONTIGUOUS BLOCK OF LOGICAL
2207                         * ADDRESSES FROM $0000 AND UP....
2207                         * ADDRESSES FROM $0000 AND UP....
2208                         *
2208                         *
2209                                 CLRA  START AT ZERO
2209                                 CLRA  START AT ZERO
2210                                 TFR  Y,X START POINTER "X" START OF "LRARAM" TABLE.
2210                                 TFR  Y,X START POINTER "X" START OF "LRARAM" TABLE.
2211                         COMPRS  LDB  A,Y GET ENTRY FROM "LRARAM" TABLE
2211                         COMPRS  LDB  A,Y GET ENTRY FROM "LRARAM" TABLE
2212                                 BEQ  PNTNXT IF IT'S ZER0 SKIP
2212                                 BEQ  PNTNXT IF IT'S ZER0 SKIP
2213                                 CLR  A,Y ELSE ERASE FROM TABLE
2213                                 CLR  A,Y ELSE ERASE FROM TABLE
2214                                 STB  ,X+ AND ENTER ABOVE LAST ENTRY- BUMP
2214                                 STB  ,X+ AND ENTER ABOVE LAST ENTRY- BUMP
2215                         PNTNXT  INCA GET OFFSET TO NEXT ENTRY
2215                         PNTNXT  INCA GET OFFSET TO NEXT ENTRY
2216                                 CMPA #$0C LAST ENTRY YET ?
2216                                 CMPA #$0C LAST ENTRY YET ?
2217                                 BLT  COMPRS
2217                                 BLT  COMPRS
2218                         *
2218                         *
2219                         * THE FOLLOWING CODE TRANSFER THE TRANSLATION
2219                         * THE FOLLOWING CODE TRANSFER THE TRANSLATION
2220                         * FACTORS FROM THE LRARAM TABLE TO IC11 ON
2220                         * FACTORS FROM THE LRARAM TABLE TO IC11 ON
2221                         * THE MP-09 CPU CARD.
2221                         * THE MP-09 CPU CARD.
2222                         *
2222                         *
2223                         XFERTF  LDX  #IC11  POINT TO DAT RAM IC11
2223                         XFERTF  LDX  #IC11  POINT TO DAT RAM IC11
2224                                 LDB  #$10 GET NO. OF BYTES TO MOVE
2224                                 LDB  #$10 GET NO. OF BYTES TO MOVE
2225                         FETCH   LDA  ,Y+ GET BYTE AND POINT TO NEXT
2225                         FETCH   LDA  ,Y+ GET BYTE AND POINT TO NEXT
2226                                 STA  ,X+ POKE XLATION FACTOR IN IC11
2226                                 STA  ,X+ POKE XLATION FACTOR IN IC11
2227                                 DECB  SUB 1 FROM BYTES TO MOVE
2227                                 DECB  SUB 1 FROM BYTES TO MOVE
2228                                 BNE  FETCH CONTINUE UNTIL 16 MOVED
2228                                 BNE  FETCH CONTINUE UNTIL 16 MOVED
2229                         *
2229                         *
2230                                 ELSE
2230                                 ELSE
2231 FF06 39                 LRA     RTS
2231 FF06 39                 LRA     RTS
2232 FF07 10 CE DF C0        START   LDS  #STACK INITIALIZE STACK POINTER
2232 FF07 10 CE DF C0        START   LDS  #STACK INITIALIZE STACK POINTER
2233 FF0B 5F                         CLRB
2233 FF0B 5F                         CLRB
2234                                 ENDIF DATOPT
2234                                 ENDIF DATOPT
2235                         *
2235                         *
2236 FF0C 53                         COMB  SET "B" NON-ZERO
2236 FF0C 53                         COMB  SET "B" NON-ZERO
2237 FF0D F7 DF D2                   STB  ECHO TURN ON ECHO FLAG
2237 FF0D F7 DF D2                   STB  ECHO TURN ON ECHO FLAG
2238 FF10 16 F9 0F                   LBRA MONITOR INITIALIZATION IS COMPLETE
2238 FF10 16 F9 0F                   LBRA MONITOR INITIALIZATION IS COMPLETE
2239                         *
2239                         *
2240                         ** INTERRUPT JUMP VECTORS
2240                         ** INTERRUPT JUMP VECTORS
2241                         *
2241                         *
2242 FF13 6E 9F DF C0        V1 JMP  [STACK]
2242 FF13 6E 9F DF C0        V1 JMP  [STACK]
2243 FF17 6E 9F DF C4        V2 JMP  [SWI2]
2243 FF17 6E 9F DF C4        V2 JMP  [SWI2]
2244 FF1B 6E 9F DF C6        V3 JMP  [FIRQ]
2244 FF1B 6E 9F DF C6        V3 JMP  [FIRQ]
2245 FF1F 6E 9F DF C8        V4 JMP  [IRQ]
2245 FF1F 6E 9F DF C8        V4 JMP  [IRQ]
2246 FF23 6E 9F DF CA        V5 JMP  [SWI]
2246 FF23 6E 9F DF CA        V5 JMP  [SWI]
2247                         *
2247                         *
2248                         * SWI3 ENTRY POINT
2248                         * SWI3 ENTRY POINT
2249                         *
2249                         *
2250 FF27 1F 43              SWI3E  TFR  S,U
2250 FF27 1F 43              SWI3E  TFR  S,U
2251 FF29 AE 4A                     LDX  10,U      *$FFC8
2251 FF29 AE 4A                     LDX  10,U      *$FFC8
2252 FF2B E6 80                     LDB  ,X+
2252 FF2B E6 80                     LDB  ,X+
2253 FF2D AF 4A                     STX  10,U
2253 FF2D AF 4A                     STX  10,U
2254 FF2F 4F                        CLRA
2254 FF2F 4F                        CLRA
2255 FF30 58                        ASLB
2255 FF30 58                        ASLB
2256 FF31 49                        ROLA
2256 FF31 49                        ROLA
2257 FF32 BE DF CC                  LDX  SVCVO
2257 FF32 BE DF CC                  LDX  SVCVO
2258 FF35 8C FF FF                  CMPX #$FFFF
2258 FF35 8C FF FF                  CMPX #$FFFF
2259 FF38 27 0F                     BEQ  SWI3Z
2259 FF38 27 0F                     BEQ  SWI3Z
2260 FF3A 30 8B                     LEAX D,X
2260 FF3A 30 8B                     LEAX D,X
2261 FF3C BC DF CE                  CMPX SVCVL
2261 FF3C BC DF CE                  CMPX SVCVL
2262 FF3F 22 08                     BHI  SWI3Z
2262 FF3F 22 08                     BHI  SWI3Z
2263 FF41 34 10                     PSHS X
2263 FF41 34 10                     PSHS X
2264 FF43 EC C4                     LDD  ,U
2264 FF43 EC C4                     LDD  ,U
2265 FF45 AE 44                     LDX  4,U
2265 FF45 AE 44                     LDX  4,U
2266 FF47 6E F1                     JMP  [,S++]
2266 FF47 6E F1                     JMP  [,S++]
2267 FF49 37 1F              SWI3Z PULU A,B,X,CC,DP
2267 FF49 37 1F              SWI3Z PULU A,B,X,CC,DP
2268 FF4B EE 42                     LDU  2,U
2268 FF4B EE 42                     LDU  2,U
2269 FF4D 6E 9F DF C2               JMP  [SWI3]
2269 FF4D 6E 9F DF C2               JMP  [SWI3]
2270                         *
2270                         *
2271                         * 6809 VECTORS
2271                         * 6809 VECTORS
2272                         *
2272                         *
2273 FFF0                           ORG $FFF0
2273 FFF0                           ORG $FFF0
2274 FFF0 FF 13                     FDB V1    USER-V
2274 FFF0 FF 13                     FDB V1    USER-V
2275 FFF2 FF 27                     FDB SWI3E SWI3-V
2275 FFF2 FF 27                     FDB SWI3E SWI3-V
2276 FFF4 FF 17                     FDB V2    SWI2-V
2276 FFF4 FF 17                     FDB V2    SWI2-V
2277 FFF6 FF 1B                     FDB V3    FIRQ-V
2277 FFF6 FF 1B                     FDB V3    FIRQ-V
2278 FFF8 FF 1F                     FDB V4    IRQ-V
2278 FFF8 FF 1F                     FDB V4    IRQ-V
2279 FFFA FF 23                     FDB V5    SWI-V
2279 FFFA FF 23                     FDB V5    SWI-V
2280 FFFC FF 13                     FDB V1    NMI-V
2280 FFFC FF 13                     FDB V1    NMI-V
2281 FFFE FF 07                     FDB START RESTART-V
2281 FFFE FF 07                     FDB START RESTART-V
0004                                END START
0004                                END START
0005                          END
0005                          END
Program + Init Data = 1889 bytes
Program + Init Data = 1889 bytes
Error count = 0
Error count = 0
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.