home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / cis / vidtex.ark / OVERLAY.ASM < prev    next >
Encoding:
Assembly Source File  |  1987-03-17  |  3.5 KB  |  129 lines

  1.  
  2.  
  3. ; OVERLAY FOR CP/M VERSION OF VIDTEX EXECUTIVE
  4.  
  5.  
  6. TRUE    EQU    0FFFFH        ; DEFINE TRUE
  7. FALSE    EQU    NOT TRUE    ; DEFINE FALSE
  8.  
  9. BBASE    EQU    0000H        ; "PAGE 0" ADDRESS
  10. TBASE    EQU    BBASE+100H    ; TRANSIENT PROGRAM AREA
  11. OVLOC    EQU    BBASE+1800H    ; WHERE THE OVERLAY GOES
  12. STKLEN    EQU    100        ;LENGTH OF STACK
  13.  
  14. ; ************************************************************
  15. ; ************************************************************
  16.  
  17. ;    THIS BEGINS THE SECTION THAT MUST BE MODIFIED
  18. ;    TO YOUR PARTICULAR SYSTEM.  THE FIRST THING YOU
  19. ;    SHOULD DO IS PUT YOUR SYSTEM IDENTIFICATION INTO
  20. ;    THE PROGRAM.  TO DO THIS, CHANGE THE 'IMSAI 8080'
  21. ;    IN THE STATEMENT LABELED "IDMSG:" TO WHATEVER
  22. ;    TYPE OF SYSTEM YOU HAVE.  NOTE THAT "IDMSG:" CAN
  23. ;    BE NO LONGER THAN 80 CHARACTERS AND THE LAST
  24. ;    CHARACTER MUST BE A 0D BYTE.
  25.  
  26. ; ------------------------------------------------------------
  27.  
  28. ;    THESE ARE THE PORT ADDRESSES USED FOR THE MODEM.
  29.  
  30. CTL    EQU    10H    ; MODEM STATUS (CONTROL) PORT
  31. SIO    EQU    11H    ; MODEM DATA PORT
  32.  
  33. ; ------------------------------------------------------------
  34.  
  35. ;    THESE ARE THE MODEM PORT STATUS FLAG MASKS
  36.  
  37. SIOIR    EQU    40H    ; MODEM PORT INPUT DATA READY FLAG
  38. SIOTR    EQU    80H    ; MODEM PORT TRANSMITTER READY FLAG
  39.  
  40. ; ------------------------------------------------------------
  41.  
  42. ;    THIS IS SET TO FALSE IF YOUR MODEM PORT READY FLAGS
  43. ;    ARE ACTIVE LOW. (ZERO IMPLIES READY)
  44.  
  45. RDYHI    EQU    TRUE    ; TRUE IF UART READY FLAGS ARE
  46.             ; ACTIVE HIGH (1=READY). FALSE
  47.             ; IF FLAGS ARE ACTIVE LOW (0=READY).
  48.  
  49. ;    THIS ENDS THE SECTION THAT MUST BE
  50. ;    MODIFIED TO YOUR PARTICULAR SYSTEM
  51. ;    UNLESS YOU NEED UART INITIALIZATION.
  52. ;    IF YOU DO NEED TO INITAILIZE YOUR
  53. ;    MODEM UART, CHANGE "SIOINI:" (AT THE
  54. ;    END OF THIS PROGRAM) TO SET UP YOUR
  55. ;    UART TO USE 8 DATA BITS, NO PARITY
  56. ;    AND 1 STOP BIT.
  57.  
  58. ; ************************************************************
  59. ; ************************************************************
  60.  
  61. RDYLO    EQU    NOT RDYHI
  62.  
  63.     ORG    TBASE+3        ; OVERLAY TRANSFER VECTOR AND ID STRING
  64.  
  65. INISIO:    JMP    SIOINI        ; INITIALIZE MODEM UART
  66. GETSIO:    JMP    SIOGET        ; GET CHAR FROM MODEM UART
  67. PUTSIO:    JMP    SIOPUT        ; PUT A CHAR TO MODEM UART
  68.  
  69. BCDICP:    DW    BCDIC        ;POINT TO OVERLAID COMPRESSION DICTIONARY
  70. STACKP:    DW    STACK        ;POINT TO LOCATION OF STACK
  71. PRTYES:    DB    FALSE        ;TRUE WHEN COPY GOES TO PRINTER
  72.  
  73. IDPTR:    DW    IDLEN        ;POINTER TO ID STRING'S LENGTH
  74. IDMSG:    DB    '#CPMIMSAI 8080,PB,DT'        ;IDENTIFIES YOUR SYSTEM
  75.     DB    0DH                ;END OF IDENTIFIER
  76. IDLEN:   EQU     $-IDMSG
  77.  
  78.     ORG    OVLOC        ; MOVE BEYOND EXEC FOR MODEM PORT I/O ROUTINES
  79.  
  80. ; THIS ROUTINE INPUTS A CHARACTER FROM THE MODEM'S UART (OR USART)
  81.  
  82. SIOGET:    IN    CTL    ; GET MIO STATUS FLAGS
  83.     ANI    SIOIR    ; ISOLATE INPUT READY FLAG
  84.  
  85.     IF RDYLO    ; INVERT IF ACTIVE LOW
  86.     XRI    SIOIR    ; INVERT IT
  87.     ENDIF
  88.  
  89.     RZ        ; RETURN IF Z = 1
  90.     IN    SIO    ; ELSE GET MODEM CHARACTER
  91.     RET        ; AND RETURN (Z FLAG = 0)
  92.  
  93. ; THIS ROUTINE OUTPUT CONTENTS OF A TO THE MODEM'S UART
  94.  
  95. SIOPUT:    PUSH    B    ;SAVE REGISTERS
  96.     MOV    B,A    ;SAVE CHR TO OUTPUT
  97.     IN    CTL    ;GET STATUS FLAG
  98.     ANI    SIOTR
  99.  
  100.     IF RDYLO    ; INVERT IF ACTIVE LOW
  101.     XRI    SIOIR    ; INVERT IT
  102.     ENDIF
  103.  
  104.     MOV    A,B    ;RESTORE CHR TO ACCUMULATOR
  105.     POP    B    ;RESTORE REGS
  106.     RZ        ;RETURN IF NOT READY TO OUTPUT YET
  107.  
  108.     OUT    SIO
  109.     RET
  110.  
  111. ; THIS ROUTINE INITIALIZES THE MODEM UART FOR OPERATION
  112.  
  113. SIOINI:    MVI    A,1        ;INITIALIZE UART HERE
  114.     OUT    12H        ;RESET DEVICE B
  115.     MVI    A,0        ;MASK FOR INTERRUPTS
  116.     OUT     13H        ;
  117.     MVI    A,88H        ;BAUD RATE=1200
  118.     OUT    10H        ;
  119.     RET            ;
  120.  
  121. ;    STACK AREA
  122.  
  123.     DS    STKLEN        ;DEFINE STACK
  124. STACK    EQU    $
  125.  
  126. BCDIC    EQU    $        ;COMPRESSION DICTIONARY
  127.  
  128.     END
  129.