home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128BBS / DTJMODSRC.ARC / A / P-PUNTER < prev    next >
Encoding:
Text File  |  2019-04-13  |  14.3 KB  |  688 lines

  1.            '─╘╩ ╨UNTER
  2.            'MODIFIED FROM ╚╔╙ LISTING
  3.            'AS OF ╩ULY 4, 1991
  4.  
  5.            ORG 40961
  6.  
  7.            NAM "P-PUNTER"
  8.  
  9.            JMP "MAINRCV"
  10.            JMP "MAINSND"
  11.  
  12. "CODES"    DF $GOOBADACKS/BSYN
  13.  
  14.            HDR "A/P-PUNTER.HDR"
  15.  
  16. '┴CCEPT CHARACTER & CHECK FOR CODES
  17. "ACCEPT"   STA ("BITPAT")
  18.            LDA 0
  19.            STA ("CODEBUF0")
  20.            STA ("CODEBUF1")
  21.            STA ("CODEBUF2")
  22. "ACC00"    LDA 0
  23.            STA ("TIMERL")
  24.            STA ("TIMERH")
  25. "ACC01"    JSR "CARCHECK"
  26.            JSR "GETNUM"
  27.            LDA (251)
  28.            BNE "ACC06"
  29.            LDA ("CODEBUF1")
  30.            STA (1987)
  31.            STA ("CODEBUF0")
  32.            LDA ("CODEBUF2")
  33.            STA (1988)
  34.            STA ("CODEBUF1")
  35.            LDA (512)
  36.            STA (1989)
  37.            STA ("CODEBUF2")
  38.            LDA 0
  39.            STA ("BITCNT")
  40.            LDA 1
  41.            STA ("BITPNT")
  42. "ACC02"    LDA ("BITPAT")
  43.            BIT ("BITPNT")
  44.            BEQ "ACC04"
  45.            LDY ("BITCNT")
  46.            LDX 0
  47. "ACC03"    LDA ("CODEBUF0"),X
  48.            CMP ("CODES"),Y
  49.            BNE "ACC04"
  50.            INY
  51.            INX
  52.            CPX 3
  53.            BNE "ACC03"
  54.            JMP "ACC05"
  55. "ACC04"    ASL ("BITPNT")
  56.            LDA ("BITCNT")
  57.            CLC
  58.            ADC 3
  59.            STA ("BITCNT")
  60.            CMP 15
  61.            BNE "ACC02"
  62.            JMP "ACC00"
  63. "ACC05"    LDA 255
  64.            STA ("TIMERL")
  65.            STA ("TIMERH")
  66.            JMP "ACC01"
  67. "ACC06"    INC ("TIMERL")
  68.            BNE "ACC07"
  69.            INC ("TIMERH")
  70. "ACC07"    LDA ("TIMERH")
  71.            ORA ("TIMERL")
  72.            BEQ "ACC08"
  73.            LDA ("TIMERL")
  74.            CMP 7
  75.            LDA ("TIMERH")
  76.            CMP 20
  77.            BCC "ACC010"
  78.            LDA 1
  79.            STA (251)
  80.            JMP "DOD00"
  81. "ACC010"   JMP "ACC01"
  82. "ACC08"    LDA 0
  83.            STA (251)
  84.            RTS
  85.  
  86. '╟ET A BYTE FROM MODEM
  87. "GETNUM"   TYA
  88.            PHA
  89.            LDA 2
  90.            LDY (668)
  91.            CPY (667)
  92.            BEQ "GET01"
  93.            LDA [247],Y
  94.            STA (512)
  95.            JSR "DISPDATA"
  96.            INC (668)
  97.            LDA 0
  98.            STA (162)
  99.            STA (161)
  100. "GET01"    STA (251)
  101.            LDA (161)
  102.            CMP 14
  103.            BCS "GET02"
  104.            PLA
  105.            TAY
  106.            RTS
  107. "GET02"    LDA 1
  108.            JMP "EXIT"
  109.  
  110. "EXITFLG"  DF &00
  111.  
  112. '╧UTPUT CODE TO MODEM
  113. "SENDCODE" LDX 0
  114. "OUT00"    LDA ("CODES"),Y
  115.            JSR "CHROUT"
  116.            STA (1987),X
  117.            JSR "DISPDATA"
  118.            INY
  119.            INX
  120.            CPX 3
  121.            BNE "OUT00"
  122.            RTS
  123.  
  124. '─O HANDSHAKE
  125. "RECHAND"  STA ("GBSAVE")
  126.            LDA 0
  127.            STA ("DELAY")
  128. "RCH00"    LDA 2
  129.            STA (98)
  130.            LDY ("GBSAVE")
  131.            JSR "SENDCODE"
  132. "RCH01"    LDA 4
  133.            JSR "ACCEPT"
  134.            LDA (251)
  135.            BEQ "RCH02"
  136.            DEC (98)
  137.            BNE "RCH01"
  138.            JMP "RCH00"
  139. "RCH02"    LDY 9
  140.            JSR "SENDCODE"
  141.            LDA ("ENDFLAG")
  142.            BEQ "RCH03"
  143.            LDA ("GBSAVE")
  144.            BEQ "RCH05"
  145. "RCH03"    LDA ("BUFFER4")
  146.            STA ("BUFCOUNT")
  147.            STA ("RECSIZE")
  148.            JSR "RECMODEM"
  149.            LDA (251)
  150.            CMP 2
  151.            BEQ "RCH02"
  152.            CMP 8
  153.            BEQ "RCH02"
  154.            RTS
  155. "RCH05"    LDA 16
  156.            JSR "ACCEPT"
  157.            LDA (251)
  158.            BNE "RCH02"
  159.            LDA 10
  160.            STA ("BUFCOUNT")
  161. "RCH06"    LDY 12
  162.            JSR "SENDCODE"
  163.            LDA 8
  164.            JSR "ACCEPT"
  165.            LDA (251)
  166.            BEQ "RCH07"
  167.            DEC ("BUFCOUNT")
  168.            BNE "RCH06"
  169. "RCH07"    RTS
  170.  
  171. '╚ANDSHAKE FOR XMIT END
  172. "TRANHAND" LDA 1
  173.            STA ("DELAY")
  174. "HAN00"    LDA ("SPECMODE")
  175.            BEQ "HAN01"
  176.            LDY 0
  177.            JSR "SENDCODE"
  178. "HAN01"    LDA 11
  179.            JSR "ACCEPT"
  180.            LDA (251)
  181.            BNE "HAN00"
  182.            LDA 0
  183.            STA ("SPECMODE")
  184.            LDA ("BITCNT")
  185.            BNE "HAN05"
  186.            LDA ("ENDFLAG")
  187.            BNE "HAN07"
  188.            JSR "INCR"
  189.            INC ("BLOCKNM0")
  190.            BNE "HAN02"
  191.            INC ("BLOCKNM1")
  192. "HAN02"    JSR "THISBUF"
  193.            LDY 5
  194.            INY
  195.            LDA [100],Y
  196.            CMP 255
  197.            BNE "HAN03"
  198.            LDA 1
  199.            STA ("ENDFLAG")
  200.            LDA ("BUFPNT")
  201.            EOR 1
  202.            STA ("BUFPNT")
  203.            JSR "THISBUF"
  204.            JSR "DUM02"
  205.            JMP "HAN05"
  206. "HAN03"    JSR "DUMMYBLK"
  207. "HAN05"    LDY 6
  208.            JSR "SENDCODE"
  209.            LDA 8
  210.            JSR "ACCEPT"
  211.            LDA (251)
  212.            BNE "HAN05"
  213.            JSR "THISBUF"
  214.            LDY 4
  215.            LDA [100],Y
  216.            STA ("BUFCOUNT")
  217.            JSR "ALTBUF"
  218.            LDY 0
  219. "HAN06"    LDA [100],Y
  220.            JSR "CHROUT"
  221.            JSR "DISPDATA"
  222.            INY
  223.            CPY ("BUFCOUNT")
  224.            BNE "HAN06"
  225.            LDA 0
  226.            RTS
  227. "HAN07"    LDY 6
  228.            JSR "SENDCODE"
  229.            LDA 8
  230.            JSR "ACCEPT"
  231.            LDA (251)
  232.            BNE "HAN07"
  233.            LDA 10
  234.            STA ("BUFCOUNT")
  235. "HAN08"    LDY 12
  236.            JSR "SENDCODE"
  237.            LDA 16
  238.            JSR "ACCEPT"
  239.            LDA (251)
  240.            BEQ "HAN09"
  241.            DEC ("BUFCOUNT")
  242.            BNE "HAN08"
  243. "HAN09"    LDA 3
  244.            STA ("BUFCOUNT")
  245. "HAN10"    LDY 9
  246.            JSR "SENDCODE"
  247.            LDA 0
  248.            JSR "ACCEPT"
  249.            DEC ("BUFCOUNT")
  250.            BNE "HAN10"
  251.            LDA 1
  252.            RTS
  253.  
  254. '╥CV A BLOCK
  255. "RECMODEM" LDY 0
  256. "REC00"    LDA 0
  257.            STA ("TIMERL")
  258.            STA ("TIMERH")
  259. "REC01"    JSR "CARCHECK"
  260.            JSR "GETNUM"
  261.            LDA (251)
  262.            BNE "REC04"
  263.            LDA (512)
  264.            STA ("BUFFER0"),Y
  265.            CPY 3
  266.            BCS "REC02"
  267.            STA ("CODEBUF0"),Y
  268.            CPY 2
  269.            BNE "REC02"
  270.            LDA ("CODEBUF0")
  271.            CMP $A
  272.            BNE "REC02"
  273.            LDA ("CODEBUF1")
  274.            CMP $C
  275.            BNE "REC02"
  276.            LDA ("CODEBUF2")
  277.            CMP $K
  278.            BEQ "REC03"
  279. "REC02"    INY
  280.            CPY ("BUFCOUNT")
  281.            BNE "REC00"
  282.            LDA 1
  283.            STA (251)
  284.            JMP "CARCHECK"
  285. "REC03"    LDA 255
  286.            STA ("TIMERL")
  287.            STA ("TIMERH")
  288.            JMP "REC01"
  289. "REC04"    INC ("TIMERL")
  290.            BNE "REC05"
  291.            INC ("TIMERH")
  292. "REC05"    LDA ("TIMERL")
  293.            ORA ("TIMERH")
  294.            BEQ "REC07"
  295.            LDA ("TIMERL")
  296.            CMP 6
  297.            LDA ("TIMERH")
  298.            CMP 16
  299.            BNE "REC01"
  300.            LDA 2
  301.            STA (251)
  302.            CPY 0
  303.            BEQ "REC06"
  304.            LDA 4
  305.            STA (251)
  306. "REC06"    JMP "DOD00"
  307. "REC07"    LDA 8
  308.            STA (251)
  309.            JMP "CARCHECK"
  310.  
  311. '├REATE A DUMMY BLOCK
  312. "DUMMYBLK" LDA ("BUFPNT")
  313.            EOR 1
  314.            STA ("BUFPNT")
  315.            JSR "THISBUF"
  316.            LDY 5
  317.            LDA ("BLOCKNM0")
  318.            CLC
  319.            ADC 1
  320.            STA [100],Y
  321.            INY
  322.            LDA ("BLOCKNM1")
  323.            ADC 0
  324.            STA [100],Y
  325.            JSR "CLRCHN"
  326.            LDX 8
  327.            JSR "CHKIN"
  328.            LDY 7
  329. "DUM00"    JSR "CHRIN"
  330.            STA [100],Y
  331.            INY
  332.            JSR "READST"
  333.            BNE "DUM01"
  334.            CPY ("MAXSIZE")
  335.            BNE "DUM00"
  336.            TYA
  337.            PHA
  338.            JMP "DUM03"
  339. "DUM01"    TYA
  340.            PHA
  341.            LDY 5
  342.            INY
  343.            LDA 255
  344.            STA [100],Y
  345.            BNE "DUM03"
  346. "DUM02"    PHA
  347. "DUM03"    JSR "DOD02"
  348.            JSR "RESET"
  349.            LDY 4
  350.            LDA [100],Y
  351.            STA ("BUFCOUNT")
  352.            JSR "ALTBUF"
  353.            PLA
  354.            LDY 4
  355.            STA [100],Y
  356.            JSR "CHECKSUM"
  357.            JMP "CARCHECK"
  358.  
  359. '╙ET UP BUFFER PRT
  360. "THISBUF"  LDA L"BUFFER0"
  361.            STA (100)
  362.            LDA ("BUFPNT")
  363.            CLC
  364.            ADC H"BUFFER0"
  365.            STA (101)
  366.            RTS
  367.  
  368. '╙ET UP BUFFER PRT (ALT)
  369. "ALTBUF"   LDA L"BUFFER0"
  370.            STA (100)
  371.            LDA ("BUFPNT")
  372.            EOR 1
  373.            CLC
  374.            ADC H"BUFFER0"
  375.            STA (101)
  376.            RTS
  377.  
  378. '─O CHECKSUM
  379. "CHECKSUM" LDA 0
  380.            STA ("CHECK10")
  381.            STA ("CHECK11")
  382.            STA ("CHECK12")
  383.            STA ("CHECK13")
  384.            LDY 4
  385. "CHK00"    LDA ("CHECK10")
  386.            CLC
  387.            ADC [100],Y
  388.            STA ("CHECK10")
  389.            BCC "CHK01"
  390.            INC ("CHECK11")
  391. "CHK01"    LDA ("CHECK12")
  392.            EOR [100],Y
  393.            STA ("CHECK12")
  394.            LDA ("CHECK13")
  395.            ROL
  396.            ROL ("CHECK12")
  397.            ROL ("CHECK13")
  398.            INY
  399.            CPY ("BUFCOUNT")
  400.            BNE "CHK00"
  401.            LDY 0
  402.            LDA ("CHECK10")
  403.            STA [100],Y
  404.            INY
  405.            LDA ("CHECK11")
  406.            STA [100],Y
  407.            INY
  408.            LDA ("CHECK12")
  409.            STA [100],Y
  410.            INY
  411.            LDA ("CHECK13")
  412.            STA [100],Y
  413.            RTS
  414.  
  415. '╘RANSMIT PROGRAM
  416. "TRANSMIT" LDA 0
  417.            STA ("ENDFLAG")
  418.            STA ("SKPDELAY")
  419.            STA ("DONTDASH")
  420.            LDA 1
  421.            STA ("BUFPNT")
  422.            LDA 255
  423.            STA ("BLOCKNM0")
  424.            STA ("BLOCKNM1")
  425.            JSR "ALTBUF"
  426.            LDY 4
  427.            LDA 7
  428.            STA [100],Y
  429.            JSR "THISBUF"
  430.            LDY 5
  431.            LDA 0
  432.            STA [100],Y
  433.            INY
  434.            STA [100],Y
  435. "TRA00"    JSR "TRANHAND"
  436.            BEQ "TRA00"
  437. "TRA01"    LDA 0
  438.            STA (512)
  439.            JMP "CARCHECK"
  440.  
  441. '╥CV PROGRAM
  442. "RECEIVE"  LDA 1
  443.            STA ("BLOCKNM0")
  444.            LDA 0
  445.            STA ("BLOCKNM1")
  446.            STA ("ENDFLAG")
  447.            STA ("BUFPNT")
  448.            STA ("BUFFER5")
  449.            STA ("BUFFER6")
  450.            STA ("SKPDELAY")
  451.            LDA 7
  452.            STA ("BUFFER4")
  453.            LDA 0
  454. "RCV00"    JSR "RECHAND"
  455.            LDA ("ENDFLAG")
  456.            BNE "TRA01"
  457.            JSR "MATCH"
  458.            BNE "RCV04"
  459.            LDA ("BUFCOUNT")
  460.            CMP 7
  461.            BEQ "RCV02"
  462.            JSR "INCR"
  463.            JSR "CLRCHN"
  464.            LDX 8
  465.            JSR "CHKOUT"
  466.            LDY 7
  467. "RCV01"    LDA ("BUFFER0"),Y
  468.            JSR "CHROUT"
  469.            INC ("BYTECNT")
  470.            BNE "RCV010"
  471.            LDA 2
  472.            STA ("BYTECNT")
  473.            LDA (&2B2)
  474.            BNE "RCV011"
  475.            LDA (&2B3)
  476.            BEQ "RCV040"
  477.            DEC (&2B3)
  478. "RCV011"   DEC (&2B2)
  479. "RCV010"   INY
  480.            CPY ("BUFCOUNT")
  481.            BNE "RCV01"
  482.            JSR "RESET"
  483. "RCV02"    LDA ("BUFFER6")
  484.            CMP 255
  485.            BNE "RCV03"
  486.            LDA 1
  487.            STA ("ENDFLAG")
  488. "RCV03"    LDA 0
  489.            JMP "RCV00"
  490. "RCV04"    LDA ("RECSIZE")
  491.            STA ("BUFFER4")
  492.            LDA 3
  493.            JMP "RCV00"
  494. "RCV040"   LDA 5
  495.            JMP "EXIT"
  496.  
  497. '─O CHECKSUMS MATCH?
  498. "MATCH"    LDA ("BUFFER0")
  499.            STA ("CHECK00")
  500.            LDA ("BUFFER1")
  501.            STA ("CHECK01")
  502.            LDA ("BUFFER2")
  503.            STA ("CHECK02")
  504.            LDA ("BUFFER3")
  505.            STA ("CHECK03")
  506.            JSR "THISBUF"
  507.            LDA ("RECSIZE")
  508.            STA ("BUFCOUNT")
  509.            JSR "CHECKSUM"
  510.            LDA ("BUFFER0")
  511.            CMP ("CHECK00")
  512.            BNE "MAT00"
  513.            LDA ("BUFFER1")
  514.            CMP ("CHECK01")
  515.            BNE "MAT00"
  516.            LDA ("BUFFER2")
  517.            CMP ("CHECK02")
  518.            BNE "MAT00"
  519.            LDA ("BUFFER3")
  520.            CMP ("CHECK03")
  521.            BNE "MAT00"
  522.            LDA 0
  523.            RTS
  524. "MAT00"    LDA 1
  525.            RTS
  526.  
  527. '╥ECIEVE A FILE TYPE BLOCK
  528. "RECTYPE"  LDA 0
  529.            STA ("BLOCKNM0")
  530.            STA ("BLOCKNM1")
  531.            STA ("ENDFLAG")
  532.            STA ("BUFPNT")
  533.            STA ("SKPDELAY")
  534.            LDA 7
  535.            CLC
  536.            ADC 1
  537.            STA ("BUFFER4")
  538.            LDA 0
  539. "RCT00"    JSR "RECHAND"
  540.            LDA ("ENDFLAG")
  541.            BNE "RCT02"
  542.            JSR "MATCH"
  543.            BNE "RCT01"
  544.            LDA ("BUFFER7")
  545.            STA ("FILETYPE")
  546.            LDA 1
  547.            STA ("ENDFLAG")
  548.            LDA 0
  549.            JMP "RCT00"
  550. "RCT01"    LDA ("RECSIZE")
  551.            STA ("BUFFER4")
  552.            LDA 3
  553.            JMP "RCT00"
  554. "RCT02"    LDA 0
  555.            STA (512)
  556.            RTS
  557.  
  558. '╘RANSMIT A FILE TYPE BLOCK
  559. "TRANTYPE" JSR "CARCHECK"
  560.            LDA 0
  561.            STA ("ENDFLAG")
  562.            STA ("SKPDELAY")
  563.            LDA 1
  564.            STA ("BUFPNT")
  565.            STA ("DONTDASH")
  566.            LDA 255
  567.            STA ("BLOCKNM0")
  568.            STA ("BLOCKNM1")
  569.            JSR "ALTBUF"
  570.            LDY 4
  571.            LDA 8
  572.            STA [100],Y
  573.            JSR "THISBUF"
  574.            LDY 5
  575.            LDA 255
  576.            STA [100],Y
  577.            INY
  578.            STA [100],Y
  579.            LDY 7
  580.            LDA ("FILETYPE")
  581.            STA [100],Y
  582.            LDA 1
  583.            STA ("SPECMODE")
  584. "TRT01"    JSR "TRANHAND"
  585.            BEQ "TRT01"
  586.            LDA 0
  587.            STA (512)
  588.            RTS
  589.  
  590. '─O DELAY TIMING
  591. "DODELAY"  JSR "CARCHECK"
  592. "DOD00"    INC ("SKPDELAY")
  593.            LDA ("SKPDELAY")
  594.            CMP 3
  595.            BCC "DOD01"
  596.            LDA 0
  597.            STA ("SKPDELAY")
  598.            LDA ("DELAY")
  599.            BEQ "DOD02"
  600.            BNE "DOD05"
  601. "DOD01"    LDA ("DELAY")
  602.            BEQ "DOD05"
  603. "DOD02"    LDX 0
  604. "DOD03"    LDY 0
  605. "DOD04"    INY
  606.            BNE "DOD04"
  607.            INX
  608.            CPX 120
  609.            BNE "DOD03"
  610. "DOD05"    RTS
  611.  
  612. '├HECK CARCHECK STATUS
  613. "CARCHECK" LDA ("CARRIER")
  614.            AND 16
  615.            BNE "EXIT"
  616.            LDA (198)
  617.            BEQ "DOD05"
  618.            DEC (198)
  619.            LDA (631)
  620.            CMP 24
  621.            BNE "DOD05"
  622.            LDA 3
  623. "EXIT"     LDX ("STACK")
  624.            TXS
  625.            PHA
  626.            LDA 76
  627.            STA (162)
  628. "EXI00"    LDA (162)
  629.            BNE "EXI00"
  630.            LDA (667)
  631.            STA (668)
  632.            LDA (252)
  633.            STA (679)
  634.            PLA
  635.            RTS
  636.  
  637. '═AIN RCV ENTRY
  638. "MAINRCV"  TSX
  639.            STX ("STACK")
  640.            JSR "DTJINIT"
  641.            JSR "RECTYPE"
  642.            BNE "MSN00"
  643.            JSR "RECEIVE"
  644.            JMP "MSN00"
  645.  
  646. '═AIN SND ENTRY
  647. "MAINSND"  TSX
  648.            STX ("STACK")
  649.            JSR "DTJINIT"
  650.            LDA 1
  651.            STA ("FILETYPE")
  652.            JSR "TRANTYPE"
  653.            BNE "MSN00"
  654.            LDA 255
  655.            STA ("MAXSIZE")
  656.            JSR "TRANSMIT"
  657. "MSN00"    LDA 0
  658. "MSN01"    JMP "EXIT"
  659.  
  660. '╔NIT ─╘╩ VARIABLES & RESET I/O CHAN
  661. "DTJINIT"  LDA (679)
  662.            STA (252)
  663.            LDA 0
  664.            STA (162)
  665.            STA (161)
  666.            STA (162)
  667.            STA (142)
  668.            STA (679)
  669.            STA (144)
  670.            JSR "SETCOUNT"
  671. "RESET"    JSR "CLRCHN"
  672.            LDX 2
  673.            JSR "CHKIN"
  674.            LDX 2
  675.            JMP "CHKOUT"
  676.  
  677.            HDR "A/P-PUNTER2"
  678.  
  679. "BYTECNT"  DF &02
  680. "BUFFER0"  DF $-
  681. "BUFFER1"  DF $-
  682. "BUFFER2"  DF $-
  683. "BUFFER3"  DF $-
  684. "BUFFER4"  DF $-
  685. "BUFFER5"  DF $-
  686. "BUFFER6"  DF $-
  687. "BUFFER7"  DF $-
  688.