home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / apple / aplcat99.lbr / APLCAT.AZM / APLCAT.ASM
Assembly Source File  |  1986-12-21  |  26KB  |  1,329 lines

  1. ;APLCAT.ASM  Version 9.9 revised 5/25/85
  2. ;
  3. ;Overlay file for MSFTCAT.OBJ and PCPICAT.OBJ.
  4. ;
  5. ;
  6. ;Deffinitions for use in assembling MODEM9.xx.
  7. ;
  8.  
  9. ;
  10. M80    EQU    0FFFFH    ;SET TO 0 IF ASSEMBLING WITH ASM OR MAC
  11. ;
  12. FALSE    EQU    0
  13.     IF    NOT M80
  14. TRUE    EQU    0FFH
  15.     ENDIF    ;NOT M80
  16. ;
  17.     IF    M80
  18. TRUE    EQU    NOT FALSE
  19.     .8080    ;necessary for ALDS version
  20.     ENDIF    ;M80
  21. ;
  22. OVERLAY    EQU    FALSE    ;False if doing complete assembly, true if overlay
  23.             ;only. 
  24.  
  25.     IF    (NOT OVERLAY) AND (NOT M80)
  26.         +++INCOMPATIBLE ASSEMBLY SWITCHES+++
  27.         +++M80 MUST BE TRUE IF OVERLAY IS FALSE+++
  28.     ENDIF    ;NOT OVERLAY AND NOT M80
  29. ;
  30.     GLOBAL    CKOVLY
  31. ;
  32.  
  33. ;
  34.     IF    (NOT OVERLAY)
  35.     GLOBAL    ORIGIN
  36.     ASEG
  37.     ORG    0103H
  38.     .SFCOND        ;DON'T PRINT FALSE CONDITIONAL SOURCE
  39. ;
  40. ;    
  41. ORIGIN:
  42. JMP$START:    JMP    START    ;VECTOR FOR CKOVL EXIT
  43. JMP$ILPRT:    JMP    ILPRT    ;AND FOR ILPRINT
  44. ;
  45.     .printx +aplcat.asm+
  46.     ENDIF    ;not overlay
  47. ;
  48. MAJVER    EQU    9
  49. MINVER    EQU    9
  50. VERMONTH    EQU    5 
  51. VERDAY        EQU    25
  52. VERYEAR        EQU    85
  53. ;
  54. APLICARD    EQU     FALSE    ;TRUE ONLY IF YOU HAVE APPLICARD CPM
  55.                 ;MUST BE FALSE FOR MICROSOFT BOARD
  56. ;
  57. ;
  58. ;  
  59. CATSLOT    EQU    2    ;SLOT OF APPLE CAT
  60. SLOT    EQU    CATSLOT*16
  61. ;
  62. VERMSG    EQU    TRUE        ;CHANGE TO TRUE IF YOU HAVE GIVEN AT
  63.                 ;location SYSVER the name of the
  64.                 ;system for which MODEM9 has been
  65.                 ;configured.
  66. ;
  67. INIT    EQU    TRUE        ;CHANGE TO TRUE IF YOU ARE USING A
  68.                 ;routine at location INITMOD to
  69.                 ;initialize your modem port on MODEM9
  70.                 ;execution.
  71. ;
  72. SETUP    EQU    TRUE        ;CHANGE TO TRUE IF YOU ARE USING A
  73.                 ;routine at location SETUPR to change
  74.                 ;baud rate, etc.
  75.                 
  76. ;
  77. DISCON    EQU    TRUE        ;CHANGE TO TRUE IF YOU HAVE WRITTEN A
  78.                 ;routine at location DISCR to disconnect
  79.                 ;the modem from the telephone line.
  80. ;
  81. CRDT    EQU    TRUE        ;CHANGE TO TRUE IF YOU HAVE WRITTEN A
  82.                 ;routine at location DETCAR to give carrier
  83.                 ;detect status.
  84. ;
  85. EOSCLR    EQU    TRUE        ;change to TRUE if you have defined the
  86.                 ;clear to end of screen sequence for
  87.                 ;your terminal. Clear to end of screen is
  88.                 ;used on returning from terminal mode to
  89.                 ;keep the screen from becoming jumbled if
  90.                 ;the remote can positon your cursor.
  91. ;
  92. SCRNCLR    EQU    TRUE        ;change to TRUE if you have defined the
  93.                 ;home cursor and clear screen sequence
  94.                 ;for you terminal.
  95. ;
  96. CPM2X    EQU    TRUE    ;TRUE IF CP/M 2.X
  97. DBUFSIZ    EQU    8    ;BUFFER SIZE FOR FILE TRANSFER IN KBYTES
  98. ;
  99. ERRCRC    EQU    6    ;NUMBER OF TIMES TO TRY CRC MODE BEFORE
  100.             ;SWITCHING TO CHECKSUM
  101. ERRLIM    EQU    10    ;NUMBER OF TIMES TO RETRY
  102.             ;SEND/RECEIVE ERRORS BEFORE QUIT
  103. ;
  104. ;
  105. CRC       EQU   'C'         ;USED TO REQUEST 'CRC' INSTEAD OF 'CKSUM'
  106. ESC      EQU    '['-40H     ; ^[ = ESCAPE
  107. SOH       EQU   'A'-40H     ; ^A = START OF HEADER
  108. EOT       EQU   'D'-40H     ; ^D = END OF TEXT
  109. ACK       EQU   'F'-40H     ; ^F = ACKNOWLEDGE
  110. OKNMCH    EQU   'F'-40H     ; ^F = OKAY NAME MATCH
  111. BELL      EQU   'G'-40H     ; ^G = BELL CHARACTER
  112. BKSP      EQU    'H'-40H     ; ^H = BACKSPACE
  113. TAB      EQU    'I'-40H        ; ^I = TAB
  114. LF        EQU   'J'-40H     ; ^J = LINEFEED
  115. CR        EQU   'M'-40H     ; ^M = CARRIAGE RETURN
  116. XON       EQU   'Q'-40H     ; ^Q = XON CHARACTER
  117. XOFF      EQU   'S'-40H     ; ^S = XOFF CHARACTER
  118. NAK       EQU   'U'-40H     ; ^U = NOT ACKNOWLEDGE
  119. CAN       EQU   'X'-40H     ; ^X = CANCEL SEND/RECEIVE
  120. EOFCHAR   EQU   'Z'-40H     ; ^Z = END OF FILE
  121. SPACE      EQU    ' '        ; SPACE
  122. BDNMCH    EQU   75H         ; BAD NAME MATCH
  123. RUB      EQU    7FH        ; RUB
  124. ;
  125. ;
  126. ;    BDOS EQUATES
  127. ;
  128. RDCON    EQU    1
  129. WRCON    EQU    2
  130. LSTOUT    EQU    5
  131. PRINT    EQU    9
  132. RDBUF    EQU    10
  133. CONST    EQU    11
  134. RESET    EQU    13
  135. SELDSK    EQU    14
  136. OPEN    EQU    15
  137. CLOSE    EQU    16
  138. SRCHF    EQU    17
  139. SRCHN    EQU    18
  140. ERASE    EQU    19
  141. READ    EQU    20
  142. WRITE    EQU    21
  143. MAKE    EQU    22
  144. REN    EQU    23
  145. CURDSK    EQU    25
  146. STDMA    EQU    26
  147. GETALC    EQU    27        ;CP/M ALLOCATION VECTOR ADDRESS
  148. GETPARM    EQU    31        ;CURRENT DISK PARAMETERS ADDRESS
  149. USER    EQU    32
  150. FILSIZ    EQU    35
  151. BDOS    EQU    5
  152. REIPL    EQU    0
  153. FCB    EQU    5CH
  154. FCBEXT    EQU    FCB+12
  155. FCBSNO    EQU    FCB+32
  156. FCBRNO    EQU    FCB+32
  157. FCB2    EQU    6CH
  158. ;
  159. XMSPD    EQU    03CH        ;address used by bye/xmodem for mspeed
  160. ;
  161. ;
  162. ;
  163. ;START.ASM
  164. ;The user can make the following changes in this section:
  165. ;
  166. ;       a) Set the TRUE/FALSE statements in the lookup table which
  167. ;       begins with BAKUPBYTE and ends with EOFSEND
  168. ;       b) Change the control characters that are used for local commands,
  169. ;       this sequence starts with EXITCHR and ends with EXTCHR
  170. ;    c) Set STRGOK to TRUE and enter up to ten strings at location
  171. ;       STRINGS. These strings can be logon sequences or frequently
  172. ;       used commands that are sent to a remote computer
  173. ;
  174. ;
  175. STRGOK    EQU    TRUE        ;change to TRUE if you want to define
  176.                 ;strings, such as logon sequences, for
  177.                 ;transmission. Up to 10 strings may be
  178.                 ;entered at location STRINGS in this file.
  179. ;
  180. ;*** Don't change the ORG locations in this file ***
  181. ;*** These ORG statements provide standard locations ***
  182. ;*** for modification by overlay files or DDT. ***
  183. ;
  184.     IF    OVERLAY
  185. ;;this will be installed by l80 at link time 
  186.         ;JMP    CKOVLY    ;First make sure overlay and obj match
  187. ;
  188. ;
  189. JMP$START:    JMP    START    ;SPACE FOR JUMP TO START
  190. JMP$ILPRT:    JMP    ILPRT    ;Allows file to assemble as a stand-alone
  191.     ENDIF    ;overlay
  192. ;
  193. BAKUPBYTE:    DB    FALSE    ;true=make .BAK file
  194. CKSUMDFLT:    DB    FALSE    ;true=default to Checksum checking
  195.                 ;false=default to CRC checking
  196. TOGLCRC:    DB    TRUE    ;true=allow toggling of Checksum to CRC
  197. CONVBKSP:    DB    FALSE    ;true=convert backspace to rub
  198. TOGLBK:    DB    TRUE    ;true=allow toggling of bksp to rub
  199. ADDLF:        DB    FALSE    ;true=add LF after CR
  200. TOGLLF:    DB    TRUE    ;true=allow toggling of LF after CR
  201. STRLF:        DB    TRUE    ;true=strip LF after CR in terminal file output
  202. TOGSLF:        DB    TRUE    ;true=toggle strip LF after CR in file output
  203. SAVCCP:        DB    TRUE    ;TRUE=DO NOT OVERWRITE CCP
  204. LOCONEXTCHR:    DB    FALSE    ;true=local command if EXTCHR precedes
  205.                 ;false=not local command if EXTCHR precedes
  206. TOGLLOC:    DB    TRUE    ;true=allow toggling of LOCONEXTCHR
  207. LSTTST:        DB    TRUE    ;TRUE=ALLOW TOGGLING OF PRINTER ON/OFF
  208.                 ;in terminal mode. Set to false if your
  209.                 ;printer can't keep up with the modem
  210.  
  211. ;***** WARNING *****
  212. ;The three mode bytes XOFFTXT, XONWAIT, and ECHWAIT are mutually exclusive
  213. ; modes.  Do NOT attempt to set more than one of them at a time, as very
  214. ; unpredictable results will ensue.
  215.  
  216. XOFFTST:    DB    TRUE    ;TRUE=ALLOW TESTING OF XOFF FROM REMOTE
  217.                 ;while transmitting a file in terminal mode
  218. XONWAIT:    DB    FALSE    ;true=wait for XON after sending CR while
  219.                 ;transmitting a file in terminal mode
  220. TOGXOFF:    DB    TRUE    ;true=allow toggling of XOFF/XON testing
  221. ECHWAIT:    DB    FALSE    ;true=wait for echo before sending next
  222.                 ;character in terminal mode file output
  223. EOFSEND:    DB    FALSE    ;true=send eof in terminal mode file output
  224. NAKONLY:    DB    TRUE    ;true=resends a record only after a valid NAK
  225.                 ;false=resends a record after any non-ACK
  226.                 ;true is intended only for use with mainframes
  227.                 ;that send, for example, xoff when buffer is
  228.                 ;full
  229. ;
  230. SETUPTST:    DB    SETUP
  231. SCRNTEST:    DB    SCRNCLR
  232. TRANLOGON:    DB    STRGOK
  233. DISCFLG:    DB    DISCON
  234. CRDTFLG:    DB    CRDT
  235. CLOCK:        DB    CLKRATE
  236. ;
  237. MSPEED:        DB    1    ;sets the display time to send a file
  238.                 ;0=110 1=300 2=450 3=600 4=710
  239.                 ;5=1200 6=2400 7=4800 8=9600
  240. BYTDLY:        DB    0    ;default time to send character in
  241.                 ;terminal mode file transfer
  242.                 ;0=0 delay, 1=0.02 sec, -- ,9=0.18 sec
  243. CRDLY:        DB    0    ;default time for extra wait after CR
  244.                 ;in terminal mode file transfer
  245.                 ;0=0 delay, 1=0.02 sec, -- ,9=0.18 sec
  246. BELRPT:        DB    30    ;bell repeat time = value*0.03 sec
  247. NOOFCOL:    DB    5    ;number of directory columns
  248. DIALSW:        DB    0    ;DIALER DEFAULT MODE
  249.                 ;0=TOUCHTONE, 1=PULSE
  250. IDGT:        DB    10H    ;interdigit delay value for touch tone dialer
  251.                 ;increase if your exchange needs slower dialing
  252.                 ;should be 10H minimum
  253. BYESAV:        DB    TRUE    ;True saves mspeed in 03CH so that xmodem
  254.                 ;can be used after
  255. CTLTRP:        DB    TRUE    ;True terminal mode traps control characters
  256.                 ;(except tab,cr,lf,bs,rub) before sending to console
  257. ;
  258. ;
  259. EXITCHR:    DB    'E'-40H    ; ^E = Exit without disconnect
  260. LOGCHR:        DB    'O'-40H    ; ^O = Send logon
  261. LSTCHR:        DB    'Z'-40H    ; CHANGED DUE TO MAINFRAMES USING CTL P FOR A 'BREAK'
  262. UNSAVECHR:    DB    'R'-40H    ; ^R = Close input text buffer
  263. TRANCHR:    DB    'T'-40H ; ^T = Transmit file to remote
  264. SAVECHR:    DB    'Y'-40H    ; ^Y = Open input text buffer
  265. EXTCHR:        DB    '^'-40H    ; ^^ = Send next character
  266. ;
  267.         ;org    140H
  268. ;
  269. CLREOS:        CALL    JMP$ILPRT
  270. ;
  271.     IF    EOSCLR
  272.         DB    CLR1,CLR2,CLR3,CLR4,0
  273.     ENDIF    ;EOSCLR
  274. ;
  275.     IF    NOT EOSCLR
  276.         DB    0,0,0,0,0
  277.     ENDIF    ;NOT EOSCLR
  278. ;
  279.         RET
  280. ;
  281.         DS    CLREOS-$+16
  282. ;
  283. CLRSCRN:    CALL    JMP$ILPRT
  284. ;
  285.     IF    SCRNCLR
  286.         DB    SCLR1,SCLR2,SCLR3,SCLR4,0
  287.     ENDIF    ;SCRNCLR
  288. ;
  289.     IF    NOT    SCRNCLR
  290.         DB    0,0,0,0,0
  291.     ENDIF    ;NOT SCRNCLR
  292. ;
  293.         RET
  294. ;
  295.     ORG    150H
  296.         .list
  297. ;
  298. ;ALL STRINGS MUST BE 31 CHARACTERS OR LESS AND MUST BE TERMINATED WITH 0
  299. ;
  300. STRINGS:
  301.     DB    'STRING #0 AT 150H',0
  302.     DS    STRINGS-$+32*1
  303.     DB    'STRING #1 AT 170H',0
  304.     DS    STRINGS-$+32*2
  305.     DB    'STRING #2 AT 190H',0
  306.     DS    STRINGS-$+32*3
  307.     DB    'STRING #3 AT 1B0H',0
  308.     DS    STRINGS-$+32*4
  309.     DB    'STRING #4 AT 1D0H',0
  310.     DS    STRINGS-$+32*5
  311.     DB    'STRING #5 AT 1F0H',0
  312.     DS    STRINGS-$+32*6
  313.     DB    'STRING #6 AT 210H',0
  314.     DS    STRINGS-$+32*7
  315.     DB    'STRING #7 AT 230H',0
  316.     DS    STRINGS-$+32*8
  317.     DB    'STRING #8 AT 250H',0
  318.     DS    STRINGS-$+32*9
  319.     DB    'STRING #9 AT 270H',0
  320.     DS    STRINGS-$+32*10
  321. ;
  322. ;
  323. ;
  324. ;PHONE NUMBER LIBRARY TABLE.
  325. ;
  326. ;EACH DB MUST BE 32 CHARACTERS LONG FOR PROPER OPERATION.
  327. ;LAST DB MUST BE DB 0. UP TO 26 NUMBERS ARE ALLOWED.
  328. ;
  329. NUMBLIB:
  330. ;    '----5---10---15---20---25-----32'
  331. DB    'A=AMRAD           1-703-734-1387'    ;'A'
  332. DB    'B=ROCHESTER RBBS  1-716-425-1785'    ;'B'
  333. DB    'C=CBBS PASADENA   1-818-799-1632'    ;'C'
  334. DB    'D=NOVATION        1-818-881-6880'    ;'D'
  335. DB    'E=TECH. CBBS      1-313-846-6127'    ;'E'
  336. DB    'F=RON FOWLER     1-313-729-1905R'    ;'F'
  337. DB    'G=GASNET NASA     1-301-344-9156'    ;'G'
  338. DB    'H=DAVE HARDY      1-313-846-6127'    ;'H'
  339. DB    'I=WAYNE HAMMERLY  1-301-953-3753'    ;'I'
  340. DB    'J=RBBS PASADENA   1-818-356-1034'    ;'J'
  341. DB    'K=TIM LINEHAN     1-206-357-7400'    ;'K'
  342. DB    'L=PROGRAM STORE   1-202-337-4694'    ;'L'
  343. DB    'M=KELLY SMITH     1-805-527-9321'    ;'M'
  344. DB    'N=SUPERBRAIN SYS  1-617-862-0781'    ;'N'
  345. DB    'O=R.L.PLOUFFE     1-703-524-2549'    ;'O'
  346. DB    'P=K.PETERSEN      <313-759-6569>'    ;'P'
  347. DB    'Q=BRUCE RATOFF    1-201-272-1874'    ;'Q'
  348. DB    'R=MARK PULVER     1-312-789-0499'    ;'R'
  349. DB    'S=LA CANADA RBBS  1-818-790-3014'    ;'S'
  350. DB    'T=                              '    ;'T'
  351. DB    'U=                              '    ;'U'
  352. DB    'V=                              '    ;'V'
  353. DB    'W=                              '    ;'W'
  354. DB    'X=                              '    ;'X'
  355. DB    'Y=                              '    ;'Y'
  356. DB    'Z=                              '    ;'Z'
  357. ;
  358. ;
  359. ALDS1:
  360. DB    '<=                              '    ;'<' 
  361. ALDS2:
  362. DB    '>=                              '    ;'>' 
  363. DB    0                    ; END ALDS
  364. ;    '----5---10---15---20---25-----32'
  365.  
  366. ;
  367.     IF    NOT    APLICARD
  368. ;
  369. INCTLP:    LDA    STATUS
  370.         RET
  371.         DS    INCTLP-$+16  ;extra space
  372. OUTDATP:    STA    OUTDAT
  373.         RET
  374.         DS    OUTDATP-$+16 ;EXTRA SPACE
  375. ;
  376.     ENDIF    ;NOT APLICARD
  377. ;
  378. ;
  379.     IF    APLICARD
  380. ;
  381. INCTLP:    PUSH    D
  382.         LXI    D,STATUS
  383.         CALL    PEEK
  384.         POP    D
  385.         RET
  386.     DS    INCTLP-$+16 ;EXTRA SPACE
  387. ;
  388. OUTDATP:
  389.         PUSH    D
  390.         LXI    D,OUTDAT
  391.         CALL    POKE
  392.         POP    D
  393.         RET
  394.         DS    OUTDATP-$+16
  395. ;
  396.     ENDIF    ;APLICARD                        
  397. ;
  398. INDATP:
  399. ;
  400.     IF    NOT APLICARD
  401. ;
  402.         LDA    INDAT        ;IN MODEM DATA PORT
  403.         PUSH    PSW
  404.         LDA    XMTRAM
  405.         STA    XMTBYT
  406.         POP    PSW
  407.         RET
  408. ;
  409.     ENDIF    ;NOT APLICARD
  410. ;
  411.     IF    APLICARD
  412. ;
  413.         PUSH    D
  414.         LXI    D,INDAT
  415.         CALL    PEEK
  416.         PUSH    PSW
  417.         CALL    SXMTBYT
  418.         POP    PSW
  419.         POP    D
  420.         RET
  421. ;
  422.     ENDIF    ;APLICARD
  423. ;
  424.                     
  425.         DS    INDATP-$+16  ;extra space
  426. ;
  427. ANISNDB:    ANI    MODSNDB
  428.         RET            ;BIT TO TEST FOR SEND READY
  429.         DS    ANISNDB-$+16 ;extra space
  430. CPISNDR:    CPI    MODSNDR        ;VALUE OF SEND BIT WHEN READY
  431.         RET
  432.         DS    CPISNDR-$+16 ;extra space
  433. ANIRCVB:    ANI    MODRCVB        ;BIT TO TEST FOR RECEIVE READY
  434.         RET
  435.         DS    ANIRCVB-$+16 ;extra space
  436. CPIRCVR:    CPI    MODRCVR        ;VALUE OF RECEIVE BIT WHEN READY
  437.         RET
  438.         DS    CPIRCVR-$+16 ;extra space
  439. ;
  440. VERNUM:        CALL    JMP$ILPRT
  441.     DB    CR,LF,'MODEM '
  442.     DB    MAJVER+'0'
  443.     DB    '.'
  444.     DB    MINVER   / 10 + '0', MINVER   MOD 10 + '0'
  445.     DB    ' - '
  446.     DB    VERMONTH / 10 + '0', VERMONTH MOD 10 + '0', '/'
  447.     DB    VERDAY   / 10 + '0', VERDAY   MOD 10 + '0', '/'
  448.     DB    VERYEAR  / 10 + '0', VERYEAR  MOD 10 + '0'
  449.     DB    CR,LF,0
  450.     JMP    SYSVER
  451. ;
  452. ;
  453. SYSVER:
  454.     IF    NOT VERMSG
  455.     CALL    JMP$ILPRT
  456.     DB    'Version for: Apple-Cat in slot ',CATSLOT+30H,CR,LF,0
  457.             ;NOTE: 0 MUST BE AT END OF ALL ILPRT MESSAGES
  458.     RET
  459.     ENDIF    ;NOT VERMSG
  460. ;
  461. ;This is where the message goes giving the system for
  462. ;which MODEM9 has been customized.
  463. ;
  464.     IF     VERMSG AND APLICARD
  465.     CALL    JMP$ILPRT
  466.     DB    'Version for: Apple-Cat in slot ',CATSLOT+'0'
  467.     DB    ' and PCPI CP/M',CR,LF,0
  468.     RET
  469.     ENDIF    ;VERMSG AND APLICARD
  470. ;
  471.     IF    VERMSG AND NOT APLICARD
  472.     CALL    JMP$ILPRT
  473.     DB    'Version for: Apple-Cat in slot ',CATSLOT+'0'
  474.     DB    ' and SOFTCARD CP/M',CR,LF,0
  475.     RET
  476.     ENDIF    ;VERMSG AND APLICARD
  477. ;
  478. ;
  479. ;
  480. ;
  481. ;NOVATION APPLE-CAT EQUATES START HERE
  482. ;
  483. ;
  484.     IF    NOT APLICARD 
  485. ;
  486. COM    EQU    0E08CH+SLOT
  487. XMTBYT    EQU    0E08DH+SLOT
  488. CON    EQU    0E08AH+SLOT
  489. BSRBYT    EQU    0E083H+SLOT
  490. SHBYT    EQU    0E082H+SLOT
  491. TONBYT    EQU    0E081H+SLOT
  492. SQUBYT    EQU    0E081H+SLOT
  493. SWBYT    EQU    0E080H+SLOT
  494. RECBYT    EQU    0E089H+SLOT
  495. INDAT    EQU    0E08BH+SLOT
  496. OUTDAT    EQU    0E08EH+SLOT
  497. SPDBYT    EQU    0E08BH+SLOT
  498. STATUS    EQU    0E08FH+SLOT
  499. ACBYT    EQU    0E08DH+SLOT
  500. DEVBYT    EQU    0E08FH+SLOT
  501. DACBYT    EQU    0E080H+SLOT
  502. ;
  503. ;
  504.     ENDIF    ;NOT APLICARD
  505. ;
  506.     IF    APLICARD
  507. ;
  508. COM    EQU    0C08CH+SLOT
  509. XMTBYT    EQU    0C08DH+SLOT
  510. CON    EQU    0C08AH+SLOT
  511. BSRBYT    EQU    0C083H+SLOT
  512. SHBYT    EQU    0C082H+SLOT
  513. TONBYT    EQU    0C081H+SLOT
  514. SQUBYT    EQU    0C081H+SLOT
  515. SWBYT    EQU    0C080H+SLOT
  516. RECBYT    EQU    0C089H+SLOT
  517. INDAT    EQU    0C08BH+SLOT
  518. OUTDAT    EQU    0C08EH+SLOT
  519. SPDBYT    EQU    0C08BH+SLOT
  520. STATUS    EQU    0C08FH+SLOT
  521. ACBYT    EQU    0C08DH+SLOT
  522. DEVBYT    EQU    0C08FH+SLOT
  523. DACBYT    EQU    0C080H+SLOT
  524. ;
  525.     ENDIF    ;APLICARD
  526. ;    
  527. MODSNDB    EQU    00010000B    ;READY TO SEND
  528. MODSNDR    EQU    MODSNDB        ;change to 0 if bit is 0 when
  529.                 ;ready to send
  530. MODRCVB    EQU    00001000B    ;RECEIVE READY including framing/overrun
  531. MODRCVR    EQU    00001000B    ;change to 0 if bit is 0 when
  532.                 ;data received
  533.  
  534. ;
  535. ;
  536.     IF    NOT APLICARD
  537. CLKRATE    EQU    2        ;CLOCK SPEED IN MHZ, 8 MHZ MAXIMUM
  538.     ENDIF    ;not aplicard
  539. ;
  540.     IF    APLICARD    ;NOTE: DO NOT CHANGE RATE TO 6MHZ
  541. CLKRATE    EQU    1        ;FOR APLICARD: EXTRA PROCESSING OVERHEAD
  542.     ENDIF    ;aplicard    ;OF PCPI PEEK/POKE ROUTINES MORE THAN
  543.                 ;COMPENSATES FOR THIS
  544. ;
  545.     IF    EOSCLR
  546. CLR1    EQU    ESC        ;ESC Y is the Apple clear to end
  547. CLR2    EQU    'Y'        ;OF SCREEN SEQUENCE
  548. CLR3    EQU    0        ;the unused bytes MUST be 0
  549. CLR4    EQU    0
  550.     ENDIF    ;EOSCLR
  551. ;
  552. ;CHANGE SCLR1, SCLR2, SCLR3, AND SCLR4 TO THE APPROPRIATE VALUES FOR
  553. ;YOUR TERMINAL IF YOU DO NOT HAVE STANDARD APPLE CALLS
  554.     IF    SCRNCLR
  555. SCLR1    EQU    ESC        ;ESC * is the Apple home cursor
  556. SCLR2    EQU    '*'        ;AND CLEAR SCREEN SEQUENCE
  557. SCLR3    EQU    0        ;the unused bytes MUST be 0
  558. SCLR4    EQU    0
  559.     ENDIF    ;SCRNCLR
  560. ;
  561.  
  562. ;
  563. ;
  564.     IF    INIT
  565. ;
  566. INITMOD:
  567.     JMP    AINITMOD
  568. ;
  569.     ENDIF
  570. ;
  571.  
  572. ;
  573. INIT3:        
  574.         MVI    A,1
  575.         STA    MSPEED
  576.         CALL    XMCK
  577.         LDA    REFLG
  578.         ORA    A
  579.         RNZ
  580.         CALL    PICKUP    ;PICK UP PHONE
  581.         MVI    A,0A1H
  582. ;
  583.         IF    NOT APLICARD
  584. ;
  585.         STA    RECBYT    ;SET RECEIVER FOR 103
  586.         MVI    A,00000011B    ;8 DATA NO PARITY 1 STOP
  587.         STA    CON
  588.         MVI    A,22H    ;SET UART TO 300 BAUD
  589.         STA    SPDBYT
  590. ;
  591.         ENDIF    ;NOT APLICARD
  592. ;
  593.         IF    APLICARD
  594. ;
  595.         PUSH    D
  596.         LXI    D,RECBYT
  597.         CALL    POKE
  598.         MVI    A,00000011B    ;8DATA NO PAR 1 STOP
  599.         LXI    D,CON
  600.         CALL    POKE
  601.         MVI    A,22H
  602.         LXI    D,SPDBYT
  603.         CALL    POKE
  604.         POP    D
  605. ;
  606.         ENDIF    ;APLICARD
  607. ;
  608.  
  609.         MVI    A,0FFH
  610.         STA    SETFLG
  611.         RET
  612. ;
  613. ORIG103:    
  614.         MVI    A,11H
  615. ;
  616.         IF    NOT APLICARD
  617. ;
  618.         STA    XMTBYT
  619.         STA    XMTRAM
  620.                 ;103 ORIG RING IRQ OFF
  621.         MVI    A,65H
  622.         STA    RECBYT
  623. ;
  624.         ENDIF    ;NOT APLICARD
  625. ;
  626.         IF    APLICARD
  627. ;
  628.         STA    XMTRAM
  629.         PUSH    D
  630.         LXI    D,XMTBYT
  631.         CALL    POKE
  632.         POP    D
  633. ;
  634.         ENDIF    ;APLICARD
  635. ;
  636.         RET
  637. ;
  638. ANS103:        
  639.         MVI    A,10H
  640. ;
  641.         IF    NOT APLICARD
  642. ;
  643.         STA    XMTBYT
  644.         STA    XMTRAM
  645.         MVI    A,64H
  646.         STA    RECBYT
  647. ;
  648.         ENDIF    ;NOT APLICARD
  649. ;
  650.         IF    APLICARD
  651. ;
  652.         STA    XMTRAM
  653.         PUSH    D
  654.         LXI    D,XMTBYT
  655.         CALL    POKE
  656.         MVI    A,64H
  657.         LXI    D,RECBYT
  658.         CALL    POKE
  659.         POP    D
  660. ;
  661.         ENDIF    ;APLICARD
  662. ;                                    
  663.         RET
  664. ;
  665. INIT2:        
  666.         MVI    A,5
  667.         STA    MSPEED
  668.         CALL    XMCK
  669.         MVI    A,18H
  670.         STA    XMTRAM        ;for re-entrance
  671.         LDA    REFLG
  672.         ORA    A
  673.         RNZ            ;return if re entrant
  674.         MVI    A,0FFH
  675.         STA    SETFLG
  676.         CALL     PICKUP
  677.         MVI    A,0
  678. ;
  679.         IF    NOT APLICARD
  680. ;
  681.         STA    SPDBYT
  682.         MVI    A,18H
  683.         STA    XMTBYT
  684.         MVI    A,0AH
  685.         STA    DEVBYT
  686.         MVI    A,13H
  687.         STA    CON
  688.         MVI    A,05H
  689.         STA    COM
  690.         STA    MSPEED
  691.         CALL    XMCK
  692.         MVI    A,0FFH
  693.         STA    SETFLG
  694. ;
  695.         ENDIF    ;NOT APLICARD
  696. ;
  697.         IF    APLICARD
  698. ;
  699.         PUSH    D
  700.         LXI    D,SPDBYT
  701.         CALL    POKE
  702.         MVI    A,18H
  703.         LXI    D,XMTBYT
  704.         CALL    POKE
  705.         MVI    A,0AH
  706.         LXI    D,DEVBYT
  707.         CALL    POKE
  708.         MVI    A,13H
  709.         LXI    D,CON
  710.         CALL    POKE
  711.         MVI    A,05H
  712.         LXI    D,COM
  713.         CALL    POKE
  714.         POP    D
  715. ;
  716.  
  717. ;
  718.         ENDIF    ;APLICARD
  719. ;
  720.         RET
  721. ;
  722. ORIG212:    
  723.         LDA    REFLG
  724.         ORA    A
  725.         RNZ
  726.         MVI    A,0A1H
  727. ;
  728.         IF    NOT APLICARD
  729. ;
  730.         STA    SQUBYT
  731.         CALL    DELAY5
  732.         MVI    A,21H
  733.         STA    SQUBYT
  734. ;
  735.         ENDIF    ;NOT APLICARD
  736. ;
  737.         IF    APLICARD
  738. ;
  739.         PUSH    D
  740.         LXI    D,SQUBYT
  741.         CALL    POKE
  742.         CALL    DELAY5
  743.         MVI    A,21H
  744.         LXI    D,SQUBYT
  745.         CALL    POKE
  746.         POP    D
  747. ;
  748.         ENDIF    ;APLICARD
  749. ;
  750.         RET
  751. ;
  752. ANS212:        
  753.         LDA    REFLG
  754.         ORA    A
  755.         RNZ
  756.         MVI    A,81H
  757. ;
  758.         IF    NOT APLICARD
  759.         STA    SQUBYT
  760.         CALL    DELAY5
  761.         MVI    A,01
  762.         STA    SQUBYT
  763. ;
  764.         ENDIF    ;NOT APLICARD
  765. ;
  766.         IF    APLICARD
  767.         PUSH    D
  768.         LXI    D,SQUBYT
  769.         CALL    POKE
  770.         CALL    DELAY5
  771.         MVI    A,01
  772.         LXI    D,SQUBYT
  773.         CALL    POKE
  774.         POP    D
  775. ;
  776.         ENDIF    ;APLICARD
  777. ;
  778.         RET
  779. ;
  780. SETORIG:
  781.             MVI       A,0FFH
  782.         STA    SETFLG
  783.         LDA    MSPEED
  784.         CPI    1
  785.         JZ    ORIG103
  786.         JMP    ORIG212    ;SELECT 212 OR 103
  787. ;
  788. SETANS:
  789.         MVI    A,0FFH
  790.         STA    SETFLG    ;SHOW MODEM IS SET
  791.             LDA    MSPEED
  792.         CPI    1
  793.         JZ    ANS103
  794.         JMP    ANS212
  795. ;
  796. PICKUP:        
  797.         MVI    A,0A1H
  798. ;
  799.         IF    NOT APLICARD
  800. ;
  801.         STA    SQUBYT
  802. ;
  803.         ENDIF    ;NOT APLICARD
  804. ;
  805.         IF    APLICARD
  806.         PUSH    D
  807.         LXI    D,SQUBYT
  808.         CALL    POKE
  809.         POP    D
  810. ;
  811.         ENDIF    ;APLICARD
  812. ;
  813.         MVI    A,'T'    ;FORCE TERMINAL MODE AFTER INIT
  814.         STA    5DH
  815.         MVI    A,0
  816.         STA    80H    ;AND RESET COMMAND TAIL LENGTH
  817.                 ;IN CASE MAIN CALLS US AGAIN
  818.         MVI    A,2
  819. ;
  820.         IF    NOT APLICARD
  821. ;
  822.         STA    SHBYT
  823.         MVI    A,13H
  824.         STA    CON
  825.         MVI    A,05H
  826.         STA    COM
  827.         MVI    A,0
  828.         STA    DEVBYT
  829. ;
  830.         ENDIF    ;NOT APLICARD
  831. ;
  832.         IF    APLICARD
  833. ;
  834.         PUSH    D
  835.         LXI    D,SHBYT
  836.         CALL    POKE
  837.         MVI    A,13H
  838.         LXI    D,CON
  839.         CALL    POKE
  840.         MVI    A,05H
  841.         LXI    D,COM
  842.         CALL    POKE
  843.         MVI    A,0
  844.         LXI    D,DEVBYT
  845.         CALL    POKE
  846.         POP    D    
  847. ;
  848.         ENDIF    ;APLICARD
  849. ;
  850.         RET
  851. ;
  852. DELAY5:        PUSH    PSW
  853.         PUSH     B    ;THIS IS A 5-10 MS HARDWARE DELAY
  854.         LXI    B,1000    ;FOR SETTING UP 212 BOARD
  855. DELAY5A:    DCX    B
  856.         MOV    A,B
  857.         ORA    C
  858.         JNZ    DELAY5A
  859.         POP    B
  860.         POP    PSW
  861.         RET
  862. ;
  863. D500:                    ;500 ms delay
  864.         MVI    A,100        ;100 5ms delays
  865. D500A:        DCR    A
  866.         RZ
  867.         CALL    DELAY5
  868.         JMP    D500A
  869. ;
  870.         IF    (INIT AND SETUP)
  871. ;
  872. SETUPR:
  873.         LDA    SETFLG        ;DONE THIS RECENTLY?
  874.         XRA    A        ;IF SO
  875.         RNZ            ;RETURN
  876.         MVI    A,0FFH
  877.         STA    SETFLG
  878.         STA    INFLAG
  879.         CALL    JMP$ILPRT
  880.         DB    'Enter ''3'' for 300 baud, ''2'' for 1200 baud, '
  881.         DB    'or ''V'' for voice mode: '
  882.         DB    0
  883.         MVI    C,1
  884.         CALL    BDOS
  885.         PUSH    PSW
  886.         CALL    JMP$ILPRT
  887.         DB    CR,LF,0
  888.         POP    PSW
  889.         PUSH     PSW
  890.         ANI    01011111B    ;FORCE UPPER CASE ETC
  891.         CPI    'V'
  892.         JZ    SETVOICE
  893.         POP    PSW
  894.         SUI    30H        ;ZAP ASCII BIAS
  895.         CPI    3
  896.         JNZ    CK2A
  897.         CALL    INIT3
  898.         JMP    SETUPR1
  899. ;
  900. CK2A:        CPI    2
  901.         JNZ    NOT2
  902.         CALL    INIT2
  903.         JMP    SETUPR1
  904. ;
  905. NOT2:        CALL    JMP$ILPRT
  906.         DB    07h,'Invalid: must be ','2',' or ','3'
  907.         DB    cr,lf,0
  908.         JMP    SETUPR
  909. ;
  910. SETUPR1:
  911.         CALL    JMP$ILPRT
  912.         DB    'ENTER ''O'' for Originate, or ''A'' for Answer ',0
  913.         MVI    C,1
  914.         CALL    BDOS
  915.         PUSH    PSW
  916.         CALL    JMP$ILPRT    ;TURN UP NEW LINE
  917.         DB    CR,LF,0
  918.         POP    PSW
  919.         ANI    01011111B    ;FORCE UPPER CASE HI BIT OFF
  920.         CPI    'O'
  921.         JZ    SETORIG
  922.         CPI    'A'
  923.         JZ    SETANS
  924.         CALL    JMP$ILPRT
  925.         DB    07h,'INVALID: Must be ','O',' or ','A'
  926.         DB    cr,lf,0
  927.         JMP    SETUPR1
  928. ;
  929. SETVOICE:
  930.         POP    PSW    ;RESTORE STACK FROM SETUPR
  931.         MVI    A,2
  932.         ENDIF    ;INIT AND SETUP
  933. ;
  934.         IF    (INIT AND SETUP) AND (NOT APLICARD)
  935.         STA    SHBYT
  936.         MVI    A,18H    ;TURN OFF 103 XMTR
  937.         STA    XMTBYT
  938.         STA    XMTRAM
  939.         MVI    A,0A2H    ;DISABLE 212 AND TURN ON HANDSET
  940.         STA    SQUBYT
  941.         MVI    A,0
  942.         STA    SETFLG
  943. ;
  944.         ENDIF    ;INIT AND SETUP AND NOT APLICARD
  945. ;
  946.         IF    (INIT AND SETUP) AND APLICARD
  947. ;
  948.         PUSH    D
  949.         LXI    D,SHBYT
  950.         CALL    POKE
  951.         MVI    A,18H
  952.         STA    XMTRAM
  953.         LXI    D,XMTBYT
  954.         CALL    POKE
  955.         MVI    A,0A2H
  956.         LXI    D,SQUBYT
  957.         CALL    POKE
  958.         POP    D
  959. ;
  960.         ENDIF    ;INIT AND SETUP AND APLICARD
  961. ;
  962.         IF    (INIT AND SETUP)
  963.         MVI    A,0
  964.         STA    SETFLG
  965.         RET
  966.         ENDIF    ;INIT AND SETUP
  967. ;
  968. ;THESE ARE THE PCPI ROUTINES FOR PASSING
  969. ;PARAMATERS TO THE APPLE CAT
  970. ;
  971.     IF    APLICARD
  972. ;
  973. RDBYTE    EQU    0FFE0H    ;READ A BYTE FROM APPLE (A=BYTE)
  974. WRBYTE    EQU    0FFE3H    ;WRITE A BYTE TO APPLE (C=BYTE)
  975. RDWORD    EQU    0FFE6H    ;READ 2 BYTES FROM APPLE (DE=BYTES)
  976. WRWORD    EQU    0FFE9H    ;WRITE 2 BYTES TO APPLE (DE=BYTES)
  977. RDNBYTS    EQU    0FFEFH    ;READ N BYTES (DE=COUNT, HL=BUFFER)
  978. WRNBYTS    EQU    0FFEFH    ;WRITE N BYTES (DE=COUNT,HL=BUFFER)
  979. ;
  980. PEEK1BYTE    EQU    6    ;COMMAND TO PEEK 1 BYTE IN THE APPLE
  981. POKE1BYTE    EQU    7    ;COMMAND TO POKE 1 BYTE IN THE APPLE
  982. ;
  983. ;
  984. PEEK:
  985.     PUSH    B    ;SAVE B REG
  986.     MVI    C,PEEK1BYTE
  987.     CALL    WRBYTE    ;WRBYTE=0FFE3H
  988.     CALL    WRWORD    ;WRWORD=FFE6H
  989.     CALL    RDBYTE    ;RDBYTE=OFFEOH
  990.     POP    B    ;RESTORE B
  991.     RET
  992. ;
  993. POKE:
  994. ;
  995.     PUSH    PSW    ;SAVE A
  996.     PUSH    B    ;SAVE B
  997.     MOV    B,A
  998.     MVI    C,POKE1BYTE
  999.     CALL    WRBYTE
  1000.     CALL    WRWORD
  1001.     MOV    C,B
  1002.     CALL    WRBYTE
  1003.     POP    B
  1004.     POP    PSW
  1005.     RET
  1006. ;
  1007. SXMTBYT:
  1008.     PUSH    D        ;READ XMTRAM AND POKE INTO XMTBYT
  1009.     LDA    XMTRAM
  1010.     LXI    D,XMTBYT
  1011.     CALL    POKE
  1012.     POP    D
  1013.     RET
  1014. ;
  1015. SXMTRAM:
  1016.     PUSH    D        ;POKE BYTE IN A INTO XMTRAM AND XMTBYT
  1017.     STA    XMTRAM
  1018.     LXI    D,XMTBYT
  1019.     CALL    POKE
  1020.     POP    D
  1021.     RET
  1022. ;
  1023.     ENDIF        ;APLICARD
  1024. ;
  1025. AINITMOD:         ;MOVED HERE TO MAKE ROOM FOR APLICARD STUFF
  1026.     MVI    A,SLOT
  1027.     STA    DIALSLOT    ;for dialer
  1028.     CALL    FIXMT        ;in case we are re-entrant
  1029.     LDA    INFLAG
  1030.     CPI    0FFH
  1031.     JZ    DETCAR
  1032.     MVI    A,0FFH
  1033.     STA    INFLAG    ;MAKE SURE WE ONLY DO THIS ONCE
  1034.     LDA    REFLG
  1035.     ORA    A
  1036.     CNZ    SETUPR    ;if re entrant
  1037.     LDA    REFLG
  1038.     ORA    A
  1039.     RNZ
  1040.     XRA    A
  1041.     STA    REFLG
  1042.  
  1043.     
  1044. ;
  1045.     IF    NOT APLICARD
  1046. ;
  1047.     MVI     A,6
  1048.     STA    BSRBYT    ;DISABLE BSR IRQ
  1049.     MVI    A,4
  1050.     STA    COM
  1051.     LDA    XMTRAM
  1052.     ORI    00010000B    ;SET RING IRQ BIT
  1053.     STA    XMTBYT        ;DISABLE RING IRQ
  1054.     STA    XMTRAM
  1055. ;
  1056.     MVI    A,SLOT        ;PUT CATSLOT*16 IN 6502 FF
  1057. ;
  1058. ;
  1059.     STA    0F0FFH        ;FOR DIALING ROUTINES
  1060. ;
  1061.     ENDIF    ;NOT APLICARD
  1062.     IF    APLICARD
  1063. ;
  1064.     PUSH    D
  1065.     MVI    A,6
  1066.     LXI    D,BSRBYT
  1067.     CALL    POKE
  1068.     MVI    A,4
  1069.     LXI    D,COM
  1070.     CALL    POKE
  1071.     CALL    SXMTBYT
  1072.     ORI    00010000B
  1073.     CALL    SXMTRAM
  1074.     POP    D
  1075. ;
  1076.  
  1077.     ENDIF    ;APLICARD
  1078. ;
  1079. ;CHECK IF PRINT ENABLED. IF SO, PATCH LSTST IN APPLE BIOS
  1080. ;SO ITS ALWAYS 'READY'
  1081. ;
  1082. ;
  1083.     IF    NOT APLICARD
  1084.     LDA    LSTTST
  1085.     CPI    0
  1086.     JZ    FIRSTIN    ;NOT PRINTING SO SKIP PATCHING
  1087.     LHLD    0001    ;GET START OF BIOS TABLE
  1088.     MOV    A,L
  1089.     ADI    02AH    ;GET IT TO POINT TO BIOS 14 VECTOR
  1090.     MOV    L,A
  1091.     MVI    A,03EH
  1092.     MOV    M,A
  1093.     INR    L
  1094.     MVI    A,0FFH    ;INSTALL MVI A,FF RET
  1095.     MOV    M,A
  1096.     INR    L
  1097.     MVI    A,0C9H
  1098.     MOV    M,A
  1099.     ENDIF    ;NOT APLICARD
  1100. ;
  1101. ;NOW BEGINS THE ACTUAL MODEM INITIALIZATION
  1102. ;
  1103. FIRSTIN:    LDA    80H
  1104.         CPI    0
  1105.                 ;CHECK FOR BAUD CODE IN COMMAND TAIL
  1106.         JZ    DISCR      ;IF NOTHING THERE, HANG UP THE PHONE
  1107.         MVI    A,0FFH
  1108.         STA    SETFLG    ;This keeps detcar from causing trouble
  1109.         LDA    5DH
  1110.         ANI    7FH
  1111.         CPI    '3'    ;ASCII '3' FOR 300 BAUD?
  1112.         JNZ    CK2    ;NO SEE IF 1200
  1113.         XRA    A
  1114.         STA    80H    ;RESET COMMAND TAIL
  1115.         CALL    INIT3
  1116.         JMP    ORIG103
  1117. ;
  1118. CK2:        CPI    '2'    ;ASCII '2' FOR 1200 BAUD?
  1119.         JNZ    SETUPR
  1120.         CALL    INIT2    ;YEP GO SET UP 1200 BAUD
  1121.         JMP    ORIG212    ;ORIGINATE
  1122. ;
  1123. FIXMT:
  1124.         LDA    080H
  1125.         ORA    A
  1126.         RZ
  1127.         LDA    INFLAG        ;check inflag for T trap
  1128.         ORA    A
  1129.         RNZ
  1130.         LDA    05DH        ;first byte of command tail
  1131.         CPI    'T'        ;check for re-entrant terminal mode
  1132.         JZ    FIXMT1
  1133.         CPI    'E'
  1134.         JZ    FIXMT1
  1135.         CPI    'L'
  1136.         JZ    FIXMT1
  1137.         CPI    'S'
  1138.         JZ    FIXMT1
  1139.         CPI    'R'
  1140.         JZ    FIXMT1
  1141.         RET
  1142. ;
  1143. FIXMT1:
  1144.  
  1145.         MVI    A,0FFH
  1146.         STA    REFLG        ;signal re-entrant
  1147.         RET
  1148. ;
  1149. REFLG:        DB    0
  1150. ;
  1151. DETCAR0:
  1152.     CALL    JMP$ILPRT
  1153.     DB    'not ',0
  1154. DETCAR1:
  1155.     CALL    JMP$ILPRT
  1156.     DB    'present',CR,LF,0
  1157.     RET
  1158. ;
  1159. CKOVLY:    
  1160.     LDA    OVLEND        ;LOCATION OF TEST BYTE IN DIALER
  1161. ;
  1162.     IF    APLICARD
  1163.     CPI    'P'
  1164.     ENDIF    ;APLICARD
  1165. ;
  1166.     IF    NOT APLICARD
  1167.     CPI    'M'
  1168.     ENDIF    ;NOT APLICARD
  1169. ;
  1170.     JZ    JMP$START    ;WE'RE OK
  1171. ;
  1172.     LXI    D,OOPSMSG    ;OOPS, WRONG COMBINATION
  1173.     MVI    C,PRINT        ;TELL OPERATOR WE HAVE A PROBLEM
  1174.     CALL    BDOS        ;USE BDOS SINCE WE DON'T KNOW WHERE ILPRT IS
  1175.     JMP    0        ;AND RETURN TO CPM    
  1176. ;
  1177. OOPSMSG:    DB    BELL,BELL,BELL,BELL
  1178.         DB    'WRONG OVERLAY/.OBJ FILE COMBINATION! '
  1179.         DB    'ABORTING!',CR,LF,'$'
  1180. ;
  1181. ;
  1182. ;
  1183. ;
  1184.     IF    DISCON
  1185. DISCR:
  1186.     CALL    DISCR1
  1187.     CALL    DELAY5
  1188. DISCR1:    xra    a
  1189.     sta    reflg    ;reset re-entry flag
  1190.     mvi    a,1
  1191. ;
  1192.     IF    NOT APLICARD
  1193. ;
  1194.     sta    shbyt    ;hang up phone
  1195.     mvi    a,081H
  1196.     sta    squbyt    ;disable 212 board
  1197.     mvi    a,18h
  1198.     sta    xmtbyt
  1199.     sta    xmtram    ;and 103 xmtr
  1200. ;
  1201.     ENDIF    ;NOT APLICARD
  1202. ;
  1203.     IF    APLICARD
  1204. ;
  1205.     PUSH    D
  1206.     LXI    D,SHBYT
  1207.     CALL    POKE
  1208.     MVI    A,081H
  1209.     LXI    D,SQUBYT
  1210.     CALL    POKE
  1211.     MVI    A,18H
  1212.     LXI    D,SQUBYT
  1213.     CALL    POKE
  1214.     CALL    SXMTRAM
  1215.     POP    D
  1216. ;
  1217.     ENDIF    ;APLICARD
  1218. ;
  1219.     MVI     A,0        ;RESET SETUP FLAG
  1220.     STA    SETFLG
  1221.     ret
  1222. ;
  1223.     ENDIF    ;DISCON
  1224. ;
  1225. ;
  1226. ;
  1227. ;
  1228. DETCAR:
  1229.     LDA    SETFLG        ;ARE WE SET UP YET?
  1230.     CPI    0
  1231.     CZ    SETUPR        ;NO SO SET IT UP
  1232. DETCARA:
  1233.     LDA     CRDTFLG
  1234.     ORA    A
  1235.     RZ            ;RETURN IF FALSE
  1236.     CALL    JMP$ILPRT
  1237.     DB    'Carrier ',0
  1238. ;
  1239.     IF    NOT APLICARD
  1240. ;
  1241.     LDA    SWBYT
  1242. ;
  1243.     ENDIF    ;NOT APLICARD
  1244. ;
  1245.     IF    APLICARD
  1246. ;
  1247.     PUSH    D
  1248.     LXI    D,SWBYT
  1249.     CALL    PEEK
  1250.     POP    D
  1251. ;
  1252.     ENDIF    ;APLICARD
  1253. ;
  1254.     ANI    00100000B
  1255.     CPI    00100000B
  1256.     JZ    DETCAR1
  1257.     LDA    MSPEED
  1258.     CPI    5
  1259.     JNZ    DETCAR0
  1260. ;
  1261.     IF    NOT APLICARD
  1262. ;
  1263.     LDA    ACBYT
  1264. ;
  1265.     ENDIF    ;NOT APLICARD
  1266. ;
  1267.     IF    APLICARD
  1268. ;
  1269.     PUSH    D
  1270.     LXI    D,ACBYT
  1271.     CALL    PEEK
  1272.     POP    D
  1273. ;
  1274.     ENDIF    ;APLICARD
  1275. ;
  1276.     ANI    00000100B    ;212 CARRIER?
  1277.     CPI    00000100B
  1278.     JZ    DETCAR1
  1279.     JMP    DETCAR0
  1280. ;
  1281. ;
  1282. XMCK:    PUSH    PSW
  1283.     LDA    BYESAV
  1284.     ORA    A
  1285.     JZ    NOBYE
  1286.     POP    PSW
  1287.     PUSH    PSW
  1288.     STA    XMSPD
  1289. NOBYE:    POP    PSW
  1290.     RET
  1291. ;
  1292. DIALSLOT:    DS    1    ;FOR DIALER
  1293. ;
  1294. ;
  1295. GIVEPRM:    RET
  1296. GETPRM:        RET
  1297. ;
  1298. XMTRAM:    DB    0    ;Xmtram initially zero
  1299. INFLAG:    DB    0    ;CHECK FOR SECOND INIT ENTRY
  1300. SETFLG:    DB    0    ;CHECK FOR MODEM SETUP
  1301. OVLEND:            ;MARKS END OF OVERLAY
  1302. ;
  1303.     ;Xlist
  1304. ;
  1305.     IF     (NOT OVERLAY) AND APLICARD
  1306.     .PRINTX    +pcpidial+
  1307.     subttl    pcpidial 
  1308.     $INCLUDE     PCPIDIAL.ASM
  1309.     ENDIF    ;not overlay and aplicard
  1310. ;
  1311.     IF    (NOT OVERLAY) AND (NOT APLICARD)
  1312.     .PRINTX +msftdial+
  1313.     subttl    msftdial
  1314.     $INCLUDE    MSFTDIAL.ASM
  1315.     ENDIF    ;not overlay and not aplicard
  1316. ;
  1317.     IF    (NOT OVERLAY)
  1318.     .printx    +main+
  1319.     subttl MAIN
  1320.     $INCLUDE    MAIN.ASM
  1321. ;
  1322.     ENDIF    ;not overlay
  1323. ;
  1324.     END    CKOVLY
  1325.