home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / mex / mxh-vt.aqm / MXH-VT.ASM
Assembly Source File  |  1986-08-23  |  20KB  |  622 lines

  1. ; Title - Overlay file for MEXxx
  2. ;
  3. REV     EQU     35    ;V 3.5 
  4. ;
  5. ;
  6. ;This  Overlay  File  supports  the DEC Micro VT180 with CP/M.
  7. ;
  8. ;We  use the COMM-Port of the Micro's.  Baud-rates are "parallel"
  9. ;to the console Baud-rates - no need for  a  "special"  baud-rate
  10. ;routine.   Since  the COMM-port is I/O-wise Reader/Punch, we use
  11. ;the BDOS calls.
  12. ;
  13. ;To  test  for  COMM-status  ,  we  use  I/O  byte redirection in
  14. ;conjunction with direct BIOS-CONSTAT call.
  15. ;
  16. ;This  technique  although  a  little  bit slower than direct I/O
  17. ;using  Interrupt  on  INPUT  is  general  enough  to  be  system
  18. ;independent.
  19. ;
  20. ;       - B. Eiben DEC Large System Marketing Marlboro Mass
  21. ;
  22. ; And more or less bios version independant.--Bill Pechter
  23. ;
  24. ;***********************************************************************
  25. ;
  26. ;  5-Jun-1984   Adapted from M7VT-2.ASM by Bernie Eiben.  
  27. ;   Rev 1.0     
  28. ;  Stu Fuller
  29. ;
  30. ; 17-Mar-86    Version 3.4 removed ZCPR2/3 bit manipulation.  That will
  31. ; Bill Pechter    now be done by poke commands in Mex/Mexplus Ini.Mex.
  32. ; 22-Aug-86     Version 3.5 test to fix sendout.  Added test for status
  33. ; Bill Pechter    and RETJNK to avoid hanging.
  34. ;______________________________________________________________________________
  35. ;
  36. ;            ZCPR2            ZCPR3        ZCPR3 with RCP
  37. ;______________________________________________________________________________
  38. ;
  39. ; change contents     EA3CH            EAFEH        E240H
  40. ; at this address
  41. ; to 64H from 74H to
  42. ; disable wordstar
  43. ; ^x^s cursor key
  44. ; translation.
  45. ;______________________________________________________________________________
  46. ;
  47. ; change contents    EA60H            EB1CH        E31CH
  48. ; at this address to 
  49. ; 01 from 05H to
  50. ; disable the 
  51. ; automatic xoff-xon
  52. ; transmission.
  53. ;
  54. ;------------------------------------------------------------------------------
  55. ;
  56. ;bios code looks like this--example using ZCPR3 without RCP
  57. ;
  58. ;        Port#        Port control       data
  59. ;            block    
  60. ;
  61. ;contents:  41H        74H          00
  62. ;address   eafdH    eafeH          eaff
  63. ;
  64. ; QMRCVFL EQU     01H     ; Mask to allow me to send XON/XOFF
  65. ; QMXOFFD EQU     02H     ; Mask indicating I sent an XOFF
  66. ; QMXMTFL EQU     04H     ; Mask to allow other end to stop me
  67. ; QMSUSP  EQU     08H     ; Mask indicating I got an XOFF
  68. ; QMARROW EQU     10H     ; Mask for arrow xlate bit
  69. ; QMBIT7  EQU     20H     ; Mask for "use only 7 bits"
  70. ; QMCCFLS EQU     40H     ; Mask for "flush buffer if 2 ^C's seen"
  71. ; QM1STCC EQU     80H     ; Mask for "first ^C seen"
  72. ;
  73. ;NOTE:  DO NOT poke any bits with CP/M80 (STANDARD DEC DISTRIBUTION) or
  74. ;    MultiSystem 180 (by Ken Heyda)...poking of random bits would
  75. ;    be disasterous.
  76. ;
  77. ;****************************************************************************
  78. ;
  79. ;
  80. TRUE:           EQU     0FFH
  81. FALSE:          EQU     0
  82. YES:            EQU     0FFH
  83. NO:             EQU     0
  84. ;
  85. BELL    EQU     07H             ;bell
  86. TAB    EQU     9
  87. CR    EQU     13              ;carriage return
  88. LF    EQU     10              ;linefeed
  89. ESC    EQU     1BH             ;escape
  90. ;
  91. ;
  92. ;
  93. I8080    equ    yes
  94. I8086    equ     no
  95. CPM    equ     yes
  96. PCDOS    equ     no
  97. ;
  98. ;
  99. ;
  100. ;    SET ONE (and only one) OF EACH SET OF THE FOLLOWING CONDITIONALS
  101. ;    DEPENDING ON VERSION OF SOFTWARE and CPU TYPE
  102. ;
  103. ;
  104. ;        Mex Type
  105. ;
  106. MEXONE         EQU FALSE    ; version 1.10 through 1.14
  107. MEXTWO         EQU TRUE     ; version 1.24 through 1.63 (MexPlus)
  108. ;
  109. ;
  110.  
  111. ;
  112. DAV     EQU     0FFH            ;bit(s) to test for ready
  113. TBMT    EQU     0FFH            ;
  114. ;*****************************************************************************; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  115. ;
  116. ;
  117. ; The Check for characters at COMM-Port using I/O redirection
  118. ;
  119. IOBYTE  EQU     3               ; some definitions
  120. ;
  121. ;
  122. DEFIO    EQU    95H        ;
  123. BATIO   EQU     56H             ;
  124. ;
  125. ; MEX service processor stuff
  126. ;
  127. MEX     EQU     0D00H           ;address of the service processor
  128. INMDM   EQU     255             ;get char from port to A, CY=none in 100 ms
  129. TIMER   EQU     254             ;delay 100ms * reg B
  130. TMDINP  EQU     253             ;B=# secs to wait for char, cy=no char
  131. CHEKCC  EQU     252             ;check for ^C from KBD, Z=present
  132. SNDRDY  EQU     251             ;test for modem-send ready
  133. RCVRDY  EQU     250             ;test for modem-receive ready
  134. SNDCHR  EQU     249             ;send a character to the modem (after sndrdy)
  135. RCVCHR  EQU     248             ;recv a char from modem (after rcvrdy)
  136. LOOKUP  EQU     247             ;table search: see CMDTBL comments for info
  137. PARSFN  EQU     246             ;parse filename from input stream
  138. BDPARS  EQU     245             ;parse baud-rate from input stream
  139. SBLANK  EQU     244             ;scan input stream to next non-blank
  140. EVALA   EQU     243             ;evaluate numeric from input stream
  141. LKAHED  EQU     242             ;get nxt char w/o removing from input
  142. GNC     EQU     241             ;get char from input, cy=1 if none
  143. ILP     EQU     240             ;inline print
  144. DECOUT  EQU     239             ;decimal output
  145. PRBAUD  EQU     238             ;print baud rate
  146. ;
  147. PUNCH:  EQU     4               ;BDOS/MEX punch function
  148. READER: EQU     3               ;BDOS/MEX reader function
  149. PRINT   EQU     9               ;BDOS/MEX print-string function call
  150. ;
  151. ;
  152. ;
  153. ORG    100H
  154. ;
  155. IF MEXTWO
  156. ;
  157. ;  LINE BELOW ADDED FOR MEX V1.24 TO MAKE LOADABLE OVERLAY
  158. ;
  159. DB    0C3H    
  160. ;
  161. ;
  162. ;
  163. ;
  164.         DS      2               ;(for  "JMP   START" instruction)
  165. ENDIF;MEXTWO
  166. ;
  167. IF MEXONE
  168. ;
  169.     DS    3
  170. ;
  171. ;
  172. ENDIF;MEXONE
  173. ;
  174. ; Change the clock speed to suit your system
  175. ;
  176. PMMIMODEM:  DB  NO              ;yes=PMMI S-100 Modem                   103H
  177. SMARTMODEM: DB  YES        ;yes=HAYES Smartmodem, no=non-PMMI      104H
  178. TONE    DB      'P'             ;T=touch, P=pulse (Smartmodem-only)     105H
  179. CLOCK:  DB      40              ;clock speed in MHz x10, 25.5 MHz max.  106H
  180.                                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  181. MSPEED: DB      5               ;0=110 1=300 2=450 3=600 4=710 5=1200   107H
  182.                                 ;6=2400 7=4800 8=9600 9=19200 default
  183.                 ;set to 300 baud...
  184. BYTDLY: DB      5               ;0=0 delay  1=10ms  5=50 ms - 9=90 ms   108H
  185.                                 ;default time to send character in ter-
  186.                                 ;minal mode file transfer for slow BBS.
  187. CRDLY:  DB      5               ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  188.                                 ;default time for extra wait after CRLF
  189.                                 ;in terminal mode file transfer
  190. COLUMS: DB      5               ;number of DIR columns shown            10AH
  191. SETFLG: DB      YES             ;yes=user-added Setup routine           10BH
  192. SCRTST: DB      YES             ;Cursor control routine                 10CH
  193. ACKNAK: DB      YES             ;yes=resend a record after any non-ACK  10DH
  194.                                 ;no=resend a record after a valid-NAK
  195. BAKFLG: DB      YES             ;yes=change any file same name to .BAK  10EH
  196. CRCDFL: DB      YES             ;yes=default to CRC checking            10FH
  197. TOGCRC: DB      YES             ;yes=allow toggling of CRC to Checksum  110H
  198. CVTBS:  DB      NO              ;yes=convert backspace to rub           111H
  199. TOGLBK: DB      YES             ;yes=allow toggling of bksp to rub      112H
  200. ADDLF:  DB      NO              ;no=no LF after CR to send file in      113H
  201.                                 ;terminal mode (added by remote echo)
  202. TOGLF:  DB      YES             ;yes=allow toggling of LF after CR      114H
  203. TRANLOGON:  DB     YES             ;yes=allow transmission of logon        115H
  204.                                 ;write logon sequence at location LOGON
  205. SAVCCP: DB      YES             ;yes=do not overwrite CCP               116H
  206. LOCONEXTCHR: DB NO              ;yes=local command if EXTCHR precedes   117H
  207.                                 ;no=external command if EXTCHR precedes
  208. TOGGLELOC:      DB      YES             ;yes=allow toggling of LOCONEXTCHR      118H
  209. LSTTST: DB      YES             ;yes=printer available on printer port  119H
  210. XOFTST: DB      NO              ;yes=checks for XOFF from remote while  11AH
  211.                                 ;sending a file in terminal mode
  212. XONWT:  DB      NO              ;yes=wait for XON after CR while        11BH
  213.                                 ;sending a file in terminal mode
  214. TOGXOF: DB      YES             ;yes=allow toggling of XOFF checking    11CH
  215. IGNCTL: DB      NO              ;yes=CTL-chars above ^M not displayed   11DH
  216. EXTRA1: DB      0               ;for future expansion                   11EH
  217. EXITCHR DB      'E'-40H         ;^E = Exit to main menu                 11FH
  218. BRKCHR:    DB    'B'-40H        ;^B = Send 300 ms. break tone        120H
  219. NOCONN:    DB    'N'-40H        ;^N = Disconnect from the phone line    121H
  220. LOGCHR: DB      'L'-40H         ;^L = Send logon                        122H
  221. LSTCHR: DB      'P'-40H         ;^P = Toggle printer                    123H
  222. UNSAVE: DB      'R'-40H         ;^R = Close input text buffer           124H
  223. TRNCHR: DB      'T'-40H         ;^T = Transmit file to remote           125H
  224. SAVCHR: DB      'Y'-40H         ;^Y = Open input text buffer            126H
  225. EXTCHR: DB      '^'-40H         ;^^ = Send next character               127H
  226.         DS      2               ;unused by MEX                          128H
  227. ;
  228. INCTL1: JMP     INSP            ;go input status port                   12AH
  229.         DS      7
  230. ;
  231. OTDATA: JMP     OUTDP           ;go output data port                    134H
  232.         DS      7
  233. ;
  234. INPORT: JMP     INDP            ;go input data port                     13EH
  235.         DS      7
  236. ;
  237. MASKR:  ANI     DAV     ! RET   ;bit to test for receive ready          148H
  238. TESTR:  CPI     DAV     ! RET   ;value of rcv. bit when ready           14BH
  239. ; Note: most overlays will use ANI TBMT at MASKS.
  240. ; However, we don't bother with it here.  TESTS: will always return ready
  241. MASKS:  MVI     A,TBMT  ! RET   ;bit to test for send ready             14EH
  242. TESTS:  CPI     TBMT    ! RET   ;value of send bit when ready           151H
  243. ;
  244. ;
  245. ;
  246. IF MEXTWO
  247. ;
  248. DCDTST:    JMP DCDVEC        ;DATA CARIER DETECT             154H
  249. RNGDET:    JMP RNGVEC        ;RING DETECT VECTOR            157H
  250. DS    5
  251. ENDIF;MEXTWO
  252. ;
  253. ;
  254. IF MEXONE
  255. ;
  256. DS    11
  257. ENDIF;MEXONE
  258. ;
  259. DIALV:  DS      3               ;DIALV not done here (maybe MXO-SM)     162H
  260. SMDISC: DS      3               ; smartmodem overlay DISCV likewise 
  261.                 ; (dumb modem...now we do discon below)
  262. DISCV:  JMP    DISCON        ;here's where we goto on DSC cmd.
  263. GOODBV: JMP     GOODBY          ;                                       168H
  264. INMODV: JMP     NITMOD          ;go to user written routine             16BH
  265.         RET ! NOP ! NOP         ;NEWBDV                                 16EH
  266.         RET ! NOP ! NOP         ;NOPARV                                 171H
  267.         RET ! NOP ! NOP         ;PARITV                                 174H
  268. SETUPV: JMP     SETCMD          ;                                       177H
  269.         DS      3               ;not used by MEX                        17AH
  270. VERSNV: JMP     SYSVER          ;                                       17DH
  271. BREAKV: JMP     SBREAK          ;                                       180H
  272. ;
  273. ; Do not change the following six lines (they provide access to routines
  274. ; in MEX that are present to support MDM7 overlays -- they will likely
  275. ; be gone by MEX v2.0).
  276. ;
  277. ILPRTV: DS      3               ;                                       183H
  278. INBUFV  DS      3               ;                                       186H
  279. ILCMPV: DS      3               ;                                       189H
  280. INMDMV: DS      3               ;                                       18CH
  281.         DS      3               ;                                       18FH
  282. TIMERV  DS      3               ;                                       192H
  283. ;
  284. ;
  285. ;
  286. ; Routine to clear to end of screen.  If using CLREOS and CLRSCRN, set
  287. ; SCRTEST to YES at 010AH (above).
  288. ;
  289. ;
  290. CLREOS:         LXI     D,EOSMSG        ;                               195H
  291.                 MVI     C,PRINT
  292.                 CALL    MEX
  293.                 RET
  294. ;
  295. CLS:            LXI     D,CLSMSG        ;                               19EH
  296.                 MVI     C,PRINT
  297.                 CALL    MEX
  298.                 RET
  299. ;
  300. ;       End of fixed areas
  301. ;
  302. ;.....
  303.  
  304. ;
  305. ; LINE BELOW ADDED FOR MEX V1.24 
  306. ;
  307. IF MEXTWO
  308. ;
  309. ORG 200H    
  310. ;
  311. ;
  312. ENDIF;MEXTWO
  313. ;
  314. ;
  315. TELL:      MVI    C,ILP
  316.       CALL    MEX        ;Print current baud rate
  317.       DB    CR,LF,'Actual baud rate from Set-up B ',0
  318.       MVI    C,ILP
  319.       CALL    MEX
  320.       DB    CR,LF,'Apparent Baud rate is now: ',0
  321.       LDA    MSPEED
  322.       MVI    C,PRBAUD
  323.       CALL    MEX
  324.       RET
  325. ;
  326. ;
  327. ;
  328. ; Modem I/O primitive
  329. ;
  330. ; Subroutine to output a character to the modem.
  331. ; This routine does it's own status checking.
  332. ;
  333. OUTDP:  PUSH    B               ;save...
  334.         PUSH    D               ;...the...
  335.         PUSH    H               ;...registers.
  336.         MOV     E,A             ;move output byte into E
  337.         MVI     C,PUNCH         ;use the BDOS function
  338.         CALL    MEX             ;go
  339.         POP     H               ;restore...  
  340.         POP     D               ;...the...
  341.         POP     B               ;...registers.
  342.         RET
  343. ;.....
  344. ;
  345. ;
  346. ; Subroutine to input a character from the modem.
  347. ; This routine will not wait until one becomes available.
  348. ;
  349. INDP:   CALL INSP
  350.     JZ RETJNK
  351.     PUSH    B               ;save...
  352.         PUSH    D               ;...the...
  353.         PUSH    H               ;...regesters.
  354.         MVI     C,READER        ;use the BDOS function
  355.         CALL    MEX             ;go
  356.         POP     H               ;restore...
  357.         POP     D               ;...the...
  358.         POP     B               ;...registers.
  359.         RET
  360. ;
  361. ;
  362. RETJNK: MVI A,0            ;Return junk if not ready
  363.     RET            ; so we don't hang
  364. ;
  365. ;
  366. ; The Check for characters at COMM Port using I/O redirection
  367. ;
  368. INSP:   PUSH    B
  369.         PUSH    D
  370.         PUSH    H               ; save the environment
  371.         MVI     A,BATIO         ; change I/O byte
  372.         STA     IOBYTE
  373.         CALL    BCONST          ; call BIOS direct - see NITMOD
  374.         PUSH    A
  375.         LDA     SAVEIO          ; change I/O byte back
  376.         STA     IOBYTE
  377.         POP     A
  378.         POP     H               ; restore environment
  379.         POP     D
  380.         POP     B
  381.         RET
  382.  
  383. ;               
  384. NITMOD: LHLD    1               ; Get BIOS Jump-table adress
  385.         LXI     D,3
  386.         DAD     D               ; CONSTAT routine in BIOS
  387.         SHLD    BCONST+1        ; modify our "routine"
  388.         LDA     IOBYTE          ; Save I/O byte
  389.         STA     SAVEIO          ;
  390. ;
  391. ;
  392. SETCMD:      MVI    C,SBLANK    ;Any arguments?
  393.       CALL    MEX
  394.       JC    TELL        ;If not, go display baud
  395.       LXI    D,CMDTBL
  396.       MVI    C,LOOKUP
  397.       CALL    MEX        ;Parse argument
  398.       PUSH    H        ;Save any parsed argument addrs on stack
  399.       RNC            ;If we have one, return to it
  400.       POP    H        ;Oops, input not found in table
  401.       MVI    C,ILP
  402.       CALL    MEX        ;Tell user input not valid
  403.       DB    '++(Only 110,300,600,1200,2400,9600,19200 supported)++',CR,LF,0 
  404.       RET
  405. ;
  406. CMDTBL:      DB    '11','0'+80H
  407.       DW    OK110
  408.       ;
  409.       DB    '30','0'+80H
  410.       DW    OK300
  411.       ;
  412.       DB    '60','0'+80H
  413.       DW    OK600
  414.       ;
  415.       DB    '120','0'+80H
  416.       DW    OK1200
  417.       ;
  418.       DB    '240','0'+80H
  419.       DW    OK2400
  420.       ;                        
  421.       DB    '480','0'+80H
  422.       DW    OK4800
  423.       ;
  424.       DB    '960','0'+80H
  425.       DW    OK9600
  426.       ;
  427.       DB    '1920','0'+80H
  428.       DW    OK19200
  429.       ;
  430.       DB    0
  431. ;
  432. ;
  433. ;
  434. ;
  435. OK110      MVI    A,0
  436.       JMP     LOADBD
  437. ;
  438. OK300:      MVI    A,1
  439.       JMP   LOADBD
  440. ;
  441. OK600      MVI    A,3
  442.       JMP     LOADBD
  443. ;
  444. OK1200:      MVI    A,5
  445.       JMP    LOADBD
  446. ;
  447. OK2400:      MVI    A,6
  448.       JMP    LOADBD
  449. ;
  450. OK4800:      MVI    A,7
  451.       JMP    LOADBD
  452. ;
  453. OK9600:      MVI    A,8
  454.       JMP    LOADBD
  455. ;
  456. OK19200:  MVI    A,9
  457. ;
  458. LOADBD:     STA MSPEED
  459.      RET             ; area for code to set actual baud rate
  460.                 ; if overlay can be hacked to use
  461.                 ; programmable port such as general purpose
  462.                 ; port
  463. ;
  464. NEWBAUD:  CPI    1
  465.       JZ    OK300
  466.       CPI    5
  467.       JZ    OK1200
  468.       CPI    6
  469.       JZ    OK2400
  470.       CPI    7
  471.       JZ    OK4800
  472.       CPI    8
  473.       JZ    OK9600
  474.       CPI    9
  475.       JZ    OK19200
  476.       RET
  477. ;
  478. ;
  479. BCONST: JMP     $-$             ; address "filled in" by above code
  480. ;
  481. ;
  482. IF MEXTWO
  483. ;
  484. ;
  485. DCDVEC:    MVI    A,0FEH        ; RETURN 0FFH IF CARRIER
  486.                 ; RETURN 0 NO CARRIER
  487.                 ; RETURN 0FFE IF OVERLAY DOESN'T KNOW
  488.         RET
  489.  
  490. RNGVEC: MVI    A,0FEH        ; RETURN 0FFH IF CARRIER
  491.                 ; RETURN 0 NO CARRIER
  492.                 ; RETURN 0FFE IF OVERLAY DOESN'T KNOW
  493.     RET
  494. ;
  495. ;
  496. ENDIF;MEXTWO
  497. ;
  498. SBREAK:
  499. ;pbausl EQU     90H     ;The Baud-Rate register.
  500. prntst  EQU     49H     ;Printer
  501. ;prndat EQU     48H
  502. contst  EQU     41H     ;Console
  503. ;condat EQU     40H
  504. gentst  EQU     51H     ;General port.
  505. ;gendat EQU     50H
  506. comtst  EQU     59H     ;COMM-Port
  507. ;comdat EQU     58H
  508. ;output EQU     01H     ;Output ready bit.
  509. ;input  EQU     02H     ;Input ready bit.
  510. comctl  equ     59h             ;VT180 communications port
  511. crtctl  equ     41h             ;VT180 crt port
  512. ;VT180 serial port command bits
  513. txe     equ     1               ;transmit enable
  514. dtr     equ     2               ;dtr on
  515. rxe     equ     4               ;rx enable
  516. sndbrk  equ     0Ah        ;dtr and break...
  517. rerr    equ     10h             ;reset error
  518. rts     equ     20h             ;RTS on
  519. reset   equ     40h             ;port reset
  520. NODTR    EQU    14H
  521. ;
  522. ;send break to comm port
  523. ;
  524.         lxi     h,38500         ;250 ms(?)
  525.         mvi     a,comctl        ;Get address of selected port
  526.         mov     c,a             ;Into C
  527.         mvi     a,sndbrk
  528. ;       OUT     C,A             ;Want to send to port addressed by C
  529.         db      0EDH,079H       ;Op code for above instruction
  530. sndbrk1:dcx     h               ;timing loop...
  531.         mov     a,l
  532.         ora     h
  533.         jnz     sndbrk1          ;...until over
  534.         mvi     a,comctl        ;Get the address for the port
  535.         mov     c,a             ;Into C
  536.         mvi     a,txe+dtr+rxe+rerr+rts  ;enable tr/rc, dtr, reset error
  537. ;       out     c,a             ;Z-80 only instruction
  538.         db      0EDH,079H       ;Op code for above instruction
  539.         out     contst          ;reset ports
  540.         ret
  541.  
  542. ;
  543. ; DISCONNECT ROUTINE
  544. ;
  545. DISCON:    lxi     h,38500         ;250 ms(?)
  546.         mvi     a,comctl        ;Get address of selected port
  547.         mov     c,a             ;Into C
  548.         mvi     a,NODTR
  549. ;       OUT     C,A             ;Want to send to port addressed by C
  550.         db      0EDH,079H       ;Op code for above instruction
  551. DISCON1:dcx     h               ;timing loop...
  552.         mov     a,l
  553.         ora     h
  554.         jnz     DISCON1          ;...until over
  555.         mvi     a,comctl        ;Get the address for the port
  556.         mov     c,a             ;Into C
  557.         mvi     a,txe+dtr+rxe+rerr+rts  ;enable tr/rc, dtr, reset error
  558. ;       out     c,a             ;Z-80 only instruction
  559.         db      0EDH,079H       ;Op code for above instruction
  560.         out     contst          ;reset ports
  561.     RET        
  562. ;
  563. ;
  564. ;
  565. GOODBY:    RET 
  566. ;
  567. ;
  568. SYSVER: PUSH    B
  569.         PUSH    D
  570.         PUSH    H
  571.         LXI     D,DECMSG
  572.         MVI     C,PRINT
  573.         CALL    MEX
  574. SYSVE1: LXI     D,CRLF
  575.         MVI     C,PRINT
  576.         CALL    MEX
  577.         POP     H
  578.         POP     D
  579.         POP     B
  580.         RET
  581. ;
  582. ;       Miscellaneous storage
  583. ;
  584. SAVEIO: DB      0               ; Save the original IObyte here
  585. ;
  586. ;       Various text messages
  587. CLSMSG: DB      ESC,'[2J',ESC,'[H','$'
  588. EOSMSG: DB      ESC,'[0J','$'
  589. ;
  590. XSO     EQU     14                      ;"shift out" character
  591. XSI     EQU     15                      ;"shift in" character
  592. ;
  593. DECMSG: DB      'Version for: ',ESC,'[7m',ESC,')0'
  594.         DB      'd',XSO,'x',XSI
  595.         DB      'i',XSO,'x',XSI
  596.         DB      'g',XSO,'x',XSI
  597.         DB      'i',XSO,'x',XSI
  598.         DB      't',XSO,'x',XSI
  599.         DB      'a',XSO,'x',XSI
  600.         DB      'l',ESC,'[m '
  601.     DB    'Robin--VT180'
  602.     DB      '  Overlay V'
  603.         DB      REV/10+'0'
  604.         DB      '.'
  605.         DB      REV MOD 10+'0'
  606.         DB      '$'
  607. ;
  608. CRLF:   DB      CR,LF,'$'
  609. ;
  610. ;
  611. ;
  612. OVREND: EQU     $               ; See if it'll fit
  613.         IF OVREND / 0B00H
  614.         +++ VT180 OVERLAY TOO LARGE - OVREND >= 0B00H +++
  615.         ENDIF
  616. ;
  617. ;
  618.     END
  619.  
  620.  
  621.