home *** CD-ROM | disk | FTP | other *** search
- '╪MODEM MODULE
- 'BY ┴.╥.┬. AS OF 910724
-
- ORG 40961
-
- JMP "X-RCV"
- JMP "X-SEND"
-
- NAM "P-╪═╧─┼═"
- HDR "A/DICT"
-
- "EOT" DFL 4
- "ACK" DFL 6
- "NAK" DFL 21
- "CAN" DFL 24
-
- "KEYCHAR" DFL 631
- "RSSTAT" DFL 663
-
- "XBUF1" DFL 42990
- "XBUF2" DFL 44020
-
- ' ═AIN ╪MODEM SEND ROUTINE
-
- "X-SEND" TSX
- STX ("STACKSAV")
- JSR "X-INIT"
- JSR "XSGETBLK"
- "X-S0" JSR "JIFFYZ"
- "X-S1" LDA ("ERRCNT")
- ORA $0
- STA (1994)
- LDA 1
- JSR "GETBYTE"
- CMP L"CRC"
- BEQ "X-S.CRC"
- CMP L"CAN"
- BEQ "X-S.CAN"
- "X-S2" CMP L"ACK"
- BEQ "X-S.ACK"
- "X-S3" CMP L"NAK"
- BNE "X-S1"
-
- ' ╥ECEIVED ╬┴╦ HANDLER
-
- "X-S.NAK" LDA ("SUM-MODE")
- BPL "X-S.N00"
- LDA 1
- STA ("SUM-MODE")
- "X-S.N00" LDA $N
- STA (1987)
- INC ("ERRCNT")
- LDX ("ERRCNT")
- CPX 10
- BNE "X-S.SND"
- BEQ "EX-CANX"
-
- ' ╥ECEIVED ├╥├ HANDLER
-
- "X-S.CRC" LDA ("SUM-MODE")
- BPL "X-S1"
- INC ("SUM-MODE")
- LDA $R
- STA (1987)
- BNE "X-S.SND"
-
- ' ╥ECEIVED ├┴╬ HANDLER
-
- "X-S.CAN" LDA $C
- STA (1987)
- BNE "EX-CANX"
-
- ' ╥ECEIVED ┴├╦ HANDLER
-
- "X-S.ACK" LDA $A
- STA (1987)
- JSR "XSGETBLK"
- "X-S.SND" JSR "XSSNDBLK"
- JMP "X-S0"
-
- ' ├ARRIER LOSS CHECK/HANDLER
-
- "CARCHECK" LDA ("CARRIER")
- AND 16
- BNE "EXIT"
- RTS
-
- ' ┼XIT FILE TRANSFER
- "EX-OK" LDA 0
- DF &2C
- "EX-TIME" LDA 1
- DF &2C
- "EX-CANX" LDA 2
- DF &2C
- "EX-ABRT" LDA 3
- DF &2C
- "EX-FULL" LDA 5
-
- "EXIT" STA (".A.")
- LDX ("STACKSAV")
- TXS
- LDX $E
- CMP 0
- BEQ "EXIT0"
- JSR "+CLRCHN"
- LDA L"CAN"
- JSR "CHROUT"
- LDA L"CAN"
- JSR "CHROUT"
- LDA 8
- JSR "CHROUT"
- LDA 8
- JSR "CHROUT"
- LDX $C
- "EXIT0" STX (1987)
- JSR "CLRCHN"
- LDA ("MDMSAVE")
- STA ("MDM-MODE")
- LDA (".A.")
- RTS
-
- ' ╠OCAL ABORT CHECK/HANDLER
-
- "KEYCHECK" LDA ("KEY?")
- BEQ "KEYCH0"
- DEC ("KEY?")
- LDA ("KEYCHAR")
- CMP L"CAN"
- BNE "EX-ABRT"
- "KEYCH0" RTS
-
- ' ═AIN ╪MODEM RECEIVE ROUTINE
-
- "X-RCV" TSX
- STX ("STACKSAV")
- JSR "X-INIT"
- "XMODR00" JSR "X-R.NAK"
- "XMODR18" JSR "JIFFYZ"
- TAY
- "XMODR02" LDA 0
- JSR "GETBYTE"
- BCS "XMODR00"
- "XMODR03" JSR "DISPBYT"
- STA ("BLOCK"),Y
- LDA ("BLOCK")
- CMP L"CAN"
- BNE "XMODR23"
- JMP "EX-CANX"
- "XMODR23" INY
- LDA 32
- STA (1987)
- JSR "JIFFYZ"
- LDA ("BLOCK")
- CMP L"EOT"
- BEQ "XMODR10"
- "XMODR04" CPY 132
- BNE "XMODR02"
- "XMODR05" JSR "XVALID?"
- BCC "XMODR060"
- BEQ "XMODR06"
- JMP "XMODR21"
- "XMODR06" JSR "XPURGE"
- JMP "XMODR00"
- "XMODR060" JSR "COUNTER" 'SAVE BLOCK
- LDA ("XRBLKFLG")
- BEQ "XMODR11"
- "XMODR10" JSR "XRSAVBLK"
- LDA ("BLOCK")
- CMP L"EOT"
- BNE "XMODR11"
- JSR "X-R.ACK"
- JMP "EX-OK"
- "XMODR11" JSR "BUFFSWAP"
- "XMODR21" JSR "X-R.ACK"
- JMP "XMODR18"
-
- "X-R.NAK" LDA ("SUM-MODE")
- BPL "X-R.N00"
- INC ("ERRCNT")
- LDA ("ERRCNT")
- CMP 4
- BCS "X-R.N01"
- LDA 1
- STA ("SUM-MODE")
- BEQ "X-R.N00"
- "X-R.N01" LDA 0
- STA ("SUM-MODE")
- LDA $C
- BEQ "X-R.N02"
- "X-R.N00" LDA $N
- "X-R.N02" STA (1987)
- INC ("ERRCNT")
- LDX ("ERRCNT")
- CPX 10
- BCS "X-R.TIME"
- TXA
- ORA $0
- STA (1994)
- LDA L"NAK"
- JMP "CHROUT"
-
- "X-R.TIME" JMP "EX-TIME"
-
- "X-R.ACK" LDA $A 'SEND ┴├╦
- STA (1987)
- LDA 0
- STA ("ERRCNT")
- ORA $0
- STA (1994)
- LDA L"ACK"
- STA ("XRBLKFLG")
- JMP "CHROUT"
-
- ' ╟ET A BYTE FROM MODEM W/ ERROR CHECK
-
- "GETBYTE" STA ("SNDFLAG")
- LDA 0
- STA ("RSSTAT")
- "GB00" JSR "CARCHECK"
- JSR "KEYCHECK"
- JSR "GETIN"
- LDX ("RSSTAT")
- BEQ "GB03"
- LDA ("JIFFY2")
- LDX ("SNDFLAG")
- BEQ "GB01"
- CMP 23
- BNE "GB00"
- JMP "EX-TIME"
- "GB01" CMP 3
- BEQ "GB02"
- CMP 2
- BNE "GB00"
- LDA ("JIFFY3")
- CMP 88
- BNE "GB00"
- "GB02" SEC
- RTS
- "GB03" CLC
- RTS
-
- ' ╪MODEM OUTPUT BLOCK ROUTINE
-
- "XSSNDBLK" LDY 0
- LDA ("BUFFER")
- CMP L"EOT"
- BNE "XSS0"
- JSR "CHROUT"
- LDA $*
- STA (1984)
- STA (1985)
- JMP "EX-OK"
- "XSS0" LDA ("BUFFER"),Y
- JSR "DISPBYT"
- JSR "CHROUT"
- DEC ("MAXBYTE1")
- BNE "XSS1"
- LDA 254
- STA ("MAXBYTE1")
- DEC ("MAXBYTE2")
- LDA ("MAXBYTE2")
- CMP 255
- BNE "XSS1"
- DEC ("MAXBYTE3")
- LDA ("MAXBYTE3")
- CMP 255
- BEQ "XSS2"
- "XSS1" INY
- CPY 132
- BNE "XSS0"
- LDA 32
- STA (1984)
- STA (1985)
- RTS
- "XSS2" JMP "EX-FULL"
-
- ' ╪MODEM READ DISK BLOCK ROUTINE
-
- "XSGETBLK" LDA 0
- STA ("ERRCNT")
- LDA ("STATUS")
- BEQ "XMG0"
- LDA L"EOT"
- STA ("BUFFER")
- RTS
- "XMG0" JSR "COUNTER"
- LDX 1
- INC ("BUFFER"),X
- LDA ("BUFFER"),X
- EOR 255
- INX
- STA ("BUFFER"),X
- LDX 0
- STX (".A.")
- LDX 8
- JSR "CHKIN"
- LDY 3
- "XMG1" LDX ("STATUS")
- BEQ "XMG2"
- LDA ("PADCHAR")
- CLC
- BCC "XMG4"
- "XMG2" JSR "CHRIN"
- LDX 0
- CMP 0
- BNE "XMG3"
- LDX 26
- "XMG3" STX ("PADCHAR")
- "XMG4" STA ("BUFFER"),Y
- CLC
- ADC (".A.")
- STA (".A.")
- LDA ("STATUS")
- ORA ("KSTATUS")
- STA ("STATUS")
- INY
- CPY 131
- BNE "XMG1"
- LDA (".A.")
- STA ("BUFFER"),Y
- "+CLRCHN" JSR "CLRCHN"
- LDX 2
- JSR "CHKOUT"
- LDX 2
- JMP "CHKIN"
-
- ' ╙AVE ╪MODEM BLOCK (STRIPPER REMOVED)
-
- "XRSAVBLK" JSR "BUFFSWAP"
- JSR "CLRCHN"
- LDX 8
- JSR "CHKOUT"
- LDY 3
- "XRS0" CPY (".A.")
- BEQ "XRS1"
- LDA ("BUFFER"),Y
- JSR "CHROUT"
- INY
- JMP "XRS0"
- "XRS1" JMP "+CLRCHN"
-
- ' ╪MODEM INITIALIZATION
-
- "X-INIT" LDX ("XUP-MAX1")
- DEX
- STX ("MAXBYTE2")
- LDX ("XUP-MAX2")
- STX ("MAXBYTE3")
- LDX 3
- LDA $0
- "X-I0" STA (1989),X
- DEX
- BPL "X-I0"
- LDX 39
- LDA 3
- "X-I1" STA (56256),X
- DEX
- BPL "X-I1"
- LDA ("MDM-MODE")
- STA ("MDM-SAVE")
- LDA 0
- STA ("KILLOUT")
- STA ("MDM-MODE")
- STA ("KSTATUS")
- STA ("STATUS")
- JMP "+CLRCHN"
-
- ' ╪MODEM ╥ECEIVER PURGE ROUTINE
-
- "XPURGE" JSR "JIFFYZ"
- "XPUR0" JSR "CARCHECK"
- JSR "GETIN"
- LDA ("RSSTAT")
- BEQ "XPURGE"
- LDA ("JIFFY3")
- BPL "XPUR0"
- RTS
-
- ' ├HECK IF BAD BLOCK. ├=1 IF BAD.
- ' ├=1, ┴=1 IF PREV BLOCK.
-
- "XVALID?" JSR "BUFFSET"
- STY ("1KFLAG")
- LDA ["ZTMP1L"],Y
- CMP 1
- BEQ "XV5"
- CMP 2
- BNE "XV3"
- STA ("1KFLAG")
- "XV5" INY
- LDA ["ZTMP1L"],Y
- CMP ("BLKNUM")
- BEQ "XV0"
- DEC ("BLKNUM")
- CMP ("BLKNUM")
- BNE "XV3.0"
- INY
- LDA ["ZTMP1L"],Y
- EOR 255
- CMP ("BLKNUM")
- BNE "XV3.0"
- JMP "XV4"
- "XV0" EOR 255
- INY
- CMP ["ZTMP1L"],Y
- BNE "XV3"
- "XV1" LDA ["ZTMP1L"],Y
- JSR "CHKSUM"
- INC ("ZTMP1L")
- BNE "XV1.0"
- INC ("ZTMP1H")
- "XV1.0" LDA ("REMAINL")
- BNE "XV1.1"
- DEC ("REMAINH")
- BMI "XV1.2"
- "XV1.1" DEC ("REMAINL")
- JMP "XV1"
- "XV1.2" LDA ("SUM-MODE")
- BEQ "XV2"
- LDA ["ZTMP1L"],Y
- JSR "CHKSUM"
- INY
- LDA ["ZTMP1L"],Y
- JSR "CHKSUM"
- LDA ("CRC-SUML")
- ORA ("CRC-SUMH")
- BNE "XV3"
- CLC
- RTS
- "XV2" CMP ["ZTMP1L"],Y
- BNE "XV3"
- CLC
- RTS
- "XV3.0" INC ("BLKNUM")
- "XV3" LDA 0
- SEC
- RTS
- "XV4" LDA 1
- SEC
- RTS
-
- ' ╙ET BUFFER & INITIALIZE CHECKSUMS
-
- "BUFFSWAP" LDA ("BUFFNBR")
- EOR 1
- STA ("BUFFNBR")
- "BUFFSET" LDA 128
- STA ("REMAINL")
- LDA 0
- STA ("REMAINH")
- LDX L"XBUF1"
- LDY H"XBUF1"
- LDA ("BUFFNBR")
- BEQ "SB00"
- LDA 0
- STA ("REMAINL")
- LDA 4
- STA ("REMAINH")
- LDX L"XBUF2"
- LDY H"XBUF2"
- "SB00" STX ("ZTMP1L")
- STY ("ZTMP1H")
- LDY 0
- STY ("ADD-SUM")
- STY ("CRC-SUML")
- STY ("CRC-SUMH")
- RTS
-
- ' ╒PDATE CHECKSUM FOR BYTE IN .┴.
-
- "CHKSUM" PHA
- CLC
- ADC ("ADD-SUM")
- STA ("ADD-SUM")
- PLA
- PHA
- LDX 8
- EOR ("CRC-SUMH")
- STA ("CRC-SUMH")
- "CH00" ASL ("CRC-SUML")
- ROL ("CRC-SUMH")
- BCC "CH01"
- LDA &21
- EOR ("CRC-SUML")
- STA ("CRC-SUML")
- LDA &10
- EOR ("CRC-SUMH")
- STA ("CRC-SUMH")
- "CH01" DEX
- BNE "CH00"
- PLA
- RTS
-
- ' ╥ESET TIMER
-
- "JIFFYZ" LDA 0
- STA ("JIFFY1")
- STA ("JIFFY2")
- STA ("JIFFY3")
- RTS
-
- ' ─ISPLAY DATABYTE IN HEX
-
- "DISPBYT" STY (".A.")
- PHA
- PHA
- JSR "DISP.HI"
- STA (1984)
- PLA
- JSR "DISP.LO"
- STA (1985)
- PLA
- LDY (".A.")
- RTS
-
- ' ├ONVERT NIBBLE TO HEX
-
- "DISP.HI" LSR
- LSR
- LSR
- LSR
- "DISP.LO" AND 15
- TAY
- LDA ("DISPTAB"),Y
- RTS
-
- ' ╔NCREMENT BLOCK COUNTER
-
- "COUNTER" LDX 3
- "CNTR1" INC (1989),X
- LDA (1989),X
- CMP $:
- BNE "CNTR2"
- LDA $0
- STA (1989),X
- DEX
- BPL "CNTR1"
- "CNTR2" RTS
-
- "STACKSAV" DF &00
- "MDMSAVE" DF &00
- "SNDFLAG" DF &00
- "XRBLKFLG" DF &00
- "BLKNUM" DF &00
- "ERRCNT" DF &00
- "PADCHAR" DF &00
- "BUFFNBR" DF &00
- "1KFLAG" DF &01
- "REMAINL" DF &00
- "REMAINH" DF &00
- "SUM-MODE" DF &FF
- "ADD-SUM" DF &00
- "CRC-SUML" DF &00
- "CRC-SUMH" DF &00
- "MAXBYTE1" DF &FE
- "MAXBYTE2" DF &00
- "MAXBYTE3" DF &00
-
- "DISPTAB" DF $0123456789ABCDEF
-