home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / A / BIOS-R62.LZH / CXEXT.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  3KB  |  155 lines

  1. ; ?int65 now sets 6551 baud rate based on baudrate byte set in devtbl.
  2. ; user assumes all liability for the use of this module
  3. ;
  4. ; original copyright maintained by Commodore
  5. ;-------------------------------------------------------------------------
  6. ; CHANGES by Randy Winchester, 6 May 89
  7. ;
  8. ; Drive D: returned to active duty.
  9. ;
  10. ; RAM disk set back to drive M:
  11. ;
  12. ; Table entry made for Drive E:, used by Quick Brown Box.
  13. ;-------------------------------------------------------------------------
  14.  
  15.     title    'C128 external Disk drive support   6 May   89'
  16.  
  17.     maclib    cpm3
  18.  
  19.     maclib    z80
  20.  
  21.     maclib    cxequ
  22.  
  23.  
  24.     extrn    X6551$baud
  25.     public    ?int65,?in65,?ins65,?out65
  26.  
  27. ; Utility routines in standard BIOS
  28.     extrn    ?pmsg        ; print message @<HL> up to 00
  29.                 ; saves <BC> & <DE>
  30.     extrn    ?pdec        ; print binary number in <A> from 0 to 99.
  31.     extrn    ?pderr        ; print BIOS disk error header
  32.     extrn    ?conin,?cono    ; con in and out
  33.     extrn    ?const        ; get console status
  34. ;
  35. ;    drive table
  36. ;
  37.     public    @dtbl
  38.     extrn    cmdsk0,cmdsk1,cmdsk2,cmdsk3,cmdsk4,RMdsk
  39.  
  40.  
  41.     page
  42. ;
  43. ;    DRVTBL.ASM        
  44. ;
  45.     CSEG        ; place code in common memory
  46.  
  47. ;**************************************
  48. ; Drives A: - D: are 1541/71
  49. ; Drive E: for QBB, Drive M: is REU
  50. ;****************************************
  51.  
  52. @dtbl:
  53.  
  54.     dw    cmdsk0            ;* drive A 1541/1571 
  55.     dw    cmdsk1            ;* drive B 1541/1571
  56.     dw    cmdsk2            ;* drive C 1541/1571
  57.     dw    cmdsk3            ;* drive D 1571
  58.     dw    cmdsk4            ;* drive E QBB
  59.     dw    0            ;* drive F
  60.     dw    0            ;* drive G
  61.     dw    0            ;* drive H
  62.     dw    0            ;* drive I
  63.     dw    0            ;* drive J
  64.     dw    0            ;* drive K
  65.     dw    0            ;* drive L
  66.     dw    RMdsk            ;* drive M REU
  67.     dw    0            ;* drive N
  68.     dw    0            ;* drive O
  69.     dw    0            ;* drive P
  70.  
  71.     page
  72.  
  73. ;==========================================================
  74. ;        CHARACTER INITIALIZATION ROUTINES
  75. ;==========================================================
  76. ;
  77. ;
  78. ;
  79.     dseg
  80. ;
  81. ;    set com rate to 9600 baud
  82. ;
  83. ?int65:
  84. init$ext:
  85.     lxi    b,command$6551        ; (02)
  86.     mvi    a,cmd$init
  87.     outp    a
  88.     inx    b
  89.     mvi    a,10h                   ; baud rate equ 9600
  90.     lxi    h,X6551$baud
  91.     add    m
  92.     outp    a
  93.     dcx    b            ; (02)
  94.     dcx    b            ; (01)
  95.     inp    a
  96.     dcx    b            ; (00)
  97.     inp    a
  98.     ret
  99.  
  100.  
  101.     page
  102. ;==========================================================
  103. ;        CHARACTER INPUT ROUTINES
  104. ;==========================================================
  105.  
  106. ;
  107. ;
  108. ;
  109.     dseg
  110. ?in65:            ; character input
  111.     call    ?ins65
  112.     jrz    ?in65
  113.     lxi    b,rxd$6551
  114.     inp    a
  115.     ret
  116.  
  117. ;==========================================================
  118. ;    CHARACTER DEVICE INPUT STATUS
  119. ;==========================================================
  120. ;
  121. ;
  122. ;
  123.     dseg
  124. ?ins65:            ; character input status
  125.     lxi    b,status$6551
  126.     inp    a
  127.     ani    rxrdy
  128.     rz
  129.     ori    -1
  130.     ret
  131.  
  132.  
  133. ;==========================================================
  134. ;    CHARACTER DEVICE OUTPUT
  135. ;==========================================================
  136. ;
  137. ; the character to be output is in the C register
  138. ;
  139.     dseg
  140. ?out65:                ; character output
  141.     mov    a,c
  142.     push    psw
  143.     lxi    b,status$6551
  144. send$wait:
  145.     inp    a
  146.     ani    txrdy
  147.     jrz    send$wait
  148.     pop    psw
  149.     lxi    b,txd$6551
  150.     outp    a
  151.     ret
  152.  
  153.     end
  154.