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