home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / mex / mxo-ac01.asm < prev    next >
Assembly Source File  |  1994-07-13  |  9KB  |  530 lines

  1. ; MXO-AC01 - MEX overlay for the Apple-Cat ][ - jms 84/06/14
  2. ;
  3. ; This overlay is for use with MEX. It was adapted from the M7AC+3.ASM
  4. ;         overlay for modem7xx.
  5. ;
  6. ; This version DOES NOT support dialing. It works with either the
  7. ;      MicroSoft Softcard implementation (V2.2) or the ALS CP/M Card
  8. ;    (V3.01). See the Customization section equates for details.
  9. ;
  10. ;
  11. ; Please report any bugs, etc. to:
  12. ;            James M. Scardelis
  13. ;            Director
  14. ;            CP/M Plus Users' Group
  15. ;            P.O. Box 295
  16. ;            Little Falls, NJ 07424-0295
  17. ;
  18. ; Please upload a copy of any updates to:
  19. ;
  20. ;         CNY-Tech RBBS    (315)437-4890
  21. ;        CP/M Net East    (201)249-0691
  22. ;
  23. ;     Both of those systems are 300/1200 baud...
  24. ;
  25. ; I plan to implement dialing capabilities in the next version of this
  26. ;    file, but only for the ALS CP/M CARD!
  27. ;
  28. ;======================================================================
  29. ;
  30. ;       Misc. Equates
  31. ;
  32. ;----------------------------------------------------------------------
  33.         ORG    100H
  34. ;
  35. BELL:        EQU    07H        ;Bell
  36. CR:        EQU    0DH        ;Carriage return
  37. ESC:        EQU    1BH        ;Escape
  38. LF:        EQU    0AH        ;Line feed
  39. ;
  40. YES        EQU    0FFH        
  41. NO        EQU    0H
  42. ;
  43. ;-----------------------------------------------------------------------
  44. ;    A misc. macro to generate i/o subs for the ALSCARD
  45. ;-----------------------------------------------------------------------
  46. PUT        MACRO    DUMMY
  47.         PUSH    H
  48.         LXI    H,DUMMY
  49.         JMP    APWRT
  50.         ENDM
  51.  
  52. ;
  53. ;=======================================================================
  54. ;
  55. ;     Customization Area
  56. ;
  57. ;-----------------------------------------------------------------------
  58. ;
  59. ALSCARD:    EQU    YES        ;Yes if ALS CP/M Card
  60. CPM2CARD:    EQU    NO        ;Yes if SoftCard or clone
  61. ;
  62. MODCTL1:    EQU    0        ;Dummy modem control port
  63. MODCTL2:    EQU    0        ;Dummy modem control port
  64. ;
  65. CATSLOT:    EQU    2        ;Slot of Apple-Cat
  66. ;
  67. ;======================================================================
  68. ;
  69.         IF    ALSCARD
  70. ;
  71. MAPOFF:        EQU    0        ;ALS memory map offset is 0
  72.  
  73.         ENDIF
  74. ;
  75.         IF     CPM2CARD
  76.  
  77. MAPOFF:        EQU    2000H        ;MicroSoft offset is 2000h
  78.  
  79.         ENDIF
  80.  
  81. SLOT        EQU    CATSLOT*16
  82. COM        EQU    0C08CH+SLOT+MAPOFF
  83. XMTBYT        EQU    0C08DH+SLOT+MAPOFF
  84. CON        EQU    0C08AH+SLOT+MAPOFF
  85. BSRBYT        EQU    0C083H+SLOT+MAPOFF
  86. SHBYT        EQU    0C082H+SLOT+MAPOFF
  87. SQUBYT        EQU    0C081H+SLOT+MAPOFF
  88. RECBYT        EQU    0C089H+SLOT+MAPOFF
  89. INDAT        EQU    0C08BH+SLOT+MAPOFF
  90. OUTDAT        EQU    0C08EH+SLOT+MAPOFF
  91. SPDBYT        EQU    0C08BH+SLOT+MAPOFF
  92. STATUS        EQU    0C08FH+SLOT+MAPOFF
  93. DEVBYT        EQU    0C08FH+SLOT+MAPOFF
  94. DACBYT        EQU    0C080H+SLOT+MAPOFF
  95.  
  96.         IF    CPM2CARD
  97.  
  98. XMTRAM        EQU    0F01BH        ;to clear status 
  99.  
  100.         ENDIF
  101.  
  102.         IF    ALSCARD
  103.  
  104. XMTRAM        EQU    001BH        ;to clear status
  105.  
  106.         ENDIF
  107.  
  108. MODDCD3        EQU    0        
  109. MODDCD12    EQU    0        ;for 212 board
  110. MODRCVB:    EQU    2        ;bit to test for receive
  111. MODRCVR:    EQU    2        ;value when ready
  112. MODSNDB:    EQU    1        ;bit to test for send
  113. MODSNDR:    EQU    1        ;value when ready
  114. ;
  115. CONOUT        EQU    2        ;simulated bdos fcn 2
  116. PRINT        EQU    9        ;simulated bdos fcn 9
  117. MEX        EQU    0D00H        ;mex's command processor
  118. ;
  119. ;
  120. ; ALS CP/M Card clock is 6mHz; MicroSoft is 2mHz...adjust clock: to
  121. ;  match your system.
  122.  
  123.  
  124.         DS    3        ;Mex has a JMP START here.
  125.  
  126. PMODEM:        DB    NO
  127. SMODEM:        DB    NO
  128. TPULSE:        DB    'T'
  129. CLOCK:        DB    60        ;clock speed x .1, up to 25.5mHz
  130. MSPEED:        DB    1        ;0=110 1=300 2=450 3=600 4=710
  131.                     ;5=1200 6=2400 7=4800 8=9600
  132.                     ;9=19200
  133.  
  134. BYTDLY:        DB    5
  135. CRDLY:        DB    5
  136. COLUMS:        DB    5
  137. SETFL:        DB    YES        ;must be yes for this overlay
  138. SCRTST:        DB    YES
  139.         DB    0
  140. BAKFLG:        DB    YES        ;yes to make .bak file
  141. CRCDFL:        DB    YES        ;default to CRC
  142. TOGCRC:        DB    YES
  143. CVTBS:        DB    NO
  144. TOGLBK:        DB    YES
  145. ADDLF:        DB    NO
  146. TOGLF:        DB    YES
  147. TRNLOG:        DB    NO
  148. SAVCCP:        DB    NO
  149. LOCNXT:        DB    YES
  150. TOGLOC:        DB    YES
  151. LSTTST:        DB    YES
  152. XOFTST:        DB    NO
  153. XONWT:        DB    NO
  154. TOGXOF:        DB    YES
  155. IGNCTL:        DB    YES
  156. EXTRA1:        DB    0
  157. EXTRA2:        DB    0
  158. BRKCHR:        DB    '@'-40H    
  159. NOCONN:        DB    'N'-40H
  160. LOGCHR:        DB    'L'-40H
  161. LSTCHR:        DB    'P'-40H
  162. UNSVCH:        DB    'R'-40H
  163. TRNCHR:        DB    'T'-40H
  164. SAVCHR:        DB    'Y'-40H
  165. EXTCHR:        DB    '^'-40H
  166.         DS    2
  167.  
  168. ; Low-level modem i/o routines - will be jump table in mex2.0
  169.  
  170. INCTL1:        JMP    LDASTAT
  171.         DS    7
  172. OTDATA:        JMP    STAOUTD
  173.         DS    7
  174. INPORT:        JMP    LDADATP
  175.         DS    7
  176.  
  177. ; Bit-test routines
  178.  
  179. MASKR:        ANI    00001000B ! RET
  180. TESTR:        CPI    00001000B ! RET
  181. MASKS:        ANI    00010000B ! RET
  182. TESTS:        CPI    00010000B ! RET
  183.  
  184.         DS    12
  185. LOGON:        DS    2
  186. DIALV:        DS    3        ;dial routine not yet implemented.
  187. DISCV:        JMP    DISCON
  188. GOODBV:        DS    3
  189. INMODV:        JMP    INITMOD
  190. NEWBDV:        DS    3
  191. NOPARV:        DS    3
  192. PARITV:        DS    3
  193. SETUPV:        JMP    SETUPR
  194. SPMENU:        DS    3
  195. VERSNV:        JMP    SYSVER
  196. BREAKV        JMP    SENDBRK
  197.  
  198. ILPRTV:        DS    3
  199. INBUFV:        DS    3
  200. ILCMPV:        DS    3
  201. INMDMV:        DS    3
  202. NXSCRV:        DS    3
  203. TIMERV:        DS    3
  204.  
  205. CLREOS:        LXI    D,EOSMSG
  206.         MVI    C,PRINT
  207.         CALL    MEX
  208.         RET
  209. CLS:        LXI    D,CLSMSG
  210.         MVI    C,PRINT
  211.         CALL    MEX
  212.         RET
  213.  
  214. ;--------------------End of Fixed Format Area-------------------------
  215.  
  216. SYSVER:        LXI    D,VERSMSG
  217.         MVI    C,PRINT
  218.         CALL    MEX
  219.  
  220.         IF    ALSCARD
  221.         LXI    D,VERS2MSG
  222.         MVI    C,PRINT
  223.         CALL    MEX
  224.         ENDIF
  225.  
  226.         RET
  227.  
  228.  
  229. SENDBRK:    RET
  230.  
  231. DISCON:        MVI    A,0
  232.         CALL    STASHBT
  233.         MVI    A,1FH
  234.         CALL    STAXMTB
  235.         CALL    STAXMTR
  236.         MVI    A,0A1H
  237.         JMP    STASQBT
  238.  
  239. ; If you are using a MicroSoft Card, see M7AC+x.ASM for info as to
  240. ; what this is all about..
  241.  
  242. INITMOD:
  243.  
  244.         IF    CPM2CARD
  245.  
  246.  
  247.         LDA    LSTTST
  248.         CPI    0
  249.         JZ    FIRSTIN
  250.         LHLD    0001
  251.         MOV    A,L
  252.         ADI    02AH
  253.         MOV    L,A
  254.         MVI    A,03EH
  255.         MOV    M,A
  256.         INR    L
  257.         MVI    A,0FFH
  258.         MOV    M,A
  259.         INR    L
  260.         MVI    A,0C9H
  261.         MOV    M,A
  262.  
  263.         ENDIF
  264.  
  265.         IF     ALSCARD
  266.  
  267.         LHLD    1
  268.         LXI    D,60H
  269.         DAD    D
  270.         SHLD    APREAD+1
  271.         INX    H
  272.         INX    H
  273.         INX    H
  274.         SHLD    APWRITE+1
  275.         JMP    FIRSTIN
  276.  
  277. APREAD:        JMP    $-$
  278. APWRITE:    JMP    $-$
  279.  
  280.         ENDIF
  281. ;
  282. ;
  283. ;
  284. FIRSTIN:    LDA    80H
  285.         CPI    0
  286.         JZ    NOINMSG
  287.         LDA    5DH
  288.         ANI    0FH
  289.         CPI    3
  290.         JNZ    CK2
  291.         CALL    INIT3
  292.         JMP    ORIG103
  293.  
  294. CK2:        CPI    2H
  295.         JNZ    NOINMSG
  296.         CALL    INIT2
  297.         JMP    ORIG212
  298.  
  299. NOINMSG:    RET
  300.  
  301. INIT3:        CALL    PICKUP
  302.         MVI    A,0A1H
  303.         CALL    STARECB
  304.         MVI    A,00000011B
  305.         CALL    STACON
  306.         MVI    A,22H
  307.         CALL    STASPDB
  308.         MVI    A,1
  309.         STA    MSPEED
  310.         RET
  311.  
  312. ORIG103:
  313.         MVI    A,11H
  314.         CALL    STAXMTB
  315.         CALL    STAXMTR
  316.         MVI    A,65H
  317.         JMP    STARECB
  318.  
  319. ANS103:
  320.         MVI    A,10H
  321.         CALL    STAXMTB
  322.         CALL    STAXMTR
  323.         MVI    A,64H
  324.         JMP    STARECB
  325.  
  326. INIT2:        CALL    PICKUP
  327.         MVI    A,0
  328.         CALL    STASPDB
  329.         MVI    A,18H
  330.         CALL    STAXMTB
  331.         CALL    STAXMTR
  332.         MVI    A,0AH
  333.         CALL    STADEVB
  334.         MVI    A,13H
  335.         CALL    STACON
  336.         MVI    A,05H
  337.         CALL    STACOM
  338.         STA    MSPEED
  339.         RET
  340.  
  341.  
  342. ORIG212:    MVI    A,0A1H
  343.         CALL    STASQBT
  344.         CALL    DELAY5
  345.         MVI    A,21H
  346.         JMP    STASQBT
  347.  
  348. ANS212:        MVI    A,81H
  349.         CALL    STASQBT
  350.         CALL    DELAY5
  351.         MVI    A,01
  352.         JMP    STASQBT
  353.  
  354. SETORIG:    LDA    MSPEED
  355.         CPI    1
  356.         JZ    ORIG103
  357.         JMP    ORIG212
  358.  
  359. SETANS:        LDA    MSPEED
  360.         CPI    1
  361.         JZ    ANS103
  362.         JMP    ANS212
  363.  
  364. PICKUP:
  365.         MVI    A,0A1H
  366.         CALL    STASQBT
  367.         MVI    A,'T'
  368.         STA    5DH
  369.         MVI    A,2
  370.         CALL    STASHBT
  371.         MVI    A,0FH
  372.         CALL    STABSRB
  373.         MVI    A,13H
  374.         CALL    STACON
  375.         MVI    A,05H
  376.         CALL    STACOM
  377.         MVI    A,0
  378.         JMP    STADEVB
  379.  
  380. SETUPR1:    LXI    D,MENUMSG
  381.         MVI    C,PRINT
  382.         CALL    MEX
  383.         MVI    C,1
  384.         CALL    MEX
  385.         PUSH    PSW
  386.         MVI    E,CR
  387.         MVI    C,CONOUT
  388.         CALL    MEX
  389.         MVI    E,LF
  390.         MVI    C,CONOUT
  391.         CALL    MEX
  392.         POP    PSW
  393.         ANI    01011111B
  394.         CPI    'O'
  395.         JZ    SETORIG
  396.         CPI    'A'
  397.         JZ    SETANS
  398.         CPI    'D'
  399.         JZ    DISCON
  400.         LXI    D,ERRMSG
  401.         MVI    C,PRINT
  402.         CALL    MEX
  403.         JMP    SETUPR1
  404.  
  405. SETUPR:        LXI    D,BAUDMSG
  406.         MVI    C,PRINT
  407.         CALL    MEX
  408.         MVI    C,1
  409.         CALL    MEX
  410.         PUSH    PSW
  411.         MVI    E,CR
  412.         MVI    C,CONOUT
  413.         CALL    MEX
  414.         MVI    E,LF
  415.         MVI    C,CONOUT
  416.         CALL    MEX
  417.         POP    PSW
  418.         SUI    30H
  419.         CPI    3
  420.         JNZ    CK2A
  421.         CALL    INIT3
  422.         JMP    SETUPR1
  423.  
  424. CK2A:        CPI    2
  425.         JNZ    NOT2
  426.         CALL    INIT2
  427.         JMP    SETUPR1
  428. NOT2:        LXI    D,ERRMSG
  429.         MVI    C,PRINT
  430.         CALL    MEX
  431.         JMP    SETUPR
  432.  
  433.  
  434. DELAY5:        PUSH    PSW
  435.         PUSH    B
  436.         LXI    B,1000
  437.  
  438. DELAY5A:     DCX    B
  439.         MOV    A,B
  440.         ORA    C
  441.         JNZ    DELAY5A
  442.         POP    B
  443.         POP    PSW
  444.         RET
  445.  
  446. ;
  447. ;   APPLE IO SUBROUTINES
  448. ;
  449.         IF    CPM2CARD
  450.  
  451. STAXMTR:    STA    XMTRAM    ! RET
  452. STACOM:        STA    COM    ! RET
  453. STAXMTB:    STA    XMTBYT  ! RET
  454. STACON:        STA    CON    ! RET
  455. STABSRB:    STA    BSRBYT    ! RET
  456. STASHBT:    STA    SHBYT    ! RET
  457. STASQBT:    STA    SQUBYT    ! RET
  458. STARECB:    STA    RECBYT    ! RET
  459. LDAIND:        LDA    INDAT    ! RET
  460. STAOUTD:    STA    OUTDAT    ! RET
  461. STATSPDB:    STA    SPDBYT    ! RET
  462. LDASTAT:       LDA    STATUS    ! RET
  463. STADEVB:    STA    DEVBYT    ! RET
  464. LDADATP:    LDA    XMTRAM
  465.         STA    XMTBYT
  466.         LDA    INDAT
  467.         RET
  468.  
  469.         ENDIF
  470.  
  471.         IF    ALSCARD
  472.  
  473.  
  474.  
  475. STAXMTR:    PUT    XMTRAM
  476. STACOM:        PUT    COM
  477. STAXMTB:    PUT    XMTBYT
  478. STACON:        PUT    CON
  479. STABSRB:    PUT    BSRBYT
  480. STASHBT:    PUT    SHBYT
  481. STASQBT:    PUT    SQUBYT
  482. STARECB:    PUT    RECBYT
  483. STAOUTD:    PUT    OUTDAT
  484. STASPDB:    PUT    SPDBYT
  485. STADEVB:    PUT    DEVBYT
  486.  
  487. APWRT:        PUSH    D
  488.         PUSH    B
  489.         CALL    APWRITE
  490.         POP    B
  491.         POP    D
  492.         POP    H
  493.         RET
  494.  
  495. LDADATP:    PUSH    H
  496.         PUSH    D
  497.         PUSH    B
  498.         LXI    H,XMTRAM
  499.         CALL    APREAD
  500.         LXI    H,XMTBYT
  501.         CALL    APWRITE
  502.         LXI    H,INDAT
  503.         JMP    APRD2
  504.  
  505. LDASTAT:    PUSH    H
  506.         LXI    H,STATUS
  507.         PUSH    D
  508.         PUSH    B
  509. APRD2:        CALL    APREAD
  510.         POP    B
  511.         POP     D
  512.         POP    H
  513.         RET
  514.  
  515.         ENDIF
  516.  
  517. ;------------------------------------------------------------------
  518. ;  Table of messages that are printed out in the overlay....
  519. ;------------------------------------------------------------------
  520.  
  521. EOSMSG:        DB    'K'-40H,'$'
  522. CLSMSG:        DB    'L'-40H,'$'
  523. VERSMSG:    DB    'Version for Apple Cat ][ modem',CR,LF,'$'
  524. VERS2MSG:    DB    'and ALS CP/M Card',CR,LF,'$'
  525. MENUMSG:    DB    '(O)riginate, (A)nswer, or (D)isconnect $'
  526. ERRMSG:        DB    'Error - must be one of above.',CR,LF,'$'
  527. BAUDMSG:    DB    '(3)00 or 1(2)00 bps: $'
  528.  
  529.         END
  530.