home *** CD-ROM | disk | FTP | other *** search
- '─╘╩ 1╦ ╪MODEM W/O STRIPPER
- 'BY ┴NDREW ┬ERNHARDT
- 'AS OF ┴PRIL 11, 1992
-
- ORG 40961
-
- NAM "P-1╦╪═╧─┼═"
- HDR "A/DICT"
-
- JMP "X-RCV" ' 19200BPS MAX
- JMP "X-SND" ' 38400BPS MAX
-
- "SOH" DFL 1
- "STX" DFL 2
- "EOT" DFL 4
- "ACK" DFL 6
- "NAK" DFL 21
- "CAN" DFL 24
- "CRC" DFL 67
-
- "KEYCHAR" DFL 631
- "RSSTAT" DFL 663
-
- "XBUF1" DFL 42800
- "XBUF2" DFL 43830
- "RSGETIN" DFL 61574
-
- "STACKSAV" DF &00
- "SENDFLAG" DF &00
- "XFERFLAG" DF &FF
- "LASTGOOD" DF &01
- "PAGECNT" DF &00
- "PADCHAR" DF &00
- "BLOCKNBR" DF &00
- "ERRORNBR" DF &00
- "LASTCHAR" DF &00
- "PREVMODE" DF &00
- "MDMSAVE" DF &00
- "BUFFNBR" DF &00
- "CRC-L" DF &00
- "CRC-H" DF &00
- "MAXBYTE1" DF &FF
- "MAXBYTE2" DF &FF
- "MAXBYTE3" DF &FF
- "RCVD-L" DF &00
- "RCVD-H" DF &00
- "1STBYTE" DF &00
- "CRCFLAG" DF &01
- "BLKTYPE" DF &00
- "CHARGOT" DF &00
- "CHARGOT2" DF &00
- "IRQSAVL" DF &00
- "IRQSAVH" DF &00
- "JTEST" DF &00
-
- "IN.TAB" DF $1KXMODEM V2.1
- DF &67
- DF $ RX: TX: B#:0000 E:00
- "IN.COL" DF $EEEEEEEEEEEEEEECCCCCCCCC
- DF $CCCCCCCCCCCCCCCC
- "DSP.TAB" DF &B0B1B2B3B4B5B6B7
- DF &B8B9C1C2C3C4C5C6
-
- '======================================
- ' ═AIN SEND-FILE ROUTINE...
-
- "X-SND" TSX
- STX ("STACKSAV")
- LDA 1
- STA ("SENDFLAG")
- JSR "INIT"
- "X-SND0" JSR "JIFFYZ"
- "X-SND1" JSR "GETBYTE"
- JSR "GETDISP"
- CMP "CAN"
- BEQ "X-SNDCAN"
- STA ("LASTCHAR")
- CMP "CRC"
- BEQ "X-SNDCRC"
- LDX ("XFERFLAG")
- BMI "X-SND1"
- CMP "ACK"
- BEQ "X-SNDACK"
- CMP "NAK"
- BNE "X-SND1"
- "X-SNDNAK" JSR "INCERR"
- LDA ("ERRORNBR")
- CMP 7
- BNE "X-SB9"
- STA ("PREVMODE")
- JSR "ALTBLOCK"
- DEC ("BLOCKNBR")
- "X-SB9" LDA 0
- BEQ "X-SND2"
- "X-SNDCRC" LDA ("XFERFLAG")
- CMP 1
- BEQ "X-SND1"
- BNE "X-SND3"
- "X-SNDACK" LDA 1
- STA ("XFERFLAG")
- "X-SND3" LDA 1
- "X-SND2" STA ("LASTGOOD")
- LDA ("RIDBS")
- STA ("RIDBE")
- JSR "X-LOAD"
- JSR "X-SEND"
- LDA ("XFERFLAG")
- BPL "X-SND0"
- INC ("XFERFLAG")
- BPL "X-SND0"
- "X-SNDCAN" CMP ("LASTCHAR")
- BEQ "X-SC0"
- STA ("LASTCHAR")
- JMP "X-SND1"
- "X-SC0" JMP "EX-CAN"
-
- "EX-OK" LDA 0
- DF &2C
- "EX-TIME" LDA 1
- DF &2C
- "EX-CAN" LDA 2
- DF &2C
- "EX-ABRT" LDA 3
- DF &2C
- "EX-FULL" LDA 5
- "EXIT" LDX ("STACKSAV")
- TXS
- PHA
- JSR "+CLRCHN"
- PLA
- PHA
- BEQ "EX-0"
- LDA "CAN"
- JSR "+CHROUT"
- LDA "CAN"
- JSR "+CHROUT"
- LDA 8
- JSR "+CHROUT"
- LDA 8
- JSR "+CHROUT"
- "EX-0" LDA ("MDMSAVE")
- STA ("MDM-MODE")
- SEI
- LDA ("IRQSAVL")
- STA (788)
- LDA ("IRQSAVH")
- STA (789)
- CLI
- PLA
- RTS
-
- "GETBYTE" LDA 0
- STA ("RSSTAT")
- "GB-0" JSR "RSGETIN"
- LDX ("RSSTAT")
- BEQ "GB-3"
- JSR "GETDISP"
- LDA ("CARRIER")
- AND 16
- BNE "EXIT"
- LDA ("JIFFY2")
- CMP ("JTEST")
- BEQ "EC-2"
- STA ("JTEST")
- JSR 60039
- LDA ("KEY?")
- BEQ "EC-2"
- DEC ("KEY?")
- LDA ("KEYCHAR")
- CMP "CAN"
- BEQ "EX-ABRT"
- "EC-2" LDA ("JIFFY2")
- LDX ("SENDFLAG")
- BEQ "GB-1"
- CMP 23
- BCC "GB-0"
- JMP "EX-TIME"
- "GB-1" CMP 3
- BEQ "GB-2"
- CMP 2
- BNE "GB-0"
- LDA ("JIFFY3")
- CMP 88
- BNE "GB-0"
- "GB-2" SEC
- RTS
- "GB-3" STA ("CHARGOT")
- CLC
- RTS
-
- "GETDISP" PHP
- PHA
- LDA ("CHARGOT")
- CMP ("CHARGOT2")
- BEQ "GD00"
- STA ("CHARGOT2")
- LDX 25
- JSR "DISPCLR"
- LDX 19
- JSR "DISPBYTE"
- "GD00" PLA
- PLP
- RTS
-
- "DOSUM" PHA
- LDA ("CRCFLAG")
- BNE "DOSUM0"
- PLA
- PHA
- CLC
- ADC ("CRC-H")
- STA ("CRC-H")
- PLA
- RTS
- "DOSUM0" PLA
- "DOCRC" PHA
- LDX 8
- EOR ("CRC-H")
- STA ("CRC-H")
- "DC-0" ASL ("CRC-L")
- ROL ("CRC-H")
- BCC "DC-1"
- LDA &21
- EOR ("CRC-L")
- STA ("CRC-L")
- LDA &10
- EOR ("CRC-H")
- STA ("CRC-H")
- "DC-1" DEX
- BNE "DC-0"
- PLA
- RTS
-
- "X-LOAD" LDA ("STATUS")
- BEQ "X-LOAD1"
- LDY 8
- "X-LOAD0" LDA "EOT"
- JSR "+CHROUT"
- DEY
- BNE "X-LOAD0"
- JMP "EX-OK"
- "X-LOAD1" LDA ("LASTGOOD")
- BEQ "X-LOAD7"
- LDA ("PREVMODE")
- BEQ "X-LOAD2"
- LDA 0
- STA ("PREVMODE")
- JSR "ALTBLOCK"
- INC ("BLOCKNBR")
- JMP "X-LOAD7"
- "X-LOAD2" JSR "ALTBLOCK"
- JSR "INCBLK"
- JSR "CLRCHN"
- LDX 8
- JSR "CHKIN"
- LDY 0
- STY ("ERRORNBR")
- STY ("PADCHAR")
- STY ("KSTATUS")
- "X-LOAD3" LDA ("STATUS")
- BEQ "X-LOAD4"
- LDA ("PADCHAR")
- JMP "X-LOAD6"
- "X-LOAD4" JSR "CHRIN"
- PHA
- LDA ("STATUS")
- ORA ("KSTATUS")
- STA ("STATUS")
- LDX 26
- PLA
- CMP 26
- BNE "X-LOAD5"
- LDX 0
- "X-LOAD5" STX ("PADCHAR")
- "X-LOAD6" STA ["ZTMP1L"],Y
- INY
- BNE "X-LOAD3"
- INC ("ZTMP1H")
- DEC ("PAGECNT")
- BNE "X-LOAD3"
- JSR "+CLRCHN"
- "X-LOAD7" RTS
-
- "X-SEND" JSR "SETBLOCK"
- LDA "STX"
- JSR "+CHROUT"
- LDA ("BLOCKNBR")
- JSR "+CHROUT"
- EOR &FF
- JSR "+CHROUT"
- LDY 0
- STY ("LASTGOOD")
- "X-SEND0" LDA ["ZTMP1L"],Y
- JSR "DOCRC"
- JSR "+CHROUT"
- INY
- BNE "X-SEND0"
- INC ("ZTMP1H")
- DEC ("PAGECNT")
- BNE "X-SEND0"
- LDA ("CRC-H")
- JSR "+CHROUT"
- LDA ("CRC-L")
- JMP "+CHROUT"
-
- "INIT" LDA (788)
- STA ("IRQSAVL")
- LDA (789)
- STA ("IRQSAVH")
- SEI
- LDA L"XIRQ"
- STA (788)
- LDA H"XIRQ"
- STA (789)
- CLI
- LDA ("XUP-MAX1")
- DEX
- TXA
- EOR &FF
- STA ("MAXBYTE2")
- LDA ("XUP-MAX2")
- EOR &FF
- STA ("MAXBYTE3")
- LDX 39
- "IN-0" LDA ("IN.TAB"),X
- ORA 128
- STA (1984),X
- LDA ("IN.COL"),X
- STA (56256),X
- DEX
- BPL "IN-0"
- LDA ("MDM-MODE")
- STA ("MDMSAVE")
- LDA 0
- STA ("KILLOUT")
- STA ("MDM-MODE")
- STA ("KSTATUS")
- STA ("STATUS")
- "+CLRCHN" JSR "CLRCHN"
- LDX 2
- JSR "CHKIN"
- LDX 2
- JSR "CHKOUT"
- LDY 0
- RTS
-
- "JIFFYZ" LDX 0
- STX ("JIFFY1")
- STX ("JIFFY2")
- STX ("JIFFY3")
- RTS
-
- "ALTBLOCK" LDA ("BUFFNBR")
- EOR 1
- STA ("BUFFNBR")
- "SETBLOCK" LDX L"XBUF1"
- LDY H"XBUF1"
- LDA ("BUFFNBR")
- BEQ "SB-0"
- LDX L"XBUF2"
- LDY H"XBUF2"
- "SB-0" STX ("ZTMP1L")
- STY ("ZTMP1H")
- LDY 4
- STY ("PAGECNT")
- LDY 0
- STY ("CRC-L")
- STY ("CRC-H")
- RTS
-
- "DISPCLR" PHA
- LDA 160
- STA (1984),X
- INX
- STA (1984),X
- PLA
- RTS
-
- "DISPBYTE" STY ("DB-Y")
- PHA
- PHA
- JSR "DSP-HI"
- PLA
- JSR "DSP-LO"
- DF &A0
- "DB-Y" DF &00
- PLA
- RTS
-
- "DSP-HI" LSR
- LSR
- LSR
- LSR
- "DSP-LO" AND 15
- TAY
- LDA ("DSP.TAB"),Y
- STA (1984),X
- INX
- RTS
-
- "INCERR" INC ("ERRORNBR")
- LDA ("ERRORNBR")
- LDX 1
- CMP 10
- BNE "IE-0"
- JMP "EX-TIME"
- "IE-0" INC (2022),X
- LDA (2022),X
- CMP 186
- BNE "IE-1"
- LDA 176
- STA (2022),X
- DEX
- BPL "IE-0"
- "IE-1" RTS
-
- "INCBLK" INC ("BLOCKNBR")
- LDX 3
- "IB-0" INC (2015),X
- LDA (2015),X
- CMP 186
- BNE "IB-1"
- LDA 176
- STA (2015),X
- DEX
- BPL "IB-0"
- "IB-1" RTS
-
- "+CHROUT" JSR "CHROUT"
- LDX 25
- JMP "DISPBYTE"
-
- '======================================
- ' ═AIN RECV-FILE ROUTINE...
-
- "X-RCV" TSX
- STX ("STACKSAV")
- JSR "INIT"
- LDA 0
- STA ("XFERFLAG")
- INC ("BLOCKNBR")
- "X-RCV0" JSR "INCERR"
- LDA ("XFERFLAG")
- BNE "X-RCV1"
- LDA "CRC"
- LDX ("ERRORNBR")
- CPX 4
- BCC "X-RCV2"
- LDA 0
- STA ("CRCFLAG")
- "X-RCV1" LDA "NAK"
- "X-RCV2" PHA
- JSR "SETBLOCK"
- PLA
- JSR "JIFFYZ"
- JSR "+CHROUT"
- JSR "X-RECV"
- BCS "X-RCV0"
- LDA ("PREVMODE")
- BNE "X-RCV3"
- JSR "X-SAVE"
- "X-RCV3" LDA 1
- STA ("XFERFLAG")
- LDY 0
- STY ("PREVMODE")
- LDA "ACK"
- JMP "X-RCV2"
-
- ' GET A BLOCK FROM MODEM...
-
- "X-RECV" LDY 124
- STY ("RCVD-L")
- LDY 255
- STY ("RCVD-H")
- INY
- STY ("1STBYTE")
- LDA ("CRCFLAG")
- BEQ "X-RECV1"
- DEC ("RCVD-L")
- "X-RECV1" JSR "GETBYTE"
- BCS "X-RECV4"
- STA ("LASTCHAR")
- LDY 0
- STA ["ZTMP1L"],Y
- LDX ("1STBYTE")
- BNE "X-RECV2"
- STA ("BLKTYPE")
- INC ("1STBYTE")
- CMP "EOT"
- BNE "X-RECV11"
- CLC
- RTS
- "X-RECV11" CMP "SOH"
- BEQ "X-RECV2"
- CMP "CAN"
- BNE "X-RECV12"
- DEY
- STA ("RCVD-H")
- DEY
- STA ("RCVD-L")
- LDY 0
- BEQ "X-RECV2"
- "X-RECV12" LDX 0
- CMP "STX"
- BNE "X-RECV9"
- LDA ("RCVD-H")
- SEC
- SBC 4
- STA ("RCVD-H")
- LDA ("RCVD-L")
- SEC
- SBC 128
- STA ("RCVD-L")
- "X-RECV2" JSR "INCPTR"
- BNE "X-RECV1"
- BEQ "X-RECV5"
- "X-RECV4" SEC
- RTS
- "X-RECV5" JSR "SETBLOCK"
- LDA ("BLKTYPE")
- CMP "CAN"
- BNE "X-RECV13"
- LDX 0
- CMP ("LASTCHAR")
- BNE "X-RECV9"
- JMP "EX-CAN"
- "X-RECV13" JSR "GOTODATA"
- "X-RECV6" LDA ["ZTMP1L"],Y
- JSR "DOSUM"
- JSR "INCPTR"
- BNE "X-RECV6"
- JSR "GETDISP"
- "X-RECV8" LDX 42
- LDA ["ZTMP1L"],Y
- CMP ("CRC-H")
- BNE "X-RECV9"
- LDA ("CRCFLAG")
- BEQ "X-RECV9"
- INY
- LDA ["ZTMP1L"],Y
- CMP ("CRC-L")
- "X-RECV9" BNE "X-PURGE"
- JSR "SETBLOCK"
- LDY 2
- LDA ["ZTMP1L"],Y
- DEY
- EOR &FF
- LDX 28
- CMP ["ZTMP1L"],Y
- BNE "X-PURGE"
- CMP ("BLOCKNBR")
- BNE "X-RECV10"
- CLC
- RTS
- "X-RECV10" TAX
- INX
- CPX ("BLOCKNBR")
- BNE "X-PURGE"
- DEC ("BLOCKNBR")
- JSR "ALTBLOCK"
- LDA 1
- STA ("PREVMODE")
- "X-PURGE" JSR "JIFFYZ"
- "X-PUR0" JSR "GETIN"
- LDA ("RSSTAT")
- BEQ "X-PURGE"
- LDA ("JIFFY3")
- CMP 60
- BCC "X-PUR0"
- RTS
-
- "GOTODATA" JSR "SETBLOCK"
- LDA ["ZTMP1L"],Y
- LDX 128
- LDY 255
- CMP "STX"
- BNE "GOTO1"
- LDX 0
- LDY 252
- "GOTO1" STX ("RCVD-L")
- STY ("RCVD-H")
- LDA ("ZTMP1L")
- CLC
- ADC 3
- STA ("ZTMP1L")
- BCC "GOTO0"
- INC ("ZTMP1H")
- "GOTO0" LDY 0
- RTS
-
- "X-SAVE" JSR "SETBLOCK"
- LDY 0
- LDA ["ZTMP1L"],Y
- PHA
- JSR "ALTBLOCK"
- LDA ["ZTMP1L"],Y
- STA ("BLKTYPE")
- LDX ("XFERFLAG")
- BEQ "X-SAVE3"
- JSR "GOTODATA"
- LDA ("RCVD-L")
- EOR &FF
- CLC
- ADC ("ZTMP1L")
- STA ("ZTMP2L")
- LDA ("RCVD-H")
- EOR &FF
- ADC ("ZTMP1H")
- STA ("ZTMP2H")
- JSR "CLRCHN"
- LDX 8
- JSR "CHKOUT"
- LDY 0
- "X-SAVE1" LDA ["ZTMP1L"],Y
- JSR "CHROUT"
- INC ("MAXBYTE1")
- BNE "X-SAVE5"
- INC ("MAXBYTE2")
- BNE "X-SAVE5"
- INC ("MAXBYTE3")
- BNE "X-SAVE5"
- JMP "EX-FULL"
- "X-SAVE5" JSR "INCPTR"
- BNE "X-SAVE1"
- "X-SAVE3" JSR "+CLRCHN"
- PLA
- CMP "EOT"
- BEQ "X-SAVE4"
- JMP "INCBLK"
- "X-SAVE4" LDA "ACK"
- JSR "+CHROUT"
- JMP "EX-OK"
-
- "INCPTR" INC ("ZTMP1L")
- BNE "INCPTR0"
- INC ("ZTMP1H")
- "INCPTR0" INC ("RCVD-L")
- BNE "INCPTR1"
- INC ("RCVD-H")
- "INCPTR1" RTS
-
- "DECPTR" LDX ("ZTMP2L")
- BNE "DECPTR0"
- DEC ("ZTMP2H")
- "DECPTR0" DEC ("ZTMP2L")
- INC ("RCVD-L")
- BNE "DECPTR1"
- INC ("RCVD-H")
- "DECPTR1" RTS
-
- "XIRQ" INC ("JIFFY3")
- BNE "XI00"
- INC ("JIFFY2")
- "XI00" JMP 60030
-