home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / appleii / appace.m65 < prev    next >
Text File  |  2020-01-01  |  4KB  |  228 lines

  1. ; KERMIT COMM DRIVER FOR
  2. ; ACE DUAL INTERFACE
  3. ;
  4. ; ANDY TEFFT, 8/22/90
  5. ;
  6. ;    $Header: $
  7. .SBTTL    Define start address for assembly
  8.  
  9.        .=$1003            ; Start assembly here
  10.  
  11. .SBTTL    Revision History
  12.  
  13. ;
  14. ; Edit #    Description
  15. ; ------    -----------
  16. ;    
  17.  
  18. ; DONT FORGET TO UPDATE THE VERSION
  19. ;$Log: $
  20.  
  21. ;
  22. ;
  23. ;    Vector for com cards starts here
  24. ;        location $1003 for data
  25. ;        location $1020 for routine jumps
  26. ;        location $1040 for main routines
  27. ;
  28. baud            ;
  29. sscdbd:    .blkb    1  ;contains baud index(ala super serial card) used by init
  30.             ;        6 - 300 baud
  31.             ;        7 - 600
  32.             ;        etc
  33.     .blkb    1    ;
  34. crdnam:    .word    NAME    ; null terminated string of who we are
  35. SLOT:    .blkb    1    ; com slot $n0
  36. kerins:    .blkb    1    ; force initialization flag-when 0
  37. endker:    .blkb    2    ; address of end of main kermit
  38. flowfg:    .blkb    1    ; flow flag for xon/xoff controll b7=1 yes
  39. tl0end    .word    END    ; end of this routine
  40. timect    .blkb    1    ; time constant for rom wait rtn
  41.     .=sscdbd+29        ; future expansion
  42. tlinit:    jmp    INIT        ; initialize com card
  43. tl0cmd:    jmp    CMD        ; command in A reg
  44.             ;
  45.             ; 0 - hang up
  46.             ; $0b - set baud
  47.             ; $0c - set break on the line
  48.             ; $91 - turn remote on (xon)
  49.             ; $93 - turn remote off(xoff)
  50.             ;
  51.             ; routine will return false(0) if unable
  52. tl0cp:    jmp    CHKINP        ; check for input ch ready-0 false
  53. tl0gpc:    jmp    GETINP        ; get input ch
  54. tl0ppc:    jmp    PUTCHR        ; put output character
  55. tl0exi:    jmp    RESET        ; reset card and restore initialized
  56.     .=sscdbd+29+32        ; futures
  57. wait:    .blkb    3    ; wait routine-use rom wait 220=125ms 25=2ms
  58. VSTRING    .blkb    3    ; print string x=lsb,y=msb x&y->null terminated string
  59. rdkey:    .blkb    3    ; read keyboard
  60. prcrlf:    .blkb    3    ; print cr and lf
  61. telcnc:    .blkb    3    ; check for keyboard character
  62. telspa:    .blkb    3    ; set character parity
  63.  
  64. CINIT = $C220
  65. SEND = $C22C
  66. ;VNAME = $1005
  67. ;VINIT = $1021
  68. ;VCMD = $1024
  69. ;VCHK = $1027
  70. ;VGET = $102A
  71. ;VPUT = $102D
  72. ;VRESET = $1030
  73. ;VEND = $100C
  74. ;SLOT = $1007
  75. ;BAUD = $1003
  76. COUT = $FDED
  77. HOME = $FC58
  78. ;VSTRING = $1043
  79.  
  80.  ORG $7F00
  81.  
  82. ; JMP VECTORS
  83. ; LDA #$60
  84. ; STA GO3
  85. ; RTS
  86.  
  87. NAME nasc <ACE .21>
  88.  .byte $00
  89. BADBAUD .byte $8D
  90.  nasc <YOU MUST CONNECT TO INITIALIZE>
  91.  .byte $8D,$87
  92.  nasc <COMM CARD BEFORE YOU SET BAUD>
  93.  .byte $8D,00
  94. INIT BIT $CFFF
  95.  JSR GO3 ;FIRST SWAP IN 80-COL CARD
  96.  LDA SLOT ;SET UP JUMPS TO SERIAL
  97.  ROR a
  98.  ROR a
  99.  ROR a
  100.  ROR a
  101.  AND #%00001111
  102.  ORA #$C0
  103.  STA GO2+2 ;STORE AS $CN
  104.  STA GOSEND+2
  105.  STA GOSETUP+2
  106.  AND #%00001111
  107.  TAX
  108.  LDA #2
  109.  STA $778,X ;SET CARD FOR FULL DUPLEX
  110.  STA NOINBUF ;INITIALIZE BUFFER POSITIONS
  111.  STA BUFPTR
  112.  RTS
  113. SETBAUD LDA #21
  114.  JSR $C300
  115.  JSR HOME
  116.  JSR GOSETUP
  117.  LDA #1
  118.  RTS
  119. CMD TAX
  120.  AND #$80
  121.  BNE XON ;DO FLOW CONTROL
  122.  TXA
  123.  CMP #$B
  124.  BNE NOCMD
  125.  LDA GOSETUP+2
  126.  AND #$C0
  127.  CMP #$C0
  128.  BEQ SETBAUD
  129.  LDX #BADBAUD\
  130.  LDY #BADBAUD^
  131.  JSR VSTRING
  132.  LDA #0
  133.  RTS
  134. XON TXA
  135.  JSR PUTCHR ;SEND THE XON OR XOFF
  136.  LDA #1
  137.  RTS
  138. NOCMD LDA #0 ;INVALID/UNIMPLEMENTED
  139.  RTS
  140. CHKINP BIT $CFFF
  141.  JSR GO2 ;SELECT COMM CARD
  142.  LDA $CE01
  143.  AND #2 ;CHECK FOR NEW CHARACTER
  144.  BEQ NONE
  145.  LDY NOINBUF
  146.  LDA $CE00 ;GET ANY NEW CHAR
  147.  STA BUFFER,Y ;PUT IT IN THE BUFFER
  148.  INC NOINBUF
  149. NONE LDA NOINBUF
  150.  CMP BUFPTR ;ARE THERE ANY CHARS IN BUFFER?
  151.  STA $CFFF
  152.  JSR GO3 ;SELECT 80 COL CARD
  153.  RTS
  154. GETINP JSR CHKINP
  155.  LDY BUFPTR
  156.  LDA BUFFER,Y ;GET NEXT BUFFERED CHAR
  157.  ORA #$80
  158.  CMP #$87
  159.  BNE NOTBELL ;SKIP TIME-CONSUMING BELLS
  160.  JSR BEEP
  161.  LDA #2
  162. NOTBELL INC BUFPTR
  163.  RTS
  164. PUTCHR STA TEMP ;SO WE CAN CHECK FOR ANOTHER INCOMING
  165.  JSR CHKINP
  166.  LDA TEMP
  167.  JSR GOSEND ;FIRMWARE JUMP
  168.  JSR CHKINP ;BUFFER ANOTHER
  169.  STA $CFFF
  170.  JSR GO3
  171.  RTS
  172. RESET RTS
  173. BEEP LDX #100
  174. BEEP2 LDY #85
  175. BLIP BIT $C030
  176.  DEY
  177.  BNE BLIP
  178.  JSR CHKINP
  179.  DEX
  180.  BNE BEEP2
  181.  JSR CHKINP
  182.  RTS
  183. GOSEND JMP $C22C ;JUMP TO FIRMWARE SEND ROUTINE
  184.  RTS
  185. GOSETUP JMP $0032 ;FIRMWARE SETUP MENU
  186.  RTS
  187. GO2 JMP $C24B ;SOME DO-NOTHING INSTRUCTIONS
  188. GO3 JMP $C3AF
  189. NOINBUF .byte $00 ;PTR TO LAST VALID CHAR IN BUF
  190. BUFPTR .byte $00 ;PTR TO FIRST VALID CHAR IN BUF
  191. TEMP .byte $00
  192. OLDBAUD .byte $08
  193. BUFFER DS 256
  194. END .byte $00
  195. ;VECTORS LDA #NAME\
  196. ; STA VNAME
  197. ; LDA #NAME^
  198. ; STA VNAME+1
  199. ; LDA #INIT\
  200. ; STA VINIT
  201. ; LDA #INIT^
  202. ; STA VINIT+1
  203. ; LDA #CMD\
  204. ; STA VCMD
  205. ; LDA #CMD^
  206. ; STA VCMD+1
  207. ; LDA #CHKINP\
  208. ; STA VCHK
  209. ; LDA #CHKINP^
  210. ; STA VCHK+1
  211. ; LDA #GETINP\
  212. ; STA VGET
  213. ; LDA #GETINP^
  214. ; STA VGET+1
  215. ; LDA #PUTCHR\
  216. ; STA VPUT
  217. ; LDA #PUTCHR^
  218. ; STA VPUT+1
  219. ; LDA #RESET\
  220. ; STA VRESET
  221. ; LDA #RESET^
  222. ; STA VRESET+1
  223. ; LDA #END\
  224. ; STA VEND
  225. ; LDA #END^
  226. ; STA VEND+1
  227. ; RTS
  228.