home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / turbodsg / breako.mac < prev    next >
Text File  |  1986-07-05  |  1KB  |  117 lines

  1. ; breako
  2. ;
  3. cr    equ    0dh
  4. lf    equ    0ah
  5. ;
  6. .z80
  7. .request syslib
  8. ;
  9. start:    ld    sp,stack
  10.     ld    a,(5dh)
  11.     cp    ' '
  12.     jr    nz,..hf
  13.     call    print##
  14.     cr,lf,7,'No file specified',cr,lf,0
  15.     rst    0
  16. ;
  17. ..hf:    ld    hl,65h
  18.     ld    a,'O'
  19.     cp    (hl)
  20.     jr    nz,..no
  21.     inc    hl
  22.     ld    a,' '
  23.     cp    (hl)
  24.     jr    nz,..no
  25.     inc    hl
  26.     cp    (hl)
  27.     jr    z,..ho
  28. ..no:    call    print##
  29.     cr,lf,7,'Not .O file',cr,lf,0
  30.     rst    0
  31. ;
  32. ..ho:    ld    de,5ch
  33.     call    fi0$open##
  34.     jr    z,..oo
  35.     call    print##
  36.     cr,lf,7,'Not found',cr,lf,0
  37.     rst    0
  38. ;
  39. ..oo:    call    f0$get##
  40.     jp    nz,..eof
  41.     cp    0ffh
  42.     jp    z,..eof
  43.     cp    0fbh            ; header?
  44.     jr    z,..hh
  45.     jr    ..oo
  46. ;
  47. ..hh:    call    header
  48. ..loop:    call    f0$get##
  49.     jp    nz,..eof
  50.     cp    0feh
  51.     jr    z,eom
  52. .neo:    call    f1$put##
  53.     jr    ..loop
  54. ;
  55. eom:    call    f1$put##
  56.     ld    b,4
  57. .eoml:    call    f0$get##
  58.     or    a
  59.     jr    nz,.neo
  60.     call    f1$put##
  61.     djnz    .eoml
  62.     ld    a,0ffh
  63.     call    f1$put##
  64.     call    fo1$close##
  65.     jp    ..oo
  66. ;
  67. header:    ld    hl,outfcb+1
  68.     push    hl
  69.     ld    b,8
  70. ..fbl:    ld    (hl),' '
  71.     inc    hl
  72.     djnz    ..fbl
  73.     pop    hl
  74.     call    print##
  75.     cr,lf,'Extracting ',0
  76.     ld    b,8
  77. ..ghl:    call    f0$get##
  78.     and    5fh
  79.     or    a
  80.     jr    z,..eoh
  81.     call    cout##
  82.     ld    (hl),a
  83.     inc    hl
  84.     djnz    ..ghl
  85. ;
  86. ..eoh:    ld    de,outfcb
  87.     call    initfcb##
  88.     call    f$delete##
  89.     call    f$make##
  90.     call    fo1$open##
  91.     ld    a,0fbh
  92.     call    f1$put##
  93.     ld    hl,outfcb+1
  94.     ld    b,8
  95. ..ph:    ld    a,(hl)
  96.     cp    ' '
  97.     jr    z,..phx
  98.     call    f1$put##
  99.     inc    hl
  100.     djnz    ..ph
  101. ..phx:    xor    a
  102.     call    f1$put##
  103.     ret
  104. ;
  105. ..eof:    call    print##
  106.     cr,lf,'Done',cr,lf,0
  107.     rst    0
  108. ;
  109.     dseg
  110. ;
  111. outfcb:    db    0,'        ','O  '
  112.     ds    24
  113.  
  114.     ds    100
  115. stack    equ    $
  116.     end
  117.