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

  1. ;***********************************************************************
  2. ;    QUME PRINT DRIVER INSTALLATION UTILITY FOR ALTAIR 8800B
  3. ;***********************************************************************
  4. ;
  5. ;
  6. ;    THIS UTILITY INITIALIZES THE QUME LINE PRINTER I/O
  7. ;    BOARD AND THEN BLOCK MOVES THE CODE FOR THE ACTUAL
  8. ;    QUME DRIVER INTO THE MEMORY AREA ABOVE THE BIOS
  9. ;    AT 0FA00H. THE LINE PRINTER PARAMETER STORAGE AREAS
  10. ;    ARE INITIALIZED BY VIRTUE OF BEING INCLUDED WITHIN
  11. ;    THE CODE AREA THAT IS TRANSFERED.
  12. ;
  13. ;    THIS UTILITY WILL FUNCTION WITH CP/M SYSTEM SIZES
  14. ;    UP TO 62K.
  15. ;
  16. ;    THE CODE BLOCK THAT IS MOVED BY THIS PROGRAM MUST
  17. ;    BE SEPERATELY ASSEMBLED AS "QUMEDRV.ASM" AND THEN
  18. ;    ATTACHED TO THE "COM" VERSION OF THIS UTILITY BY
  19. ;    UTILIZING DDT TO LOAD THE TWO TOGETHER. THEN "SAVE"
  20. ;    THE JOINED FILES AS "QUMEINST.COM".
  21. ;
  22. ;
  23. ;    COPYRIGHT 1980
  24. ;    MICHAEL J. KARAS
  25. ;    MICRO RESOURCES
  26. ;    2468 HANSEN COURT
  27. ;    SIMI VALLEY, CA 93065
  28. ;    (805) 527-7922
  29. ;
  30. ;
  31. ;***********************************************************************
  32. ;
  33. ;
  34. ;DEFINE QUME LINE PRINTER I/O PARAMETERS
  35. ;
  36. LENHGT    EQU    132        ;PRINTER LINE LENGTH
  37. QUME1    EQU    31H        ;FIRST DATA PORT
  38. QUME2    EQU    QUME1+2        ;SECOND DATA PORT
  39. ;
  40. ;
  41. ;DEFINE CP/M PARAMETERS
  42. ;
  43. BDOS    EQU    0005H        ;SYSTEM I/O ENTRY POINT
  44. WBOOT    EQU    0000H        ;WARM BOOT ENTRY POINT
  45. LSTOFST    EQU    (04*3)+1    ;WARM BOOT PLUS THREE VECTORS
  46. PRTSRT    EQU    0009H        ;PRINT STRING BDOS FUNCTION
  47. ;
  48. ;
  49. ;DEFINE POSITION AND LENGTH OF ATTACHED AND MOVED MODULE
  50. ;
  51. LISTST    EQU    0FA00H        ;BASE ADDRESS OF QUME DRIVER
  52. LISTLN    EQU    00100H        ;LENGTH OF MOVED AREA...
  53. ;                ;...INCLUDES PARAMETER STORAGE LOCATIONS
  54. ;
  55. ;
  56. ;DEFINE ASCII CHARACTERS USED IN SYMBOLIC FASHION
  57. ;
  58. CR    EQU    0DH        ;CARRAGE RETURN
  59. LF    EQU    0AH        ;LINE FEED
  60. ;
  61. ;
  62. ;SET UP START OF THIS ROUTINE
  63. ;
  64.     ORG    00100H        ;START OF CP/M TPA
  65. ;
  66.     DI
  67.     LXI    SP,STACK    ;GET A STACK SETUP
  68. ;
  69. ;
  70. ;TELL THEM WHAT THIS IS ALL ABOUT
  71. ;
  72.     LXI    D,MSG        ;POINT TO SIGNON MESSAGE
  73.     MVI    C,PRTSRT    ;PRINT MESSAGE
  74.     CALL    BDOS
  75. ;
  76. ;
  77. ;INITIALIZE THE QUME PRINTER I/O BOARD
  78. ;
  79.     XRA    A        ;INIT PRINTER PORTS
  80.     OUT    30H        ;OUTPUT ZEROS TO CONTROL REGISTERS
  81.     OUT    32H
  82.     OUT    34H
  83.     OUT    36H
  84.     OUT    35H        ;SET DIRECTION REG'S
  85.     CMA
  86.     OUT    31H
  87.     OUT    33H
  88.     OUT    37H
  89.     MVI    A,4        ;ACCESS DATA REGISTERS
  90.     OUT    30H
  91.     OUT    32H
  92.     OUT    34H
  93.     OUT    36H
  94.     MVI    A,0FCH        ;SELECT AND RESET PRINTER
  95.     OUT    37H
  96.     MVI    A,0FAH        ;LATCH DATA PORT
  97.     OUT    37H
  98. ;
  99. ;
  100. ;PLACE A NEW PRINT VECTOR ADDRESS INTO THE BIOS VECTOR TABLE
  101. ;FOR THE SOON TO BE INSTALLED UTILITY
  102. ;
  103.     LHLD    WBOOT+1        ;GET ADDRESS OF WARM BOOT VECTOR
  104.     LXI    D,LSTOFST    ;SETUP VECTOR TABLE INDEX
  105.     DAD    D        ;HL NOW POINTS TO THE LIST VECTOR
  106.     LXI    D,LISTST    ;GET ROUTINE START ADDRESS
  107.     MOV    M,E        ;PUT ADDRESS INTO THE BIOS VECTOR
  108.     INX    H
  109.     MOV    M,D
  110. ;
  111. ;
  112. ;NOW MOVE THE DRIVER CODE FROM BELOW TO AREA ABOVE BIOS
  113. ;START OF CODE TO BE MOVED SHOULD BE ATTACHED WITH DDT
  114. ;TO START AT 01000H.
  115. ;
  116.     LXI    D,01000H    ;START ADDRESS OF MOVE BLOCK
  117.     LXI    H,LISTST    ;DESTINATION ADDRESS
  118.     LXI    B,LISTLN    ;LENGTH OF CODE TO MOVE
  119. MOVE:
  120.     LDAX    D        ;GET CODE BYTE
  121.     MOV    M,A        ;PUT AT DESTINATION
  122.     INX    H        ;TAKE CARE OF POINTERS
  123.     INX    D
  124.     DCX    B        ;DEC BYTE COUNT
  125.     MOV    A,B        ;SEE IF WE ARE DONE
  126.     ORA    C
  127.     JNZ    MOVE
  128. ;
  129. ;
  130. ;GET OUT OF HERE WITH WARM BOOT OF CP/M
  131. ;
  132.     JMP    WBOOT
  133. ;
  134. ;
  135. ;SETUP A SIGN ON MESSAGE
  136. ;
  137. MSG:
  138.     DB    CR,LF,LF
  139.     DB    'MICRO RESOURCES QUME PRINT DRIVER INSTALLATION '
  140.     DB    'UTILITY',CR,LF,LF
  141.     DB    '++FOR USE WITH ALTAIR 8800 COMPUTER++',CR,LF,LF
  142.     DB    '++REQUIRES READ/WRITE RAM AT ADDRESS 0FA00H++',CR,LF,LF
  143.     DB    '$'
  144. ;
  145. ;
  146. ;MAKE SOME ROOM FOR OUR STACK
  147. ;
  148.     DS    0100H        ;50 ENTRIES SHOULD BE ENOUGH
  149. STACK    DW    0
  150. ;
  151. ;
  152. ;  ----------------
  153. ;
  154. ;
  155.         END
  156. ;
  157. ;+++
  158.