mirror of
https://github.com/david-schmidt/Davex.git
synced 2024-09-27 13:55:09 +00:00
109 lines
1.8 KiB
NASM
109 lines
1.8 KiB
NASM
|
;*********************************************
|
||
|
;
|
||
|
; External command for DAVEX
|
||
|
;
|
||
|
; hdr -- print file header -- first N lines
|
||
|
;
|
||
|
; hdr <wildpath> [-L <integer>]
|
||
|
;
|
||
|
; Default is 5 lines
|
||
|
;
|
||
|
;*********************************************
|
||
|
;
|
||
|
; Converted to MPW IIgs 20-Sep-92 DAL
|
||
|
;
|
||
|
;*********************************************
|
||
|
|
||
|
.include "Common/2/Globals2.asm"
|
||
|
.include "Common/2/Apple.Globals2.asm"
|
||
|
.include "Common/2/Mli.globals2.asm"
|
||
|
.include "Common/Macros.asm"
|
||
|
|
||
|
|
||
|
.segment "CODE_A000"
|
||
|
|
||
|
;
|
||
|
orgadr = $A000
|
||
|
; org orgadr
|
||
|
|
||
|
myversion = $10
|
||
|
minversion = $10
|
||
|
;*********************************************
|
||
|
rts
|
||
|
.byte $ee,$ee
|
||
|
.byte myversion,minversion
|
||
|
.byte %00000000 ;hardware req
|
||
|
.addr descr
|
||
|
.addr orgadr
|
||
|
.addr start
|
||
|
.byte 0,0,0,0
|
||
|
; parameters here
|
||
|
.byte 0,t_wildpath
|
||
|
.byte $80+'l',t_int2
|
||
|
.byte 0,0
|
||
|
|
||
|
descr: pstr "hdr path [-Ln] -- print the first n lines of a file"
|
||
|
|
||
|
;*********************************************
|
||
|
; dsect
|
||
|
; org xczpage ;32 locations
|
||
|
line_count = xczpage ;.addr 0
|
||
|
ref = xczpage+2 ;.byte 0
|
||
|
; dend
|
||
|
;
|
||
|
err: jmp xProDOS_err
|
||
|
;
|
||
|
start = *
|
||
|
jsr xfman_open
|
||
|
bcs err
|
||
|
sta ref
|
||
|
;
|
||
|
lda #5
|
||
|
sta line_count
|
||
|
lda #0
|
||
|
sta line_count+1
|
||
|
lda #'l'+$80
|
||
|
jsr xgetparm_ch
|
||
|
bcs use_dflt
|
||
|
sta line_count+1
|
||
|
sty line_count
|
||
|
use_dflt = *
|
||
|
lda line_count
|
||
|
ora line_count+1
|
||
|
beq hdrdun
|
||
|
;
|
||
|
do_line = *
|
||
|
jsr print_line
|
||
|
bcc line_ok
|
||
|
cmp #err_eof
|
||
|
beq hdrdun
|
||
|
jmp xProDOS_err
|
||
|
line_ok = *
|
||
|
jsr dec_lc
|
||
|
bne do_line
|
||
|
;
|
||
|
hdrdun: jmp crout ;Davex will close file
|
||
|
;
|
||
|
;
|
||
|
dec_lc = *
|
||
|
lda line_count
|
||
|
bne dec1
|
||
|
dec line_count+1
|
||
|
dec1: dec line_count
|
||
|
lda line_count
|
||
|
ora line_count+1
|
||
|
rts
|
||
|
;
|
||
|
;
|
||
|
print_line = *
|
||
|
lda ref
|
||
|
jsr xfman_read
|
||
|
bcs pldun
|
||
|
ora #$80
|
||
|
jsr cout
|
||
|
and #$7f
|
||
|
cmp #$0d
|
||
|
bne print_line
|
||
|
clc
|
||
|
pldun: rts
|