home *** CD-ROM | disk | FTP | other *** search
/ norge.freeshell.org (192.94.73.8) / 192.94.73.8.tar / 192.94.73.8 / pub / computers / cpm / alphatronic / DRIPAK.ZIP / CPM_3-0 / SOURCES / $LIBIOS3.ASM next >
Assembly Source File  |  1982-12-31  |  4KB  |  153 lines

  1.     name    'BIOSMOD'
  2.     title    'Direct BIOS Calls From PL/I-80 for CP/M 3.0'
  3. ;
  4. ;***********************************************************
  5. ;*                                                         *
  6. ;*    bios calls from pl/i for track, sector io          *
  7. ;*                                                         *
  8. ;***********************************************************
  9.     public    settrk    ;set track number
  10.     public    setsec    ;set sector number
  11.     public    rdsec    ;read sector
  12.     public    wrsec    ;write sector
  13.     public    seldsk    ;select disk & return the addr(DPH)
  14.     public    sectrn    ;translate sector # given translate table
  15.     public  bstdma    ;set dma
  16.     public    bflush    ;flush BIOS deblocking buffers
  17. ;
  18. ;
  19.     extrn    ?boot    ;system reboot entry point
  20.     extrn    ?bdos    ;bdos entry point
  21. ;
  22. ;    utility functions
  23. ;
  24. ;***********************************************************
  25. ;***********************************************************
  26. ;*                                                         *
  27. ;*       general purpose routines used upon entry          *
  28. ;*                                                         *
  29. ;***********************************************************
  30. ;
  31. ;
  32. getp2:    ;get single word value to DE
  33.     mov     e,m
  34.     inx     h
  35.     mov    d,m
  36.     inx    h
  37.     push     h
  38.     xchg
  39.     mov    e,m
  40.     inx    h
  41.     mov     d,m
  42.     pop    h
  43.     ret
  44. ;
  45. ;
  46. ;***********************************************************
  47. ;*                                                         *
  48. ;***********************************************************
  49. settrk:    ;set track number 0-76, 0-65535 in BC
  50.     ;1-> track #
  51.     call getp2
  52.     xchg
  53.     shld    BCREG
  54.     mvi     a,0ah
  55.     jmp gobios
  56. ;
  57. ;***********************************************************
  58. ;*                                                         *
  59. ;***********************************************************
  60. setsec:    ;set sector number 1 - sectors per track
  61.     ;1-> sector #
  62.     call getp2
  63.     xchg
  64.     shld    BCREG
  65.     mvi    a,0bh
  66.     jmp gobios
  67. ;
  68. ;***********************************************************
  69. ;*                                                         *
  70. ;***********************************************************
  71. rdsec:    ;read current sector into sector at dma addr
  72.     ;returns     0 if no errors
  73.     ;        1 non-recoverable error
  74.     mvi    a,0dh
  75.     jmp gobios
  76. ;***********************************************************
  77. ;*                                                         *
  78. ;***********************************************************
  79. wrsec:    ;writes contents of sector at dma addr to current sector
  80.     ;returns    0 errors occured
  81.     ;        1 non-recoverable error
  82.     call getp2
  83.     xchg
  84.     shld    BCREG
  85.     mvi    a,0eh
  86.     jmp gobios
  87. ;
  88. ;***********************************************************
  89. ;*                                                         *
  90. ;***********************************************************
  91. ;
  92. seldsk:    ; selects disk
  93.  
  94.     call getp2
  95.     mov    a,e
  96.     sta     BCREG
  97.     mvi    a,9
  98.     jmp     gobios
  99. ;
  100. ;***********************************************************
  101. ;*                                                         *
  102. ;***********************************************************
  103. ;
  104. sectrn:    ;translate sector #
  105.     call    getp2
  106.     xchg
  107.     shld    BCREG
  108.     xchg
  109.     call     getp2
  110.     xchg
  111.     shld    DEREG
  112.     mvi    a,10h
  113.     jmp    gobios
  114. ;
  115. bstdma:    ;set dma
  116.     call    getp2
  117.     xchg
  118.     shld    BCREG
  119.     mvi    a,0ch
  120.     jmp    gobios
  121. ;
  122. bflush:    ;flush bios buffers
  123.     mvi    a,24
  124.     jmp    gobios
  125. ;    
  126. ;
  127. ;***********************************************************
  128. ;***********************************************************
  129. ;***********************************************************
  130. ;*                                                         *
  131. ;*       call BDOS                       *
  132. ;*                                                         *
  133. ;***********************************************************
  134. ;
  135. ;
  136. gobios:
  137.     sta    FUNC    ;load BIOS function #
  138.     lxi    h,FUNC
  139.     xchg        ; address of BIOSPB in DE
  140.     mvi     c,032h    ; BDOS function 50 call
  141.     jmp    ?bdos
  142. ;
  143. ;
  144. BIOSPB:        dw    FUNC
  145. FUNC:        db    0
  146. AREG:        db    0
  147. BCREG:        dw    0
  148. DEREG:        dw    0
  149. HLREG:        dw    0
  150. ;
  151.     end
  152.  
  153.