URL
https://opencores.org/ocsvn/System09/System09/trunk
Subversion Repositories System09
[/] [System09/] [trunk/] [src/] [Flex9/] [flex9ram.lst] - Rev 184
Compare with Previous | Blame | View Log
Assembler release DWC_2.0 version 2.11May 6, 2004 (c) Motorola (free ware)0001 NAM FLEX SOURCE0000 INCLUDE "f9-moneq.asm"f9-moneq.asm page 20002 *0003 ***************************************************0004 * MEMORY MAP EQUATES *0005 ***************************************************0006 E000 MONIO EQU $E000 I/O SPACE0007 DFC0 MONRAM EQU $DFC0 STACK SPACE0008 F800 MONROM EQU $F800 START OF ROM0009 F000 MONEXT EQU $F000 EXTENDED COMMANDS0010 *MONEXT EQU $1000 EXTENDED COMMANDS0011 *0012 ***************************************************0013 * SYS09BUG VARIABLE SPACE0014 ***************************************************0015 *0016 DFC0 STACK EQU MONRAM+0 TOP OF INTERNAL STACK / USER VECTOR0017 DFC2 SWI3 EQU MONRAM+2 SOFTWARE INTERRUPT VECTOR #30018 DFC4 SWI2 EQU MONRAM+4 SOFTWARE INTERRUPT VECTOR #20019 DFC6 FIRQ EQU MONRAM+6 FAST INTERRUPT VECTOR0020 DFC8 IRQ EQU MONRAM+8 INTERRUPT VECTOR0021 DFCA SWI EQU MONRAM+10 SOFTWARE INTERRUPT VECTOR0022 DFCC SVCVO EQU MONRAM+12 SUPERVISOR CALL VECTOR ORGIN0023 DFCE SVCVL EQU MONRAM+14 SUPERVISOR CALL VECTOR LIMIT0024 DFD0 LRARAM EQU MONRAM+16 LRA ADDRESSES0025 DFE0 CPORT EQU MONRAM+32 RE-VECTORABLE CONTROL PORT0026 DFE2 ECHO EQU MONRAM+34 ECHO FLAG0027 DFE3 BPTBL EQU MONRAM+35 BREAKPOINT TABLE BASE ADDR0028 **************************************************0029 * VDU BYTES *0030 **************************************************0031 *0032 **** ALWAYS KEEP COLADX AND ROWADX TOGETHER ******0033 DFFB COLADX EQU MONRAM+59 CURSOR COLUMN0034 DFFC ROWADX EQU MONRAM+60 CURSOR ROW0035 **************************************************0036 *0037 DFFD NEWROW EQU MONRAM+61 NEW ROW TEMP FOR ESCAPE0038 DFFE ESCFLG EQU MONRAM+62 ESCAPE SEQUENCE ACTIVE0039 *0040 ***************************************************0041 * SERIAL PORT *0042 ***************************************************0043 *0044 E000 ACIAS EQU MONIO+$00 CONTROL PORT0045 *0046 ***************************************************0047 * PS/2 KEYBOARD PORT *0048 ***************************************************0049 *0050 E020 PS2KBD EQU MONIO+$20 PS/2 KEYBOARD PORT0051 *0052 ***************************************************0053 * ADM3A DISPLAY DRIVER VARIABLES *0054 ***************************************************0055 *0056 ** VIDEO DISPLAY DEFINITIONS0057 *0058 E030 VDU EQU MONIO+$300059 0000 VDUCHR EQU 0 CHARACTER REGISTER0060 0001 VDUATT EQU 1 ATTRIBUTE REGISTER0061 0002 VDUCOL EQU 2 CURSOR COLUMN0062 0003 VDUROW EQU 3 CURSOR ROW0063 0004 VDUOFF EQU 4 ROW OFFSET0064 *0065 0050 LINLEN EQU 80 LENGTH OF A LINE0066 0019 NUMLIN EQU 25 NUMBER OF LINES0067 *0068 ***************************************************0069 * Serial PROM register0070 ***************************************************0071 *0072 ** CONFIGURATION PROM DEFINITIONS0073 *0074 E0C0 PROMREG EQU MONIO+$C00075 0001 PCLKHI EQU $01 Toggle PROM Clock High0076 0000 PCLKLO EQU $00 Toggle PROM Clock Low0077 0002 PRSTHI EQU $02 Toggle PROM Reset High0078 0000 PRSTLO EQU $00 Toggle PROM Reset Low0079 AA55 SYNCHI EQU $AA55 Synch Pattern High Word0080 FF00 SYNCLO EQU $FF00 Synch Pattern Low Word0081 *0082 *0083 ***************************************************0084 * Dynamic Address Translation Registers0085 ***************************************************0086 *0087 ** DAT Table0088 *0089 FFF0 IC11 EQU $FFF0 DAT RAM CHIP0090 *0091 ***************************************************0092 * START OF ROM *0093 ***************************************************0094 *0095 F800 MONITV EQU MONROM+0 FDB MONITOR0096 F802 NXTCMV EQU MONROM+2 FDB NEXTCMD0097 F804 INCHV EQU MONROM+4 FDB INCH0098 F806 INCHEV EQU MONROM+6 FDB INCHE0099 F808 INCHKV EQU MONROM+8 FDB INCHEK0100 F80A OUTCHV EQU MONROM+10 FDB OUTCH0101 F80C PDATAV EQU MONROM+12 FDB PDATA0102 F80E PCRLFV EQU MONROM+14 FDB PCRLF0103 F810 PSTRGV EQU MONROM+16 FDB PSTRNG0104 F812 LRAV EQU MONROM+18 FDB LRA0002 END0000 INCLUDE "f9-equ.asm"0001 0000 Z0000 EQU $00000002 0005 Z0005 EQU $00050003 0044 Z0044 EQU $00440004 00A0 Z00A0 EQU $00A00005 C07F ZC07F EQU $C07F0006 C080 LINBUF EQU $C0800007 C0FF ZC0FF EQU $C0FF0003 END0000 INCLUDE "f9-spool.asm"0001 *0002 ** PRINTER SPOOLING0003 *0004 C700 ORG $C7000005 C700 7E C7 21 PRSPL1 JMP ZC7210006 C703 7E C7 03 PRSPL2 JMP *0007 C706 7E C7 47 PRSPL3 JMP ZC7470008 C709 7E C7 85 PRSPL4 JMP ZC7850009 C70C 7E C7 95 PRSPL5 JMP ZC7950010 C70F 7E C7 1F PRSPL6 JMP ZC71F0011 *0012 ** SPOOLER SCRATCH AREA0013 *0014 C712 0C 00 00 00 00 C8 ZC712 FCB $0C,$00,$00,$00,$00,$C8,$10100015 C719 C8 10 ZC719 FCB $C8,$100016 C71B 00 QCNT FCB $000017 C71C 00 ZC71C FCB $000018 C71D 00 ZC71D FCB $000019 C71E 00 ZC71E FCB $000020 *0021 C71F 3B ZC71F RTI0022 C720 12 NOP0023 *0024 C721 1A 10 ZC721 ORCC #$100025 C723 BE CC 31 LDX ZCC310026 C726 10 EF 02 STS 2,X0027 C729 7D CC 34 TST ZCC340028 C72C 26 11 BNE ZC73F0029 C72E 8E CC FC LDX #ZCCFC0030 C731 7C CC 34 INC ZCC340031 C734 6D 84 TST ,X0032 C736 27 07 BEQ ZC73F0033 C738 BF CC 31 ZC738 STX ZCC310034 C73B 10 EE 02 LDS $02,X0035 C73E 3B RTI0036 *0037 C73F 8E CC F8 ZC73F LDX #ZCCF80038 C742 7F CC 34 CLR ZCC340039 C745 20 F1 BRA ZC7380040 *0041 C747 1A 10 ZC747 ORCC #$100042 C749 7D C7 1B TST QCNT0043 C74C 27 29 BEQ ZC7770044 C74E BE C7 19 LDX ZC7190045 C751 A6 84 LDA ,X0046 C753 34 02 PSHS A0047 C755 EC 01 LDD $01,X0048 C757 8E CA C0 LDX #ZCAC00049 C75A ED 88 40 STD $40,X0050 C75D 35 02 PULS A0051 C75F A7 03 STA $03,X0052 C761 6F 84 CLR ,X0053 C763 86 01 LDA #$010054 C765 A7 02 STA $02,X0055 C767 6F 88 22 CLR $22,X0056 C76A 6F 88 3B CLR $3B,X0057 C76D 7D C7 1E ZC76D TST ZC71E0058 C770 27 29 BEQ ZC79B0059 C772 11 3F SWI30060 C774 12 NOP0061 C775 20 F6 BRA ZC76D0062 *0063 C777 1C EF ZC777 ANDCC #$EF0064 C779 AD 9F D3 ED ZC779 JSR [TOFVEC]0065 C77D 7F CC FC CLR ZCCFC0066 C780 11 3F SWI30067 C782 12 NOP0068 C783 20 F4 BRA ZC7790069 *0070 C785 1A 10 ZC785 ORCC #$100071 C787 7D CC 30 TST ZCC300072 C78A 27 05 BEQ ZC7910073 C78C 11 3F SWI30074 C78E 12 NOP0075 C78F 20 F4 BRA ZC7850076 *0077 C791 7C CC 30 ZC791 INC ZCC300078 C794 39 RTS0079 *0080 C795 7F CC 30 ZC795 CLR ZCC300081 C798 1C EF ANDCC #$EF0082 C79A 39 RTS0083 *0084 C79B 7D C7 1D ZC79B TST ZC71D0085 C79E 26 27 BNE ZC7C70086 C7A0 8E CA C0 LDX #ZCAC00087 C7A3 BD D4 06 JSR FMS0088 C7A6 26 1F BNE ZC7C70089 C7A8 7D C7 1C TST ZC71C0090 C7AB 27 0F BEQ ZC7BC0091 C7AD 7F C7 1C CLR ZC71C0092 C7B0 81 0A CMPA #$0A0093 C7B2 27 0F BEQ ZC7C30094 C7B4 34 02 PSHS A0095 C7B6 86 0A LDA #$0A0096 C7B8 8D 3C BSR ZC7F60097 C7BA 35 02 PULS A0098 C7BC 81 0D ZC7BC CMPA #$0D0099 C7BE 26 03 BNE ZC7C30100 C7C0 B7 C7 1C STA ZC71C0101 C7C3 8D 31 ZC7C3 BSR ZC7F60102 C7C5 20 D4 BRA ZC79B0103 *0104 C7C7 86 0D ZC7C7 LDA #$0D0105 C7C9 8D 2B BSR ZC7F60106 C7CB 86 0A LDA #$0A0107 C7CD 8D 27 BSR ZC7F60108 C7CF B6 C7 12 LDA ZC7120109 C7D2 8D 22 BSR ZC7F60110 C7D4 7F C7 1D CLR ZC71D0111 C7D7 BE C7 19 LDX ZC7190112 C7DA 6D 03 TST $03,X0113 C7DC 27 05 BEQ ZC7E30114 C7DE 6A 03 DEC $03,X0115 C7E0 7E C7 47 JMP ZC7470116 *0117 C7E3 30 04 ZC7E3 LEAX $04,X0118 C7E5 8C C8 40 CMPX #FCB0119 C7E8 26 03 BNE ZC7ED0120 C7EA 8E C8 10 LDX #ZC8100121 C7ED BF C7 19 ZC7ED STX ZC7190122 C7F0 7A C7 1B DEC QCNT0123 C7F3 7E C7 47 JMP ZC7470124 *0125 C7F6 BD CC D8 ZC7F6 JSR PCHK0126 C7F9 2B 05 BMI ZC8000127 C7FB 11 3F SWI30128 C7FD 12 NOP0129 C7FE 20 F6 BRA ZC7F60130 *0131 C800 7E CC E4 ZC800 JMP POUT0132 C810 ZC810 EQU $C8100133 C838 ZC838 EQU $C8380004 END0000 INCLUDE "f9-sfcb.asm"0001 *0002 ** SYSTEM FILE CONTROL BLOCK0003 *0004 C840 ORG $C8400005 C840 FF FCB FCB $FF0006 C841 00 FCB $000007 C842 00 FCB $000008 C843 00 FCB $000009 C844 53 54 41 52 54 55 ZC844 FCC "STARTUP"500010 C84B 00 FCB $000011 C84C 54 58 54 FCC "TXT"0012 C84F 00 FCB $000005 END0000 INCLUDE "f9-init.asm"0001 *0002 ** FLEX INITIATION0003 *0004 CA00 ORG $CA000005 CA00 20 06 ZCA00 BRA ZCA080006 CA02 BD CA AC ZCA02 JSR >ZCAAC0007 CA05 39 RTS0008 CA06 C0 A0 ZCA06 SUBB #$A00009 CA08 86 39 ZCA08 LDA #$390010 CA0A B7 D3 FD STA >ZD3FD0011 CA0D BE CC 2B LDX >MEMEND0012 CA10 30 89 00 A1 LEAX $00A1,X0013 CA14 BF CA 06 STX >ZCA060014 CA17 AD 9F D3 F1 JSR [TINVEC]0015 CA1B BE D3 FB LDX >INVEC0016 CA1E BF CD 0A STX >INCH+10017 CA21 BF CD 0D STX >INCH2+10018 CA24 BE D3 F9 LDX >OUTVEC0019 CA27 BF CD 10 STX >OUTCH+10020 CA2A BF CD 13 STX >OUTCH2+10021 CA2D BE D3 F7 LDX >STAVEC0022 CA30 BF CD 4F STX >ZCD4E+10023 CA33 8E 00 A0 LDX #Z00A00024 CA36 C6 B9 LDB #$B90025 CA38 A6 84 ZCA38 LDA ,X0026 CA3A E7 84 STB ,X0027 CA3C 12 NOP0028 CA3D E1 84 CMPB ,X0029 CA3F 26 0B BNE ZCA4C0030 CA41 A7 84 STA ,X0031 CA43 30 89 04 00 LEAX $0400,X0032 CA47 BC CA 06 CMPX >ZCA060033 CA4A 26 EC BNE ZCA380034 CA4C 30 89 FF 5F ZCA4C LEAX $FF5F,X0035 CA50 BF CC 2B STX >MEMEND0036 CA53 8E CD 03 LDX #WARMS0037 CA56 BF CC 16 STX >ESCVEC0038 CA59 8E CA DC LDX #TTLSTR0039 CA5C BD CE 81 JSR >PSTRG10040 CA5F BD CE B5 JSR >PCRLF10041 CA62 8D 9E BSR ZCA020042 CA64 BD CE B5 JSR >PCRLF10043 CA67 8E C8 40 LDX #FCB0044 CA6A 86 01 LDA #$010045 CA6C A7 84 STA ,X0046 CA6E BD D4 06 JSR >FMS0047 CA71 27 08 BEQ ZCA7B0048 CA73 A6 01 LDA $01,X0049 CA75 BD D2 00 JSR >ZD2000050 CA78 7E CD 67 JMP >WARM100510052 CA7B 8E C0 80 ZCA7B LDX #LINBUF0053 CA7E BF CC 14 ZCA7E STX >LINPTR0054 CA81 8E C8 40 LDX #FCB0055 CA84 BD D4 06 JSR >FMS0056 CA87 27 05 BEQ ZCA8E0057 CA89 34 30 PSHS Y,X0058 CA8B 7E D2 D7 JMP >ZD2D700590060 CA8E BE CC 14 ZCA8E LDX >LINPTR0061 CA91 A7 80 STA ,X+0062 CA93 81 0D CMPA #$0D0063 CA95 26 E7 BNE ZCA7E0064 CA97 8E C8 40 LDX #FCB0065 CA9A BD D1 F4 JSR >ZD1F40066 CA9D 8E C0 80 LDX #LINBUF0067 CAA0 BF CC 14 STX >LINPTR0068 CAA3 8E CD 67 LDX #WARM10069 CAA6 BF CC 43 STX >ZCC430070 CAA9 7E D3 2E JMP >ZD32E00710072 CAAC 8E CA EC ZCAAC LDX #DATSTR0073 CAAF BD CE 81 JSR >PSTRG10074 CAB2 BD CE 2B JSR >INBUF10075 CAB5 8D 14 BSR ZCACB0076 CAB7 25 F3 BCS ZCAAC0077 CAB9 B7 CC 0E STA >MONTH0078 CABC 8D 0D BSR ZCACB0079 CABE 25 EC BCS ZCAAC0080 CAC0 B7 CC 0F ZCAC0 STA >DAY0081 CAC3 8D 06 BSR ZCACB0082 CAC5 25 E5 BCS ZCAAC0083 CAC7 B7 CC 10 STA >YEAR0084 CACA 39 RTS00850086 CACB BD D1 75 ZCACB JSR >INDEC10087 CACE 25 0B BCS ZCADB0088 CAD0 B6 CC 1C LDA >LODOFF+10089 CAD3 5D TSTB0090 CAD4 27 03 BEQ ZCAD90091 CAD6 1C FE ANDCC #$FE0092 CAD8 39 RTS00930094 CAD9 1A 01 ZCAD9 ORCC #$010095 CADB 39 ZCADB RTS00960097 CADC 36 38 30 39 20 46 TTLSTR FCC "6809 FLEX V3.01"4C 45 58 20 56 332E 30 310098 CAEB 04 FCB $040099 CAEC 44 41 54 45 20 28 DATSTR FCC "DATE (MM,DD,YY)? "4D 4D 2C 44 44 2C59 59 29 3F 200100 CAFD 04 FCB $040006 END0000 INCLUDE "f9-var.asm"0001 *0002 ** TTYSET PARAMETERS0003 *0004 CC00 ORG $CC000005 CC00 08 BSPCHR FCB $080006 CC01 18 DELCHR FCB $180007 CC02 3A EOLCHR FCB $3A0008 CC03 19 DEPCNT FCB 250009 CC04 00 WIDCNT FCB $000010 CC05 04 NULCNT FCB $040011 CC06 40 TABCHR FCB '@0012 CC07 00 BSECHR FCB $000013 CC08 00 EJTCNT FCB $000014 CC09 FF PAUSE FCB $FF0015 CC0A 1B ESCCHR FCB $1B0016 CC0B 00 SYSDRV FCB 00017 CC0C 01 WRKDRV FCB 10018 CC0D 00 ZCC0D FCB $000019 CC0E DATERG EQU *0020 CC0E 00 MONTH FCB $000021 CC0F 00 DAY FCB $000022 CC10 00 YEAR FCB $000023 CC11 00 LASTRM FCB $000024 CC12 00 00 UCTVEC FDB $00000025 CC14 00 00 LINPTR FDB $00000026 CC16 00 00 ESCVEC FDB $00000027 CC18 00 CURCHR FCB $000028 CC19 00 PRVCHR FCB $000029 CC1A 00 CURLIN FCB $000030 CC1B 00 00 LODOFF FDB $00000031 CC1D 00 TRNFLG FCB $000032 CC1E 00 00 TRNVEC FDB $00000033 CC20 00 ERRTYP FCB $000034 CC21 00 SIOFLG FCB $000035 CC22 00 OUTSWT FCB $000036 CC23 00 INPSWT FCB $000037 CC24 00 00 FOPADR FDB $00000038 CC26 00 00 FIPADR FDB $00000039 CC28 00 CMDFLG FCB $000040 CC29 00 CURCOL FCB $000041 CC2A 00 FCB $000042 CC2B BF FF MEMEND FDB $BFFF0043 CC2D 00 00 ERRVEC FDB $00000044 CC2F 01 FIEFLG FCB $010045 CC30 00 ZCC30 FCB $000046 CC31 00 00 00 ZCC31 FCB $00,$00,$000047 CC34 00 00 00 00 00 00 ZCC34 FCB $00,$00,$00,$00,$00,$00,$00000048 CC3D ZCC3D EQU $CC3D0049 CC3F ZCC3F EQU $CC3F0050 CC43 ZCC43 EQU $CC430051 CC45 ZCC45 EQU $CC450052 CC47 ZCC47 EQU $CC470053 CC49 ORG $CC490054 CC49 60 MAPUP FCB $60 MAP LOWER TO UPPERCASE0055 CC4A ZCC4A EQU $CC4A0056 CC4B ZCC4B EQU $CC4B0057 CC4C ZCC4C EQU $CC4C0058 CC4D ZCC4D EQU $CC4D0007 END0000 INCLUDE "f9-data.asm"0001 *0002 ** STRINGS AND MESSAGES0003 *0004 CC4E ORG $CC4E0005 CC4E 2B 2B 2B PMTSTR FCC "+++"0006 CC51 04 FCB $040007 CC52 3F 3F 3F QRYSTR FCC "???"0008 CC55 04 FCB $040009 CC56 57 48 41 54 3F WOTMSG FCC "WHAT?"0010 CC5B 04 FCB $040011 CC5C 43 41 4E 27 54 20 NTRMSG FCC "CAN'T TRANSFER"54 52 41 4E 53 4645 520012 CC6A 04 FCB $040013 CC6B 4E 4F 54 20 46 4F NFDMSG FCC "NOT FOUND"55 4E 440014 CC74 04 FCB $040015 CC75 44 49 53 4B 20 45 DERMSG FCC "DISK ERROR #"52 52 4F 52 20 230016 CC81 04 FCB $040017 CC82 44 52 49 56 45 53 DNRMSG FCC "DRIVES NOT READY"20 4E 4F 54 20 5245 41 44 590018 CC92 04 FCB $040019 *0020 ** MEMORY RESIDENT COMMANDS0021 *0022 CC93 47 45 54 CMDTBL FCC "GET"0023 CC96 00 FCB $000024 CC97 D2 0F FDB GETCMD0025 CC99 4D 4F 4E FCC "MON"0026 CC9C 00 FCB $000027 CC9D D3 4B FDB ZD34B0028 CC9F 00 FCB $000029 *0030 ** DECIMAL CONVERSION TABLE0031 *0032 CCA0 27 10 DECTBL FDB 100000033 CCA2 03 E8 FDB 10000034 CCA4 00 64 FDB 1000035 CCA6 00 0A FDB 100008 END0000 INCLUDE "f9-cli.asm"0001 *********************************************0002 *0003 * FLEX COMMAND LINE INTERPRETER & SUBROUTINES0004 *0005 *********************************************0006 CD00 ORG $CD000007 *0008 ** FLEX JUMPS0009 *0010 CD00 7E CD 57 COLDS JMP >COLD10011 CD03 7E CD 67 WARMS JMP >WARM10012 CD06 7E CD B1 RENTER JMP >RENT10013 CD09 7E CD 09 INCH JMP >INCH0014 CD0C 7E CD 0C INCH2 JMP >INCH20015 CD0F 7E CD 0F OUTCH JMP >OUTCH0016 CD12 7E CD 12 OUTCH2 JMP >OUTCH20017 CD15 7E CE FB GETCHR JMP >GETCH10018 CD18 7E CF 41 PUTCHR JMP >PUTCH10019 CD1B 7E CE 2B INBUFF JMP >INBUF10020 CD1E 7E CE 81 PSTRNG JMP >PSTRG10021 CD21 7E CF ED CLASS JMP >CLASS10022 CD24 7E CE B5 PCRLF JMP >PCRLF10023 CD27 7E D0 0E NXTCH JMP >NXTCH10024 CD2A 7E CD EA RSTRIO JMP >RSTIO10025 CD2D 7E D0 36 GETFIL JMP >GETFL10026 CD30 7E D1 A2 LOAD JMP >LOAD10027 CD33 7E D0 EB SETEXT JMP >SETEX10028 CD36 7E D3 49 ADDBX JMP >ADDBX10029 CD39 7E CF 86 OUTDEC JMP >OUTDC10030 CD3C 7E CF D4 OUTHEX JMP >OUTHX10031 CD3F 7E D2 7F RPTERR JMP >RPTER10032 CD42 7E D1 2F GETHEX JMP >GETHX10033 CD45 7E CF D0 OUTADR JMP >OUTAD10034 CD48 7E D1 75 INDEC JMP >INDEC10035 CD4B 7E D3 29 DOCMND JMP >DOCMD10036 CD4E 7E CD 4E ZCD4E JMP >ZCD4E0037 CD51 7E CE 05 JMP >ZCE050038 CD54 7E CE 05 JMP >ZCE050039 *0040 ** COLD START ENTRY0041 *0042 CD57 10 CE C0 7F COLD1 LDS #ZC07F0043 CD5B 7F CC 11 ZCD5B CLR >LASTRM0044 CD5E BD D4 00 JSR >ZD4000045 CD61 7F CC 28 CLR >CMDFLG0046 CD64 BD D3 FD JSR >ZD3FD0047 *0048 ** WARM START ENTRY0049 *0050 CD67 10 CE C0 7F WARM1 LDS #ZC07F0051 CD6B BD DE 18 JSR >WARMDR0052 CD6E 8E CD 03 LDX #WARMS0053 CD71 BF CC 16 STX >ESCVEC0054 CD74 8E C7 00 LDX #PRSPL10055 CD77 AF 9F D3 E9 STX [SWIVVC]0056 CD7B BE D3 E7 LDX >IHNDVC0057 CD7E AF 9F D3 EB STX [IRQVVC]0058 CD82 8E CC F8 LDX #ZCCF80059 CD85 BF CC 31 STX >ZCC310060 CD88 7F CC 34 CLR >ZCC340061 CD8B 7F CC 4C CLR >ZCC4C0062 CD8E 8D 5A BSR RSTIO10063 CD90 B6 CC 11 LDA >LASTRM0064 CD93 B1 CC 02 CMPA >EOLCHR0065 CD96 26 05 BNE ZCD9D0066 CD98 7C CC 15 INC >LINPTR+10067 CD9B 20 14 BRA RENT100680069 CD9D 7D CC 28 ZCD9D TST >CMDFLG0070 CDA0 10 26 05 97 LBNE ZD33B0071 CDA4 BD D4 03 JSR >FMSCLS0072 CDA7 26 B2 BNE ZCD5B0073 CDA9 8E CC 4E LDX #PMTSTR0074 CDAC BD CE 81 JSR >PSTRG10075 CDAF 8D 7A BSR INBUF10076 *0077 ** MAIN CONTROL LOOP0078 *0079 CDB1 BD D0 D4 RENT1 JSR >ZD0D40080 CDB4 81 0D CMPA #$0D0081 CDB6 27 E5 BEQ ZCD9D0082 CDB8 8E C8 40 ZCDB8 LDX #FCB0083 CDBB 7C CC 0D INC >ZCC0D0084 CDBE BD D0 36 JSR >GETFL10085 CDC1 25 16 BCS ZCDD90086 CDC3 8E CC 93 LDX #CMDTBL0087 CDC6 8D 3E BSR ZCE060088 CDC8 27 09 BEQ ZCDD30089 CDCA BE CC 12 LDX >UCTVEC0090 CDCD 27 07 BEQ ZCDD60091 CDCF 8D 35 BSR ZCE060092 CDD1 26 03 BNE ZCDD60093 CDD3 6E 98 01 ZCDD3 JMP [$01,X]00940095 CDD6 BD D2 2E ZCDD6 JSR >ZD22E0096 CDD9 8E CC 56 ZCDD9 LDX #WOTMSG0097 CDDC 86 15 LDA #$150098 CDDE B7 CC 20 ZCDDE STA >ERRTYP0099 CDE1 BD CE 81 ZCDE1 JSR >PSTRG10100 CDE4 7F CC 11 ZCDE4 CLR >LASTRM0101 CDE7 7E CD 67 JMP >WARM10102 *0103 ** RESTORE IO VECTORS0104 *0105 CDEA BE CD 13 RSTIO1 LDX >OUTCH2+10106 CDED BF CD 10 STX >OUTCH+10107 CDF0 BE CD 0D LDX >INCH2+10108 CDF3 BF CD 0A STX >INCH+10109 CDF6 7F CC 23 CLR >INPSWT0110 CDF9 7F CC 22 CLR >OUTSWT0111 CDFC 7F CC 21 CLR >SIOFLG0112 CDFF 7F CC 26 CLR >FIPADR0113 CE02 7F CC 24 CLR >FOPADR0114 CE05 39 ZCE05 RTS01150116 CE06 10 8E C8 44 ZCE06 LDY #ZC8440117 CE0A A6 A0 ZCE0A LDA ,Y+0118 CE0C 81 5F CMPA #$5F0119 CE0E 23 02 BLS ZCE120120 CE10 80 20 SUBA #$200121 CE12 A1 80 ZCE12 CMPA ,X+0122 CE14 26 08 BNE ZCE1E0123 CE16 6D 84 TST ,X0124 CE18 26 F0 BNE ZCE0A0125 CE1A 6D A4 TST ,Y0126 CE1C 27 0C BEQ ZCE2A0127 CE1E 6D 80 ZCE1E TST ,X+0128 CE20 26 FC BNE ZCE1E0129 CE22 30 02 LEAX $02,X0130 CE24 6D 84 TST ,X0131 CE26 26 DE BNE ZCE060132 CE28 1C FB ANDCC #$FB0133 CE2A 39 ZCE2A RTS0134 *0135 ** GET USER COMMAND LINE0136 *0137 CE2B 8E C0 80 INBUF1 LDX #LINBUF0138 CE2E BF CC 14 STX >LINPTR0139 CE31 BD CE FB ZCE31 JSR >GETCH10140 CE34 B1 CC 01 CMPA >DELCHR0141 CE37 27 1D BEQ ZCE560142 CE39 B1 CC 00 CMPA >BSPCHR0143 CE3C 27 1F BEQ ZCE5D0144 CE3E 81 0D CMPA #$0D0145 CE40 27 0D BEQ ZCE4F0146 CE42 81 0A CMPA #$0A0147 CE44 27 32 BEQ ZCE780148 CE46 81 1F CMPA #$1F0149 CE48 23 E7 BLS ZCE310150 CE4A 8C C0 FF ZCE4A CMPX #ZC0FF0151 CE4D 27 E2 BEQ ZCE310152 CE4F A7 80 ZCE4F STA ,X+0153 CE51 81 0D CMPA #$0D0154 CE53 26 DC BNE ZCE310155 CE55 39 RTS01560157 CE56 8E CC 52 ZCE56 LDX #QRYSTR0158 CE59 8D 26 BSR PSTRG10159 CE5B 20 CE BRA INBUF101600161 CE5D 8C C0 80 ZCE5D CMPX #LINBUF0162 CE60 27 F4 BEQ ZCE560163 CE62 30 1F LEAX -$01,X0164 CE64 B6 CC 07 LDA >BSECHR0165 CE67 81 08 CMPA #$080166 CE69 26 08 BNE ZCE730167 CE6B 86 20 LDA #$200168 CE6D BD CF 66 JSR >ZCF660169 CE70 B6 CC 07 LDA >BSECHR0170 CE73 BD CF 66 ZCE73 JSR >ZCF660171 CE76 20 B9 BRA ZCE3101720173 CE78 86 0D ZCE78 LDA #$0D0174 CE7A BD CF 41 JSR >PUTCH10175 CE7D 86 20 LDA #$200176 CE7F 20 C9 BRA ZCE4A01770178 CE81 8D 32 PSTRG1 BSR PCRLF10179 CE83 A6 84 ZCE83 LDA ,X0180 CE85 81 04 CMPA #$040181 CE87 27 6F BEQ ZCEF80182 CE89 BD CF 41 JSR >PUTCH10183 CE8C 30 01 LEAX $01,X0184 CE8E 20 F3 BRA ZCE8301850186 CE90 BD CD 4E ZCE90 JSR >ZCD4E0187 CE93 27 65 BEQ ZCEFA0188 CE95 AD 9F D3 E5 JSR [ZD3E5]0189 CE99 B1 CC 0A CMPA >ESCCHR0190 CE9C 26 5C BNE ZCEFA0191 CE9E 7F CC 1A ZCE9E CLR >CURLIN0192 CEA1 AD 9F D3 E5 ZCEA1 JSR [ZD3E5]0193 CEA5 B1 CC 0A CMPA >ESCCHR0194 CEA8 27 50 BEQ ZCEFA0195 CEAA 81 03 CMPA #$03 CTRL C0196 CEAC 26 F3 BNE ZCEA10197 CEAE 7F CC 11 CLR >LASTRM0198 CEB1 6E 9F CC 16 JMP [ESCVEC]0199 *0200 ** PRINT CR, LINEFEED0201 *0202 CEB5 7D CC 21 PCRLF1 TST >SIOFLG0203 CEB8 26 27 BNE ZCEE10204 CEBA 8D D4 BSR ZCE900205 CEBC B6 CC 03 LDA >DEPCNT0206 CEBF 27 20 BEQ ZCEE10207 CEC1 B1 CC 1A CMPA >CURLIN0208 CEC4 22 18 BHI ZCEDE0209 CEC6 7F CC 1A CLR >CURLIN0210 CEC9 7D CC 09 TST >PAUSE0211 CECC 27 02 BEQ ZCED00212 CECE 8D CE BSR ZCE9E0213 CED0 34 04 ZCED0 PSHS B0214 CED2 F6 CC 08 LDB >EJTCNT0215 CED5 27 05 BEQ ZCEDC0216 CED7 8D 08 ZCED7 BSR ZCEE10217 CED9 5A DECB0218 CEDA 26 FB BNE ZCED70219 CEDC 35 04 ZCEDC PULS B0220 CEDE 7C CC 1A ZCEDE INC >CURLIN0221 CEE1 86 0D ZCEE1 LDA #$0D0222 CEE3 8D 5C BSR PUTCH10223 CEE5 86 0A LDA #$0A0224 CEE7 8D 58 BSR PUTCH10225 CEE9 34 04 PSHS B0226 CEEB F6 CC 05 LDB >NULCNT0227 CEEE 27 06 BEQ ZCEF60228 CEF0 4F ZCEF0 CLRA0229 CEF1 8D 4E BSR PUTCH10230 CEF3 5A DECB0231 CEF4 26 FA BNE ZCEF00232 CEF6 35 04 ZCEF6 PULS B0233 CEF8 1C FE ZCEF8 ANDCC #$FE0234 CEFA 39 ZCEFA RTS0235 *0236 ** GET A CHARACTER HONOURING TTYSET0237 *0238 CEFB 7D CC 23 GETCH1 TST >INPSWT0239 CEFE 26 1A BNE ZCF1A0240 CF00 7D CC 26 TST >FIPADR0241 CF03 27 10 BEQ ZCF150242 CF05 8D 1A BSR ZCF210243 CF07 7D CC 2F TST >FIEFLG0244 CF0A 27 11 BEQ ZCF1D0245 CF0C 7D CC 24 TST >FOPADR0246 CF0F 27 0C BEQ ZCF1D0247 CF11 8D 53 BSR ZCF660248 CF13 20 08 BRA ZCF1D0249 CF15 BD CD 09 ZCF15 JSR >INCH0250 CF18 20 03 BRA ZCF1D02510252 CF1A BD CD 0C ZCF1A JSR >INCH20253 CF1D 7F CC 1A ZCF1D CLR >CURLIN0254 CF20 39 RTS02550256 CF21 BF CC 47 ZCF21 STX >ZCC470257 CF24 BE CC 26 LDX >FIPADR0258 CF27 20 06 BRA ZCF2F02590260 CF29 BF CC 47 ZCF29 STX >ZCC470261 CF2C BE CC 24 LDX >FOPADR0262 CF2F BD D4 06 ZCF2F JSR >FMS0263 CF32 26 04 BNE ZCF380264 CF34 BE CC 47 LDX >ZCC470265 CF37 39 RTS02660267 CF38 7F CC 24 ZCF38 CLR >FOPADR0268 CF3B BD D2 7F JSR >RPTER10269 CF3E 7E CD 03 JMP >WARMS0270 *0271 ** OUTPUT CHARACTER HONOURING TTYSET0272 *0273 CF41 7D CC 21 PUTCH1 TST >SIOFLG0274 CF44 26 20 BNE ZCF660275 CF46 81 1F CMPA #$1F0276 CF48 22 05 BHI ZCF4F0277 CF4A 7F CC 29 CLR >CURCOL0278 CF4D 20 17 BRA ZCF6602790280 CF4F 7C CC 29 ZCF4F INC >CURCOL0281 CF52 34 02 PSHS A0282 CF54 B6 CC 04 LDA >WIDCNT0283 CF57 27 0B BEQ ZCF640284 CF59 B1 CC 29 CMPA >CURCOL0285 CF5C 24 06 BCC ZCF640286 CF5E BD CE B5 JSR >PCRLF10287 CF61 7C CC 29 INC >CURCOL0288 CF64 35 02 ZCF64 PULS A0289 CF66 34 02 ZCF66 PSHS A0290 CF68 7D CC 22 TST >OUTSWT0291 CF6B 26 13 BNE ZCF800292 CF6D 7D CC 24 TST >FOPADR0293 CF70 27 04 BEQ ZCF760294 CF72 8D B5 BSR ZCF290295 CF74 20 0D BRA ZCF8302960297 CF76 7D CC 26 ZCF76 TST >FIPADR0298 CF79 26 08 BNE ZCF830299 CF7B BD CD 0F JSR >OUTCH0300 CF7E 20 03 BRA ZCF830301 CF80 BD CD 12 ZCF80 JSR >OUTCH20302 CF83 35 02 ZCF83 PULS A0303 CF85 39 RTS03040305 CF86 7F CC 4A OUTDC1 CLR >ZCC4A0306 CF89 F7 CC 1D STB >TRNFLG0307 CF8C 86 04 LDA #$040308 CF8E B7 CC 4D STA >ZCC4D0309 CF91 EC 84 LDD ,X0310 CF93 8E CC A0 LDX #DECTBL0311 CF96 8D 0B ZCF96 BSR ZCFA30312 CF98 30 02 LEAX $02,X0313 CF9A 7A CC 4D DEC >ZCC4D0314 CF9D 26 F7 BNE ZCF960315 CF9F 1F 98 TFR B,A0316 CFA1 20 3D BRA OUTHXR03170318 CFA3 7F CC 4B ZCFA3 CLR >ZCC4B0319 CFA6 10 A3 84 ZCFA6 CMPD ,X0320 CFA9 25 07 BCS ZCFB20321 CFAB A3 84 SUBD ,X0322 CFAD 7C CC 4B INC >ZCC4B0323 CFB0 20 F4 BRA ZCFA603240325 CFB2 34 02 ZCFB2 PSHS A0326 CFB4 B6 CC 4B LDA >ZCC4B0327 CFB7 26 10 BNE ZCFC90328 CFB9 7D CC 4A TST >ZCC4A0329 CFBC 26 0B BNE ZCFC90330 CFBE 7D CC 1D TST >TRNFLG0331 CFC1 27 0B BEQ ZCFCE0332 CFC3 86 20 LDA #$200333 CFC5 8D 23 BSR ZCFEA0334 CFC7 20 05 BRA ZCFCE03350336 CFC9 7C CC 4A ZCFC9 INC >ZCC4A0337 CFCC 8D 12 BSR OUTHXR0338 CFCE 35 82 ZCFCE PULS PC,A0339 *0340 ** DISPLAY HEX ADDRESS0341 *0342 CFD0 8D 02 OUTAD1 BSR OUTHX10343 CFD2 30 01 LEAX $01,X0344 *0345 ** OUPUT HEX BYTE0346 *0347 CFD4 A6 84 OUTHX1 LDA ,X0348 CFD6 8D 04 BSR OUTHXL0349 CFD8 A6 84 LDA ,X0350 CFDA 20 04 BRA OUTHXR03510352 CFDC 44 OUTHXL LSRA0353 CFDD 44 LSRA0354 CFDE 44 LSRA0355 CFDF 44 LSRA0356 CFE0 84 0F OUTHXR ANDA #$0F0357 CFE2 8B 30 ADDA #$300358 CFE4 81 39 CMPA #$390359 CFE6 23 02 BLS ZCFEA0360 CFE8 8B 07 ADDA #$070361 CFEA 7E CF 41 ZCFEA JMP >PUTCH10362 *0363 ** CLASSIFY CHARACTER ALHA/NUMERIC0364 *0365 CFED 81 30 CLASS1 CMPA #'00366 CFEF 25 14 BCS ZD0050367 CFF1 81 39 CMPA #'90368 CFF3 23 16 BLS ZD00B0369 CFF5 81 41 CMPA #'A0370 CFF7 25 0C BCS ZD0050371 CFF9 81 5A CMPA #'Z0372 CFFB 23 0E BLS ZD00B0373 CFFD 81 61 CMPA #'a $610374 CFFF 25 04 BCS ZD0050375 D001 81 7A CMPA #'z $7A0376 D003 23 06 BLS ZD00B0377 D005 1A 01 ZD005 ORCC #$010378 D007 B7 CC 11 STA >LASTRM0379 D00A 39 RTS0380 D00B 1C FE ZD00B ANDCC #$FE0381 D00D 39 RTS0382 *0383 ** GET NEXT CHARACTER FROM FILE0384 *0385 D00E 34 10 NXTCH1 PSHS X0386 D010 BE CC 14 LDX >LINPTR0387 D013 B6 CC 18 LDA >CURCHR0388 D016 B7 CC 19 STA >PRVCHR0389 D019 A6 80 ZD019 LDA ,X+0390 D01B B7 CC 18 STA >CURCHR0391 D01E 81 0D CMPA #$0D0392 D020 27 10 BEQ ZD0320393 D022 B1 CC 02 CMPA >EOLCHR0394 D025 27 0B BEQ ZD0320395 D027 BF CC 14 STX >LINPTR0396 D02A 81 20 CMPA #$200397 D02C 26 04 BNE ZD0320398 D02E A1 84 CMPA ,X0399 D030 27 E7 BEQ ZD0190400 D032 8D B9 ZD032 BSR CLASS10401 D034 35 90 PULS PC,X0402 *0403 ** PARSE FILE SPEC. IN LINE BUFFER0404 *0405 D036 86 15 GETFL1 LDA #$150406 D038 A7 01 STA $01,X0407 D03A 86 FF LDA #$FF0408 D03C A7 03 STA $03,X0409 D03E 6F 04 CLR $04,X0410 D040 6F 0C CLR $0C,X0411 D042 BD D0 D4 JSR >ZD0D40412 D045 86 08 LDA #$080413 D047 B7 CC 4B STA >ZCC4B0414 D04A 8D 34 BSR ZD0800415 D04C 25 2E BCS ZD07C0416 D04E 26 0F BNE ZD05F0417 D050 8D 2E BSR ZD0800418 D052 25 28 BCS ZD07C0419 D054 26 09 BNE ZD05F0420 D056 BC CC 3F CMPX >ZCC3F0421 D059 27 6C BEQ ZD0C70422 D05B 8D 23 BSR ZD0800423 D05D 23 68 BLS ZD0C70424 D05F BE CC 3F ZD05F LDX >ZCC3F0425 D062 6D 04 TST $04,X0426 D064 27 61 BEQ ZD0C70427 D066 6D 03 TST $03,X0428 D068 2A 0F BPL ZD0790429 D06A 7D CC 0D TST >ZCC0D0430 D06D 27 05 BEQ ZD0740431 D06F B6 CC 0B LDA >SYSDRV0432 D072 20 03 BRA ZD07704330434 D074 B6 CC 0C ZD074 LDA >WRKDRV0435 D077 A7 03 ZD077 STA $03,X0436 D079 7F CC 0D ZD079 CLR >ZCC0D0437 D07C BE CC 3F ZD07C LDX >ZCC3F0438 D07F 39 RTS04390440 D080 8D 8C ZD080 BSR NXTCH10441 D082 25 43 BCS ZD0C70442 D084 81 39 CMPA #$390443 D086 22 15 BHI ZD09D0444 D088 BE CC 3F LDX >ZCC3F0445 D08B 6D 03 TST $03,X0446 D08D 2A 38 BPL ZD0C70447 D08F 84 03 ANDA #$030448 D091 A7 03 STA $03,X0449 D093 BD D0 0E JSR >NXTCH10450 D096 24 2F BCC ZD0C70451 D098 81 2E ZD098 CMPA #$2E0452 D09A 1C FE ANDCC #$FE0453 D09C 39 RTS04540455 D09D F6 CC 4B ZD09D LDB >ZCC4B0456 D0A0 2B 25 BMI ZD0C70457 D0A2 34 04 PSHS B0458 D0A4 C0 05 SUBB #$050459 D0A6 F7 CC 4B STB >ZCC4B0460 D0A9 35 04 PULS B0461 D0AB B1 CC 49 ZD0AB CMPA >MAPUP0462 D0AE 25 02 BCS ZD0B20463 D0B0 80 20 SUBA #$200464 D0B2 A7 04 ZD0B2 STA $04,X0465 D0B4 30 01 LEAX $01,X0466 D0B6 5A DECB0467 D0B7 BD D0 0E JSR >NXTCH10468 D0BA 24 08 BCC ZD0C40469 D0BC 81 2D CMPA #$2D0470 D0BE 27 04 BEQ ZD0C40471 D0C0 81 5F CMPA #$5F0472 D0C2 26 06 BNE ZD0CA0473 D0C4 5D ZD0C4 TSTB0474 D0C5 26 E4 BNE ZD0AB0475 D0C7 1A 01 ZD0C7 ORCC #$010476 D0C9 39 RTS04770478 D0CA 5D ZD0CA TSTB0479 D0CB 27 CB BEQ ZD0980480 D0CD 6F 04 CLR $04,X0481 D0CF 30 01 LEAX $01,X0482 D0D1 5A DECB0483 D0D2 20 F6 BRA ZD0CA04840485 D0D4 BF CC 3F ZD0D4 STX >ZCC3F0486 D0D7 BE CC 14 LDX >LINPTR0487 D0DA A6 84 ZD0DA LDA ,X0488 D0DC 81 20 CMPA #$200489 D0DE 26 04 BNE ZD0E40490 D0E0 30 01 LEAX $01,X0491 D0E2 20 F6 BRA ZD0DA0492 D0E4 BF CC 14 ZD0E4 STX >LINPTR0493 D0E7 BE CC 3F LDX >ZCC3F0494 D0EA 39 RTS0495 *0496 ** DEFAULT FILE EXTENSION0497 *0498 D0EB 34 30 SETEX1 PSHS Y,X0499 D0ED E6 0C LDB $0C,X0500 D0EF 26 18 BNE ZD1090501 D0F1 10 8E D1 0B LDY #EXTTBL0502 D0F5 81 0B CMPA #$0B0503 D0F7 22 10 BHI ZD1090504 D0F9 C6 03 LDB #$030505 D0FB 3D MUL0506 D0FC 31 A5 LEAY B,Y0507 D0FE C6 03 LDB #$030508 D100 A6 A0 ZD100 LDA ,Y+0509 D102 A7 0C STA $0C,X0510 D104 30 01 LEAX $01,X0511 D106 5A DECB0512 D107 26 F7 BNE ZD1000513 D109 35 B0 ZD109 PULS PC,Y,X0514 *0515 ** STANDARD FILE NAME EXTTENSIONS0516 *0517 D10B 42 49 4E EXTTBL FCC "BIN"0518 D10E 54 58 54 FCC "TXT"0519 D111 43 4D 44 FCC "CMD"0520 D114 42 41 53 FCC "BAS"0521 D117 53 59 53 FCC "SYS"0522 D11A 42 41 4B FCC "BAK"0523 D11D 53 43 52 FCC "SCR"0524 D120 44 41 54 FCC "DAT"0525 D123 42 41 43 FCC "BAC"0526 D126 44 49 52 FCC "DIR"0527 D129 50 52 54 FCC "PRT"0528 D12C 4F 55 54 FCC "OUT"0529 *0530 ** READ A HEX ADDRESS FROM THE LINE BUFFER0531 *0532 D12F BD D2 1E GETHX1 JSR >ZD21E0533 D132 BD D0 0E ZD132 JSR >NXTCH10534 D135 25 22 BCS ZD1590535 D137 8D 26 BSR ZD15F0536 D139 25 18 BCS ZD1530537 D13B 34 04 PSHS B0538 D13D C6 04 LDB #$040539 D13F 78 CC 1C ZD13F ASL >LODOFF+10540 D142 79 CC 1B ROL >LODOFF0541 D145 5A DECB0542 D146 26 F7 BNE ZD13F0543 D148 35 04 PULS B0544 D14A BB CC 1C ADDA >LODOFF+10545 D14D B7 CC 1C STA >LODOFF+10546 D150 5C INCB0547 D151 20 DF BRA ZD13205480549 D153 BD D0 0E ZD153 JSR >NXTCH10550 D156 24 FB BCC ZD1530551 D158 39 RTS05520553 D159 BE CC 1B ZD159 LDX >LODOFF0554 D15C 1C FE ANDCC #$FE0555 D15E 39 RTS05560557 D15F 80 47 ZD15F SUBA #$470558 D161 2A 0F BPL ZD1720559 D163 8B 06 ADDA #$060560 D165 2A 04 BPL ZD16B0561 D167 8B 07 ADDA #$070562 D169 2A 07 BPL ZD1720563 D16B 8B 0A ZD16B ADDA #$0A0564 D16D 2B 03 BMI ZD1720565 D16F 1C FE ANDCC #$FE0566 D171 39 RTS05670568 D172 1A 01 ZD172 ORCC #$010569 D174 39 RTS05700571 D175 BD D2 1E INDEC1 JSR >ZD21E0572 D178 BD D0 0E ZD178 JSR >NXTCH10573 D17B 25 DC BCS ZD1590574 D17D 81 39 CMPA #$390575 D17F 22 D2 BHI ZD1530576 D181 84 0F ANDA #$0F0577 D183 34 04 PSHS B0578 D185 34 02 PSHS A0579 D187 FC CC 1B LDD >LODOFF0580 D18A 58 ASLB0581 D18B 49 ROLA0582 D18C 58 ASLB0583 D18D 49 ROLA0584 D18E 58 ASLB0585 D18F 49 ROLA0586 D190 F3 CC 1B ADDD >LODOFF0587 D193 F3 CC 1B ADDD >LODOFF0588 D196 EB E0 ADDB ,S+0589 D198 89 00 ADCA #$000590 D19A FD CC 1B STD >LODOFF0591 D19D 35 04 PULS B0592 D19F 5C INCB0593 D1A0 20 D6 BRA ZD1780594 *0595 ** LOAD BINARY FILE0596 *0597 D1A2 7F CC 1D LOAD1 CLR >TRNFLG0598 D1A5 8D 3D ZD1A5 BSR ZD1E40599 D1A7 81 02 CMPA #$020600 D1A9 27 15 BEQ ZD1C00601 D1AB 81 16 CMPA #$160602 D1AD 26 F6 BNE ZD1A50603 D1AF 8D 33 BSR ZD1E40604 D1B1 B7 CC 1E STA >TRNVEC0605 D1B4 8D 2E BSR ZD1E40606 D1B6 B7 CC 1F STA >TRNVEC+10607 D1B9 86 01 LDA #$010608 D1BB B7 CC 1D STA >TRNFLG0609 D1BE 20 E5 BRA ZD1A506100611 D1C0 8D 22 ZD1C0 BSR ZD1E40612 D1C2 1F 89 TFR A,B0613 D1C4 8D 1E BSR ZD1E40614 D1C6 1E 89 EXG A,B0615 D1C8 F3 CC 1B ADDD >LODOFF0616 D1CB FD CC 3D STD >ZCC3D0617 D1CE 8D 14 BSR ZD1E40618 D1D0 1F 89 TFR A,B0619 D1D2 4D TSTA0620 D1D3 27 D0 BEQ ZD1A50621 D1D5 8D 0D ZD1D5 BSR ZD1E40622 D1D7 BE CC 3D LDX >ZCC3D0623 D1DA A7 80 STA ,X+0624 D1DC BF CC 3D STX >ZCC3D0625 D1DF 5A DECB0626 D1E0 26 F3 BNE ZD1D50627 D1E2 20 C1 BRA ZD1A506280629 D1E4 8E C8 40 ZD1E4 LDX #FCB0630 D1E7 BD D4 06 JSR >FMS0631 D1EA 27 11 BEQ ZD1FD0632 D1EC A6 01 LDA $01,X0633 D1EE 81 08 CMPA #$080634 D1F0 26 0E BNE ZD2000635 D1F2 32 62 LEAS $02,S0636 D1F4 86 04 ZD1F4 LDA #$040637 D1F6 A7 84 STA ,X0638 D1F8 BD D4 06 JSR >FMS0639 D1FB 26 0D BNE ZD20A0640 D1FD 1C FE ZD1FD ANDCC #$FE0641 D1FF 39 RTS06420643 D200 B7 CC 20 ZD200 STA >ERRTYP0644 D203 81 04 CMPA #$040645 D205 26 03 BNE ZD20A0646 D207 1A 01 ORCC #$010647 D209 39 RTS06480649 D20A 8D 73 ZD20A BSR RPTER10650 D20C 7E CD E4 JMP >ZCDE40651 *0652 ** 'GET' - LOAD BINARY FILE0653 *0654 D20F 86 00 GETCMD LDA #$000655 D211 8D 35 BSR ZD2480656 D213 25 0F BCS ZD2240657 D215 8D 07 BSR ZD21E0658 D217 7C CC 4C INC >ZCC4C0659 D21A 8D 86 BSR LOAD10660 D21C 20 F1 BRA GETCMD06610662 D21E 4F ZD21E CLRA0663 D21F 5F CLRB0664 D220 FD CC 1B STD >LODOFF0665 D223 39 RTS06660667 D224 F6 CC 4C ZD224 LDB >ZCC4C0668 D227 10 27 FB AE LBEQ ZCDD90669 D22B 7E CD 03 JMP >WARMS06700671 D22E 86 02 ZD22E LDA #$020672 D230 8D 22 BSR ZD2540673 D232 8D EA BSR ZD21E0674 D234 BD D1 A2 JSR >LOAD10675 D237 F6 CC 1D LDB >TRNFLG0676 D23A 27 04 BEQ ZD2400677 D23C 6E 9F CC 1E JMP [TRNVEC]06780679 D240 8E CC 5C ZD240 LDX #NTRMSG0680 D243 86 81 LDA #$810681 D245 7E CD DE JMP >ZCDDE06820683 D248 34 02 ZD248 PSHS A0684 D24A 8E C8 40 LDX #FCB0685 D24D BD D0 36 JSR >GETFL10686 D250 35 02 PULS A0687 D252 25 1A BCS ZD26E0688 D254 8E C8 40 ZD254 LDX #FCB0689 D257 BD D0 EB JSR >SETEX10690 D25A 8E C8 40 LDX #FCB0691 D25D 86 01 LDA #$010692 D25F A7 84 STA ,X0693 D261 BD D1 E4 JSR >ZD1E40694 D264 10 25 00 BB LBCS ZD3230695 D268 86 FF LDA #$FF0696 D26A A7 88 3B STA $3B,X0697 D26D 39 RTS06980699 D26E B6 CC 11 ZD26E LDA >LASTRM0700 D271 81 0D CMPA #$0D0701 D273 27 07 BEQ ZD27C0702 D275 B1 CC 02 CMPA >EOLCHR0703 D278 10 26 FB 5D LBNE ZCDD90704 D27C 1A 01 ZD27C ORCC #$010705 D27E 39 RTS07060707 D27F 34 30 RPTER1 PSHS Y,X0708 D281 A6 01 LDA $01,X0709 D283 B7 CC 20 STA >ERRTYP0710 D286 27 63 BEQ ZD2EB0711 D288 BD CD EA JSR >RSTIO10712 D28B 10 BE CC 2D LDY >ERRVEC0713 D28F 26 08 BNE ZD2990714 D291 81 10 CMPA #$100715 D293 27 58 BEQ ZD2ED0716 D295 10 8E D3 61 LDY #ZD3610717 D299 8E C8 40 ZD299 LDX #FCB0718 D29C 6D 02 TST $02,X0719 D29E 27 09 BEQ ZD2A90720 D2A0 86 04 LDA #$040721 D2A2 A7 84 STA ,X0722 D2A4 BD D4 06 JSR >FMS0723 D2A7 26 2E BNE ZD2D70724 D2A9 8E C8 38 ZD2A9 LDX #ZC8380725 D2AC C6 0B LDB #$0B0726 D2AE 8D 6E BSR ZD31E0727 D2B0 8E C8 40 LDX #FCB0728 D2B3 B6 CC 0B LDA >SYSDRV0729 D2B6 A7 03 STA $03,X0730 D2B8 86 01 LDA #$010731 D2BA A7 84 STA ,X0732 D2BC BD D4 06 JSR >FMS0733 D2BF 26 16 BNE ZD2D70734 D2C1 B6 CC 20 LDA >ERRTYP0735 D2C4 4A DECA0736 D2C5 47 ASRA0737 D2C6 47 ASRA0738 D2C7 4C INCA0739 D2C8 6F 88 20 CLR $20,X0740 D2CB A7 88 21 STA $21,X0741 D2CE 86 15 LDA #$150742 D2D0 A7 84 STA ,X0743 D2D2 BD D4 06 JSR >FMS0744 D2D5 27 1E BEQ ZD2F50745 D2D7 8E CC 75 ZD2D7 LDX #DERMSG0746 D2DA BD CE 81 JSR >PSTRG10747 D2DD BE CC 3F LDX >ZCC3F0748 D2E0 B6 CC 20 LDA >ERRTYP0749 D2E3 A7 01 STA $01,X0750 D2E5 6F 84 CLR ,X0751 D2E7 5F CLRB0752 D2E8 BD CF 86 JSR >OUTDC10753 D2EB 35 B0 ZD2EB PULS PC,Y,X07540755 D2ED 8E CC 82 ZD2ED LDX #DNRMSG0756 D2F0 BD CE 81 JSR >PSTRG10757 D2F3 20 F6 BRA ZD2EB07580759 D2F5 BD CE B5 ZD2F5 JSR >PCRLF10760 D2F8 8E C8 40 LDX #FCB0761 D2FB B6 CC 20 LDA >ERRTYP0762 D2FE 4A DECA0763 D2FF 84 03 ANDA #$030764 D301 C6 3F LDB #$3F0765 D303 3D MUL0766 D304 CB 04 ADDB #$040767 D306 E7 88 22 STB $22,X0768 D309 BD D4 06 ZD309 JSR >FMS0769 D30C 26 C9 BNE ZD2D70770 D30E BD CF 41 JSR >PUTCH10771 D311 81 0D CMPA #$0D0772 D313 26 F4 BNE ZD3090773 D315 86 04 LDA #$040774 D317 A7 84 STA ,X0775 D319 BD D4 06 JSR >FMS0776 D31C 20 CD BRA ZD2EB0777 D31E 34 30 ZD31E PSHS Y,X0778 D320 7E D1 00 JMP >ZD10007790780 D323 8E CC 6B ZD323 LDX #NFDMSG NOT FOUND0781 D326 7E CD E1 JMP >ZCDE10782 *0783 ** CALL FLEX AS A SUBROUTINE0784 *0785 D329 35 06 DOCMD1 PULS B,A0786 D32B FD CC 43 STD >ZCC430787 D32E 10 FF CC 45 ZD32E STS >ZCC450788 D332 7F CC 20 CLR >ERRTYP0789 D335 7C CC 28 INC >CMDFLG0790 D338 7E CD B8 JMP >ZCDB80791 D33B 7F CC 28 ZD33B CLR >CMDFLG0792 D33E 10 FE CC 45 LDS >ZCC450793 D342 F6 CC 20 LDB >ERRTYP0794 D345 6E 9F CC 43 JMP [ZCC43]0795 *0796 ** ADD ACCB TO IX0797 *0798 D349 3A ADDBX1 ABX0799 D34A 39 RTS08000801 D34B 7D CC FC ZD34B TST >ZCCFC0802 D34E 26 04 BNE ZD3540803 D350 6E 9F D3 F3 JMP [MONVEC]08040805 D354 8E C8 40 ZD354 LDX #FCB0806 D357 86 1B LDA #$1B0807 D359 A7 01 STA $01,X0808 D35B BD D2 7F JSR >RPTER10809 D35E 7E CD 67 JMP >WARM108100811 D361 45 52 52 4F 52 53 ZD361 FCC /ERRORS/0812 D367 00 00 FCB $00,$000813 D369 53 59 53 FCC /SYS/0009 END0000 INCLUDE "f9-monio.asm"0001 *0002 ** TERMINAL AND PRINTER DRIVERS0003 ** SYS09BUG - Spartan 3 Starter Board0004 *0005 ** FLEX DRIVER MEMORY MAP:0006 ** C700 - C83F PRINTER SPOOLER0007 ** CCC0 - CCF7 PRINTER DRIVERS0008 ** D370 - D3FF CONSOLE DRIVERS0009 ** DE00 - DFAF DISK DRIVERS0010 *0011 *0012 ** INTERRUPT VECTORS0013 *0014 DFC8 IRQVEC EQU MONRAM+$080015 DFC2 SWIVEC EQU MONRAM+$02 SWI3 VECTOR0016 *0017 ** PRINTER DRIVERS0018 *0019 CCC0 ORG $CCC00020 CCC0 7E D3 70 PINIT JMP DUMRTS INITIATE PRINTER0021 CCD8 ORG $CCD80022 CCD8 7E D3 70 PCHK JMP DUMRTS CHECK IF PRINTER READY0023 CCE4 ORG $CCE40024 CCE4 7E D3 70 POUT JMP DUMRTS OUTPUT CHR. TO PRINTER0025 CCF8 ORG $CCF80026 CCF8 01 00 00 00 ZCCF8 FCB $01,$00,$00,$000027 CCFC 00 00 00 00 ZCCFC FCB $00,$00,$00,$000028 *0029 ** CONSOLE DRIVER PATCHES:0030 *0031 D370 ORG $D3700032 D370 IHND EQU * INTERRUPT HANDLER0033 D370 TMON EQU * TIMER ON0034 D370 TMOFF EQU * TIMER OFF0035 D370 TMINT EQU * TIMER INITIALIZATION0036 D370 DUMRTS EQU *0037 D370 39 RTS0038 *0039 ** SBUG MONITOR I/O CALLS0040 *0041 D371 7E D3 70 TERINZ JMP DUMRTS INITIATE ACIA0042 D374 6E 9F F8 04 INCHNE JMP [MONROM+$04] INPUT WITHOUT ECHO0043 D378 6E 9F F8 00 MONITR JMP [MONROM+$00]0044 D37C 6E 9F F8 08 INCHEK JMP [MONROM+$08] CHECK FOR TERMINAL ENTRY0045 D380 6E 9F F8 0A OUTEEE JMP [MONROM+$0A] OUPUT CHARACTER0046 D384 6E 9F F8 06 INEEE JMP [MONROM+$06] INPUT WITH ECHO00470048 *0049 ** AUTO BLOCK FDBS0050 *0051 D3E5 ORG $D3E50052 D3E5 D3 74 ZD3E5 FDB INCHNE INPUT - NO ECHO0053 D3E7 D3 70 IHNDVC FDB IHND IRQ INTERRUPT HANDLER0054 D3E9 DF C2 SWIVVC FDB SWIVEC SWI3 VECTOR LOCATION0055 D3EB DF C8 IRQVVC FDB IRQVEC IRQ VECTOR LOCATION0056 D3ED D3 70 TOFVEC FDB TMOFF TIMER OFF ROUTINE0057 D3EF D3 70 TONVEC FDB TMON TIMER ON ROUTINE0058 D3F1 D3 70 TINVEC FDB TMINT TIMER INITIALIZE ROUTINE0059 D3F3 D3 78 MONVEC FDB MONITR MONITOR RETURN ADDRESS0060 D3F5 D3 71 TERVEC FDB TERINZ TERMINAL INITIATION0061 D3F7 D3 7C STAVEC FDB INCHEK CHECK TERMINAL STATUS0062 D3F9 D3 80 OUTVEC FDB OUTEEE TERMINAL CHAR OUTPUT0063 D3FB D3 84 INVEC FDB INEEE TERMINAL INPUT CHARACTER0064 D3FD 7E CA 00 ZD3FD JMP ZCA000010 END0000 INCLUDE "f9-fms.asm"0001 *0002 ** FILE MANAGEMENT SYSTEM0003 *0004 D400 7E D4 36 ZD400 JMP >ZD4360005 D403 7E D4 59 FMSCLS JMP >ZD4590006 D406 7E D4 7B FMS JMP >FMS10007 D409 20 44 49 53 4B 20 CPYMSG FCC / DISK OPERATING SYSTEM/4F 50 45 52 41 5449 4E 47 20 53 5953 54 45 4D0008 D41F 20 43 4F 50 59 52 FCC / COPYRIGHT (C) 1980 BY/49 47 48 54 20 2843 29 20 31 39 3830 20 42 590009 D435 20 54 45 43 48 4E FCC / TECHNICAL SYSTEMS CONSULTANTS/49 43 41 4C 20 5359 53 54 45 4D 5320 43 4F 4E 53 554C 54 41 4E 54 530010 D409 ORG CPYMSG0011 D409 FCBPTR RMB 20012 D40B CURFCB RMB 40013 D40F ZD40F RMB 20014 D411 ZD411 RMB 10015 D412 ZD412 RMB 10016 D413 ZD413 RMB 10017 D414 ZD414 RMB 10018 D415 ZD415 RMB 20019 D417 ZD417 RMB 10020 D418 ZD418 RMB 20021 D41A ZD41A RMB 10022 D41B ZD41B RMB 20023 D41D ZD41D RMB 240024 D435 FF VERFLG FCB $FF0025 *0026 **0027 *0028 D436 BD DE 15 ZD436 JSR >COLDDR0029 D439 8E D4 09 LDX #FCBPTR0030 D43C C6 0A LDB #$0A0031 D43E 8D 11 BSR ZD4510032 D440 8E 00 05 LDX #Z00050033 D443 BF D4 13 STX >ZD4130034 D446 BF D4 15 STX >ZD4150035 D449 7F D4 1A CLR >ZD41A0036 D44C 8E D4 1B ZD44C LDX #ZD41B0037 D44F C6 1A LDB #$1A0038 D451 6F 80 ZD451 CLR ,X+0039 D453 5A DECB0040 D454 26 FB BNE ZD4510041 D456 7E C7 0C JMP >PRSPL500420043 D459 BD C7 09 ZD459 JSR >PRSPL40044 D45C BE D4 09 ZD45C LDX >FCBPTR0045 D45F 27 EB BEQ ZD44C0046 D461 30 88 E4 LEAX -$1C,X0047 D464 BF D4 0B STX >CURFCB0048 D467 34 20 PSHS Y0049 D469 BD DA C3 JSR >CLOSE0050 D46C 35 20 PULS Y0051 D46E 24 EC BCC ZD45C0052 D470 BE D4 0B LDX >CURFCB0053 D473 6F 02 CLR $02,X0054 D475 BD C7 0C JSR >PRSPL50055 D478 C6 FF LDB #$FF0056 D47A 39 RTS00570058 *0059 ** FMS CALL, PROCESSING0060 *0061 D47B 7D CC FC FMS1 TST >ZCCFC0062 D47E 27 03 BEQ ZD4830063 D480 BD C7 09 JSR >PRSPL40064 D483 34 24 ZD483 PSHS Y,B0065 D485 BF D4 0B STX >CURFCB0066 D488 6F 01 CLR $01,X0067 D48A E6 84 LDB ,X0068 D48C 26 22 BNE DOFUNC0069 *0070 ** READ/WRITE CHAR/BYTE0071 *0072 D48E E6 02 LDB $02,X0073 D490 27 1A BEQ ZD4AC0074 D492 C1 02 CMPB #$020075 D494 27 11 BEQ ZD4A70076 D496 BD D5 B4 JSR >ZD5B40077 D499 BE D4 0B ZD499 LDX >CURFCB0078 D49C 25 26 BCS ZD4C40079 D49E 7D CC FC TST >ZCCFC0080 D4A1 26 23 BNE ZD4C60081 D4A3 5F CLRB0082 D4A4 35 24 PULS Y,B0083 D4A6 39 RTS00840085 D4A7 BD D6 CF ZD4A7 JSR >ZD6CF0086 D4AA 20 ED BRA ZD4990087 D4AC C6 12 ZD4AC LDB #$120088 D4AE 20 14 BRA ZD4C400890090 D4B0 C1 16 DOFUNC CMPB #$160091 D4B2 23 04 BLS DOFUN10092 D4B4 C6 01 LDB #$010093 D4B6 20 0C BRA ZD4C40094 D4B8 5A DOFUN1 DECB0095 D4B9 58 ASLB0096 D4BA 8E D4 CE LDX #FMSTBL0097 D4BD AD 95 JSR [B,X]0098 D4BF BE D4 0B LDX >CURFCB0099 D4C2 24 02 BCC ZD4C60100 D4C4 E7 01 ZD4C4 STB $01,X0101 D4C6 BD C7 0C ZD4C6 JSR >PRSPL50102 D4C9 6D 01 TST $01,X0103 D4CB 35 24 PULS Y,B0104 D4CD 39 RTS0105 *0106 ** FMS COMMAND VECTOR TABLE0107 *0108 D4CE D9 86 FMSTBL FDB OPENRD FC 10109 D4D0 D9 D9 FDB OPENWR FC 20110 D4D2 DA F9 FDB OPENUD FC 30111 D4D4 DA C3 FDB CLOSE FC 40112 D4D6 D5 E2 FDB REWIND FC 50113 D4D8 D8 1D FDB OPNDIR FC 60114 D4DA D8 38 FDB GETREC FC 70115 D4DC D8 76 FDB PUTREC FC 80116 D4DE D6 41 FDB RDSECT FC 90117 D4E0 D6 9F FDB WRSECT FC 100118 D4E2 D9 69 FDB RESV1 FC 110119 D4E4 DB D6 FDB DELETE FC 120120 D4E6 DB 2C FDB RENAME FC 130121 D4E8 D6 99 FDB RESV2 FC 140122 D4EA DA 87 FDB NXTSEC FC 150123 D4EC D8 10 FDB OPNREC FC 160124 D4EE D5 6F FDB GETBYT FC 170125 D4F0 D5 90 FDB PUTBYT FC 180126 D4F2 DB 07 FDB RESV3 FC 190127 D4F4 DD BD FDB NXTDRV FC 200128 D4F6 DC FB FDB POSREC FC 210129 D4F8 DC E5 FDB BAKREC FC 220130 *0131 **0132 *0133 D4FA 8D 20 ZD4FA BSR ZD51C0134 D4FC 26 05 BNE ZD5030135 D4FE C6 02 LDB #$020136 D500 1A 01 ORCC #$010137 D502 39 RTS01380139 D503 ED 84 ZD503 STD ,X0140 D505 AE 84 LDX ,X0141 D507 6F 84 CLR ,X0142 D509 6F 01 CLR $01,X0143 D50B 39 RTS01440145 D50C 8D 0E ZD50C BSR ZD51C0146 D50E 27 05 BEQ ZD5150147 D510 C6 0D LDB #$0D0148 D512 1A 01 ORCC #$010149 D514 39 RTS01500151 D515 EC 94 ZD515 LDD [,X]0152 D517 ED 84 STD ,X0153 D519 1C FE ANDCC #$FE0154 D51B 39 RTS01550156 D51C FC D4 0B ZD51C LDD >CURFCB0157 D51F C3 00 1C ADDD #$001C0158 D522 8E D4 09 LDX #FCBPTR0159 D525 10 AE 84 ZD525 LDY ,X0160 D528 26 03 BNE ZD52D0161 D52A 1C FB ANDCC #$FB0162 D52C 39 RTS01630164 D52D 10 A3 84 ZD52D CMPD ,X0165 D530 26 01 BNE ZD5330166 D532 39 RTS0167 D533 AE 84 ZD533 LDX ,X0168 D535 20 EE BRA ZD52501690170 D537 BE D4 0B ZD537 LDX >CURFCB0171 D53A 4F CLRA0172 D53B 5F CLRB0173 D53C 8D 02 BSR ZD5400174 D53E C6 2F LDB #$2F0175 D540 A7 88 11 ZD540 STA $11,X0176 D543 30 01 LEAX $01,X0177 D545 5A DECB0178 D546 26 F8 BNE ZD5400179 D548 39 RTS01800181 D549 BE D4 0B ZD549 LDX >CURFCB0182 D54C C6 0B LDB #$0B0183 D54E A6 04 ZD54E LDA $04,X0184 D550 A7 88 24 STA $24,X0185 D553 30 01 LEAX $01,X0186 D555 5A DECB0187 D556 26 F6 BNE ZD54E0188 D558 39 RTS01890190 D559 BE D4 0B ZD559 LDX >CURFCB0191 D55C C6 0B LDB #$0B0192 D55E A6 04 ZD55E LDA $04,X0193 D560 34 02 PSHS A0194 D562 A6 88 24 LDA $24,X0195 D565 A1 E0 CMPA ,S+0196 D567 26 05 BNE ZD56E0197 D569 30 01 LEAX $01,X0198 D56B 5A DECB0199 D56C 26 F0 BNE ZD55E0200 D56E 39 ZD56E RTS0201 *0202 ** GET RANDOM BYTE FROM SECTOR0203 *0204 D56F BE D4 0B GETBYT LDX >CURFCB0205 D572 E6 02 LDB $02,X0206 D574 54 LSRB0207 D575 24 79 BCC ZD5F00208 D577 E6 88 23 LDB $23,X0209 D57A 7E D6 00 JMP >ZD60002100211 D57D BE D4 0B ZD57D LDX >CURFCB0212 D580 E6 88 22 LDB $22,X0213 D583 6C 88 22 INC $22,X0214 D586 3A ABX0215 D587 A7 88 40 STA $40,X0216 D58A 5C INCB0217 D58B 26 1F BNE ZD5AC0218 D58D 1A 01 ORCC #$010219 D58F 39 RTS0220 *0221 ** PUT RANDOM BYTE IN SECTOR0222 *0223 D590 BE D4 0B PUTBYT LDX >CURFCB0224 D593 E6 02 LDB $02,X0225 D595 C4 03 ANDB #$030226 D597 C1 03 CMPB #$030227 D599 26 55 BNE ZD5F00228 D59B CA 80 ORB #$800229 D59D E7 02 STB $02,X0230 D59F E6 0F LDB $0F,X0231 D5A1 C5 80 BITB #$800232 D5A3 26 0A BNE ZD5AF0233 D5A5 E6 88 23 LDB $23,X0234 D5A8 3A ABX0235 D5A9 A7 88 40 STA $40,X0236 D5AC 1C FE ZD5AC ANDCC #$FE0237 D5AE 39 RTS02380239 D5AF C6 0B ZD5AF LDB #$0B0240 D5B1 1A 01 ORCC #$010241 D5B3 39 RTS02420243 D5B4 A6 88 3B ZD5B4 LDA $3B,X0244 D5B7 2B 3C BMI ZD5F50245 D5B9 27 07 BEQ ZD5C20246 D5BB 6A 88 3B DEC $3B,X0247 D5BE 86 20 LDA #$200248 D5C0 20 1D BRA ZD5DF02490250 D5C2 8D 31 ZD5C2 BSR ZD5F50251 D5C4 25 1B BCS ZD5E10252 D5C6 81 18 CMPA #$180253 D5C8 22 15 BHI ZD5DF0254 D5CA 27 F6 BEQ ZD5C20255 D5CC 81 09 CMPA #$090256 D5CE 26 0C BNE ZD5DC0257 D5D0 8D 23 BSR ZD5F50258 D5D2 25 0D BCS ZD5E10259 D5D4 BE D4 0B LDX >CURFCB0260 D5D7 A7 88 3B STA $3B,X0261 D5DA 20 D8 BRA ZD5B402620263 D5DC 4D ZD5DC TSTA0264 D5DD 27 E3 BEQ ZD5C20265 D5DF 1C FE ZD5DF ANDCC #$FE0266 D5E1 39 ZD5E1 RTS0267 *0268 ** REWIND FILE0269 *0270 D5E2 BD DA B1 REWIND JSR >ZDAB10271 D5E5 25 09 BCS ZD5F00272 D5E7 85 01 BITA #$010273 D5E9 27 05 BEQ ZD5F00274 D5EB A7 84 STA ,X0275 D5ED 7E D9 A0 JMP >ZD9A002760277 D5F0 C6 12 ZD5F0 LDB #$120278 D5F2 1A 01 ORCC #$010279 D5F4 39 RTS02800281 D5F5 BE D4 0B ZD5F5 LDX >CURFCB0282 D5F8 E6 88 22 LDB $22,X0283 D5FB 27 0A BEQ ZD6070284 D5FD 6C 88 22 INC $22,X0285 D600 3A ZD600 ABX0286 D601 A6 88 40 LDA $40,X0287 D604 1C FE ANDCC #$FE0288 D606 39 RTS02890290 D607 8D 03 ZD607 BSR ZD60C0291 D609 24 EA BCC ZD5F50292 D60B 39 RTS02930294 D60C BE D4 0B ZD60C LDX >CURFCB0295 D60F EC 88 40 LDD $40,X0296 D612 6C 88 21 INC $21,X0297 D615 26 03 BNE ZD61A0298 D617 6C 88 20 INC $20,X0299 D61A 10 83 00 00 ZD61A CMPD #$00000300 D61E 27 1C BEQ ZD63C0301 D620 ED 88 1E ZD620 STD $1E,X0302 D623 34 02 PSHS A0303 D625 86 04 LDA #$040304 D627 A7 88 22 STA $22,X0305 D62A 35 02 PULS A0306 D62C 8D 13 BSR RDSECT0307 D62E 24 10 BCC ZD6400308 D630 C5 80 BITB #$800309 D632 27 04 BEQ ZD6380310 D634 C6 10 LDB #$100311 D636 20 06 BRA ZD63E03120313 D638 C6 09 ZD638 LDB #$090314 D63A 20 02 BRA ZD63E03150316 D63C C6 08 ZD63C LDB #$080317 D63E 1A 01 ZD63E ORCC #$010318 D640 39 ZD640 RTS0319 *0320 ** READ SINGLE SECTOR0321 *0322 D641 8D 25 RDSECT BSR ZD6680323 D643 BE D4 0B LDX >CURFCB0324 D646 BD DE 0C JSR >DRIVE0325 D649 25 12 BCS ZD65D0326 D64B 8D 11 ZD64B BSR ZD65E0327 D64D BD DE 00 JSR >READ0328 D650 26 03 BNE ZD6550329 D652 1C FE ANDCC #$FE0330 D654 39 RTS03310332 D655 34 04 ZD655 PSHS B0333 D657 8D 17 BSR ZD6700334 D659 35 04 PULS B0335 D65B 24 EE BCC ZD64B0336 D65D 39 ZD65D RTS03370338 D65E BE D4 0B ZD65E LDX >CURFCB0339 D661 EC 88 1E LDD $1E,X0340 D664 30 88 40 LEAX $40,X0341 D667 39 RTS03420343 D668 4F ZD668 CLRA0344 D669 B7 D4 11 STA >ZD4110345 D66C B7 D4 12 STA >ZD4120346 D66F 39 RTS03470348 D670 C5 10 ZD670 BITB #$100349 D672 26 11 BNE ZD6850350 D674 C5 80 BITB #$800351 D676 26 24 BNE ZD69C0352 D678 F6 D4 11 LDB >ZD4110353 D67B 5C INCB0354 D67C C1 07 CMPB #$070355 D67E 27 05 BEQ ZD6850356 D680 F7 D4 11 STB >ZD4110357 D683 20 14 BRA RESV203580359 D685 7F D4 11 ZD685 CLR >ZD4110360 D688 F6 D4 12 LDB >ZD4120361 D68B 5C INCB0362 D68C C1 04 CMPB #$040363 D68E 27 0C BEQ ZD69C0364 D690 F7 D4 12 STB >ZD4120365 D693 BE D4 0B LDX >CURFCB0366 D696 BD DE 09 JSR >RESTOR0367 *0368 ** RESERVED0369 *0370 D699 1C FE RESV2 ANDCC #$FE0371 D69B 39 RTS0372 D69C 1A 01 ZD69C ORCC #$010373 D69E 39 RTS0374 *0375 ** WRITE SINGLE SECTOR0376 *0377 D69F 8D C7 WRSECT BSR ZD6680378 D6A1 BE D4 0B LDX >CURFCB0379 D6A4 BD DE 0C JSR >DRIVE0380 D6A7 25 20 BCS ZD6C90381 D6A9 BE D4 0B ZD6A9 LDX >CURFCB0382 D6AC 8D B0 BSR ZD65E0383 D6AE BD DE 03 JSR >WRITE0384 D6B1 26 0A BNE ZD6BD0385 D6B3 B6 D4 35 LDA >VERFLG0386 D6B6 27 37 BEQ ZD6EF0387 D6B8 BD DE 06 JSR >VERIFY0388 D6BB 27 32 BEQ ZD6EF0389 D6BD C5 40 ZD6BD BITB #$400390 D6BF 26 0B BNE ZD6CC0391 D6C1 34 04 PSHS B0392 D6C3 8D AB BSR ZD6700393 D6C5 35 04 PULS B0394 D6C7 24 E0 BCC ZD6A90395 D6C9 39 ZD6C9 RTS03960397 D6CA C6 20 LDB #$200398 D6CC 1A 01 ZD6CC ORCC #$010399 D6CE 39 RTS04000401 D6CF BE D4 0B ZD6CF LDX >CURFCB0402 D6D2 E6 88 3B LDB $3B,X0403 D6D5 2B 3D BMI ZD7140404 D6D7 81 20 CMPA #$200405 D6D9 26 0F BNE ZD6EA0406 D6DB 5C INCB0407 D6DC E7 88 3B STB $3B,X0408 D6DF C1 7F CMPB #$7F0409 D6E1 26 0C BNE ZD6EF0410 D6E3 20 0D BRA ZD6F204110412 D6E5 8D 0B ZD6E5 BSR ZD6F20413 D6E7 24 E6 BCC ZD6CF0414 D6E9 39 RTS04150416 D6EA 5D ZD6EA TSTB0417 D6EB 27 27 BEQ ZD7140418 D6ED 20 F6 BRA ZD6E504190420 D6EF 1C FE ZD6EF ANDCC #$FE0421 D6F1 39 RTS04220423 D6F2 34 02 ZD6F2 PSHS A0424 D6F4 C1 01 CMPB #$010425 D6F6 26 04 BNE ZD6FC0426 D6F8 86 20 LDA #$200427 D6FA 20 10 BRA ZD70C04280429 D6FC 86 09 ZD6FC LDA #$090430 D6FE 8D 14 BSR ZD7140431 D700 35 02 PULS A0432 D702 25 0F BCS ZD7130433 D704 34 02 PSHS A0434 D706 BE D4 0B LDX >CURFCB0435 D709 A6 88 3B LDA $3B,X0436 D70C 6F 88 3B ZD70C CLR $3B,X0437 D70F 8D 03 BSR ZD7140438 D711 35 02 PULS A0439 D713 39 ZD713 RTS04400441 D714 BE D4 0B ZD714 LDX >CURFCB0442 D717 E6 02 LDB $02,X0443 D719 C1 02 CMPB #$020444 D71B 10 26 FE D1 LBNE ZD5F00445 D71F E6 88 22 LDB $22,X0446 D722 C1 04 CMPB #$040447 D724 26 08 BNE ZD72E0448 D726 34 02 PSHS A0449 D728 8D 21 BSR ZD74B0450 D72A 35 02 PULS A0451 D72C 25 0F BCS ZD73D0452 D72E BD D5 7D ZD72E JSR >ZD57D0453 D731 24 0A BCC ZD73D0454 D733 C6 04 LDB #$040455 D735 BE D4 0B LDX >CURFCB0456 D738 E7 88 22 STB $22,X0457 D73B 1C FE ANDCC #$FE0458 D73D 39 ZD73D RTS04590460 D73E BE D4 0B ZD73E LDX >CURFCB0461 D741 4F CLRA0462 D742 5F CLRB0463 D743 ED 88 20 STD $20,X0464 D746 ED 88 42 STD $42,X0465 D749 20 27 BRA ZD77204660467 D74B E6 88 12 ZD74B LDB $12,X0468 D74E 26 22 BNE ZD7720469 D750 E6 88 17 LDB $17,X0470 D753 27 44 BEQ ZD7990471 D755 6F 88 17 CLR $17,X0472 D758 8D 3F BSR ZD7990473 D75A 25 2A BCS ZD7860474 D75C 8D E0 BSR ZD73E0475 D75E 25 26 BCS ZD7860476 D760 8D DC BSR ZD73E0477 D762 25 22 BCS ZD7860478 D764 BE D4 0B LDX >CURFCB0479 D767 C6 02 LDB #$020480 D769 E7 88 17 STB $17,X0481 D76C EC 88 11 LDD $11,X0482 D76F 7E DC 82 JMP >ZDC8204830484 D772 8D 0E ZD772 BSR ZD7820485 D774 BE D4 0B LDX >CURFCB0486 D777 ED 88 40 STD $40,X0487 D77A BD D6 9F JSR >WRSECT0488 D77D 24 1A BCC ZD7990489 D77F 7E DB C1 JMP >ZDBC104900491 D782 8D 03 ZD782 BSR ZD7870492 D784 EC 84 LDD ,X0493 D786 39 ZD786 RTS04940495 D787 BE D4 0B ZD787 LDX >CURFCB0496 D78A E6 03 LDB $03,X0497 D78C 86 06 LDA #$060498 D78E 3D MUL0499 D78F 8E D4 1D LDX #ZD41D0500 D792 3A ABX0501 D793 BF D4 1B STX >ZD41B0502 D796 6D 84 TST ,X0503 D798 39 RTS05040505 D799 8D E7 ZD799 BSR ZD7820506 D79B 26 05 BNE ZD7A20507 D79D C6 07 LDB #$070508 D79F 1A 01 ZD79F ORCC #$010509 D7A1 39 RTS05100511 D7A2 BE D4 0B ZD7A2 LDX >CURFCB0512 D7A5 ED 88 13 STD $13,X0513 D7A8 6D 88 12 TST $12,X0514 D7AB 26 03 BNE ZD7B00515 D7AD ED 88 11 STD $11,X0516 D7B0 6C 88 16 ZD7B0 INC $16,X0517 D7B3 26 03 BNE ZD7B80518 D7B5 6C 88 15 INC $15,X0519 D7B8 6D 88 17 ZD7B8 TST $17,X0520 D7BB 27 0B BEQ ZD7C80521 D7BD BD DC 43 JSR >ZDC430522 D7C0 25 DD BCS ZD79F0523 D7C2 BE D4 0B LDX >CURFCB0524 D7C5 EC 88 13 LDD $13,X0525 D7C8 BD D6 20 ZD7C8 JSR >ZD6200526 D7CB 25 D2 BCS ZD79F0527 D7CD BE D4 0B LDX >CURFCB0528 D7D0 EC 88 40 LDD $40,X0529 D7D3 34 06 PSHS B,A0530 D7D5 8D B0 BSR ZD7870531 D7D7 35 06 PULS B,A0532 D7D9 ED 84 STD ,X0533 D7DB 26 0A BNE ZD7E70534 D7DD 6F 02 CLR $02,X0535 D7DF 6F 03 CLR $03,X0536 D7E1 6F 04 CLR $04,X0537 D7E3 6F 05 CLR $05,X0538 D7E5 20 08 BRA ZD7EF05390540 D7E7 10 AE 04 ZD7E7 LDY $04,X0541 D7EA 31 3F LEAY -$01,Y0542 D7EC 10 AF 04 STY $04,X0543 D7EF 4F ZD7EF CLRA0544 D7F0 BE D4 0B LDX >CURFCB0545 D7F3 6C 88 21 INC $21,X0546 D7F6 26 03 BNE ZD7FB0547 D7F8 6C 88 20 INC $20,X0548 D7FB 5F ZD7FB CLRB0549 D7FC A7 88 40 ZD7FC STA $40,X0550 D7FF 30 01 LEAX $01,X0551 D801 5A DECB0552 D802 26 F8 BNE ZD7FC0553 D804 BE D4 0B LDX >CURFCB0554 D807 EC 88 20 LDD $20,X0555 D80A ED 88 42 STD $42,X0556 D80D 1C FE ANDCC #$FE0557 D80F 39 RTS0558 *0559 ** OPEN SYSTEM INFO. RECORD0560 *0561 D810 5F OPNREC CLRB0562 D811 34 04 PSHS B0563 D813 C6 03 LDB #$030564 D815 20 0E BRA ZD8250565 D817 BE D4 15 LDX >ZD4150566 D81A BF D4 13 STX >ZD4130567 D81D F6 D4 13 OPNDIR LDB >ZD4130568 D820 34 04 PSHS B0569 D822 F6 D4 14 LDB >ZD4140570 D825 BE D4 0B ZD825 LDX >CURFCB0571 D828 E7 88 41 STB $41,X0572 D82B 35 04 PULS B0573 D82D E7 88 40 STB $40,X0574 D830 7F D4 18 CLR >ZD4180575 D833 5F CLRB0576 D834 E7 88 22 STB $22,X0577 D837 39 RTS0578 *0579 ** GET INFO RECORD0580 *0581 D838 BE D4 0B GETREC LDX >CURFCB0582 D83B E6 88 22 LDB $22,X0583 D83E 26 1D BNE ZD85D0584 D840 BD D6 0C JSR >ZD60C0585 D843 25 30 BCS ZD8750586 D845 BE D4 0B LDX >CURFCB0587 D848 7D D4 18 TST >ZD4180588 D84B 26 05 BNE ZD8520589 D84D DC 44 LDD <Z00440590 D84F FD D4 18 STD >ZD4180591 D852 86 10 ZD852 LDA #$100592 D854 A7 88 22 STA $22,X0593 D857 EC 88 1E LDD $1E,X0594 D85A ED 88 2F STD $2F,X0595 D85D A6 88 22 ZD85D LDA $22,X0596 D860 A7 88 31 STA $31,X0597 D863 C6 18 LDB #$180598 D865 34 14 ZD865 PSHS X,B0599 D867 BD D5 F5 JSR >ZD5F50600 D86A 35 14 PULS X,B0601 D86C A7 04 STA $04,X0602 D86E 30 01 LEAX $01,X0603 D870 5A DECB0604 D871 26 F2 BNE ZD8650605 D873 1C FE ANDCC #$FE0606 D875 39 ZD875 RTS0607 *0608 ** PUT INFORMATION RECORD0609 *0610 D876 BE D4 0B PUTREC LDX >CURFCB0611 D879 A6 88 31 LDA $31,X0612 D87C A7 88 22 STA $22,X0613 D87F C6 18 LDB #$180614 D881 34 14 ZD881 PSHS X,B0615 D883 A6 04 LDA $04,X0616 D885 BD D7 14 JSR >ZD7140617 D888 35 14 PULS X,B0618 D88A 30 01 LEAX $01,X0619 D88C 5A DECB0620 D88D 26 F2 BNE ZD8810621 D88F 7E D6 9F JMP >WRSECT06220623 D892 BE D4 0B ZD892 LDX >CURFCB0624 D895 A6 03 LDA $03,X0625 D897 A7 88 23 STA $23,X0626 D89A B6 D4 17 LDA >ZD4170627 D89D 7D D4 1A TST >ZD41A0628 D8A0 26 31 BNE ZD8D30629 D8A2 A7 03 STA $03,X0630 D8A4 BE D4 15 LDX >ZD4150631 D8A7 BF D4 13 STX >ZD4130632 D8AA 8C 00 05 ZD8AA CMPX #Z00050633 D8AD 27 0C BEQ ZD8BB0634 D8AF 8D 22 BSR ZD8D30635 D8B1 23 37 BLS ZD8EA0636 D8B3 BE D4 18 LDX >ZD4180637 D8B6 BF D4 13 STX >ZD4130638 D8B9 20 EF BRA ZD8AA06390640 D8BB BE D4 0B ZD8BB LDX >CURFCB0641 D8BE A6 88 23 LDA $23,X0642 D8C1 A7 03 STA $03,X0643 D8C3 2A 0E BPL ZD8D30644 D8C5 BD DD BD ZD8C5 JSR >NXTDRV0645 D8C8 25 36 BCS ZD9000646 D8CA 8D 07 BSR ZD8D30647 D8CC 23 1C BLS ZD8EA0648 D8CE BD DD AD JSR >ZDDAD0649 D8D1 20 F2 BRA ZD8C506500651 D8D3 BE D4 0B ZD8D3 LDX >CURFCB0652 D8D6 7F D4 1A CLR >ZD41A0653 D8D9 BD D5 49 JSR >ZD5490654 D8DC BD D8 1D JSR >OPNDIR0655 D8DF BD D8 38 ZD8DF JSR >GETREC0656 D8E2 24 07 BCC ZD8EB0657 D8E4 C1 08 CMPB #$080658 D8E6 27 18 BEQ ZD9000659 D8E8 1A 01 ORCC #$010660 D8EA 39 ZD8EA RTS06610662 D8EB BE D4 0B ZD8EB LDX >CURFCB0663 D8EE A6 04 LDA $04,X0664 D8F0 27 0C BEQ ZD8FE0665 D8F2 2A 02 BPL ZD8F60666 D8F4 8D 0F BSR ZD9050667 D8F6 BD D5 59 ZD8F6 JSR >ZD5590668 D8F9 26 E4 BNE ZD8DF0669 D8FB 1C FE ANDCC #$FE0670 D8FD 39 RTS06710672 D8FE 8D 05 ZD8FE BSR ZD9050673 D900 1C FB ZD900 ANDCC #$FB0674 D902 1C FE ANDCC #$FE0675 D904 39 RTS06760677 D905 A6 88 33 ZD905 LDA $33,X0678 D908 26 0C BNE ZD9160679 D90A EC 88 2F LDD $2F,X0680 D90D ED 88 32 STD $32,X0681 D910 A6 88 31 LDA $31,X0682 D913 A7 88 34 STA $34,X0683 D916 39 ZD916 RTS06840685 D917 BD D7 87 ZD917 JSR >ZD7870686 D91A 26 17 BNE ZD9330687 D91C 8D 18 BSR ZD9360688 D91E 25 15 BCS ZD9350689 D920 C6 06 LDB #$060690 D922 10 BE D4 0B LDY >CURFCB0691 D926 BE D4 1B LDX >ZD41B0692 D929 A6 A8 5D ZD929 LDA $5D,Y0693 D92C 31 21 LEAY $01,Y0694 D92E A7 80 STA ,X+0695 D930 5A DECB0696 D931 26 F6 BNE ZD9290697 D933 1C FE ZD933 ANDCC #$FE0698 D935 39 ZD935 RTS06990700 D936 BD D8 10 ZD936 JSR >OPNREC0701 D939 BD D6 0C JSR >ZD60C0702 D93C 25 08 BCS ZD9460703 D93E BE D4 0B LDX >CURFCB0704 D941 C6 10 LDB #$100705 D943 E7 88 22 STB $22,X0706 D946 39 ZD946 RTS07070708 D947 BD D7 87 ZD947 JSR >ZD7870709 D94A 8D EA BSR ZD9360710 D94C 25 F8 BCS ZD9460711 D94E C6 06 LDB #$060712 D950 10 BE D4 0B LDY >CURFCB0713 D954 BE D4 1B LDX >ZD41B0714 D957 A6 80 ZD957 LDA ,X+0715 D959 A7 A8 5D STA $5D,Y0716 D95C 31 21 LEAY $01,Y0717 D95E 5A DECB0718 D95F 26 F6 BNE ZD9570719 D961 BD D6 9F JSR >WRSECT0720 D964 24 E0 BCC ZD9460721 D966 7E DB C1 JMP >ZDBC10722 *0723 **0724 *0725 D969 BE D4 0B RESV1 LDX >CURFCB0726 D96C 86 02 LDA #$020727 D96E A7 02 STA $02,X0728 D970 EC 88 2F LDD $2F,X0729 D973 ED 88 1E STD $1E,X0730 D976 BD D6 41 JSR >RDSECT0731 D979 25 08 BCS ZD9830732 D97B BD D8 76 JSR >PUTREC0733 D97E 24 05 BCC ZD9850734 D980 7E DB C1 JMP >ZDBC107350736 D983 C6 0A ZD983 LDB #$0A0737 D985 39 ZD985 RTS0738 *0739 ** OPEN FOR READ0740 *0741 D986 BD D4 FA OPENRD JSR >ZD4FA0742 D989 25 3D BCS ZD9C80743 D98B BD D8 92 JSR >ZD8920744 D98E 25 38 BCS ZD9C80745 D990 26 3B BNE ZD9CD0746 D992 BE D4 0B LDX >CURFCB0747 D995 7D D4 1A TST >ZD41A0748 D998 27 06 BEQ ZD9A00749 D99A A6 0F LDA $0F,X0750 D99C 85 20 BITA #$200751 D99E 26 29 BNE ZD9C90752 D9A0 BD DC C0 ZD9A0 JSR >ZDCC00753 D9A3 25 2A BCS ZD9CF0754 D9A5 EC 88 11 LDD $11,X0755 D9A8 ED 88 40 STD $40,X0756 D9AB BD DA 76 JSR >ZDA760757 D9AE E6 88 17 LDB $17,X0758 D9B1 27 13 BEQ ZD9C60759 D9B3 34 04 ZD9B3 PSHS B0760 D9B5 BD D6 0C JSR >ZD60C0761 D9B8 35 04 PULS B0762 D9BA 25 0C BCS ZD9C80763 D9BC 5A DECB0764 D9BD 26 F4 BNE ZD9B30765 D9BF BE D4 0B LDX >CURFCB0766 D9C2 5F CLRB0767 D9C3 E7 88 22 STB $22,X0768 D9C6 1C FE ZD9C6 ANDCC #$FE0769 D9C8 39 ZD9C8 RTS07700771 D9C9 C6 11 ZD9C9 LDB #$110772 D9CB 20 02 BRA ZD9CF07730774 D9CD C6 04 ZD9CD LDB #$040775 D9CF 34 04 ZD9CF PSHS B0776 D9D1 BD D5 0C JSR >ZD50C0777 D9D4 35 04 PULS B0778 D9D6 1A 01 ORCC #$010779 D9D8 39 RTS07800781 D9D9 BE D4 0B OPENWR LDX >CURFCB0782 D9DC 6D 03 TST $03,X0783 D9DE 2A 08 BPL ZD9E80784 D9E0 BD DD BD JSR >NXTDRV0785 D9E3 24 03 BCC ZD9E80786 D9E5 C6 10 LDB #$100787 D9E7 39 RTS07880789 D9E8 BD D4 FA ZD9E8 JSR >ZD4FA0790 D9EB 25 E2 BCS ZD9CF0791 D9ED BD D5 37 JSR >ZD5370792 D9F0 BD D9 17 JSR >ZD9170793 D9F3 25 DA BCS ZD9CF0794 D9F5 BD D8 92 JSR >ZD8920795 D9F8 25 D5 BCS ZD9CF0796 D9FA 26 04 BNE ZDA000797 D9FC C6 03 LDB #$030798 D9FE 20 CF BRA ZD9CF07990800 DA00 BD DC C0 ZDA00 JSR >ZDCC00801 DA03 25 CA BCS ZD9CF0802 DA05 BE D4 0B LDX >CURFCB0803 DA08 C6 0A LDB #$0A0804 DA0A 6F 0F ZDA0A CLR $0F,X0805 DA0C 30 01 LEAX $01,X0806 DA0E 5A DECB0807 DA0F 26 F9 BNE ZDA0A0808 DA11 BE D4 0B LDX >CURFCB0809 DA14 EC 88 32 LDD $32,X0810 DA17 27 27 BEQ ZDA400811 DA19 ED 88 2F STD $2F,X0812 DA1C A6 88 34 LDA $34,X0813 DA1F A7 88 31 STA $31,X0814 DA22 FC CC 0E LDD >DATERG0815 DA25 ED 88 19 STD $19,X0816 DA28 B6 CC 10 LDA >YEAR0817 DA2B A7 88 1B STA $1B,X0818 DA2E BD DD AD JSR >ZDDAD0819 DA31 BD D9 69 JSR >RESV10820 DA34 25 99 BCS ZD9CF0821 DA36 8D 3E BSR ZDA760822 DA38 86 04 LDA #$040823 DA3A A7 88 22 STA $22,X0824 DA3D 1C FE ANDCC #$FE0825 DA3F 39 RTS08260827 DA40 BE D4 0B ZDA40 LDX >CURFCB0828 DA43 6F 88 17 CLR $17,X0829 DA46 6C 88 12 INC $12,X0830 DA49 EC 88 2F LDD $2F,X0831 DA4C BD D6 20 JSR >ZD6200832 DA4F 25 0D BCS ZDA5E0833 DA51 BD D7 72 JSR >ZD7720834 DA54 25 08 BCS ZDA5E0835 DA56 BD D6 9F JSR >WRSECT0836 DA59 24 06 BCC ZDA610837 DA5B BD DB C1 JSR >ZDBC10838 DA5E 7E D9 CF ZDA5E JMP >ZD9CF08390840 DA61 BE D4 0B ZDA61 LDX >CURFCB0841 DA64 EC 88 1E LDD $1E,X0842 DA67 ED 88 32 STD $32,X0843 DA6A 86 10 LDA #$100844 DA6C A7 88 34 STA $34,X0845 DA6F BD D9 47 JSR >ZD9470846 DA72 25 EA BCS ZDA5E0847 DA74 20 8A BRA ZDA0008480849 DA76 BE D4 0B ZDA76 LDX >CURFCB0850 DA79 A6 84 LDA ,X0851 DA7B A7 02 STA $02,X0852 DA7D 6F 84 CLR ,X0853 DA7F 6F 88 3B CLR $3B,X0854 DA82 4F CLRA0855 DA83 A7 88 22 STA $22,X0856 DA86 39 RTS0857 *0858 ** READ/WRITE NEXT SECTOR0859 *0860 DA87 8D 28 NXTSEC BSR ZDAB10861 DA89 25 0E BCS ZDA990862 DA8B 6F 84 CLR ,X0863 DA8D 44 LSRA0864 DA8E 10 25 FB 7A LBCS ZD60C0865 DA92 C6 04 LDB #$040866 DA94 E7 88 22 STB $22,X0867 DA97 1C FE ANDCC #$FE0868 DA99 39 ZDA99 RTS08690870 DA9A BE D4 0B ZDA9A LDX >CURFCB0871 DA9D A6 02 LDA $02,X0872 DA9F 81 83 CMPA #$830873 DAA1 26 0B BNE ZDAAE0874 DAA3 86 03 LDA #$030875 DAA5 A7 02 STA $02,X0876 DAA7 BD D6 9F ZDAA7 JSR >WRSECT0877 DAAA 10 25 01 13 LBCS ZDBC10878 DAAE 1C FE ZDAAE ANDCC #$FE0879 DAB0 39 RTS08800881 DAB1 8D E7 ZDAB1 BSR ZDA9A0882 DAB3 25 0D BCS ZDAC20883 DAB5 BE D4 0B LDX >CURFCB0884 DAB8 A6 02 LDA $02,X0885 DABA 81 03 CMPA #$030886 DABC 23 F0 BLS ZDAAE0887 DABE C6 12 LDB #$120888 DAC0 1A 01 ORCC #$010889 DAC2 39 ZDAC2 RTS08900891 DAC3 8D EC CLOSE BSR ZDAB10892 DAC5 25 31 BCS ZDAF80893 DAC7 81 02 CMPA #$020894 DAC9 27 08 BEQ ZDAD30895 DACB BE D4 0B ZDACB LDX >CURFCB0896 DACE 6F 02 CLR $02,X0897 DAD0 7E D5 0C JMP >ZD50C08980899 DAD3 A6 88 12 ZDAD3 LDA $12,X0900 DAD6 26 05 BNE ZDADD0901 DAD8 BD DB A7 JSR >ZDBA70902 DADB 20 19 BRA ZDAF609030904 DADD 8D C8 ZDADD BSR ZDAA70905 DADF 25 17 BCS ZDAF80906 DAE1 BE D4 0B LDX >CURFCB0907 DAE4 6D 88 17 TST $17,X0908 DAE7 27 05 BEQ ZDAEE0909 DAE9 BD DC 98 JSR >ZDC980910 DAEC 25 0A BCS ZDAF80911 DAEE BD D9 69 ZDAEE JSR >RESV10912 DAF1 25 05 BCS ZDAF80913 DAF3 BD D9 47 JSR >ZD9470914 DAF6 24 D3 ZDAF6 BCC ZDACB0915 DAF8 39 ZDAF8 RTS0916 *0917 ** OPEN FOR UPDATE0918 *0919 DAF9 BD D9 86 OPENUD JSR >OPENRD0920 DAFC 25 28 BCS ZDB260921 DAFE BD D6 0C JSR >ZD60C0922 DB01 25 23 BCS ZDB260923 DB03 86 03 LDA #$030924 DB05 20 18 BRA ZDB1F0925 *0926 **0927 *0928 DB07 BD D9 86 RESV3 JSR >OPENRD0929 DB0A 25 1A BCS ZDB260930 DB0C BE D4 0B LDX >CURFCB0931 DB0F A6 0F LDA $0F,X0932 DB11 85 80 BITA #$800933 DB13 26 12 BNE ZDB270934 DB15 EC 88 13 LDD $13,X0935 DB18 BD D6 20 JSR >ZD6200936 DB1B 25 09 BCS ZDB260937 DB1D 86 02 LDA #$020938 DB1F BE D4 0B ZDB1F LDX >CURFCB0939 DB22 A7 02 STA $02,X0940 DB24 1C FE ANDCC #$FE0941 DB26 39 ZDB26 RTS09420943 DB27 C6 0B ZDB27 LDB #$0B0944 DB29 1A 01 ORCC #$010945 DB2B 39 RTS0946 *0947 ** RENAME FILE0948 *0949 DB2C 8D 35 RENAME BSR ZDB630950 DB2E BD D8 92 JSR >ZD8920951 DB31 25 2A BCS ZDB5D0952 DB33 27 24 BEQ ZDB590953 DB35 BE D4 0B LDX >CURFCB0954 DB38 C6 0B LDB #$0B0955 DB3A A6 88 24 ZDB3A LDA $24,X0956 DB3D A7 04 STA $04,X0957 DB3F 30 01 LEAX $01,X0958 DB41 5A DECB0959 DB42 26 F6 BNE ZDB3A0960 DB44 8D 4D BSR ZDB930961 DB46 25 15 BCS ZDB5D0962 DB48 BE D4 0B LDX >CURFCB0963 DB4B A6 0F LDA $0F,X0964 DB4D 85 80 BITA #$800965 DB4F 26 D6 BNE ZDB270966 DB51 85 60 BITA #$600967 DB53 26 09 BNE ZDB5E0968 DB55 8D 0C BSR ZDB630969 DB57 20 55 BRA ZDBAE09700971 DB59 C6 03 ZDB59 LDB #$030972 DB5B 1A 01 ORCC #$010973 DB5D 39 ZDB5D RTS0974 DB5E C6 0C ZDB5E LDB #$0C0975 DB60 1A 01 ORCC #$010976 DB62 39 RTS09770978 DB63 BE D4 0B ZDB63 LDX >CURFCB0979 DB66 86 0B LDA #$0B0980 DB68 B7 D4 11 STA >ZD4110981 DB6B A6 04 ZDB6B LDA $04,X0982 DB6D E6 88 35 LDB $35,X0983 DB70 A7 88 35 STA $35,X0984 DB73 E7 04 STB $04,X0985 DB75 30 01 LEAX $01,X0986 DB77 7A D4 11 DEC >ZD4110987 DB7A 26 EF BNE ZDB6B0988 DB7C BE D4 0B LDX >CURFCB0989 DB7F A6 0C LDA $0C,X0990 DB81 26 0C BNE ZDB8F0991 DB83 C6 03 LDB #$030992 DB85 A6 88 3D ZDB85 LDA $3D,X0993 DB88 A7 0C STA $0C,X0994 DB8A 30 01 LEAX $01,X0995 DB8C 5A DECB0996 DB8D 26 F6 BNE ZDB850997 DB8F BE D4 0B ZDB8F LDX >CURFCB0998 DB92 39 RTS09991000 DB93 8D CE ZDB93 BSR ZDB631001 DB95 BD D8 92 ZDB95 JSR >ZD8921002 DB98 25 07 BCS ZDBA11003 DB9A 26 06 BNE ZDBA21004 DB9C BE D4 0B LDX >CURFCB1005 DB9F 1C FE ANDCC #$FE1006 DBA1 39 ZDBA1 RTS10071008 DBA2 C6 04 ZDBA2 LDB #$041009 DBA4 1A 01 ORCC #$011010 DBA6 39 RTS10111012 DBA7 BE D4 0B ZDBA7 LDX >CURFCB1013 DBAA 86 FF LDA #$FF1014 DBAC A7 04 STA $04,X1015 DBAE BD D9 69 ZDBAE JSR >RESV11016 DBB1 BE D4 0B LDX >CURFCB1017 DBB4 86 00 LDA #$001018 DBB6 A7 02 STA $02,X1019 DBB8 39 RTS10201021 DBB9 ED 88 40 ZDBB9 STD $40,X1022 DBBC BD D6 9F JSR >WRSECT1023 DBBF 24 14 BCC ZDBD51024 DBC1 C5 40 ZDBC1 BITB #$401025 DBC3 26 08 BNE ZDBCD1026 DBC5 C5 80 BITB #$801027 DBC7 27 0A BEQ ZDBD31028 DBC9 C6 10 LDB #$101029 DBCB 20 06 BRA ZDBD31030 DBCD C6 0B ZDBCD LDB #$0B1031 DBCF 20 02 BRA ZDBD310321033 DBD1 C6 0A LDB #$0A1034 DBD3 1A 01 ZDBD3 ORCC #$011035 DBD5 39 ZDBD5 RTS1036 *1037 ** DELETE FILE1038 *1039 DBD6 BD D9 17 DELETE JSR >ZD9171040 DBD9 25 5E BCS ZDC391041 DBDB 8D B8 BSR ZDB951042 DBDD 25 5A BCS ZDC391043 DBDF BE D4 0B LDX >CURFCB1044 DBE2 A6 0F LDA $0F,X1045 DBE4 85 80 BITA #$801046 DBE6 26 52 BNE ZDC3A1047 DBE8 85 60 BITA #$601048 DBEA 26 52 BNE ZDC3E1049 DBEC BD D7 87 JSR >ZD7871050 DBEF BE D4 1B LDX >ZD41B1051 DBF2 EC 02 LDD $02,X1052 DBF4 26 0F BNE ZDC051053 DBF6 BE D4 0B LDX >CURFCB1054 DBF9 EC 88 11 LDD $11,X1055 DBFC 27 33 BEQ ZDC311056 DBFE BE D4 1B LDX >ZD41B1057 DC01 ED 84 STD ,X1058 DC03 20 14 BRA ZDC1910591060 DC05 BE D4 0B ZDC05 LDX >CURFCB1061 DC08 BD D6 20 JSR >ZD6201062 DC0B 25 2C BCS ZDC391063 DC0D BE D4 0B LDX >CURFCB1064 DC10 EC 88 11 LDD $11,X1065 DC13 27 1C BEQ ZDC311066 DC15 8D A2 BSR ZDBB91067 DC17 25 20 BCS ZDC391068 DC19 BE D4 0B ZDC19 LDX >CURFCB1069 DC1C EC 88 13 LDD $13,X1070 DC1F BE D4 1B LDX >ZD41B1071 DC22 ED 02 STD $02,X1072 DC24 BE D4 0B LDX >CURFCB1073 DC27 EC 88 15 LDD $15,X1074 DC2A BE D4 1B LDX >ZD41B1075 DC2D E3 04 ADDD $04,X1076 DC2F ED 04 STD $04,X1077 DC31 BD DB A7 ZDC31 JSR >ZDBA71078 DC34 25 03 BCS ZDC391079 DC36 BD D9 47 JSR >ZD9471080 DC39 39 ZDC39 RTS10811082 DC3A C6 0B ZDC3A LDB #$0B1083 DC3C 20 02 BRA ZDC401084 DC3E C6 0C ZDC3E LDB #$0C1085 DC40 1A 01 ZDC40 ORCC #$011086 DC42 39 RTS10871088 DC43 EC 88 1E ZDC43 LDD $1E,X1089 DC46 5C INCB1090 DC47 E1 88 3C CMPB $3C,X1091 DC4A 23 03 BLS ZDC4F1092 DC4C C6 01 LDB #$011093 DC4E 4C INCA1094 DC4F 10 A3 88 13 ZDC4F CMPD $13,X1095 DC53 26 0E BNE ZDC631096 DC55 A6 88 37 LDA $37,X1097 DC58 81 FF CMPA #$FF1098 DC5A 27 07 BEQ ZDC631099 DC5C 4C INCA1100 DC5D A7 88 37 STA $37,X1101 DC60 1C FE ANDCC #$FE1102 DC62 39 RTS11031104 DC63 8D 33 ZDC63 BSR ZDC981105 DC65 25 30 BCS ZDC971106 DC67 BE D4 0B LDX >CURFCB1107 DC6A A6 88 3A LDA $3A,X1108 DC6D 8B 03 ADDA #$031109 DC6F 26 16 BNE ZDC871110 DC71 EC 88 1E LDD $1E,X1111 DC74 10 A3 88 11 CMPD $11,X1112 DC78 27 05 BEQ ZDC7F1113 DC7A C6 17 LDB #$171114 DC7C 1A 01 ORCC #$011115 DC7E 39 RTS11161117 DC7F EC 88 40 ZDC7F LDD $40,X1118 DC82 ED 88 38 ZDC82 STD $38,X1119 DC85 86 04 LDA #$041120 DC87 A7 88 3A ZDC87 STA $3A,X1121 DC8A EC 88 13 LDD $13,X1122 DC8D ED 88 35 STD $35,X1123 DC90 86 01 LDA #$011124 DC92 A7 88 37 STA $37,X1125 DC95 1C FE ANDCC #$FE1126 DC97 39 ZDC97 RTS11271128 DC98 EC 88 38 ZDC98 LDD $38,X1129 DC9B BD D6 20 JSR >ZD6201130 DC9E 25 F7 BCS ZDC971131 DCA0 BE D4 0B LDX >CURFCB1132 DCA3 1F 12 TFR X,Y1133 DCA5 E6 88 3A LDB $3A,X1134 DCA8 3A ABX1135 DCA9 C6 03 LDB #$031136 DCAB A6 A8 35 ZDCAB LDA $35,Y1137 DCAE 31 21 LEAY $01,Y1138 DCB0 A7 88 40 STA $40,X1139 DCB3 30 01 LEAX $01,X1140 DCB5 5A DECB1141 DCB6 26 F3 BNE ZDCAB1142 DCB8 BD D6 9F JSR >WRSECT1143 DCBB 24 DA BCC ZDC971144 DCBD 7E DB C1 JMP >ZDBC111451146 DCC0 BD D8 10 ZDCC0 JSR >OPNREC1147 DCC3 BD D6 0C JSR >ZD60C1148 DCC6 25 46 BCS ZDD0E1149 DCC8 BE D4 0B LDX >CURFCB1150 DCCB 4F CLRA1151 DCCC 5F CLRB1152 DCCD ED 88 20 STD $20,X1153 DCD0 A6 88 67 LDA $67,X1154 DCD3 A7 88 3C STA $3C,X1155 DCD6 5F CLRB1156 DCD7 6F 88 40 ZDCD7 CLR $40,X1157 DCDA 30 01 LEAX $01,X1158 DCDC 5A DECB1159 DCDD 26 F8 BNE ZDCD71160 DCDF BE D4 0B LDX >CURFCB1161 DCE2 1C FE ANDCC #$FE1162 DCE4 39 RTS1163 *1164 ** BACKUP ONE RECORD1165 *1166 DCE5 BE D4 0B BAKREC LDX >CURFCB1167 DCE8 A6 88 17 LDA $17,X1168 DCEB 27 1D BEQ ZDD0A1169 DCED EC 88 20 LDD $20,X1170 DCF0 83 00 01 SUBD #$00011171 DCF3 2A 03 BPL ZDCF81172 DCF5 7E DD 9A JMP >ZDD9A1173 *1174 ** POSITION TO RECORD N1175 *1176 DCF8 ED 88 20 ZDCF8 STD $20,X1177 DCFB BD DA B1 POSREC JSR >ZDAB11178 DCFE 25 0E BCS ZDD0E1179 DD00 46 RORA1180 DD01 24 07 BCC ZDD0A1181 DD03 6F 84 CLR ,X1182 DD05 A6 88 17 LDA $17,X1183 DD08 26 05 BNE ZDD0F1184 DD0A C6 12 ZDD0A LDB #$121185 DD0C 1A 01 ORCC #$011186 DD0E 39 ZDD0E RTS11871188 DD0F 7F D4 11 ZDD0F CLR >ZD4111189 DD12 EC 88 11 LDD $11,X1190 DD15 10 AE 88 20 LDY $20,X1191 DD19 27 6A BEQ ZDD851192 DD1B BD DD 9F JSR >ZDD9F1193 DD1E 25 EE BCS ZDD0E1194 DD20 4F CLRA1195 DD21 5F CLRB1196 DD22 6D 02 ZDD22 TST $02,X1197 DD24 27 74 BEQ ZDD9A1198 DD26 EB 02 ADDB $02,X1199 DD28 89 00 ADCA #$001200 DD2A BF D4 0F STX >ZD40F1201 DD2D BE D4 0B LDX >CURFCB1202 DD30 10 A3 88 20 CMPD $20,X1203 DD34 24 2C BCC ZDD621204 DD36 BE D4 0F LDX >ZD40F1205 DD39 30 03 LEAX $03,X1206 DD3B 34 02 PSHS A1207 DD3D B6 D4 11 LDA >ZD4111208 DD40 4C INCA1209 DD41 B7 D4 11 STA >ZD4111210 DD44 81 54 CMPA #$541211 DD46 27 08 BEQ ZDD501212 DD48 81 A8 CMPA #$A81213 DD4A 35 02 PULS A1214 DD4C 27 4C BEQ ZDD9A1215 DD4E 20 D2 BRA ZDD2212161217 DD50 34 04 ZDD50 PSHS B1218 DD52 BE D4 0B LDX >CURFCB1219 DD55 EC 88 40 LDD $40,X1220 DD58 8D 45 BSR ZDD9F1221 DD5A 25 3E BCS ZDD9A1222 DD5C 35 04 PULS B1223 DD5E 35 02 PULS A1224 DD60 20 C0 BRA ZDD2212251226 DD62 A3 88 20 ZDD62 SUBD $20,X1227 DD65 BE D4 0F LDX >ZD40F1228 DD68 A6 02 LDA $02,X1229 DD6A 34 04 PSHS B1230 DD6C A0 E0 SUBA ,S+1231 DD6E 4A DECA1232 DD6F 1F 89 TFR A,B1233 DD71 A6 84 LDA ,X1234 DD73 EB 01 ADDB $01,X1235 DD75 BE D4 0B LDX >CURFCB1236 DD78 25 05 BCS ZDD7F1237 DD7A E1 88 3C ZDD7A CMPB $3C,X1238 DD7D 23 06 BLS ZDD851239 DD7F E0 88 3C ZDD7F SUBB $3C,X1240 DD82 4C INCA1241 DD83 20 F5 BRA ZDD7A12421243 DD85 BD D6 20 ZDD85 JSR >ZD6201244 DD88 25 14 BCS ZDD9E1245 DD8A BE D4 0B LDX >CURFCB1246 DD8D EC 88 42 LDD $42,X1247 DD90 10 A3 88 20 CMPD $20,X1248 DD94 27 14 BEQ ZDDAA1249 DD96 C6 19 LDB #$191250 DD98 20 02 BRA ZDD9C12511252 DD9A C6 18 ZDD9A LDB #$181253 DD9C 1A 01 ZDD9C ORCC #$011254 DD9E 39 ZDD9E RTS12551256 DD9F BD D6 20 ZDD9F JSR >ZD6201257 DDA2 25 08 BCS ZDDAC1258 DDA4 BE D4 0B LDX >CURFCB1259 DDA7 C6 44 LDB #$441260 DDA9 3A ABX1261 DDAA 1C FE ZDDAA ANDCC #$FE1262 DDAC 39 ZDDAC RTS12631264 DDAD BE D4 0B ZDDAD LDX >CURFCB1265 DDB0 C6 0B LDB #$0B1266 DDB2 A6 88 24 ZDDB2 LDA $24,X1267 DDB5 A7 04 STA $04,X1268 DDB7 30 01 LEAX $01,X1269 DDB9 5A DECB1270 DDBA 26 F6 BNE ZDDB21271 DDBC 39 RTS1272 *1273 ** FIND NEXT DRIVE1274 *1275 DDBD BE D4 0B NXTDRV LDX >CURFCB1276 DDC0 A6 03 LDA $03,X1277 DDC2 4C INCA1278 DDC3 81 04 CMPA #$041279 DDC5 24 0F BCC ZDDD61280 DDC7 A7 03 STA $03,X1281 DDC9 26 05 BNE ZDDD01282 DDCB BD DE 0F JSR >DRVRDY1283 DDCE 20 03 BRA ZDDD312841285 DDD0 BD DE 12 ZDDD0 JSR >QUICK1286 DDD3 25 E8 ZDDD3 BCS NXTDRV1287 DDD5 39 RTS12881289 DDD6 C6 10 ZDDD6 LDB #$101290 DDD8 1A 01 ORCC #$011291 DDDA 39 RTS0011 END0000 INCLUDE "f9-monex.txt"0001 *0002 ** FLEX 9 DISK DRIVERS0003 *0004 * FOR SYS09BUG ON THE0005 * DIGILENT SPARTAN 3 STARTER BOARD AND0006 * TERASIC CYCLONE 2 DE1 BOARD0007 * WITH I/O MAPPED AT $XE0000008 * AND ROM MAPPED AT $XF0000009 * THE DIGILENT SPARTAN 3 STARTER BOARD HAS 1MBYTE OF SRAM0010 * THE TERASIC CYCLONE 2 DE1 BOARD HAS 512KBYTE OF SRAM0011 * THE FIRST 64K IS USED BY FLEX,0012 * THE SECOND 128K IS USED AS A ROM DISK0013 * THE REMAINING RAM IS USED FOR A RAM DISK0014 *0015 *0016 0001 CFLAG EQU $01 CARRY FLAG0017 0002 VFLAG EQU $02 OVERFLOW FLAG0018 0004 ZFLAG EQU $04 ZERO FLAG0019 0008 NFLAG EQU $08 NEGATIVE FLAG0020 0010 IFLAG EQU $10 IRQ MASK CC0021 0020 HFLAG EQU $20 HALF CARRY0022 0040 FFLAG EQU $40 FIRQ MASK CC0023 0080 EFLAG EQU $80 ENTIRE FLAG0024 *0025 0000 MAPPAG EQU $00 PAGE $0000 DAT ADDRESS0026 FFF0 DATREG EQU IC11 DAT REGISTERS0027 *0028 * Serial Port0029 *0030 E000 ACIAC1 EQU ACIAS0031 E001 ACIAD1 EQU ACIAS+10032 04E2 DELCON EQU 1250 Delay (Processor clock in MHz * 50)0033 *0034 * XMODEM Control characters0035 *0036 0001 SOH EQU $010037 0004 EOT EQU $040038 0006 ACK EQU $060039 0015 NAK EQU $150040 0018 CAN EQU $180041 *0042 * DRIVE GEOMETRY0043 *0044 000E EMAXSEC EQU 14 ROM DISK0045 0030 EMAXTRK EQU 48 3 * 16 * 14 * 256 = 172,032 Bytes0046 0292 ETOTSEC EQU EMAXTRK*EMAXSEC-EMAXSEC0047 *0048 000E RMAXSEC EQU 14 RAM DISK0049 *RMAXTRK EQU 192 12 * 16 * 14 * 256 = 688,128 Bytes Digilent Spartan 30050 0040 RMAXTRK EQU 64 4 * 16 * 14 * 256 = 229,376 Bytes Terasic Cyclone 20051 0372 RTOTSEC EQU RMAXTRK*RMAXSEC-RMAXSEC0052 *0053 * DRIVE TYPES0054 *0055 0000 DTYPROM EQU 0 ROM DISK0056 0001 DTYPRAM EQU 1 RAM DISK0057 0002 DTYPFLS EQU 2 FLASH DISK0058 0003 DTYPNET EQU 3 FLEXNET DISK0059 *0060 DE00 ORG $DE000061 *0062 * DISK DRIVER JUMP TABLE LAST UPDATE: 22/12/20060063 * Disk driver for RAM Disk.0064 *0065 * 14 SECTORS PER TRACK0066 * 16 * N TRACKS PER DISK0067 *0068 * ROM DISK OCCUPIES $10000 - $1E000 ... $30000 - $3E0000069 * RAM DISK OCCUPIES $40000 - $4E000 ... $F0000 - $FE0000070 * Track Buffer page mapped at $E000 - $EFFF0071 * MAPPAG = $00 = 0 x $1000 (4 K pages)00720073 * ON SWTPC ROM AT $XF000 AND IO AT $XE0000074 * APPEARS THROUGHOUT THE MEMORY SO MUST BE SKIPPED OVER0075 * WHEN USING RAM AS A RAMDISK.0076 * THE MSN OF THE TRACK MAPS INTO THE MSN OF THE DAT0077 * THE LSN OF THE TRACK NUMBER INDEXES INTO THE 4K RAM PAGE0078 * THE SECTOR MAPS INTO THE LSN OF THE DAT WHICH IS INVERTED0079 *0080 *0081 *0082 * FLEX disk jump table.0083 *0084 DE00 7E F0 57 READ JMP READSC0085 DE03 7E F0 5B WRITE JMP WRITSC0086 DE06 7E F0 5F VERIFY JMP BUSY0087 DE09 7E F0 63 RESTOR JMP RESTR10088 DE0C 7E F0 6C DRIVE JMP DRVSEL0089 DE0F 7E F0 9F DRVRDY JMP CHKRDY0090 DE12 7E F0 A3 QUICK JMP CHKQIK0091 DE15 7E F0 A7 COLDDR JMP DINIT0092 DE18 7E F0 BF WARMDR JMP DWARM0093 DE1B 7E F0 C3 SEEK JMP SEEKTS0094 *0095 * RAM SPACE0096 *0097 DE1E 00 DRVNUM FCB 00098 DE1F 00 TRACK FCB 00099 DE20 00 SECTOR FCB 00100 DE21 00 CHKSUM FCB 00101 DE22 00 CCSAVE FCB 00102 DE23 00 BLKNUM FCB 0 Xmodem block number0103 DE24 00 BYTCNT FCB 0 Xmodem byte count0104 DE25 00 00 XSTATE FDB 0 Xmodem State Vector0105 DE27 00 00 00 DELCNT FCB $00,$00,$00 Xmodem Poll timer0106 *0107 * Disc driver type table.0108 * Indexed by drive number0109 *0110 DE2A 00 DTYPTAB FCB DTYPROM Drive 0 (ROM Disk)0111 DE2B 01 FCB DTYPRAM Drive 1 (RAM Disk)0112 DE2C 02 FCB DTYPFLS Drive 2 (FLASH Disk)0113 DE2D 03 FCB DTYPNET Drive 3 (NETPC Disk)0114 *0115 * RAM Disk offset0116 * Indexed by drive type0117 *0118 DE2E 10 DOFFTAB FCB $10 ROM Disk $100000119 DE2F 40 FCB $40 RAM DISK $400000120 DE30 FF FCB $FF Flash Disk0121 DE31 FF FCB $FF NETPC Disk0122 *0123 DE32 REAVEC RMB 2 Disc driver jump table.0124 DE34 WRIVEC RMB 20125 DE36 VERVEC RMB 20126 DE38 RSTVEC RMB 20127 DE3A DRVVEC RMB 20128 DE3C CHKVEC RMB 20129 DE3E QUIVEC RMB 20130 DE40 INIVEC RMB 20131 DE42 WARVEC RMB 20132 DE44 SEEVEC RMB 20133 *0134 * SECTOR BUFFER0135 *0136 DE46 BUFFER RMB 2560137 DF46 SYNCREG RMB 4 Prom input register0138 *0139 ****************************************0140 *0141 * START OF EXTENSION COMMANDS0142 *0143 ****************************************0144 *0145 F000 ORG MONEXT0146 F000 F7 BD FDB NEXTEXT Jump to next extended command0147 *0148 *0149 *****************************************0150 * Disk drivers *0151 * ------------ *0152 * The system dependant code for the *0153 * disc drivers fits here. Two tables *0154 * must be included. These are DTYPTAB a *0155 * four byte table that defines which of *0156 * the (up to four) following sets of *0157 * jump tables to use, and TABSRT the *0158 * jump tables themselves. For a full *0159 * description of the floppy drivers see *0160 * section 4 (pp9-14) of the general *0161 * Flex adaptation guide. *0162 *****************************************0163 *0164 * Mass storage drivers for embedded applications.0165 *0166 * Jump tables.0167 F002 F1 19 TABSRT FDB EREAD Drive type 0 (ROM disk).0168 F004 F1 41 FDB EWRITE0169 F006 F1 3F FDB ECHECK0170 F008 F1 3F FDB ECHECK0171 F00A F1 3F FDB ECHECK0172 F00C F1 3F FDB ECHECK0173 F00E F1 3F FDB ECHECK0174 F010 F0 52 FDB DDUMMY0175 F012 F0 52 FDB DDUMMY0176 F014 F0 52 FDB DDUMMY0177 *0178 F016 F1 19 FDB EREAD Drive type 1 (RAM disk).0179 F018 F1 41 FDB EWRITE0180 F01A F1 3F FDB ECHECK0181 F01C F1 3F FDB ECHECK0182 F01E F1 3F FDB ECHECK0183 F020 F1 3F FDB ECHECK0184 F022 F1 3F FDB ECHECK0185 F024 F0 52 FDB DDUMMY0186 F026 F0 52 FDB DDUMMY0187 F028 F0 52 FDB DDUMMY0188 *0189 F02A F0 52 FDB DDUMMY Drive type 2 (External Flash disk).0190 F02C F0 52 FDB DDUMMY0191 F02E F0 52 FDB DDUMMY0192 F030 F0 52 FDB DDUMMY0193 F032 F0 52 FDB DDUMMY0194 F034 F0 52 FDB DDUMMY0195 F036 F0 52 FDB DDUMMY0196 F038 F0 52 FDB DDUMMY0197 F03A F0 52 FDB DDUMMY0198 F03C F0 52 FDB DDUMMY0199 *0200 F03E F1 7A FDB NREAD Drive type 3 (NetPC drive via serial port).0201 F040 F1 E9 FDB NWRITE0202 F042 F2 49 FDB NVERIFY0203 F044 F2 4E FDB NCHECK0204 F046 F2 4E FDB NCHECK0205 F048 F2 4E FDB NCHECK0206 F04A F2 4E FDB NCHECK0207 F04C F0 52 FDB DDUMMY0208 F04E F0 52 FDB DDUMMY0209 F050 F0 52 FDB DDUMMY0210 *0211 *0212 * Dummy routine (no errors).0213 F052 5F DDUMMY CLRB0214 F053 5D TSTB Set (z)=10215 F054 1C FE ANDCC #$FF-CFLAG Set (c)=00216 F056 39 RTS0217 * *0218 **************************0219 * Main Flex entry points *0220 *************************0221 *0222 * Read sector routine.0223 * Entry: (X) = address where sector is to be placed.0224 * (A) = Track number.0225 * (B) = Sector number.0226 * Exit: (B) = Error code (z)=1 if no error.0227 F057 6E 9F DE 32 READSC JMP [REAVEC]0228 *0229 * Write track routine.0230 * Entry: (X) = Address of area of memory from which the data will be taken.0231 * (A) = Track number.0232 * (B) = Sector number.0233 * Exit: (B) = Error condition, (Z)=1 no an error.0234 F05B 6E 9F DE 34 WRITSC JMP [WRIVEC]0235 *0236 * Verify sector routine.0237 * Entry: no parameters.0238 * Exit: (B) = Error condition (Z)=1 if no error.0239 F05F 6E 9F DE 36 BUSY JMP [VERVEC]0240 *0241 * Restore drive to track 00.0242 * Entry: (X) = FCB address (3,X contains drive number).0243 * Exit: (B) = Error condition, (Z)=1 if no error.0244 F063 8D 07 RESTR1 BSR DRVSEL Select drive first.0245 F065 27 01 BEQ RST10246 F067 39 RTS0247 F068 6E 9F DE 38 RST1 JMP [RSTVEC]0248 *0249 * Select current drive.0250 * Entry: (X) = FCB address (3,X contains drive number).0251 * Exit: (B) = Error condition, (Z)=0 and (c)=1 if error.0252 * (B) = $0F if non existant drive.0253 F06C 34 30 DRVSEL PSHS X,Y0254 F06E E6 03 LDB 3,X Get driver type.0255 F070 F7 DE 1E STB DRVNUM0256 F073 8E DE 2A LDX #DTYPTAB0257 F076 A6 85 LDA B,X0258 F078 81 FF CMPA #$FF Is the drive nonexistant?0259 F07A 26 08 BNE DRIVE10260 F07C 35 30 PULS X,Y0261 F07E C6 0F LDB #$0F0262 F080 5D TSTB0263 F081 1A 01 ORCC #$010264 F083 39 RTS0265 *0266 F084 C6 14 DRIVE1 LDB #20 Get correct table start address.0267 F086 3D MUL0268 F087 8E F0 02 LDX #TABSRT0269 F08A 30 8B LEAX D,X0270 F08C 10 8E DE 32 LDY #REAVEC Copy table into ram.0271 F090 C6 14 LDB #200272 F092 A6 80 DRIVE2 LDA 0,X+0273 F094 A7 A0 STA 0,Y+0274 F096 5A DECB0275 F097 26 F9 BNE DRIVE20276 F099 35 30 PULS X,Y0277 F09B 6E 9F DE 3A JMP [DRVVEC]0278 *0279 * Check for drive ready.0280 * Entry: (X) = FCB address (3,X contains drive number)>0281 * Exit: (B) = Error condition, (Z)=0 AND (C)=1 if drive is not ready.0282 F09F 6E 9F DE 3C CHKRDY JMP [CHKVEC]0283 *0284 * Quick drive ready check.0285 * Entry: (X) = FCB address (3,X contains drive number).0286 * Exit: (B) = Error condition, (Z)=0 AND (c)=1 if drive not ready.0287 F0A3 6E 9F DE 3E CHKQIK JMP [QUIVEC]0288 *0289 * Init (cold start).0290 * Entry: no parameters.0291 * Exit: no change.0292 F0A7 4F DINIT CLRA0293 F0A8 B7 DE 1E DINIT1 STA DRVNUM Init each valid drive in turn.0294 F0AB 8E DE 1B LDX #DRVNUM-30295 F0AE 8D BC BSR DRVSEL0296 F0B0 25 04 BCS DINIT20297 F0B2 AD 9F DE 40 JSR [INIVEC]0298 F0B6 B6 DE 1E DINIT2 LDA DRVNUM0299 F0B9 4C INCA0300 F0BA 81 04 CMPA #40301 F0BC 26 EA BNE DINIT10302 F0BE 39 RTS0303 *0304 * Warm start.0305 * Entry: no parameters.0306 * Exit: no change.0307 F0BF 6E 9F DE 42 DWARM JMP [WARVEC]0308 *0309 * Seek track.0310 * Entry: (A) = Track number.0311 * (B) = Sector number.0312 * Exit: (B) = Error condition, (Z)=1 if no error.0313 F0C3 6E 9F DE 44 SEEKTS JMP [SEEVEC]0314 *0315 *0316 *****************************************************0317 * ROMdisk drivers *0318 * --------------- *0319 * Drivers to support a ROMdisk in the external RAM *0320 * of the SYS09. The ROMdisk base address is $10000 *0321 *****************************************************0322 * Dummy return for ROM disk (write protected!)0323 *0324 * MAP RAM DISK INTO MEMORY SPACE0325 *0326 F0C7 1F A8 MAPIN TFR CC,A ; Save state of interrupt masks0327 F0C9 B7 DE 22 STA CCSAVE0328 F0CC 1A 50 ORCC #FFLAG+IFLAG ; Mask interrupts while IO mapped out0329 F0CE CE DE 2A LDU #DTYPTAB ; Point to Drive Type table0330 F0D1 F6 DE 1E LDB DRVNUM ; Get working drive number0331 F0D4 E6 C5 LDB B,U0332 F0D6 CE DE 2E LDU #DOFFTAB0333 F0D9 B6 DE 1F LDA TRACK0334 F0DC AB C5 ADDA B,U ; Add Base offset into RAM0335 F0DE 84 F0 ANDA #$F0 ; Mask MSN0336 F0E0 A7 E2 STA ,-S ; Save A on stack0337 *0338 F0E2 B6 DE 20 LDA SECTOR0339 F0E5 80 01 SUBA #1 ; Sectors 1 to 14 => 0 to 130340 F0E7 88 0F EORA #$0F ; Complement LSNybble0341 F0E9 84 0F ANDA #$0F0342 *0343 F0EB AB E0 ADDA ,S+ ; Add sector to LSN of Track and pop0344 F0ED B7 FF F0 STA DATREG+MAPPAG0345 *0346 F0F0 B6 DE 1F LDA TRACK ; LSN of Track indexes into 4K page0347 F0F3 84 0F ANDA #$0F0348 F0F5 8B 00 ADDA #MAPPAG*160349 F0F7 5F CLRB0350 F0F8 1F 03 TFR D,U0351 F0FA 39 RTS0352 *0353 * MAP RAM DISK OUT OF MEMORY0354 *0355 F0FB 86 00 MAPOUT LDA #MAPPAG ; Point to the Flex page0356 F0FD 88 0F EORA #$0F ; Complement LSNybble0357 F0FF B7 FF F0 STA DATREG+MAPPAG ; map in Flex page0358 F102 B6 DE 22 LDA CCSAVE ; restore interrupt masks0359 F105 1F 8A TFR A,CC0360 F107 39 RTS0361 *0362 * Seek track and sector0363 * A holds track number (0-32)0364 * B holds sector number (1-14)0365 *0366 F108 B7 DE 1F ESEEK STA TRACK0367 F10B F7 DE 20 STB SECTOR0368 F10E 1C FE ANDCC #$FE ; CLEAR CARRY0369 F110 1A 04 ORCC #$04 ; SET Z0370 F112 39 RTS0371 *0372 * MARK DISK READ ONLY0373 *0374 F113 C6 40 EDUMMY LDB #$400375 F115 5D TSTB0376 F116 1A 01 ORCC #$010377 F118 39 RTS0378 *0379 F119 34 70 EREAD PSHS X,Y,U push sequentialy to preserve order on stack0380 F11B 17 FF EA LBSR ESEEK0381 F11E 17 FF A6 LBSR MAPIN build external ram address0382 *0383 F121 10 8E DE 46 LDY #BUFFER0384 F125 5F CLRB0385 F126 A6 C0 ERLOOP1 LDA 0,U+ move 256 bytes to buffer from external RAM0386 F128 A7 A0 STA 0,Y+0387 F12A 5A DECB0388 F12B 26 F9 BNE ERLOOP10389 *0390 F12D 17 FF CB LBSR MAPOUT0391 *0392 F130 10 8E DE 46 LDY #BUFFER0393 F134 5F CLRB0394 F135 A6 A0 ERLOOP2 LDA 0,Y+ move 256 bytes from buffer to Flex RAM0395 F137 A7 80 STA 0,X+0396 F139 5A DECB0397 F13A 26 F9 BNE ERLOOP20398 *0399 F13C 5F CLRB0400 F13D 35 F0 PULS X,Y,U,PC restore all registers0401 *0402 * check for marker bytes $AA55 in first bytes of first track/sector0403 *0404 *ECHECK CLRA0405 * LDB #10406 * LDX #BUFFER0407 * BSR EREAD0408 * LDD BUFFER0409 * CMPD #$AA550410 * BNE EERR0411 * LBRA DDUMMY0412 *EERR LDB #$80 not ready bit set0413 * TSTB0414 * ORCC #$010415 * RTS0416 F13F 5F ECHECK CLRB0417 F140 39 RTS0418 *0419 * Write Sector0420 *0421 F141 34 70 EWRITE PSHS X,Y,U0422 F143 17 FF C2 LBSR ESEEK0423 F146 CE DE 2A LDU #DTYPTAB ; Point to Drive Type table0424 F149 F6 DE 1E LDB DRVNUM ; Get working drive number0425 F14C E6 C5 LDB B,U ; Fetch Drive type0426 F14E C1 01 CMPB #DTYPRAM ; Is it a RAM Disk ?0427 F150 27 07 BEQ EWOK ; Yep, can write to it0428 F152 C1 00 CMPB #DTYPROM ; Allow writes to ROM Disk too0429 F154 27 03 BEQ EWOK0430 F156 16 FF BA LBRA EDUMMY ; Nope report read only0431 *0432 F159 10 8E DE 46 EWOK LDY #BUFFER0433 F15D 5F CLRB0434 F15E A6 80 EWLOOP1 LDA 0,X+ move 256 bytes to buffer from Flex RAM0435 F160 A7 A0 STA 0,Y+0436 F162 5A DECB0437 F163 26 F9 BNE EWLOOP10438 *0439 F165 17 FF 5F LBSR MAPIN0440 *0441 F168 10 8E DE 46 LDY #BUFFER0442 F16C 5F CLRB0443 F16D A6 A0 EWLOOP2 LDA 0,Y+ move 256 bytes from buffer to external RAM0444 F16F A7 C0 STA 0,U+0445 F171 5A DECB0446 F172 26 F9 BNE EWLOOP20447 *0448 F174 17 FF 84 LBSR MAPOUT0449 *0450 F177 5F CLRB0451 F178 35 F0 PULS X,Y,U,PC0452 *0453 *0454 *****************************************************0455 * FlexNet drivers *0456 * --------------- *0457 * Drivers to support a remote connection via the *0458 * serial port using the FlexNet protocol as defined *0459 * in FLEXNet_421B *0460 *****************************************************0461 *0462 *0463 * read sector from remote drive0464 *0465 F17A 34 04 NREAD PSHS B0466 F17C 34 02 PSHS A0467 F17E 7F DE 21 CLR CHKSUM clear checksum0468 F181 7F DE 22 CLR CHKSUM+10469 *0470 F184 86 73 LDA #'s Send read sector command0471 F186 BD F2 85 JSR SCHAR0472 F189 24 4C BCC NRD_DNR if timeout, then flag drive not ready0473 *0474 F18B B6 DE 1E LDA DRVNUM send drive0475 F18E BD F2 85 JSR SCHAR0476 F191 24 44 BCC NRD_DNR0477 *0478 F193 35 02 PULS A send track0479 F195 BD F2 85 JSR SCHAR0480 F198 24 3D BCC NRD_DNR0481 *0482 F19A 35 02 PULS A send sector0483 F19C BD F2 85 JSR SCHAR0484 F19F 24 36 BCC NRD_DNR0485 *0486 * transfer 256 bytes0487 F1A1 5F CLRB0488 F1A2 BD F2 67 NREAD1 JSR RCHAR read byte0489 F1A5 24 30 BCC NRD_DNR if timeout, then flag drive not ready0490 F1A7 A7 80 STA 0,X+0491 F1A9 BB DE 22 ADDA CHKSUM+1 update checksum0492 F1AC B7 DE 22 STA CHKSUM+10493 F1AF 24 03 BCC NREAD20494 F1B1 7C DE 21 INC CHKSUM0495 F1B4 5A NREAD2 DECB0496 F1B5 26 EB BNE NREAD10497 *0498 * compare checksums0499 F1B7 BD F2 67 JSR RCHAR get checksum msb0500 F1BA 24 1B BCC NRD_DNR0501 F1BC 34 02 PSHS A0502 F1BE BD F2 67 JSR RCHAR get checksum lsb0503 F1C1 24 14 BCC NRD_DNR0504 F1C3 1F 89 TFR A,B0505 F1C5 35 02 PULS A0506 F1C7 10 B3 DE 21 CMPD CHKSUM compare checksums0507 F1CB 26 0E BNE NRD_ERR if checksum error, then flag crc read error0508 *0509 F1CD 86 06 LDA #ACK no checksum error, send ACK char0510 F1CF BD F2 85 JSR SCHAR0511 F1D2 24 03 BCC NRD_DNR0512 F1D4 5F CLRB all OK, flag no error0513 F1D5 20 0D BRA NRD_END0514 *0515 F1D7 C6 10 NRD_DNR LDB #16 flag drive not ready0516 F1D9 20 09 BRA NRD_END0517 *0518 F1DB 86 15 NRD_ERR LDA #NAK send NAK0519 F1DD BD F2 85 JSR SCHAR0520 F1E0 24 F5 BCC NRD_DNR0521 F1E2 C6 09 LDB #09 flag crc read error0522 *0523 F1E4 F7 DE 21 NRD_END STB CHKSUM used by VERIFY0524 F1E7 5D TSTB0525 F1E8 39 RTS0526 *0527 *0528 * write sector to remote drive0529 *0530 F1E9 34 04 NWRITE PSHS B0531 F1EB 34 02 PSHS A0532 F1ED 7F DE 21 CLR CHKSUM clear checksum0533 F1F0 7F DE 22 CLR CHKSUM+10534 *0535 F1F3 86 72 LDA #'r Send write sector command0536 F1F5 BD F2 85 JSR SCHAR0537 F1F8 24 DD BCC NRD_DNR if timeout, then flag drive not ready0538 *0539 F1FA B6 DE 1E LDA DRVNUM send drive0540 F1FD BD F2 85 JSR SCHAR0541 F200 24 D5 BCC NRD_DNR0542 *0543 F202 35 02 PULS A send track0544 F204 BD F2 85 JSR SCHAR0545 F207 24 CE BCC NRD_DNR0546 *0547 F209 35 02 PULS A send sector0548 F20B BD F2 85 JSR SCHAR0549 F20E 24 C7 BCC NRD_DNR0550 *0551 * transfer 256 bytes0552 F210 5F CLRB0553 F211 A6 80 NWRITE1 LDA 0,X+0554 F213 BD F2 85 JSR SCHAR write byte0555 F216 24 BF BCC NRD_DNR if timeout, then flag drive not ready0556 F218 BB DE 22 ADDA CHKSUM+1 update checksum0557 F21B B7 DE 22 STA CHKSUM+10558 F21E 24 03 BCC NWRITE20559 F220 7C DE 21 INC CHKSUM0560 F223 5A NWRITE2 DECB0561 F224 26 EB BNE NWRITE10562 *0563 * compare checksums0564 F226 B6 DE 21 LDA CHKSUM0565 F229 BD F2 85 JSR SCHAR send checksum msb0566 F22C 24 A9 BCC NRD_DNR0567 F22E B6 DE 22 LDA CHKSUM+10568 F231 BD F2 85 JSR SCHAR send checksum lsb0569 F234 24 A1 BCC NRD_DNR0570 *0571 F236 BD F2 67 JSR RCHAR get checksum response0572 F239 24 9C BCC NRD_DNR0573 F23B 81 06 CMPA #ACK0574 F23D 26 03 BNE NWR_ERR if checksum error, then flag write error0575 *0576 F23F 5F CLRB all OK, flag no error0577 F240 20 02 BRA NWR_END0578 *0579 F242 C6 0A NWR_ERR LDB #10 flag write error0580 *0581 F244 F7 DE 21 NWR_END STB CHKSUM used by VERIFY0582 F247 5D TSTB0583 F248 39 RTS0584 *0585 *0586 * verify last sector written to remote drive0587 *0588 F249 F6 DE 21 NVERIFY LDB CHKSUM test last checksum0589 F24C 5D TSTB0590 F24D 39 RTS0591 *0592 *0593 * quck check and check drive ready0594 *0595 F24E 86 51 NCHECK LDA #'Q quick check command0596 F250 BD F2 85 JSR SCHAR0597 F253 24 0C BCC NCK_ERR if timeout, then flag drive not ready05980599 F255 BD F2 67 JSR RCHAR get response from host0600 F258 24 07 BCC NCK_ERR0601 F25A 81 06 CMPA #ACK0602 F25C 26 03 BNE NCK_ERR if NAK, then flag drive not ready06030604 F25E 5F CLRB all OK, flag drive ready0605 F25F 20 04 BRA NCK_END0606 *0607 F261 C6 10 NCK_ERR LDB #16 report drive not ready0608 F263 1A 01 ORCC #$01 check needs carry set as well0609 *0610 F265 5D NCK_END TSTB0611 F266 39 RTS0612 *0613 *0614 * recieve char from remote drive.0615 * timeout if no response for approx 1s.0616 * Entry: no parameters0617 * Exit: (A) = recieved char, (C)=1 if valid char, (C)=0 if timeout.0618 *0619 F267 34 30 RCHAR PSHS X,Y0620 *0621 F269 8E 03 E8 LDX #1000 1000x inner loop0622 F26C 10 8E 04 E2 RCHAR1 LDY #DELCON delay constant for inner loop (approx 1ms).0623 F270 B6 E0 00 RCHAR2 LDA ACIAC1 test for recieved char0624 F273 47 ASRA0625 F274 25 0A BCS RCHAR3 get character0626 F276 31 3F LEAY -1,Y else, continue to count delay0627 F278 26 F6 BNE RCHAR20628 F27A 30 1F LEAX -1,X0629 F27C 26 EE BNE RCHAR10630 F27E 35 B0 PULS X,Y,PC return with error if timed out0631 *0632 F280 B6 E0 01 RCHAR3 LDA ACIAD1 return data (carry bit still set)0633 F283 35 B0 PULS X,Y,PC0634 *0635 *0636 * transmit char to remote drive.0637 * timeout if no response for approx 1s. (allows for use of hardware flow control)0638 * Entry: (A) = char to transmit0639 * Exit: (A) = recieved char, (C)=1 if valid char, (C)=0 if timeout.0640 *0641 F285 34 30 SCHAR PSHS X,Y0642 F287 34 02 PSHS A0643 *0644 F289 8E 03 E8 LDX #1000 1000x inner loop0645 F28C 10 8E 04 E2 SCHAR1 LDY #DELCON delay constant for inner loop (approx 1ms).0646 F290 B6 E0 00 SCHAR2 LDA ACIAC1 test for space in transmit FIFO0647 F293 47 ASRA0648 F294 47 ASRA0649 F295 25 0C BCS SCHAR3 send character0650 F297 31 3F LEAY -1,Y else, continue to count delay0651 F299 26 F5 BNE SCHAR20652 F29B 30 1F LEAX -1,X0653 F29D 26 ED BNE SCHAR10654 F29F 35 02 PULS A0655 F2A1 35 B0 PULS X,Y,PC return with error if timed out0656 *0657 F2A3 35 02 SCHAR3 PULS A0658 F2A5 B7 E0 01 STA ACIAD1 send data (carry bit still set)0659 F2A8 35 B0 PULS X,Y,PC0660 *0661 ** 'UF' Format RAMdisc to FLEX standard.0662 *0663 F2AA 0A 0D DISFOS FCB $0A,$0D0664 F2AC 46 6F 72 6D 61 74 FCC 'Formating RAMdisk... '69 6E 67 20 52 414D 64 69 73 6B 2E2E 2E 200665 F2C1 04 FCB 40666 F2C2 0A 0D 04 MESS6 FCB $0A,$0D,40667 F2C5 52 61 6D 64 69 73 FCC 'Ramdisk not allocated! '6B 20 6E 6F 74 2061 6C 6C 6F 63 6174 65 64 21 200668 F2DC 04 FCB 40669 *0670 F2DD 8E F2 AA UFSUB LDX #DISFOS0671 F2E0 BD F4 6A JSR PDATA10672 F2E3 8E DE 2A LDX #DTYPTAB search for allocated ramdisk0673 F2E6 5F CLRB0674 F2E7 A6 85 FMT9 LDA B,X0675 F2E9 81 01 CMPA #DTYPRAM driver type 1 is ramdisk0676 F2EB 27 0C BEQ FFOUND0677 F2ED 5C INCB0678 F2EE C1 04 CMPB #4 end of table? then not allocated.0679 F2F0 26 F5 BNE FMT90680 F2F2 8E F2 C2 LDX #MESS60681 F2F5 BD F4 6A JSR PDATA10682 F2F8 39 RTS0683 *0684 F2F9 F7 DE 1E FFOUND STB DRVNUM0685 F2FC 8E DE 1B LDX #DRVNUM-30686 F2FF BD F0 6C JSR DRVSEL0687 *0688 * set up free chain0689 *0690 F302 8E DE 46 LDX #BUFFER clear out buffer0691 F305 4F CLRA0692 F306 5F CLRB0693 F307 A7 80 DFL1 STA 0,X+0694 F309 5A DECB0695 F30A 26 FB BNE DFL10696 *0697 F30C 7F DE 1F CLR TRACK0698 F30F 86 01 LDA #10699 F311 B7 DE 20 STA SECTOR0700 F314 8E DE 46 DFL2 LDX #BUFFER0701 F317 B6 DE 1F LDA TRACK0702 F31A A7 84 STA 0,X0703 F31C B6 DE 20 LDA SECTOR0704 F31F 4C INCA0705 F320 81 0F CMPA #RMAXSEC+1 last sector on track?0706 F322 26 04 BNE DFL30707 F324 6C 84 INC 0,X0708 F326 86 01 LDA #10709 F328 A7 01 DFL3 STA 1,X0710 F32A B6 DE 1F LDA TRACK0711 F32D F6 DE 20 LDB SECTOR0712 F330 BD F0 5B JSR WRITSC0713 F333 7C DE 20 INC SECTOR0714 F336 B6 DE 20 LDA SECTOR0715 F339 81 0F CMPA #RMAXSEC+10716 F33B 26 D7 BNE DFL20717 F33D 86 01 LDA #10718 F33F B7 DE 20 STA SECTOR0719 F342 7C DE 1F INC TRACK0720 F345 B6 DE 1F LDA TRACK0721 F348 81 40 CMPA #RMAXTRK0722 F34A 26 C8 BNE DFL20723 * break free chain at last track/sector0724 F34C 8E DE 46 LDX #BUFFER0725 F34F 86 3F LDA #RMAXTRK-10726 F351 C6 0E LDB #RMAXSEC0727 F353 BD F0 57 JSR READSC0728 F356 8E DE 46 LDX #BUFFER0729 F359 6F 84 CLR 0,X0730 F35B 6F 01 CLR 1,X0731 F35D 86 3F LDA #RMAXTRK-10732 F35F C6 0E LDB #RMAXSEC0733 F361 BD F0 5B JSR WRITSC0734 * set up sector structure, SIR, directory etc0735 F364 8E DE 46 LDX #BUFFER0736 F367 4F CLRA0737 F368 C6 0E LDB #RMAXSEC0738 F36A BD F0 57 JSR READSC0739 F36D 8E DE 46 LDX #BUFFER0740 F370 6F 84 CLR 0,X break end of directory chain0741 F372 6F 01 CLR 1,X0742 F374 4F CLRA0743 F375 C6 0E LDB #RMAXSEC0744 F377 BD F0 5B JSR WRITSC0745 *0746 F37A 8E DE 46 LDX #BUFFER0747 F37D 4F CLRA0748 F37E C6 03 LDB #3 set up SIR0749 F380 BD F0 57 JSR READSC0750 F383 8E DE 46 LDX #BUFFER0751 F386 6F 84 CLR 0,X break forward link0752 F388 6F 01 CLR 1,X0753 F38A CC 52 41 LDD #$5241 set volume name (RAMDISK )0754 F38D ED 88 10 STD 16,X0755 F390 CC 4D 44 LDD #$4D440756 F393 ED 88 12 STD 18,X0757 F396 CC 49 53 LDD #$49530758 F399 ED 88 14 STD 20,X0759 F39C CC 4B 20 LDD #$4B200760 F39F ED 88 16 STD 22,X0761 F3A2 CC 00 01 LDD #1 volume number0762 F3A5 ED 88 1B STD 27,X0763 F3A8 CC 01 01 LDD #$0101 first trk/sec 01-010764 F3AB ED 88 1D STD 29,X0765 F3AE 86 3F LDA #RMAXTRK-10766 F3B0 C6 0E LDB #RMAXSEC0767 F3B2 ED 88 1F STD 31,X0768 F3B5 ED 88 26 STD 38,X0769 F3B8 CC 03 72 LDD #RTOTSEC total DATA sectors (2912-14)0770 F3BB ED 88 21 STD 33,X0771 *0772 F3BE 86 01 LDA #01 month set default creation date (SYS09's birthday!)0773 F3C0 A7 88 23 STA 35,X0774 F3C3 86 07 LDA #07 day0775 F3C5 A7 88 24 STA 36,X0776 F3C8 86 07 LDA #07 year0777 F3CA A7 88 25 STA 37,X0778 *0779 F3CD 4F RF3 CLRA0780 F3CE C6 03 LDB #30781 F3D0 BD F0 5B JSR WRITSC0782 *0783 F3D3 8E DE 46 LDX #BUFFER0784 F3D6 4F CLRA0785 F3D7 C6 01 LDB #10786 F3D9 BD F0 57 JSR READSC0787 F3DC 8E DE 46 LDX #BUFFER0788 F3DF 86 AA LDA #$AA set the init flag0789 F3E1 A7 84 STA 0,X0790 F3E3 86 55 LDA #$550791 F3E5 A7 01 STA 1,X0792 F3E7 4F CLRA0793 F3E8 C6 01 LDB #10794 F3EA 7E F0 5B JMP WRITSC0795 *0796 ********************************0797 * System specific Boot *0798 * command goes here. *0799 ********************************0800 *0801 * Boot FLEX from the FPGA's internal pre-loaded scratch RAM0802 *0803 F3ED 08 08 UBMESS FCB $08, $080804 F3EF 42 6F 6F 74 69 6E FCC 'Booting internal FLEX....'67 20 69 6E 74 6572 6E 61 6C 20 464C 45 58 2E 2E 2E2E0805 F408 0D 0A 04 FCB $0D,$0A,$040806 *0807 F40B 8E F3 ED UBSUB LDX #UBMESS0808 F40E BD F4 6A JSR PDATA10809 *0810 F411 8E D3 E5 LDX #$D3E50811 F414 10 8E F4 34 LDY #CONTAB Overlay console driver table0812 F418 EC A1 UB1 LDD 0,Y++0813 F41A ED 81 STD 0,X++0814 F41C 8C D3 FD CMPX #$D3FD0815 F41F 26 F7 BNE UB10816 *0817 F421 8E DE 00 LDX #$DE00 Overlay disk driver table0818 F424 10 8E F4 4C LDY #DISTAB0819 F428 EC A1 UB2 LDD 0,Y++0820 F42A ED 81 STD 0,X++0821 F42C 8C DE 1E CMPX #$DE1E0822 F42F 26 F7 BNE UB20823 *0824 F431 7E CD 00 UBEND JMP $CD000825 *0826 * FLEX console jump table.0827 F434 F4 76 CONTAB FDB INPNE INPUT NO ECHO0828 F436 F4 82 FDB DUMMY INTERRUPT HANDLER0829 F438 DF C2 FDB MONRAM+$02 SWI VECTOR0830 F43A DF C8 FDB MONRAM+$08 IRQ VECTOR0831 F43C F4 82 FDB DUMMY TIMER OFF0832 F43E F4 82 FDB DUMMY TIMER ON0833 F440 F4 82 FDB DUMMY TIMER INITIALIZATION0834 F442 F4 7E FDB CONTRL MONITOR0835 F444 F4 82 FDB DUMMY TERMINAL INITIALIZATION0836 F446 F4 7A FDB STATUS INPUT CHECK0837 F448 F4 6E FDB OUTP TERMINAL OUTPUT0838 F44A F4 72 FDB INPE TERMINAL INPUT WITH ECHO0839 *0840 * FLEX disk jump table.0841 F44C 7E F0 57 DISTAB JMP READSC0842 F44F 7E F0 5B JMP WRITSC0843 F452 7E F0 5F JMP BUSY0844 F455 7E F0 63 JMP RESTR10845 F458 7E F0 6C JMP DRVSEL0846 F45B 7E F0 9F JMP CHKRDY0847 F45E 7E F0 A3 JMP CHKQIK0848 F461 7E F0 A7 JMP DINIT0849 F464 7E F0 BF JMP DWARM0850 F467 7E F0 C3 JMP SEEKTS0851 *0852 * Monitor jumps0853 *0854 F46A 6E 9F F8 0C PDATA1 JMP [PDATAV]0855 F46E 6E 9F F8 0A OUTP JMP [OUTCHV]0856 F472 6E 9F F8 06 INPE JMP [INCHEV]0857 F476 6E 9F F8 04 INPNE JMP [INCHV]0858 F47A 6E 9F F8 08 STATUS JMP [INCHKV]0859 F47E 6E 9F F8 00 CONTRL JMP [MONITV]0860 F482 39 DUMMY RTS0861 *0862 ** 'UL' LOAD ROM DISK VIA SERIAL PORT0863 *0864 F483 53 65 72 69 61 6C ULMES FCC 'Serial ROM Disk upload ...'20 52 4F 4D 20 4469 73 6B 20 75 706C 6F 61 64 20 2E2E 2E0865 F49D 0D 0A 04 FCB $0D,$0A,$040866 F4A0 52 4F 4D 20 44 69 ULMES1 FCC 'ROM Disk Loaded'73 6B 20 4C 6F 6164 65 640867 F4AF 0D 0A 04 FCB $0D,$0A,$040868 *0869 F4B2 8E F4 83 ULSUB LDX #ULMES0870 F4B5 BD F4 6A JSR PDATA10871 *0872 F4B8 86 00 LDA #$000873 F4BA B7 DE 1E STA DRVNUM0874 F4BD 4F CLRA TRACK 00875 F4BE C6 01 LDB #$01 SECTOR 10876 F4C0 B7 DE 1F ULLOOP0 STA TRACK0877 F4C3 F7 DE 20 STB SECTOR`0878 F4C6 17 FB FE LBSR MAPIN0879 *0880 F4C9 5F CLRB xfer 256 bytes at a time.0881 F4CA BD F4 ED ULLOOP1 JSR LRBYTE transfer should be hex bytes0882 F4CD A7 C0 STA ,U+0883 F4CF 5A DECB0884 F4D0 26 F8 BNE ULLOOP10885 *0886 F4D2 17 FC 26 LBSR MAPOUT0887 *0888 F4D5 B6 DE 1F LDA TRACK0889 F4D8 F6 DE 20 LDB SECTOR0890 F4DB 5C INCB0891 F4DC C1 0F CMPB #EMAXSEC+10892 F4DE 26 E0 BNE ULLOOP00893 F4E0 C6 01 LDB #10894 F4E2 4C INCA0895 F4E3 81 30 CMPA #EMAXTRK0896 F4E5 26 D9 BNE ULLOOP00897 *0898 F4E7 8E F4 A0 ULEXIT LDX #ULMES10899 F4EA 7E F4 6A JMP PDATA10900 *0901 * Read a byte from the serial port0902 *0903 F4ED 34 04 LRBYTE PSHS B0904 F4EF 8D 0E BSR LRHEX Get hex digit.0905 F4F1 48 ASLA0906 F4F2 48 ASLA Shift to msb.0907 F4F3 48 ASLA0908 F4F4 48 ASLA0909 F4F5 1F 89 TFR A,B Save in B.0910 F4F7 8D 06 BSR LRHEX Get next digit.0911 F4F9 34 04 PSHS B0912 F4FB AB E0 ADDA 0,S+ Add together bytes.0913 F4FD 35 84 PULS B,PC0914 *0915 F4FF BD F5 28 LRHEX JSR INTER0916 F502 29 FB BVS LRHEX0917 F504 80 30 SUBA #$30 Remove ascii bias.0918 F506 2B F7 BMI LRHEX0919 F508 81 09 CMPA #$09 Number?0920 F50A 2F 0A BLE LRHEX1 Yes.0921 F50C 81 11 CMPA #$11 Keep testing.0922 F50E 2B EF BMI LRHEX0923 F510 81 16 CMPA #$160924 F512 2E EB BGT LRHEX0925 F514 80 07 SUBA #$070926 F516 39 LRHEX1 RTS0927 *0928 * ACIA INPUT TEST0929 *0930 F517 B6 E0 00 INTEST LDA ACIAC10931 F51A 85 01 BITA #$010932 F51C 39 RTS0933 *0934 * RESET ACIA0935 *0936 F51D 86 03 ACIRST LDA #$03 master reset0937 F51F B7 E0 00 STA ACIAC10938 F522 86 11 LDA #$110939 F524 B7 E0 00 STA ACIAC10940 F527 39 RTS0941 *0942 * ACIA INPUT0943 *0944 F528 86 10 INTER LDA #160945 F52A B7 DE 27 STA DELCNT+00946 F52D 7F DE 28 CLR DELCNT+10947 F530 7F DE 29 CLR DELCNT+20948 F533 B6 E0 00 INTER0 LDA ACIAC10949 F536 85 01 BITA #$010950 F538 26 08 BNE INTER10951 F53A 85 78 BITA #$780952 F53C 27 0A BEQ INTER20953 F53E 8D DD BSR ACIRST0954 F540 20 E6 BRA INTER0955 *0956 F542 B6 E0 01 INTER1 LDA ACIAD10957 F545 1C 02 ANDCC #VFLAG0958 F547 39 RTS0959 *0960 F548 7A DE 29 INTER2 DEC DELCNT+20961 F54B 26 E6 BNE INTER00962 F54D 7A DE 28 DEC DELCNT+10963 F550 26 E1 BNE INTER00964 F552 7A DE 27 DEC DELCNT+00965 F555 26 DC BNE INTER00966 F557 4F CLRA0967 F558 1A 02 ORCC #VFLAG0968 F55A 39 RTS0969 *0970 * ACIA OUTPUT0971 *0972 F55B 34 02 OUTTER PSHS A0973 *0974 F55D B6 E0 00 OUTTE1 LDA ACIAC10975 F560 85 02 BITA #$020976 F562 26 08 BNE OUTTE20977 F564 85 78 BITA #$780978 F566 27 F5 BEQ OUTTE10979 F568 8D B3 BSR ACIRST0980 F56A 20 F1 BRA OUTTE10981 *0982 F56C 35 02 OUTTE2 PULS A0983 F56E B7 E0 01 STA ACIAD10984 F571 39 RTS0985 *0986 ** 'UX' Xmodem ROM Disk upload0987 *0988 F572 0D 0A UXMES FCB $0D,$0A0989 F574 58 6D 6F 64 65 6D FCC 'Xmodem ROM Disk Upload'20 52 4F 4D 20 4469 73 6B 20 55 706C 6F 61 640990 F58A 04 FCB 40991 F58B 0D 0A UXMES1 FCB $0D,$0A0992 F58D 55 70 6C 6F 61 64 FCC 'Upload Complete'20 43 6F 6D 70 6C65 74 650993 F59C 04 FCB 40994 F59D 0D 0A UXMES2 FCB $0D,$0A0995 F59F 55 70 6C 6F 61 64 FCC 'Upload Error'20 45 72 72 6F 720996 F5AB 04 FCB 40997 *0998 F5AC 8E F5 72 UXSUB LDX #UXMES0999 F5AF 17 FE B8 LBSR PDATA11000 *1001 F5B2 86 01 LDA #11002 F5B4 B7 DE 23 STA BLKNUM1003 F5B7 8E F6 1A LDX #XSTSTR1004 F5BA BF DE 25 STX XSTATE1005 *1006 F5BD 86 00 LDA #$001007 F5BF B7 DE 1E STA DRVNUM1008 F5C2 4F CLRA TRACK 01009 F5C3 C6 01 LDB #$01 SECTOR 11010 F5C5 B7 DE 1F UXLOOP0 STA TRACK1011 F5C8 F7 DE 20 STB SECTOR1012 F5CB 17 FA F9 LBSR MAPIN1013 *1014 F5CE 5F CLRB xfer 256 bytes at a time.1015 F5CF 17 00 2B UXLOOP1 LBSR XBYTE transfer should be hex bytes1016 F5D2 25 20 BCS UXERR1017 F5D4 A7 C0 STA ,U+1018 F5D6 5A DECB1019 F5D7 26 F6 BNE UXLOOP11020 *1021 F5D9 17 FB 1F LBSR MAPOUT1022 *1023 F5DC B6 DE 1F LDA TRACK1024 F5DF F6 DE 20 LDB SECTOR1025 F5E2 5C INCB1026 F5E3 C1 0F CMPB #EMAXSEC+11027 F5E5 26 DE BNE UXLOOP01028 F5E7 C6 01 LDB #11029 F5E9 4C INCA1030 F5EA 81 30 CMPA #EMAXTRK1031 F5EC 26 D7 BNE UXLOOP01032 *1033 F5EE 8E F5 8B UXEXIT LDX #UXMES11034 F5F1 7E F4 6A JMP PDATA11035 *1036 F5F4 17 FB 04 UXERR LBSR MAPOUT1037 F5F7 8E F5 9D LDX #UXMES21038 F5FA 16 FE 6D LBRA PDATA11039 *1040 * Get a Byte using XModem protocol1041 * Carry clear => no errors1042 * Carry set => errors1043 *1044 F5FD 34 10 XBYTE PSHS X1045 F5FF BE DE 25 LDX XSTATE1046 *1047 F602 17 FF 23 XBYTE0 LBSR INTER1048 F605 28 0A BVC XBYTE11049 F607 86 15 LDA #NAK1050 F609 17 FF 4F LBSR OUTTER1051 F60C 8E F6 1A LDX #XSTSTR1052 F60F 20 F1 BRA XBYTE01053 *1054 F611 AD 84 XBYTE1 JSR ,X1055 F613 26 ED BNE XBYTE01056 F615 BF DE 25 STX XSTATE1057 F618 35 90 PULS X,PC1058 *1059 * START - LOOK FOR SOH (START OF HEADER) = $011060 *1061 F61A 81 01 XSTSTR CMPA #SOH1062 F61C 26 06 BNE XSTSTR11063 F61E 8E F6 3A LDX #XSTBLK1064 F621 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)1065 F623 39 RTS1066 *1067 F624 81 04 XSTSTR1 CMPA #EOT1068 F626 26 08 BNE XSTSTR21069 F628 86 06 LDA #ACK1070 F62A 17 FF 2E LBSR OUTTER1071 F62D 1A 05 ORCC #CFLAG+ZFLAG Set (c)=1 abort & exit1072 F62F 39 RTS1073 *1074 F630 81 18 XSTSTR2 CMPA #CAN1075 F632 26 03 BNE XSTSTR31076 F634 1A 05 ORCC #CFLAG+ZFLAG Set (c)=1 abort & exit1077 F636 39 RTS1078 *1079 F637 1C FA XSTSTR3 ANDCC #$FF-CFLAG-ZFLAG1080 F639 39 RTS1081 *1082 * Got SOH1083 * Now get block number1084 *1085 F63A B1 DE 23 XSTBLK CMPA BLKNUM1086 F63D 26 06 BNE XSTBLKE1087 F63F 8E F6 50 LDX #XSTCOM1088 F642 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)1089 F644 39 RTS1090 *1091 * Error in block number1092 *1093 F645 86 15 XSTBLKE LDA #NAK1094 F647 17 FF 11 LBSR OUTTER1095 F64A 8E F6 1A LDX #XSTSTR1096 F64D 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)1097 F64F 39 RTS1098 *1099 * Get complement of block number1100 *1101 F650 43 XSTCOM COMA1102 F651 B1 DE 23 CMPA BLKNUM1103 F654 26 EF BNE XSTBLKE1104 F656 7F DE 21 CLR CHKSUM1105 F659 86 80 LDA #1281106 F65B B7 DE 24 STA BYTCNT1107 F65E 8E F6 64 LDX #XSTDAT1108 F661 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, No valid data (no exit)1109 F663 39 RTS1110 *1111 * Get data bytes1112 *1113 F664 34 02 XSTDAT PSHS A1114 F666 BB DE 21 ADDA CHKSUM1115 F669 B7 DE 21 STA CHKSUM1116 F66C 35 02 PULS A1117 F66E 7A DE 24 DEC BYTCNT1118 F671 26 03 BNE XSTDAT11119 F673 8E F6 7B LDX #XSTCHK1120 F676 1C FE XSTDAT1 ANDCC #$FF-CFLAG No abort1121 F678 1A 04 ORCC #ZFLAG Valid data (exit)1122 F67A 39 RTS1123 *1124 * Byte count reached zero1125 * Check checksum byte1126 *1127 F67B B1 DE 21 XSTCHK CMPA CHKSUM1128 F67E 26 07 BNE XSTCHK1 retry if wrong checksum1129 *1130 * Checksum OK ...1131 * increment block number1132 * and send ACK1133 *1134 F680 7C DE 23 INC BLKNUM1135 F683 86 06 LDA #ACK1136 F685 20 0D BRA XSTCHK21137 *1138 * Checksum Error detected ...1139 * Reset Sector counter in ACCB to last 128 byte boundary1140 * and send NAK1141 *1142 F687 34 04 XSTCHK1 PSHS B1143 F689 1F 30 TFR U,D1144 F68B 5A DECB1145 F68C C4 80 ANDB #1281146 F68E 1F 03 TFR D,U1147 F690 35 04 PULS B1148 F692 86 15 LDA #NAK1149 F694 17 FE C4 XSTCHK2 LBSR OUTTER1150 F697 8E F6 1A LDX #XSTSTR1151 F69A 1C FA ANDCC #$FF-CFLAG-ZFLAG No abort, no valid data (no exit)1152 F69C 39 RTS1153 *1154 ** 'UP' Load ROMdisk via config PROM.1155 *1156 F69D 08 08 UPMES FCB $08,$081157 F69F 4C 6F 61 64 20 52 FCC 'Load ROM disk from config PROM.'4F 4D 20 64 69 736B 20 66 72 6F 6D20 63 6F 6E 66 6967 20 50 52 4F 4D2E1158 F6BE 04 FCB 41159 F6BF 46 6F 75 6E 64 20 UPMES1 FCC 'Found SYNC, loading data...'53 59 4E 43 2C 206C 6F 61 64 69 6E67 20 64 61 74 612E 2E 2E1160 F6DA 0A 0D 04 FCB $0A,$0D,41161 F6DD 52 4F 4D 20 44 69 UPMES2 FCC 'ROM Disk Loaded.'73 6B 20 4C 6F 6164 65 64 2E1162 F6ED 0A 0D 04 FCB $0A,$0D,41163 F6F0 52 4F 4D 20 44 69 UPMES3 FCC 'ROM Disk Not Found.'73 6B 20 4E 6F 7420 46 6F 75 6E 642E1164 F703 0A 0D 04 FCB $0A,$0D,41165 *1166 F706 8E F6 9D UPSUB LDX #UPMES1167 F709 BD F4 6A JSR PDATA11168 *1169 F70C 8D 5A BSR UPRESET1170 F70E 10 8E 00 20 LDY #$0020 Set up count for 2 MBit1171 F712 8E 00 00 LDX #$00001172 F715 8D 6C UPSUB1 BSR UPBIT Shift in bit1173 F717 8D 7C BSR UPSYNC Test for Sync pattern`1174 F719 27 15 BEQ UPSUB4 Skip if found1175 F71B 30 1F LEAX -1,X Count Down inner loop1176 F71D 8C 00 00 CMPX #$00001177 F720 26 F3 BNE UPSUB1 Branch if inner loop not complete1178 F722 31 1F LEAY -1,X Count down outer loop1179 F724 10 8C 00 00 CMPY #$00001180 F728 26 EB BNE UPSUB1 Branch if outer loop not complete1181 *1182 F72A 8E F6 F0 LDX #UPMES3 2MBits scanned, no synch, report error1183 F72D 7E F4 6A JMP PDATA11184 *1185 F730 8E F6 BF UPSUB4 LDX #UPMES1 Sync found, now load disk1186 F733 BD F4 6A JSR PDATA11187 *1188 F736 4F CLRA1189 F737 B7 DE 1E STA DRVNUM select Drive 01190 F73A C6 01 LDB #$011191 F73C B7 DE 1F UPSUB2 STA TRACK track 01192 F73F F7 DE 20 STB SECTOR sector 11193 *1194 F742 17 F9 82 LBSR MAPIN map in buffer1195 F745 5F CLRB 256 byte sector1196 F746 8D 67 UPSUB3 BSR UPBYTE read byte from prom1197 F748 A7 C0 STA ,U+ Store in buffer1198 F74A 5A DECB1199 F74B 26 F9 BNE UPSUB3 Loop until sector read`1200 F74D 17 F9 AB LBSR MAPOUT map out buffer1201 *1202 F750 B6 DE 1F LDA TRACK Advance sector1203 F753 F6 DE 20 LDB SECTOR1204 F756 5C INCB1205 F757 C1 0F CMPB #EMAXSEC+1 Wrap on max sector count1206 F759 26 E1 BNE UPSUB21207 F75B C6 01 LDB #11208 F75D 4C INCA Advance track1209 F75E 81 30 CMPA #EMAXTRK1210 F760 26 DA BNE UPSUB21211 *1212 F762 8E F6 DD UPEXIT LDX #UPMES2 Load complete, report message1213 F765 7E F4 6A JMP PDATA11214 *1215 * Reset Serial PROM1216 *1217 F768 86 02 UPRESET LDA #PRSTHI Strobe the reset line1218 F76A B7 E0 C0 STA PROMREG1219 F76D 86 00 LDA #PRSTLO1220 F76F B7 E0 C0 STA PROMREG1221 F772 8E 00 00 LDX #$0000 Delay a while`1222 F775 30 1F UPRST1 LEAX -1,X1223 F777 8C 00 00 CMPX #$00001224 F77A 26 F9 BNE UPRST11225 F77C BF DF 46 STX SYNCREG+0 Clear Sync Shift Register1226 F77F BF DF 48 STX SYNCREG+21227 F782 39 RTS1228 *1229 * Input 1 Bit From PROM1230 *1231 F783 86 01 UPBIT LDA #PCLKHI1232 F785 B7 E0 C0 STA PROMREG1233 F788 86 00 LDA #PCLKLO1234 F78A B7 E0 C0 STA PROMREG1235 F78D B6 E0 C0 LDA PROMREG1236 F790 44 LSRA1237 F791 78 DF 49 ASL SYNCREG+31238 F794 39 RTS1239 *1240 * Test for 32 bit Sync Word1241 *1242 F795 79 DF 48 UPSYNC ROL SYNCREG+21243 F798 79 DF 47 ROL SYNCREG+11244 F79B 79 DF 46 ROL SYNCREG+01245 F79E CC FF 00 LDD #SYNCLO1246 F7A1 10 B3 DF 48 CMPD SYNCREG+21247 F7A5 26 07 BNE UPSYNCX1248 F7A7 CC AA 55 LDD #SYNCHI1249 F7AA 10 B3 DF 46 CMPD SYNCREG+01250 F7AE 39 UPSYNCX RTS1251 *1252 * Input 1 Byte From PROM1253 *1254 F7AF 34 04 UPBYTE PSHS B1255 F7B1 C6 08 LDB #81256 F7B3 8D CE UPBYTE1 BSR UPBIT1257 F7B5 5A DECB1258 F7B6 26 FB BNE UPBYTE11259 F7B8 B6 DF 49 LDA SYNCREG+31260 F7BB 35 84 PULS B,PC1261 *1262 ***** NEXTCMD *****1263 *1264 F7BD 17 FC B2 NEXTEXT LBSR INPE GET ONE CHAR. FROM TERMINAL1265 F7C0 84 7F ANDA #$7F STRIP PARITY FROM CHAR.1266 F7C2 1F 89 TFR A,B1267 F7C4 86 20 LDA #$201268 F7C6 17 FC A5 LBSR OUTP PRNT SPACE1269 F7C9 C1 60 CMPB #$601270 F7CB 2F 02 BLE NXTEX01271 F7CD C0 20 SUBB #$201272 *1273 ***** DO TABLE LOOKUP *****1274 * FOR COMMAND FUNCTIONS1275 *1276 F7CF 8E F7 E5 NXTEX0 LDX #EXTTAB POINT TO JUMP TABLE1277 F7D2 E1 80 NXTEX1 CMPB ,X+ DOES COMMAND MATCH TABLE ENTRY ?1278 F7D4 27 0D BEQ JMPEXT BRANCH IF MATCH FOUND1279 F7D6 30 02 LEAX 2,X POINT TO NEXT ENTRY IN TABLE1280 F7D8 8C F7 F4 CMPX #EXTEND REACHED END OF TABLE YET ?1281 F7DB 26 F5 BNE NXTEX1 IF NOT END, CHECK NEXT ENTRY1282 F7DD 8E F7 F4 LDX #MSGWHAT POINT TO MSG "WHAT?"1283 F7E0 16 FC 87 LBRA PDATA1 PRINT MSG AND RETURN1284 F7E3 6E 94 JMPEXT JMP [,X] JUMP TO COMMAND ROUTINE1285 *1286 * EXTENDED COMMAND JUMP TABLE1287 *1288 F7E5 EXTTAB EQU *1289 F7E5 42 FCC 'B' BOOT FLEX1290 F7E6 F4 0B FDB UBSUB1291 F7E8 4C FCC 'L' LOAD ROM DISK OVER SERIAL PORT1292 F7E9 F4 B2 FDB ULSUB1293 F7EB 46 FCC 'F' FORMAT RAM DISK1294 F7EC F2 DD FDB UFSUB1295 F7EE 50 FCC 'P' LOAD ROM DISK FROM PROM1296 F7EF F7 06 FDB UPSUB1297 F7F1 58 FCC 'X' XMODEM ROM DISK UPLOAD1298 F7F2 F5 AC FDB UXSUB1299 *1300 F7F4 EXTEND EQU *1301 *1302 F7F4 57 48 41 54 20 3F MSGWHAT FCC "WHAT ?"1303 F7FA 0A 0D 04 FCB $0A,$0D,$040012 END0013 END COLDSProgram + Init Data = 7039 bytesError count = 0ACIAC1 E000ACIAD1 E001ACIAS E000ACIRST F51DACK 0006ADDBX CD36ADDBX1 D349BAKREC DCE5BLKNUM DE23BPTBL DFE3BSECHR CC07BSPCHR CC00BUFFER DE46BUSY F05FBYTCNT DE24CAN 0018CCSAVE DE22CFLAG 0001CHKQIK F0A3CHKRDY F09FCHKSUM DE21CHKVEC DE3CCLASS CD21CLASS1 CFEDCLOSE DAC3CMDFLG CC28CMDTBL CC93COLADX DFFBCOLD1 CD57COLDDR DE15COLDS CD00CONTAB F434CONTRL F47ECPORT DFE0CPYMSG D409CURCHR CC18CURCOL CC29CURFCB D40BCURLIN CC1ADATERG CC0EDATREG FFF0DATSTR CAECDAY CC0FDDUMMY F052DECTBL CCA0DELCHR CC01DELCNT DE27DELCON 04E2DELETE DBD6DEPCNT CC03DERMSG CC75DFL1 F307DFL2 F314DFL3 F328DINIT F0A7DINIT1 F0A8DINIT2 F0B6DISFOS F2AADISTAB F44CDNRMSG CC82DOCMD1 D329DOCMND CD4BDOFFTAB DE2EDOFUN1 D4B8DOFUNC D4B0DRIVE DE0CDRIVE1 F084DRIVE2 F092DRVNUM DE1EDRVRDY DE0FDRVSEL F06CDRVVEC DE3ADTYPFLS 0002DTYPNET 0003DTYPRAM 0001DTYPROM 0000DTYPTAB DE2ADUMMY F482DUMRTS D370DWARM F0BFECHECK F13FECHO DFE2EDUMMY F113EFLAG 0080EJTCNT CC08EMAXSEC 000EEMAXTRK 0030EOLCHR CC02EOT 0004EREAD F119ERLOOP1 F126ERLOOP2 F135ERRTYP CC20ERRVEC CC2DESCCHR CC0AESCFLG DFFEESCVEC CC16ESEEK F108ETOTSEC 0292EWLOOP1 F15EEWLOOP2 F16DEWOK F159EWRITE F141EXTEND F7F4EXTTAB F7E5EXTTBL D10BFCB C840FCBPTR D409FFLAG 0040FFOUND F2F9FIEFLG CC2FFIPADR CC26FIRQ DFC6FMS D406FMS1 D47BFMSCLS D403FMSTBL D4CEFMT9 F2E7FOPADR CC24GETBYT D56FGETCH1 CEFBGETCHR CD15GETCMD D20FGETFIL CD2DGETFL1 D036GETHEX CD42GETHX1 D12FGETREC D838HFLAG 0020IC11 FFF0IFLAG 0010IHND D370IHNDVC D3E7INBUF1 CE2BINBUFF CD1BINCH CD09INCH2 CD0CINCHEK D37CINCHEV F806INCHKV F808INCHNE D374INCHV F804INDEC CD48INDEC1 D175INEEE D384INIVEC DE40INPE F472INPNE F476INPSWT CC23INTER F528INTER0 F533INTER1 F542INTER2 F548INTEST F517INVEC D3FBIRQ DFC8IRQVEC DFC8IRQVVC D3EBJMPEXT F7E3LASTRM CC11LINBUF C080LINLEN 0050LINPTR CC14LOAD CD30LOAD1 D1A2LODOFF CC1BLRARAM DFD0LRAV F812LRBYTE F4EDLRHEX F4FFLRHEX1 F516MAPIN F0C7MAPOUT F0FBMAPPAG 0000MAPUP CC49MEMEND CC2BMESS6 F2C2MONEXT F000MONIO E000MONITR D378MONITV F800MONRAM DFC0MONROM F800MONTH CC0EMONVEC D3F3MSGWHAT F7F4NAK 0015NCHECK F24ENCK_END F265NCK_ERR F261NEWROW DFFDNEXTEXT F7BDNFDMSG CC6BNFLAG 0008NRD_DNR F1D7NRD_END F1E4NRD_ERR F1DBNREAD F17ANREAD1 F1A2NREAD2 F1B4NTRMSG CC5CNULCNT CC05NUMLIN 0019NVERIFY F249NWRITE F1E9NWRITE1 F211NWRITE2 F223NWR_END F244NWR_ERR F242NXTCH CD27NXTCH1 D00ENXTCMV F802NXTDRV DDBDNXTEX0 F7CFNXTEX1 F7D2NXTSEC DA87OPENRD D986OPENUD DAF9OPENWR D9D9OPNDIR D81DOPNREC D810OUTAD1 CFD0OUTADR CD45OUTCH CD0FOUTCH2 CD12OUTCHV F80AOUTDC1 CF86OUTDEC CD39OUTEEE D380OUTHEX CD3COUTHX1 CFD4OUTHXL CFDCOUTHXR CFE0OUTP F46EOUTSWT CC22OUTTE1 F55DOUTTE2 F56COUTTER F55BOUTVEC D3F9PAUSE CC09PCHK CCD8PCLKHI 0001PCLKLO 0000PCRLF CD24PCRLF1 CEB5PCRLFV F80EPDATA1 F46APDATAV F80CPINIT CCC0PMTSTR CC4EPOSREC DCFBPOUT CCE4PROMREG E0C0PRSPL1 C700PRSPL2 C703PRSPL3 C706PRSPL4 C709PRSPL5 C70CPRSPL6 C70FPRSTHI 0002PRSTLO 0000PRVCHR CC19PS2KBD E020PSTRG1 CE81PSTRGV F810PSTRNG CD1EPUTBYT D590PUTCH1 CF41PUTCHR CD18PUTREC D876QCNT C71BQRYSTR CC52QUICK DE12QUIVEC DE3ERCHAR F267RCHAR1 F26CRCHAR2 F270RCHAR3 F280RDSECT D641READ DE00READSC F057REAVEC DE32RENAME DB2CRENT1 CDB1RENTER CD06RESTOR DE09RESTR1 F063RESV1 D969RESV2 D699RESV3 DB07REWIND D5E2RF3 F3CDRMAXSEC 000ERMAXTRK 0040ROWADX DFFCRPTER1 D27FRPTERR CD3FRST1 F068RSTIO1 CDEARSTRIO CD2ARSTVEC DE38RTOTSEC 0372SCHAR F285SCHAR1 F28CSCHAR2 F290SCHAR3 F2A3SECTOR DE20SEEK DE1BSEEKTS F0C3SEEVEC DE44SETEX1 D0EBSETEXT CD33SIOFLG CC21SOH 0001STACK DFC0STATUS F47ASTAVEC D3F7SVCVL DFCESVCVO DFCCSWI DFCASWI2 DFC4SWI3 DFC2SWIVEC DFC2SWIVVC D3E9SYNCHI AA55SYNCLO FF00SYNCREG DF46SYSDRV CC0BTABCHR CC06TABSRT F002TERINZ D371TERVEC D3F5TINVEC D3F1TMINT D370TMOFF D370TMON D370TOFVEC D3EDTONVEC D3EFTRACK DE1FTRNFLG CC1DTRNVEC CC1ETTLSTR CADCUB1 F418UB2 F428UBEND F431UBMESS F3EDUBSUB F40BUCTVEC CC12UFSUB F2DDULEXIT F4E7ULLOOP0 F4C0ULLOOP1 F4CAULMES F483ULMES1 F4A0ULSUB F4B2UPBIT F783UPBYTE F7AFUPBYTE1 F7B3UPEXIT F762UPMES F69DUPMES1 F6BFUPMES2 F6DDUPMES3 F6F0UPRESET F768UPRST1 F775UPSUB F706UPSUB1 F715UPSUB2 F73CUPSUB3 F746UPSUB4 F730UPSYNC F795UPSYNCX F7AEUXERR F5F4UXEXIT F5EEUXLOOP0 F5C5UXLOOP1 F5CFUXMES F572UXMES1 F58BUXMES2 F59DUXSUB F5ACVDU E030VDUATT 0001VDUCHR 0000VDUCOL 0002VDUOFF 0004VDUROW 0003VERFLG D435VERIFY DE06VERVEC DE36VFLAG 0002WARM1 CD67WARMDR DE18WARMS CD03WARVEC DE42WIDCNT CC04WOTMSG CC56WRITE DE03WRITSC F05BWRIVEC DE34WRKDRV CC0CWRSECT D69FXBYTE F5FDXBYTE0 F602XBYTE1 F611XSTATE DE25XSTBLK F63AXSTBLKE F645XSTCHK F67BXSTCHK1 F687XSTCHK2 F694XSTCOM F650XSTDAT F664XSTDAT1 F676XSTSTR F61AXSTSTR1 F624XSTSTR2 F630XSTSTR3 F637YEAR CC10Z0000 0000Z0005 0005Z0044 0044Z00A0 00A0ZC07F C07FZC0FF C0FFZC712 C712ZC719 C719ZC71C C71CZC71D C71DZC71E C71EZC71F C71FZC721 C721ZC738 C738ZC73F C73FZC747 C747ZC76D C76DZC777 C777ZC779 C779ZC785 C785ZC791 C791ZC795 C795ZC79B C79BZC7BC C7BCZC7C3 C7C3ZC7C7 C7C7ZC7E3 C7E3ZC7ED C7EDZC7F6 C7F6ZC800 C800ZC810 C810ZC838 C838ZC844 C844ZCA00 CA00ZCA02 CA02ZCA06 CA06ZCA08 CA08ZCA38 CA38ZCA4C CA4CZCA7B CA7BZCA7E CA7EZCA8E CA8EZCAAC CAACZCAC0 CAC0ZCACB CACBZCAD9 CAD9ZCADB CADBZCC0D CC0DZCC30 CC30ZCC31 CC31ZCC34 CC34ZCC3D CC3DZCC3F CC3FZCC43 CC43ZCC45 CC45ZCC47 CC47ZCC4A CC4AZCC4B CC4BZCC4C CC4CZCC4D CC4DZCCF8 CCF8ZCCFC CCFCZCD4E CD4EZCD5B CD5BZCD9D CD9DZCDB8 CDB8ZCDD3 CDD3ZCDD6 CDD6ZCDD9 CDD9ZCDDE CDDEZCDE1 CDE1ZCDE4 CDE4ZCE05 CE05ZCE06 CE06ZCE0A CE0AZCE12 CE12ZCE1E CE1EZCE2A CE2AZCE31 CE31ZCE4A CE4AZCE4F CE4FZCE56 CE56ZCE5D CE5DZCE73 CE73ZCE78 CE78ZCE83 CE83ZCE90 CE90ZCE9E CE9EZCEA1 CEA1ZCED0 CED0ZCED7 CED7ZCEDC CEDCZCEDE CEDEZCEE1 CEE1ZCEF0 CEF0ZCEF6 CEF6ZCEF8 CEF8ZCEFA CEFAZCF15 CF15ZCF1A CF1AZCF1D CF1DZCF21 CF21ZCF29 CF29ZCF2F CF2FZCF38 CF38ZCF4F CF4FZCF64 CF64ZCF66 CF66ZCF76 CF76ZCF80 CF80ZCF83 CF83ZCF96 CF96ZCFA3 CFA3ZCFA6 CFA6ZCFB2 CFB2ZCFC9 CFC9ZCFCE CFCEZCFEA CFEAZD005 D005ZD00B D00BZD019 D019ZD032 D032ZD05F D05FZD074 D074ZD077 D077ZD079 D079ZD07C D07CZD080 D080ZD098 D098ZD09D D09DZD0AB D0ABZD0B2 D0B2ZD0C4 D0C4ZD0C7 D0C7ZD0CA D0CAZD0D4 D0D4ZD0DA D0DAZD0E4 D0E4ZD100 D100ZD109 D109ZD132 D132ZD13F D13FZD153 D153ZD159 D159ZD15F D15FZD16B D16BZD172 D172ZD178 D178ZD1A5 D1A5ZD1C0 D1C0ZD1D5 D1D5ZD1E4 D1E4ZD1F4 D1F4ZD1FD D1FDZD200 D200ZD20A D20AZD21E D21EZD224 D224ZD22E D22EZD240 D240ZD248 D248ZD254 D254ZD26E D26EZD27C D27CZD299 D299ZD2A9 D2A9ZD2D7 D2D7ZD2EB D2EBZD2ED D2EDZD2F5 D2F5ZD309 D309ZD31E D31EZD323 D323ZD32E D32EZD33B D33BZD34B D34BZD354 D354ZD361 D361ZD3E5 D3E5ZD3FD D3FDZD400 D400ZD40F D40FZD411 D411ZD412 D412ZD413 D413ZD414 D414ZD415 D415ZD417 D417ZD418 D418ZD41A D41AZD41B D41BZD41D D41DZD436 D436ZD44C D44CZD451 D451ZD459 D459ZD45C D45CZD483 D483ZD499 D499ZD4A7 D4A7ZD4AC D4ACZD4C4 D4C4ZD4C6 D4C6ZD4FA D4FAZD503 D503ZD50C D50CZD515 D515ZD51C D51CZD525 D525ZD52D D52DZD533 D533ZD537 D537ZD540 D540ZD549 D549ZD54E D54EZD559 D559ZD55E D55EZD56E D56EZD57D D57DZD5AC D5ACZD5AF D5AFZD5B4 D5B4ZD5C2 D5C2ZD5DC D5DCZD5DF D5DFZD5E1 D5E1ZD5F0 D5F0ZD5F5 D5F5ZD600 D600ZD607 D607ZD60C D60CZD61A D61AZD620 D620ZD638 D638ZD63C D63CZD63E D63EZD640 D640ZD64B D64BZD655 D655ZD65D D65DZD65E D65EZD668 D668ZD670 D670ZD685 D685ZD69C D69CZD6A9 D6A9ZD6BD D6BDZD6C9 D6C9ZD6CC D6CCZD6CF D6CFZD6E5 D6E5ZD6EA D6EAZD6EF D6EFZD6F2 D6F2ZD6FC D6FCZD70C D70CZD713 D713ZD714 D714ZD72E D72EZD73D D73DZD73E D73EZD74B D74BZD772 D772ZD782 D782ZD786 D786ZD787 D787ZD799 D799ZD79F D79FZD7A2 D7A2ZD7B0 D7B0ZD7B8 D7B8ZD7C8 D7C8ZD7E7 D7E7ZD7EF D7EFZD7FB D7FBZD7FC D7FCZD825 D825ZD852 D852ZD85D D85DZD865 D865ZD875 D875ZD881 D881ZD892 D892ZD8AA D8AAZD8BB D8BBZD8C5 D8C5ZD8D3 D8D3ZD8DF D8DFZD8EA D8EAZD8EB D8EBZD8F6 D8F6ZD8FE D8FEZD900 D900ZD905 D905ZD916 D916ZD917 D917ZD929 D929ZD933 D933ZD935 D935ZD936 D936ZD946 D946ZD947 D947ZD957 D957ZD983 D983ZD985 D985ZD9A0 D9A0ZD9B3 D9B3ZD9C6 D9C6ZD9C8 D9C8ZD9C9 D9C9ZD9CD D9CDZD9CF D9CFZD9E8 D9E8ZDA00 DA00ZDA0A DA0AZDA40 DA40ZDA5E DA5EZDA61 DA61ZDA76 DA76ZDA99 DA99ZDA9A DA9AZDAA7 DAA7ZDAAE DAAEZDAB1 DAB1ZDAC2 DAC2ZDACB DACBZDAD3 DAD3ZDADD DADDZDAEE DAEEZDAF6 DAF6ZDAF8 DAF8ZDB1F DB1FZDB26 DB26ZDB27 DB27ZDB3A DB3AZDB59 DB59ZDB5D DB5DZDB5E DB5EZDB63 DB63ZDB6B DB6BZDB85 DB85ZDB8F DB8FZDB93 DB93ZDB95 DB95ZDBA1 DBA1ZDBA2 DBA2ZDBA7 DBA7ZDBAE DBAEZDBB9 DBB9ZDBC1 DBC1ZDBCD DBCDZDBD3 DBD3ZDBD5 DBD5ZDC05 DC05ZDC19 DC19ZDC31 DC31ZDC39 DC39ZDC3A DC3AZDC3E DC3EZDC40 DC40ZDC43 DC43ZDC4F DC4FZDC63 DC63ZDC7F DC7FZDC82 DC82ZDC87 DC87ZDC97 DC97ZDC98 DC98ZDCAB DCABZDCC0 DCC0ZDCD7 DCD7ZDCF8 DCF8ZDD0A DD0AZDD0E DD0EZDD0F DD0FZDD22 DD22ZDD50 DD50ZDD62 DD62ZDD7A DD7AZDD7F DD7FZDD85 DD85ZDD9A DD9AZDD9C DD9CZDD9E DD9EZDD9F DD9FZDDAA DDAAZDDAC DDACZDDAD DDADZDDB2 DDB2ZDDD0 DDD0ZDDD3 DDD3ZDDD6 DDD6ZFLAG 0004
