home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / p / systrak.lbr / PUTSYS.AZM / PUTSYS.ASM
Encoding:
Assembly Source File  |  1993-10-25  |  1.6 KB  |  77 lines

  1. ;--------------------------------------------------------------------
  2. ; PUTSYS - write system tracks from memory at 3380H
  3. ;
  4. ; based on getsys/putsys in D.R. manuals, configured for the
  5. ; Digital Research Computers of Texas (Ferguson) Big-Board 
  6. ;      Brian Kantor, 1983
  7. ;--------------------------------------------------------------------
  8. ; Boot loader    image starts at 3380H
  9. ; CCP        image starts at 3400H
  10. ; BDOS        image starts at 3C00H
  11. ; BIOS        image starts at 4000H
  12. ; (end of system track image is end of bios at 4FFFH
  13. ;-------------------------------------------------------------------
  14.  
  15. msize    equ    60            ; size of cp/m in kbytes
  16.  
  17. bias    equ    (msize-20)*1024
  18. ccp    equ    3400h+bias
  19. bdos    equ    ccp+800h
  20. bios    equ    ccp+1600h
  21.  
  22.     org    100h
  23.  
  24. putsys:
  25.     mvi    c,1            ;select the b disk
  26.     call    bios+27            ;select
  27.     lxi    h,3380h            ;convenient place
  28.     mvi    b,0            ;start on track 0
  29. wr$trk:
  30.     mvi    c,1            ;sector 1
  31. wr$sec:
  32.     call    write$sec        ;put a sector
  33.     lxi    d,128            ;sector length
  34.     dad    d            ;put pointer at end of sector
  35.     inr    c            ;bump count
  36.     mov    a,c            ;check if we got 26 yet
  37.     cpi    27            ;26 on a track
  38.     jnz    wr$sec
  39.  
  40. ; at end of track, put next one
  41.  
  42.     inr    b            ;bump track count
  43.     mov    a,b            ;check count
  44.     cpi    2            ;done 0 and 1 yet?
  45.     jnz    wr$trk            ;no, do another
  46.  
  47. ; done, so boot system
  48.  
  49.     jmp    0
  50.  
  51. ; subroutine to write a sector (use the bios)
  52.  
  53. write$sec:
  54.     push    h
  55.     push    b
  56.     mov    b,h            ; set dma address
  57.     mov    c,l
  58.     call    bios+36            ;setdma
  59.     pop    b
  60.  
  61.     push    b
  62.     mov    c,b            ; set track number
  63.     mvi    b,0
  64.     call    bios+30
  65.     pop    b
  66.  
  67.     push    b
  68.     mvi    b,0
  69.     call    bios+33            ; set sector number
  70.     call    bios+42            ; sector write
  71.     pop    b
  72.     pop    h
  73.     ret
  74.  
  75.     end    putsys
  76.