mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
2.9 KiB
196 lines
2.9 KiB
; identity.asm 2/17/2012 dwg - Program Identity Declarations
|
|
|
|
maclib portab
|
|
maclib globals
|
|
maclib stdlib
|
|
maclib cpmbios
|
|
maclib cpmbdos
|
|
maclib memory
|
|
maclib printers
|
|
|
|
public x$ident
|
|
x$ident:
|
|
shld lfcbptr ; save pointer to fcb
|
|
|
|
mvi c,FOPEN
|
|
lhld lfcbptr
|
|
xchg
|
|
call BDOS
|
|
cpi 255
|
|
jnz openok
|
|
|
|
;;; memcpy lname,file1fcb+1,8
|
|
mvi c,8
|
|
lxi d,lname
|
|
lhld lfcbptr
|
|
inx h
|
|
call x$memcpy
|
|
|
|
mvi a,','
|
|
sta ldot
|
|
|
|
;;; memcpy lext,file1fcb+9,3
|
|
mvi c,3
|
|
lhld lfcbptr
|
|
lxi d,9
|
|
dad d
|
|
lxi d,lext
|
|
call x$memcpy
|
|
|
|
|
|
mvi a,'$'
|
|
sta lterm
|
|
print lname
|
|
printf ' -- File Not Found'
|
|
mvi a,FAILURE
|
|
jmp fini
|
|
openok:
|
|
|
|
mvi c,SETDMA
|
|
lxi d,buffer
|
|
call BDOS
|
|
|
|
mvi c,READSEQ
|
|
lhld lfcbptr
|
|
xchg
|
|
call BDOS
|
|
|
|
|
|
mvi c,SETDMA
|
|
lxi d,buffer+128
|
|
call BDOS
|
|
|
|
mvi c,READSEQ
|
|
lhld lfcbptr
|
|
xchg
|
|
call BDOS
|
|
|
|
mvi c,FCLOSE
|
|
lhld lfcbptr
|
|
xchg
|
|
call BDOS
|
|
|
|
lxi d,d$prog
|
|
mvi c,9
|
|
call BDOS
|
|
|
|
conout ','
|
|
conout ' '
|
|
lda p$rmj
|
|
mov l,a
|
|
mvi h,0
|
|
call pr$d$word
|
|
conout '.'
|
|
lda p$rmn
|
|
mov l,a
|
|
call pr$d$word
|
|
conout '.'
|
|
lda p$rup
|
|
mov l,a
|
|
call pr$d$word
|
|
conout '.'
|
|
lda p$rtp
|
|
mov l,a
|
|
call pr$d$word
|
|
conout ','
|
|
conout ' '
|
|
|
|
lda p$mon
|
|
mov l,a
|
|
call pr$d$word
|
|
conout '/'
|
|
lda p$day
|
|
mov l,a
|
|
call pr$d$word
|
|
conout '/'
|
|
lhld p$year
|
|
call pr$d$word
|
|
conout ','
|
|
conout ' '
|
|
|
|
lxi d,d$prod
|
|
mvi c,9
|
|
call BDOS
|
|
conout ','
|
|
conout ' '
|
|
|
|
lxi d,d$orig
|
|
mvi c,9
|
|
call BDOS
|
|
conout ','
|
|
conout ' '
|
|
|
|
lxi d,d$ser
|
|
mvi c,9
|
|
call BDOS
|
|
conout ','
|
|
conout ' '
|
|
|
|
lda d$term2
|
|
cpi '$'
|
|
jnz do$name
|
|
conout ' '
|
|
lxi d,d$uuid+19
|
|
jmp do$any
|
|
do$name:
|
|
lxi d,d$name
|
|
do$any:
|
|
mvi c,9
|
|
call BDOS
|
|
|
|
mvi a,SUCCESS ; set return code
|
|
fini:
|
|
ret
|
|
|
|
lfcbptr ds 2
|
|
ldrive ds 1
|
|
lcolon ds 1
|
|
lname ds 8
|
|
ldot ds 1
|
|
lext ds 3
|
|
lterm ds 1
|
|
|
|
db 'buffer-->'
|
|
buffer ds 1
|
|
p$start ds 2
|
|
p$hexrf ds 16
|
|
p$sig ds 2
|
|
p$rmj ds 1
|
|
p$rmn ds 1
|
|
p$rup ds 1
|
|
p$rtp ds 1
|
|
p$mon ds 1
|
|
p$day ds 1
|
|
p$year ds 2
|
|
p$argv ds 2
|
|
p$e5 ds 1
|
|
p$pr$st ds 2
|
|
p$code1 ds 3 ; begin: lxi h,0
|
|
p$code2 ds 1 ; dad sp
|
|
p$code3 ds 3 ; shld pre$stk
|
|
p$code4 ds 3 ; lxi sp,stack$top
|
|
p$code5 ds 1 ; nop
|
|
p$code6 ds 3 ; jmp around$bandata
|
|
p$prog ds 2 ; dw prog
|
|
p$dat ds 2 ; dw dat
|
|
p$prod ds 2 ; dw prod
|
|
p$orig ds 2 ; dw orig
|
|
p$ser ds 2 ; dw ser
|
|
p$nam ds 2 ; dw nam
|
|
p$term ds 2 ; dw 0
|
|
d$prog ds 8+1+3+1 ; db '12345678.123$'
|
|
d$date ds 2+1+2+1+4+1 ; db ' 2/11/2012$'
|
|
d$ser ds 6+1 ; db '654321$'
|
|
d$prod ds 5+1 ; db 'CPM80$'
|
|
d$orig ds 3+1 ; db 'DWG$'
|
|
d$name ds 1+7+1+1+1+1+7+1 ; db ' Douglas W. Goodall$'
|
|
d$uuid ds 36 ; unique user identification
|
|
d$term2 ds 1 ; can be set to zero or dollar sign
|
|
p$len equ $-buffer
|
|
p$rsvd ds 256-p$len
|
|
db '<--buffer'
|
|
dw p$len
|
|
crlf db CR,LF,'$'
|
|
|
|
; eof - identity.asm
|
|
|