home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / CDOSDSK4.ZIP / CDOSDSK4.TD0 / XIOS / DISK.A86 < prev    next >
Encoding:
Text File  |  1989-01-26  |  3.9 KB  |  165 lines

  1. ; DISK.A86
  2. title 'Common Disk Entries'
  3. pagesize 60+11
  4. ;************************************************
  5. ;*                        *
  6. ;*    XIOS DISK ROUTINE ENTRY POINTS        *
  7. ;*    CDOS 6.0 XIOS                *
  8. ;*    DRI OS ENGR, JMB            *
  9. ;*                        *
  10. ;************************************************
  11. ; Major mods:
  12. ; 6.x
  13. ;  1 JUL 88 -- removed support for MDISK            - GMS
  14. ; 6.0
  15. ; 20 OCT 87 -- IO_verify function supported on floppy disk    - GMS
  16. ; 28 SEP 87 -- remove DPH_OWNER test (BDOS does it now)        - JW
  17. ; 22 JUL 87 -- add DPH_OWNER stuff for DRV_LOCK support        - JW
  18. ; 5.0
  19. ; 11 JUNE 85 -- update 4.1 ASM86 source to RASM86
  20.  
  21. ; include COPYRITE.TXT
  22.  
  23. nolist
  24. include CDOS.EQU
  25. list
  26. ; The following was included:
  27. ; include CDOS.EQU
  28.  
  29. CGROUP    group    CODE
  30. DGROUP    group    ddseg0
  31.  
  32. public    io_seldsk@,    io_write@,    io_read@    ;for HEADER.A86
  33. public    io_write_vfy@
  34. public    io_flushbuf@
  35. public    select_tbl$,    read_tbl$,    write_tbl$
  36.  
  37.     cseg
  38. extrn    sel_fid@     :near, read_fid@  :near        ;in FIDDS.A86
  39. extrn    write_fid@   :near
  40.  
  41.     dseg
  42. extrn    cur_disk$:byte                    ;in FLOPPY.A86
  43. extrn    verify_flag$:byte, temp_verify$:byte
  44. extrn    dph_tbl$:word                    ;in HEADER.A86
  45.  
  46. eject
  47.  
  48.     cseg
  49. ;==========
  50. io_seldsk@:
  51. ;==========
  52. ; Function 9:  Select Disk:
  53. ;  entry:    CL = disk to be selected
  54. ;        DL = 00h if disk has not been previously selected
  55. ;           = 01h if disk has been previously selected
  56. ;  exit:    AX = 0 if illegal disk
  57. ;           = offset of DPH relative from
  58. ;            XIOS Data Segment
  59.  
  60.     mov    bx,offset select_tbl$
  61.     jmps    disk_branch        ; vector to select routine
  62.  
  63.  
  64. ;========
  65. io_read@:
  66. ;========
  67. ; Function 10: Read sector:
  68. ;  Reads the sector on the current disk, track and
  69. ;  sector into the current dma buffer.
  70. ;  entry:    parameters on stack
  71. ;  exit:    AL = 00    if no error occured
  72. ;        AL = 01 if an error occured
  73. ;        AH = extended error code
  74.  
  75.     mov    bx,offset read_tbl$
  76.     jmps    io_rw                ; code shared with io_write
  77. eject
  78.  
  79. ;=========
  80. io_write@:
  81. ;=========
  82.     mov    al,verify_flag$        ; get setup flag
  83.     jmps    io_rw0
  84.  
  85.  
  86. ;=============
  87. io_write_vfy@:
  88. ;=============
  89. ; Function 11: Write disk:
  90. ;  Write the sector in the current Dma buffer to the current disk
  91. ;  on the current track in the current sector.
  92. ;  exit:    AL = 00H if no error occured
  93. ;           = 01H if error occured
  94. ;           = 02H if read only disk
  95. ;        AH = extended error code
  96.     mov    al,TRUE            ; set verify flag true    
  97.  
  98. io_rw0:
  99.     mov    temp_verify$,al        ; set verify flag
  100.     mov    bx,offset write_tbl$
  101. io_rw:
  102.     mov    bp,sp                ; for stack parameters
  103.     mov    cl,DRIVE            ; for branching out
  104.     mov    cur_disk$,cl            ; save for port stuff
  105. ;    jmps    disk_branch
  106.  
  107.  
  108. disk_branch:
  109. ; Branch point for select, read, and write:
  110. ;  entry:    bx -> routine vector base
  111. ;        cl = disk number
  112.  
  113.     mov    ch,0                ; clear msb
  114.     mov    si,cx
  115.     shl    si,1                ; si = disk number index
  116.     jmp    word ptr [bx+si]
  117.  
  118.  
  119. ;============
  120. io_flushbuf@:
  121. ;============
  122. ; Function 12: Flush buffers:
  123. ; This is a nop nowadays because no XIOS buffering.
  124.  
  125.     xor    al,al                ; zero for no error
  126.     ret
  127. eject
  128.  
  129. ddseg0    dseg    word
  130.  
  131. ; These branch tables are now completely set up
  132. ; in the "fix_disk_tables" routine of XINIT.LIB:
  133.  
  134. ; Select Disk branch table:
  135.  
  136. select_tbl$    dw    sel_fid@,sel_fid@,sel_fid@    ; A,B,C
  137.         dw    sel_fid@,sel_fid@,sel_fid@    ; D,E,F
  138.         dw    sel_fid@,sel_fid@,sel_fid@    ; G,H,I
  139.         dw    sel_fid@,sel_fid@,sel_fid@    ; J,K,L
  140.         dw    sel_fid@,sel_fid@,sel_fid@    ; M,N,O
  141.         dw    sel_fid@            ; P
  142.  
  143. ; Read branch table:
  144.  
  145. read_tbl$    dw    read_fid@,read_fid@,read_fid@    ; A,B,C
  146.         dw    read_fid@,read_fid@,read_fid@    ; D,E,F
  147.         dw    read_fid@,read_fid@,read_fid@    ; G,H,I
  148.         dw    read_fid@,read_fid@,read_fid@    ; J,K,L
  149.         dw    read_fid@,read_fid@,read_fid@    ; M,N,O
  150.         dw    read_fid@            ; P
  151.  
  152. ; Write branch table:
  153.  
  154. write_tbl$    dw    write_fid@,write_fid@,write_fid@   ; A,B,C
  155.         dw    write_fid@,write_fid@,write_fid@   ; D,E,F
  156.         dw    write_fid@,write_fid@,write_fid@   ; G,H,I
  157.         dw    write_fid@,write_fid@,write_fid@   ; J,K,L
  158.         dw    write_fid@,write_fid@,write_fid@ ; M,N,O
  159.         dw    write_fid@               ; P
  160.  
  161.     end
  162.  
  163. ; END OF DISK.A86
  164.  
  165.