home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol017 / mnovrlay.asm < prev    next >
Assembly Source File  |  1984-04-29  |  3KB  |  112 lines

  1.  
  2.  
  3. ; OVERLAY FOR CP/M VERSION OF MICRONET 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+0A00H    ; WHERE THE OVERLAY GOES
  12.  
  13. ; ************************************************************
  14. ; ************************************************************
  15.  
  16. ;    THIS BEGINS THE SECTION THAT MUST BE MODIFIED
  17. ;    TO YOUR PARTICULAR SYSTEM.  THE FIRST THING YOU
  18. ;    SHOULD DO IS PUT YOUR SYSTEM IDENTIFICATION INTO
  19. ;    THE PROGRAM.  TO DO THIS, CHANGE THE 'IMSAI 8080'
  20. ;    IN THE STATEMENT LABELED "SYSID:" TO WHATEVER
  21. ;    TYPE OF SYSTEM YOU HAVE.  NOTE THAT "SYSID:" CAN
  22. ;    BE NO LONGER THAN 23 CHARACTERS AND THE LAST
  23. ;    CHARACTER MUST BE A 00 BYTE.
  24.  
  25. ; ------------------------------------------------------------
  26.  
  27. ;    THESE ARE THE PORT ADDRESSES USED FOR THE MODEM.
  28.  
  29. CTL    EQU    001H    ; MODEM STATUS (CONTROL) PORT
  30. SIO    EQU    000H    ; MODEM DATA PORT
  31.  
  32. ; ------------------------------------------------------------
  33.  
  34. ;    THESE ARE THE MODEM PORT STATUS FLAG MASKS
  35.  
  36. SIOIR    EQU    02H    ; MODEM PORT INPUT DATA READY FLAG
  37. SIOTR    EQU    01H    ; MODEM PORT TRANSMITTER READY FLAG
  38.  
  39. ; ------------------------------------------------------------
  40.  
  41. ;    THIS IS SET TO FALSE IF YOUR MODEM PORT READY FLAGS
  42. ;    ARE ACTIVE LOW. (ZERO IMPLIES READY)
  43.  
  44. RDYHI    EQU    TRUE    ; TRUE IF UART READY FLAGS ARE
  45.             ; ACTIVE HIGH (1=READY). FALSE
  46.             ; IF FLAGS ARE ACTIVE LOW (0=READY).
  47.  
  48. ;    THIS ENDS THE SECTION THAT MUST BE
  49. ;    MODIFIED TO YOUR PARTICULAR SYSTEM
  50. ;    UNLESS YOU NEED UART INITIALIZATION.
  51. ;    IF YOU DO NEED TO INITAILIZE YOUR
  52. ;    MODEM UART, CHANGE "SIOINI:" (AT THE
  53. ;    END OF THIS PROGRAM) TO SET UP YOUR
  54. ;    UART TO USE 8 DATA BITS, NO PARITY
  55. ;    AND 1 STOP BIT.
  56.  
  57. ; ************************************************************
  58. ; ************************************************************
  59.  
  60. RDYLO    EQU    NOT RDYHI
  61.  
  62.     ORG    TBASE+3        ; OVERLAY TRANSFER VECTOR AND ID STRING
  63.  
  64. INISIO:    JMP    SIOINI        ; INITIALIZE MODEM UART
  65. GETSIO:    JMP    SIOGET        ; GET CHAR FROM MODEM UART
  66. PUTSIO:    JMP    SIOPUT        ; PUT A CHAR TO MODEM UART
  67. SYSID:    DB    'Z-80 Homebrew',0    ; IDENTIFIES YOUR SYSTEM
  68.                 ; MAXIMUM LENGTH IS 23 CHARACTERS.
  69.                 ; LAST CHARACTER MUST BE A 00
  70.     ORG    OVLOC        ; MOVE BEYOND EXEC FOR MODEM PORT I/O ROUTINES
  71.  
  72. ; THIS ROUTINE INPUTS A CHARACTER FROM THE MODEM'S UART (OR USART)
  73.  
  74. SIOGET:    IN    CTL    ; GET MIO STATUS FLAGS
  75.     ANI    SIOIR    ; ISOLATE INPUT READY FLAG
  76.  
  77.     IF RDYLO    ; INVERT IF ACTIVE LOW
  78.     XRI    SIOIR    ; INVERT IT
  79.     ENDIF
  80.  
  81.     RZ        ; RETURN IF Z = 1
  82.     IN    SIO    ; ELSE GET MODEM CHARACTER
  83.     RET        ; AND RETURN (Z FLAG = 0)
  84.  
  85. ; THIS ROUTINE OUTPUT CONTENTS OF A TO THE MODEM'S UART
  86.  
  87. SIOPUT:    PUSH    PSW    ; WRITE (A) TO SIO
  88. PUTSI1:    IN    CTL    ; WAIT FOR FLAG TO = 0
  89.     ANI    SIOTR
  90.  
  91.     IF RDYLO    ; SENSE OF JUMP
  92.     JNZ    PUTSI1
  93.     ENDIF
  94.  
  95.     IF RDYHI    ; SENSE OF JUMP
  96.     JZ    PUTSI1
  97.     ENDIF
  98.  
  99.     POP    PSW
  100.     OUT    SIO
  101.     RET
  102.  
  103. ; THIS ROUTINE INITIALIZES THE MODEM UART FOR OPERATION
  104.  
  105. SIOINI:    RET            ; INITILIZE MODEM UART HERE
  106.                 ; IF UART NEEDS IT
  107.                 ; 8 DATA BITS
  108.                 ; NO PARITY
  109.                 ; 1 STOP BIT
  110.  
  111.     END
  112.