Files
RomWBW/branches/s100/Apps/crossdev/IDENTITY.ASM
2013-02-16 06:46:44 +00:00

196 lines
2.9 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
; 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