home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / PROGRAM / ZSIM12.ZIP / ZBIOS.INC < prev    next >
Text File  |  1991-12-31  |  6KB  |  262 lines

  1.  
  2. ; Macro um aus der Z80 Emulation Biosroutinen aufzurufen, => V20
  3.  
  4. calln  macro  nr
  5.        db 0edh,0edh
  6.        db nr
  7. endm
  8.  
  9. ; Macros fuer Z80 Sprunganweisungen, die TASM nicht kennt
  10.  
  11. z80jp  macro  labl
  12.        db 0c3h
  13.        dw offset labl
  14. endm
  15.  
  16. z80ret macro
  17.        db 0c9h
  18. endm
  19.  
  20. ; naechste Zeilen orginal aus DR's CBIOS.ASM
  21.  
  22. ;
  23. MSIZE  equ    20     ;cp/m version memory size in kilobytes
  24. ;
  25. ;  "BIAS" is address offset from 3400h for memory systems
  26. ;  than 16k (referred to as "b" throughout the text).
  27. ;
  28. BIAS   equ    (MSIZE-20)*1024
  29.  
  30.  
  31. IOBYTE equ 3  ;intel i/o byte
  32. CDISK  equ 4  ;current disk number 0=a,...,15=p
  33.  
  34.  
  35. ;       org    bios   ;origin of this program
  36.  
  37. zbiosbeg equ this byte                 ; start of z80 bios
  38.  
  39. ;  jump vector fuer einzelne Ups
  40.        z80jp    zboot+ZBIOSDISPL   ;cold start
  41. wboote equ this byte
  42.        z80jp    zwboot+ZBIOSDISPL  ;warm start
  43.        z80jp    zconst+ZBIOSDISPL  ;console status
  44.        z80jp    zconin+ZBIOSDISPL  ;console character in
  45.        z80jp    zconout+ZBIOSDISPL ;console character out
  46.        z80jp    zlist+ZBIOSDISPL   ;list character out
  47.        z80jp    zpunch+ZBIOSDISPL  ;punch character out
  48.        z80jp    zreader+ZBIOSDISPL ;reader character out
  49.        z80jp    zhome+ZBIOSDISPL   ;move head to home position
  50.        z80jp    zseldsk+ZBIOSDISPL ;select disk
  51.        z80jp    zsettrk+ZBIOSDISPL ;set track number
  52.        z80jp    zsetsec+ZBIOSDISPL ;set sector number
  53.        z80jp    zsetdma+ZBIOSDISPL ;set dma address
  54.        z80jp    zread+ZBIOSDISPL   ;read disk
  55.        z80jp    zwrite+ZBIOSDISPL  ;write disk
  56.        z80jp    zlistst+ZBIOSDISPL ;return list status
  57.        z80jp    zsectran+ZBIOSDISPL       ;sector translate
  58.        rept 25-16-1
  59.          z80jp    zwboot+ZBIOSDISPL
  60.        endm
  61.        z80jp    zmove+ZBIOSDISPL
  62.        z80jp    ztime+ZBIOSDISPL
  63. zvecend equ this byte
  64.  
  65. zboot  equ this byte
  66.         calln 0
  67.        z80ret
  68. zwboot equ this byte
  69.         calln 1
  70.        db 31h,80h,00h    ; ld sp,80h
  71.        z80ret
  72. zconst equ this byte
  73.        calln 2
  74.        z80ret
  75. zconin equ this byte
  76.        calln 3
  77.        z80ret
  78. zconout equ this byte
  79.        calln 4
  80.        z80ret
  81. zlist  equ this byte
  82.        calln 5
  83.        z80ret
  84. zpunch equ this byte
  85.        calln 6
  86.        z80ret
  87. zreader equ this byte
  88.        calln 7
  89.        z80ret
  90. zhome   equ this byte
  91.        calln 8
  92.        z80ret
  93. zseldsk equ this byte
  94.        calln 9
  95.        z80ret
  96. zsettrk equ this byte
  97.        calln 10
  98.        z80ret
  99. zsetsec equ this byte
  100.        calln 11
  101.        z80ret
  102. zsetdma equ this byte
  103.        calln 12
  104.        z80ret
  105. zread   equ this byte
  106.        calln 13
  107.        z80ret
  108. zwrite  equ this byte
  109.        calln 14
  110.        z80ret
  111. zlistst equ this byte
  112.        calln 15
  113.        z80ret
  114. zsectran equ this byte
  115.        calln 16
  116.        z80ret
  117. zmove equ this byte     ; number as in cp/m plus
  118.        calln 25
  119.        z80ret
  120. ztime equ this byte     ; number as in cp/m plus
  121.        calln 26
  122.        z80ret
  123.  
  124. LAST_TRCK0 equ 39  ; track = 0..39
  125. LAST_SEC0  equ 35  ; sektor = 0..35
  126.  
  127. LAST_SEC1  equ 31
  128.  
  129. XLT0       equ 0
  130. XLT1       equ 0
  131.  
  132. ; datas cpc system format
  133.  
  134.                     ; blocksize bls=1024
  135.        SPTC equ 24h ;
  136.        BSHC equ 3   ; log2(bls/128)=3
  137.        BLMC equ 7   ; bls/128-1
  138.        EXMC equ 0   ; (bls/1024)-1
  139.        DSMC equ 168 ; disksize-1
  140.        DRMC equ 63  ; direntrys-1
  141.        AL0C equ 11000000b
  142.        AL1C equ 00000000b
  143.        CKSC equ 16
  144.        OFFC equ 2
  145.  
  146.  
  147. ; datas cpc data format
  148.  
  149.                     ; blocksize bls=1024
  150.        SPTD equ 24h ;
  151.        BSHD equ 3   ; log2(bls/128)=3
  152.        BLMD equ 7   ; bls/128-1
  153.        EXMD equ 0   ; (bls/1024)-1
  154.        DSMD equ 177 ; disksize-1
  155.        DRMD equ 63  ; direntrys-1
  156.        AL0D equ 11000000b
  157.        AL1D equ 00000000b
  158.        CKSD equ 16
  159.        OFFD equ 0
  160.  
  161.  
  162. ; datas fuer CP/M 86 SS
  163.  
  164.                     ; blocksize bls=1024
  165.        SPT0 equ 32  ;
  166.        BSH0 equ 3   ; log2(bls/128)=3
  167.        BLM0 equ 7   ; bls/128-1
  168.        EXM0 equ 0   ; (bls/1024)-1
  169.        DSM0 equ 152 ; disksize-1
  170.        DRM0 equ 63  ; direntrys-1
  171.        AL00 equ 11000000b
  172.        AL10 equ 00000000b
  173.        CKS0 equ 16
  174.        OFF0 equ 1
  175.  
  176. ; datas fuer CP/M 86 DS
  177.  
  178.                     ; blocksize bls=1024
  179.        SPT1 equ 32  ;
  180.        BSH1 equ 4   ; log2(bls/128)=3
  181.        BLM1 equ 15  ; bls/128-1
  182.        EXM1 equ 1   ; (bls/1024)-1
  183.        DSM1 equ 157 ; disksize-1
  184.        DRM1 equ 63  ; direntrys-1
  185.        AL01 equ 10000000b
  186.        AL11 equ 00000000b
  187.        CKS1 equ 16
  188.        OFF1 equ 1
  189.  
  190. ;
  191. ; disc parameter data Ramdisk
  192. ;
  193.  
  194.                     ; blocksize bls=1024
  195.        SPTR equ 32   ; 4K
  196.        BSHR equ 3   ; log2(bls/128)=3
  197.        BLMR equ 7   ; bls/128-1
  198.        EXMR equ 0   ; (bls/1024)-1
  199.        DSMR equ 63  ; disksize-1
  200.        DRMR equ 31  ; direntrys+1
  201.        AL0R equ 10000000b
  202.        AL1R equ 00000000b
  203.        CKSR equ 0
  204.        OFFR equ 0
  205.  
  206. ;
  207. ; structure fuer disc parameter headers
  208. ;
  209. dph struc
  210.     dw 0                            ; xlt
  211.     dw 0                            ; scratch pads
  212.     dw 0
  213.     dw 0
  214.     dw ?                            ; dirbuf
  215.     dw ?                            ; dpb
  216.     dw ?                            ; csv
  217.     dw ?                            ; alv
  218. dph ends
  219.  
  220. ;
  221. ; structure fuer disc parameter blocks
  222. ;
  223.  
  224. dpb   struc
  225.     spt dw ?
  226.     bsh db ?
  227.     blm db ?
  228.     exm db ?
  229.     dsm dw ?
  230.     drm dw ?
  231.     al0 db ?
  232.     al1 db ?
  233.     cks dw ?
  234.     off dw ?
  235. dpb  ends
  236.  
  237. ; drive a:
  238.  
  239. dph_base equ this byte  ; disk parameter base
  240.  
  241. dph0  dph <XLT0,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb0+ZBIOSDISPL,offset csv0+ZBIOSDISPL,offset alv0+ZBIOSDISPL>
  242. dph1  dph <XLT1,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb1+ZBIOSDISPL,offset csv1+ZBIOSDISPL,offset alv1+ZBIOSDISPL>
  243.  
  244. dpb0  dpb <SPTC,BSHC,BLMC,EXMC,DSMC,DRMC,AL0C,AL1C,CKSC,OFFC>
  245.  
  246. dpb1  dpb <SPTR,BSHR,BLMR,EXMR,DSMR,DRMR,AL0R,AL1R,CKSR,OFFR>
  247.  
  248. dirbuf db 128 dup (?)   ; fuer alle Laufwerke gemeinsam
  249.  
  250. csv0   db (DRMC+1)/4 dup (?)
  251. alv0   db (DSMC/8)+1 dup (?)
  252.  
  253. csv1   db (DRMR+1)/4 dup (?)
  254. alv1   db (DSMR/8)+1 dup (?)
  255.  
  256. @date dw (?)
  257. @hour db (?)
  258. @min  db (?)
  259. @sec  db (?)
  260.  
  261. zbiosend equ this byte
  262.