home *** CD-ROM | disk | FTP | other *** search
/ ABBUC Magazin 39B / ABBUC_Magazin_39_19xx_ABBUC_Side_B.atr / argsrs2.src < prev    next >
Text File  |  2023-02-26  |  7KB  |  603 lines

  1. ***       RS 232 HANDLER          ***
  2. *** Fuer A.R.G.S. RS232 Interface ***
  3. ***   Mit Pokey-Timer-Interrupt   ***
  4. ***      von Sven Traenkle        ***
  5. ***    neu ueberarbeitet        ***
  6. ***       von RoBue           ***
  7. ***       24.7.1994             ***
  8.  
  9.  
  10.     ORG $2000,$A800
  11.  
  12. ACDATA    EQU $D508
  13. ACSTAT    EQU $D509
  14. ACCOMM    EQU $D50A
  15. ACCONT    EQU $D50B
  16.  
  17.  
  18. DOSINI    EQU $C
  19. DOSVEC    EQU $A
  20. COLOR1    EQU 709
  21. COLOR2    EQU 710
  22. COLOR4    EQU 712
  23. MEMLO    EQU 743
  24. ICAX1Z    EQU $2A
  25. ICAX2Z    EQU $2B
  26. ICCOMZ    EQU $22
  27. BRKKEY    EQU 17
  28. POKMSK    EQU 16
  29. DVSTAT    EQU 746
  30.  
  31. PHENTV    EQU $E486
  32. IRQEN    EQU $D20E
  33. AUDF1    EQU $D200
  34. KBCODE    EQU $2FC
  35. VTIMR1    EQU 528
  36. STIMER    EQU 53769
  37.  
  38.  
  39. *************************
  40. * Jetzt gehts los !!!   *
  41. *************************
  42.  
  43. PROT    DFB 2 *+0
  44. STOP    DFB 19 *+1
  45. CONT    DFB 17 *+2
  46. FULLFL    DFB 0 *+3
  47. DATABRK    DFB 0 *+4
  48. ERR    DFB 0 *+5
  49. STAT    DFB 0 *+6
  50. CHECK    DFB 0 *+7
  51. OFF    DFB 0 *+8
  52. RWFL    DFB 0 *+9
  53. NOCHR    DFB 1 *+A
  54. TRANS    DFB 1 *+B
  55.  
  56. IIN    DFB 0 *+C
  57. IOUT    DFB 0 *+D
  58. OIN    DFB 0 *+E
  59. OOUT    DFB 0 *+F
  60.  
  61.  
  62. INIT    LDA #END:L
  63.     STA MEMLO
  64.     LDA #END:H
  65.     STA MEMLO+1
  66.  
  67.  
  68. *** TREIBER IN TABELLE EINTRAGEN
  69.  
  70.     LDX #'R 
  71.     LDA #TAB:H
  72.     LDY #TAB:L
  73.     SEC
  74.     JSR PHENTV
  75.     BCC OKA
  76.     RTS ; EINTRAG NICHT ERFOLGREICH
  77. OKA    LDA #5
  78.     STA COLOR4
  79.  
  80.  
  81. *** VOREINSTELLUNGEN
  82.  
  83.     LDA #9
  84.     STA ACCOMM
  85.     LDA #23
  86.     STA ACCONT
  87.     RTS
  88.  
  89. TAB    DFW OPEN-1
  90.     DFW CLOSE-1
  91.     DFW GET-1
  92.     DFW PUT-1
  93.     DFW STATUS-1
  94.     DFW SPECIAL-1
  95.     JMP OKA
  96.  
  97.  
  98. ***  HANDLERROUTINEN ***
  99.  
  100. ************
  101. *** OPEN ***
  102. ************
  103.  
  104. OPEN    LDY #1
  105.     LDA ICAX1Z
  106.     STA RWFL
  107.     LDA #$00
  108.     STA IIN
  109.     STA IOUT
  110.     STA OIN
  111.     STA OOUT
  112.  
  113.  
  114. *** POKEY-INT. INIT:
  115.  
  116.     LDA POKMSK
  117.     ORA #$01
  118.     STA POKMSK
  119.     STA IRQEN
  120.     LDA FREQ
  121.     STA AUDF1
  122.     LDA #INT:L
  123.     STA VTIMR1
  124.     LDA #INT:H
  125.     STA VTIMR1+1
  126.     LDA #1
  127.     STA STIMER
  128.     JSR AN
  129.     RTS
  130.  
  131.  
  132. ****************
  133. *** CLOSE    ***
  134. ****************
  135.  
  136. CLOSE    LDA #0
  137.     STA OFF
  138.     LDA POKMSK
  139.     AND #$FE
  140.     STA POKMSK
  141.     STA IRQEN
  142.     JSR AUS
  143.     LDY #1
  144.     RTS
  145.  
  146.  
  147. ****************
  148. *** GET ********
  149. ****************
  150.  
  151. GET    LDA BRKKEY
  152.     BEQ BREAK
  153.     LDA #$00
  154.     STA NOCHR
  155.     LDA IIN
  156.     CMP IOUT
  157.     BNE BUFCHK
  158.     LDA ERR
  159.     BNE ERROR
  160.     LDA RWFL
  161.     CMP #12
  162.     BEQ GET
  163.     LDA #$1
  164.     STA NOCHR
  165.     LDA #$00
  166.     JMP NEXT
  167. BUFCHK    LDA FULLFL
  168.     BEQ GETCHR
  169.     LDA IOUT
  170.     SEC
  171.     SBC IIN
  172.     CLC
  173.     CMP #10
  174.     BNE GETCHR
  175.     JSR AN
  176.     LDA #$0
  177.     STA FULLFL
  178.  
  179. GETCHR    LDY IOUT
  180.     INC IOUT
  181.     LDA IBUF,Y
  182.     PHA
  183.     LDA TRANS
  184.     BNE NOTRL
  185.     PLA
  186.     AND #127
  187.     CMP #13
  188.     BNE NOCR
  189.     LDA #155
  190. NOCR    PHA
  191.  
  192. NOTRL    PLA
  193.  
  194. NEXT    LDY #$1
  195.     RTS
  196.  
  197. ERROR    LDA ERR
  198.     AND #1
  199.     BNE PARITY
  200.     LDY #169
  201.     JMP ENDERR
  202.     LDA ERR
  203.     AND #2
  204.     BNE STASTO
  205. OVERRUN    LDY #137
  206.     JMP ENDERR
  207. BREAK    LDY #128
  208.     INC BRKKEY
  209.     RTS
  210. PARITY    LDY #143
  211.     JMP ENDERR
  212. STASTO    LDY #166
  213. ENDERR    LDA #$00
  214.     STA ERR
  215.     RTS    
  216.  
  217.  
  218. **************
  219. *** PUT  *****
  220. **************
  221.  
  222. PUT    PHA
  223.     LDA ACCOMM
  224.     AND #243
  225.     ORA #4
  226.     STA ACCOMM
  227. PUT0    LDA BRKKEY
  228.     BNE PUT1
  229.     PLA
  230.     JMP BREAK
  231. PUT1    LDA OIN
  232.     CLC
  233.     ADC #2
  234.     CMP OOUT
  235.     BEQ PUT0
  236.     LDY OIN
  237.     LDA TRANS
  238.     BNE NOTRLA
  239.     PLA
  240.     CMP #155
  241.     BNE NOEOL
  242.          LDA #13
  243.  
  244. NOEOL    AND #127
  245.     PHA
  246.  
  247. NOTRLA    PLA
  248.     STA OBUF,Y
  249.     INC OIN
  250.     LDY #1
  251.     RTS
  252.  
  253.  
  254. ********************
  255. *** SPECIAL ********
  256. ********************
  257.  
  258. SPECIAL    LDA ICCOMZ
  259.     CMP #36
  260.     BEQ X36
  261.     CMP #38
  262.     BEQ X38
  263.     LDY #1
  264.     RTS
  265.  
  266. *** XIO 38 (UEBERSETZUNG, PARITAET)
  267.  
  268. X38    LDA ICAX1Z
  269.     AND #5
  270.     CMP #5
  271.     BEQ UNGER
  272.     LDA ICAX1Z
  273.     AND #10
  274.     CMP #10
  275.     BEQ GERADE
  276. KEINE    LDA ACCOMM
  277.     AND #$DF
  278.     STA ACCOMM
  279.     LDY #1
  280.     JMP TL
  281. UNGER    LDA ACCOMM
  282.     AND #$3F
  283.     ORA #32
  284.     LDY #1
  285.     RTS
  286. GERADE    LDA ACCOMM
  287.     AND #$7F
  288.     ORA #32
  289.     LDY #1
  290.     RTS
  291. TL    LDA ICAX1Z
  292.     AND #32
  293.     BNE NTRANS
  294.     LDA #$00
  295.     STA TRANS
  296.     LDY #1
  297.     RTS
  298. NTRANS    LDA #$01
  299.     STA TRANS
  300.     LDY #1
  301.     RTS
  302.  
  303.  
  304. *** XIO 36 (BAUDRATE,WORTLAENGE...)
  305.  
  306. X36    LDA ICAX1Z
  307.     AND #15
  308.     JSR COMP
  309.     STA HELPFL
  310.     LDA ICAX1Z
  311.     AND #48
  312.     ASL
  313.     ADC HELPFL
  314.     ADC #16
  315.     STA HELPFL
  316.     LDA ICAX1Z
  317.     AND #128
  318.     ADC HELPFL
  319.     STA ACCONT
  320.     STY FREQ
  321.     STY AUDF1
  322.     LDY #1
  323.     RTS
  324. *
  325. COMP    CMP #9
  326.     BEQ B600
  327.     CMP #10
  328.     BEQ B1200
  329.     CMP #11
  330.     BEQ B1800
  331.     CMP #12
  332.     BEQ B2400
  333.     CMP #13
  334.     BEQ B4800
  335.     CMP #14
  336.     BEQ B9600
  337.     CMP #15
  338.     BEQ B19200
  339.     LDA #6
  340.     LDY #$FF
  341.     RTS
  342. B600    LDA #7
  343.     LDY #$FF
  344.     RTS
  345. B1200    LDA #8
  346.     LDY #$FF
  347.     RTS
  348. B1800    LDA #9
  349.     LDY #$FF
  350.     RTS
  351. B2400    LDA #10
  352.     LDY #160
  353.     RTS
  354. B4800    LDA #12
  355.     LDY #80
  356.     RTS
  357. B9600    LDA #14
  358.     LDY #40
  359.     RTS
  360. B19200    LDA #15
  361.     LDY #20
  362.     RTS
  363.  
  364. HELPFL    DFB 00
  365. FREQ    DFB 255
  366.  
  367.  
  368. ****************
  369. *** STATUS  ****
  370. ****************
  371.  
  372. STATUS    LDA #$00
  373.     STA DVSTAT+2
  374.     LDA IIN
  375.     SEC
  376.     SBC IOUT
  377.     STA DVSTAT+1
  378.     LDA OIN
  379.     SEC
  380.     SBC OOUT
  381.     STA DVSTAT+3
  382.     CLC
  383.     LDY #$1
  384.     RTS
  385.  
  386.  
  387. *************************************
  388. *  INTERRUPT                        *
  389. *************************************
  390.  
  391. INT    LDA ACSTAT
  392.     BPL BACK1
  393.     STA STAT
  394.     TYA
  395.     PHA
  396. **
  397. *    LDA KBCODE
  398. *    CMP #227 * Taste N mit Shift u. Ctrl.
  399. *    BNE NON
  400. *    LDA #0
  401. *    STA PROT
  402. *NON    CMP #254 * SHFT.-CTRL. S
  403. *    BNE NOS
  404. *    LDA #1
  405. *    STA PROT
  406. *NOS    CMP #249 *SHFT.-CTRL. H
  407. *    BNE BACK
  408. *    LDA #2
  409. *    STA PROT
  410.  
  411. ACIA    LDA CHECK
  412.     AND STAT
  413.     BEQ OK
  414.     JMP BACK
  415. OK    LDA STAT
  416.     AND #8
  417.     BEQ NOTFULL
  418.     JSR REC
  419. NOTFULL    LDA STAT
  420.     AND #16
  421.     BEQ BACK
  422.     JMP TRANSF
  423.  
  424. BACK    PLA
  425.     TAY
  426. BACK1    PLA
  427.     RTI
  428.  
  429. ***********************
  430. * Byte in Inputbuffer *
  431. ***********************
  432.  
  433. REC    LDA STAT
  434.     AND #1
  435.     BNE ERRO
  436.     LDA PROT
  437.     CMP #1
  438.     BNE NOSO
  439.     LDA ACDATA
  440.     CMP STOP
  441.     BEQ HALT
  442.     CMP CONT
  443.     BEQ WEITER
  444.     JMP INBUF
  445.  
  446. NOSO    LDA ACDATA
  447. INBUF    LDY IIN
  448.     STA IBUF,Y
  449.     INC IIN
  450.     LDA IOUT
  451.     SEC
  452.     SBC IIN
  453.     CMP #8
  454.     BEQ VOLL
  455.     RTS
  456.  
  457. VOLL    JSR AUS
  458.     LDA #1
  459.     STA FULLFL
  460.     RTS
  461.  
  462. ERRO    LDA STAT
  463.     AND #1
  464.     STA ERR
  465.     RTS
  466.  
  467. HALT    LDA #1
  468.     STA DATABRK
  469.     RTS
  470.  
  471. WEITER    PHA
  472.     LDA DATABRK
  473.     BEQ INBU
  474.     LDA #0
  475.     STA DATABRK
  476.     PLA
  477.     RTS
  478. INBU    PLA
  479.     JMP INBUF
  480.  
  481. ******************************
  482. * Byte aus Outputbuffer      *
  483. ******************************
  484.  
  485.  
  486. TRANSF    LDA DATABRK
  487.     BNE NOTRANS
  488.     LDA OOUT
  489.     CMP OIN
  490.     BNE AUSG
  491. NOTRANS    LDA ACCOMM
  492.     AND #243
  493.     ORA #8
  494.     STA ACCOMM
  495.     LDA OFF
  496.     BNE ZU
  497.     JMP BACK
  498. ZU    JSR AUS
  499.     JMP BACK
  500.  
  501. AUSG    TAY
  502.     LDA OBUF,Y
  503.     STA ACDATA
  504.     INC OOUT
  505.     JMP BACK
  506.  
  507.  
  508. ***************************
  509. * READY AN SENDER MELDEN  *
  510. ***************************
  511.  
  512. AN    LDA PROT
  513.     BNE HAND
  514.     RTS
  515. HAND    CMP #2
  516.     BNE AN1
  517.     LDA ACCOMM
  518.     AND #243
  519.     ORA #8
  520.     STA ACCOMM
  521.     RTS
  522. AN1    LDA ACCOMM
  523.     AND #12
  524.     CMP #4
  525.     BEQ AN2
  526.     LDY #1
  527.     LDA ACCOMM
  528.     AND #243
  529.     ORA #4
  530.     STA ACCOMM
  531. AN2    LDA ACSTAT
  532.     AND #16
  533.     BEQ AN2
  534.     LDA CONT
  535.     STA ACDATA
  536.     CPY #1
  537.     BEQ END2
  538.     LDA ACCOMM
  539.     AND #243
  540.     ORA #8
  541.     STA ACCOMM
  542. END2    RTS
  543.  
  544.  
  545. **************************
  546. * NICHT READY MELDEN     *
  547. **************************
  548.  
  549. AUS    LDA PROT
  550.     BNE HAND1
  551.     RTS
  552. HAND1    CMP #2
  553.     BNE AUS1
  554.     LDA ACCOMM
  555.     AND #243
  556.     STA ACCOMM
  557.     RTS
  558. AUS1    LDA ACCOMM
  559.     AND #12
  560.     CMP #4
  561.     BEQ AUS2
  562.     LDY #1
  563.     LDA ACCOMM
  564.     AND #243
  565.     ORA #4
  566.     STA ACCOMM
  567. AUS2    LDA ACSTAT
  568.     AND #16
  569.     BEQ AUS2
  570.     LDA STOP
  571.     STA ACDATA
  572.     CPY #1
  573.     BEQ ENDE
  574.     LDA ACCOMM
  575.     AND #243
  576.     ORA #8
  577.     STA ACCOMM
  578. ENDE    RTS
  579.  
  580.  
  581. *******************
  582. *** BUFFER       **
  583. *******************
  584.  
  585. IBUF    ASC '********************************'
  586.     ASC '  A.R.G.S. (Atari Regionalgruppe'
  587.     ASC ' Stuttgart) is the best !!!     '
  588.     ASC '********************************'
  589.     ASC '                                '
  590.     ASC 'ARGS-RS 232 Handler (p)1992/93  '
  591.     ASC 'Sven Traenkle (mit mehr oder wen'
  592.     ASC 'iger grosser Unterstuetzung von '
  593.     DFB 255
  594. OBUF    ASC 'Roland Buehler, Holger Pfeil, Pe'
  595.     ASC 'ter Straif, Star Trek - The next'
  596.     ASC ' Generation, Al Bundy und seiner'
  597.     ASC ' schrecklich netten Familie, der'
  598.     ASC 'Lindenstrasse, 21st Century Digi'
  599.     ASC 'tal Boy, Ramones, Coca Cola, Stu'
  600.     ASC 'ttgarter Hofbraeu, Bofrost,Wing '
  601.     ASC 'Com.II und meinem genialen Hirn.'
  602. END    DFB 255
  603. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯