home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
turbodsg
/
breako.mac
< prev
next >
Wrap
Text File
|
1986-07-05
|
1KB
|
117 lines
; breako
;
cr equ 0dh
lf equ 0ah
;
.z80
.request syslib
;
start: ld sp,stack
ld a,(5dh)
cp ' '
jr nz,..hf
call print##
cr,lf,7,'No file specified',cr,lf,0
rst 0
;
..hf: ld hl,65h
ld a,'O'
cp (hl)
jr nz,..no
inc hl
ld a,' '
cp (hl)
jr nz,..no
inc hl
cp (hl)
jr z,..ho
..no: call print##
cr,lf,7,'Not .O file',cr,lf,0
rst 0
;
..ho: ld de,5ch
call fi0$open##
jr z,..oo
call print##
cr,lf,7,'Not found',cr,lf,0
rst 0
;
..oo: call f0$get##
jp nz,..eof
cp 0ffh
jp z,..eof
cp 0fbh ; header?
jr z,..hh
jr ..oo
;
..hh: call header
..loop: call f0$get##
jp nz,..eof
cp 0feh
jr z,eom
.neo: call f1$put##
jr ..loop
;
eom: call f1$put##
ld b,4
.eoml: call f0$get##
or a
jr nz,.neo
call f1$put##
djnz .eoml
ld a,0ffh
call f1$put##
call fo1$close##
jp ..oo
;
header: ld hl,outfcb+1
push hl
ld b,8
..fbl: ld (hl),' '
inc hl
djnz ..fbl
pop hl
call print##
cr,lf,'Extracting ',0
ld b,8
..ghl: call f0$get##
and 5fh
or a
jr z,..eoh
call cout##
ld (hl),a
inc hl
djnz ..ghl
;
..eoh: ld de,outfcb
call initfcb##
call f$delete##
call f$make##
call fo1$open##
ld a,0fbh
call f1$put##
ld hl,outfcb+1
ld b,8
..ph: ld a,(hl)
cp ' '
jr z,..phx
call f1$put##
inc hl
djnz ..ph
..phx: xor a
call f1$put##
ret
;
..eof: call print##
cr,lf,'Done',cr,lf,0
rst 0
;
dseg
;
outfcb: db 0,' ','O '
ds 24
ds 100
stack equ $
end