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.
419 lines
14 KiB
419 lines
14 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:
|
|
0000 221502 shld lfcbptr ; save pointer to fcb
|
|
|
|
0003 0E0F mvi c,FOPEN
|
|
0005 2A1502 lhld lfcbptr
|
|
0008 EB xchg
|
|
0009 CD0500 call BDOS
|
|
000C FEFF cpi 255
|
|
000E C27100 jnz openok
|
|
|
|
;;; memcpy lname,file1fcb+1,8
|
|
0011 0E08 mvi c,8
|
|
0013 111902 lxi d,lname
|
|
0016 2A1502 lhld lfcbptr
|
|
0019 23 inx h
|
|
001A CD0000 call x$memcpy
|
|
|
|
001D 3E2C mvi a,','
|
|
001F 322102 sta ldot
|
|
|
|
;;; memcpy lext,file1fcb+9,3
|
|
0022 0E03 mvi c,3
|
|
0024 2A1502 lhld lfcbptr
|
|
0027 110900 lxi d,9
|
|
002A 19 dad d
|
|
002B 112202 lxi d,lext
|
|
002E CD0000 call x$memcpy
|
|
|
|
|
|
0031 3E24 mvi a,'$'
|
|
0033 322502 sta lterm
|
|
print lname
|
|
0036+F5 PUSH PSW
|
|
0037+C5 PUSH B
|
|
0038+D5 PUSH D
|
|
0039+E5 PUSH H
|
|
003A+0E09 MVI C,PRINTSTR
|
|
003C+111902 LXI D,LNAME
|
|
003F+CD0500 CALL BDOS
|
|
0042+E1 POP H
|
|
0043+D1 POP D
|
|
0044+C1 POP B
|
|
0045+F1 POP PSW
|
|
printf ' -- File Not Found'
|
|
0046+F5 PUSH PSW
|
|
0047+C5 PUSH B
|
|
0048+D5 PUSH D
|
|
0049+E5 PUSH H
|
|
004A+0E09 MVI C,PRINTSTR
|
|
004C+115900 LXI D,??0002
|
|
004F+CD0500 CALL BDOS
|
|
0052+E1 POP H
|
|
0053+D1 POP D
|
|
0054+C1 POP B
|
|
0055+F1 POP PSW
|
|
0056+C36C00 JMP ??0001
|
|
0059+202D2D2046??0002 DB ' -- File Not Found'
|
|
006B+24 DB '$'
|
|
006C 3E01 mvi a,FAILURE
|
|
006E C31402 jmp fini
|
|
openok:
|
|
|
|
0071 0E1A mvi c,SETDMA
|
|
0073 112F02 lxi d,buffer
|
|
0076 CD0500 call BDOS
|
|
|
|
0079 0E14 mvi c,READSEQ
|
|
007B 2A1502 lhld lfcbptr
|
|
007E EB xchg
|
|
007F CD0500 call BDOS
|
|
|
|
|
|
0082 0E1A mvi c,SETDMA
|
|
0084 11AF02 lxi d,buffer+128
|
|
0087 CD0500 call BDOS
|
|
|
|
008A 0E14 mvi c,READSEQ
|
|
008C 2A1502 lhld lfcbptr
|
|
008F EB xchg
|
|
0090 CD0500 call BDOS
|
|
|
|
0093 0E10 mvi c,FCLOSE
|
|
0095 2A1502 lhld lfcbptr
|
|
0098 EB xchg
|
|
0099 CD0500 call BDOS
|
|
|
|
009C 116D02 lxi d,d$prog
|
|
009F 0E09 mvi c,9
|
|
00A1 CD0500 call BDOS
|
|
|
|
conout ','
|
|
00A4+F5 PUSH PSW
|
|
00A5+C5 PUSH B
|
|
00A6+D5 PUSH D
|
|
00A7+E5 PUSH H
|
|
00A8+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
00AA+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
00AC+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
00AF+E1 POP H
|
|
00B0+D1 POP D
|
|
00B1+C1 POP B
|
|
00B2+F1 POP PSW
|
|
conout ' '
|
|
00B3+F5 PUSH PSW
|
|
00B4+C5 PUSH B
|
|
00B5+D5 PUSH D
|
|
00B6+E5 PUSH H
|
|
00B7+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
00B9+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
00BB+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
00BE+E1 POP H
|
|
00BF+D1 POP D
|
|
00C0+C1 POP B
|
|
00C1+F1 POP PSW
|
|
00C2 3A4402 lda p$rmj
|
|
00C5 6F mov l,a
|
|
00C6 2600 mvi h,0
|
|
00C8 CD0000 call pr$d$word
|
|
conout '.'
|
|
00CB+F5 PUSH PSW
|
|
00CC+C5 PUSH B
|
|
00CD+D5 PUSH D
|
|
00CE+E5 PUSH H
|
|
00CF+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
00D1+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
00D3+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
00D6+E1 POP H
|
|
00D7+D1 POP D
|
|
00D8+C1 POP B
|
|
00D9+F1 POP PSW
|
|
00DA 3A4502 lda p$rmn
|
|
00DD 6F mov l,a
|
|
00DE CD0000 call pr$d$word
|
|
conout '.'
|
|
00E1+F5 PUSH PSW
|
|
00E2+C5 PUSH B
|
|
00E3+D5 PUSH D
|
|
00E4+E5 PUSH H
|
|
00E5+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
00E7+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
00E9+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
00EC+E1 POP H
|
|
00ED+D1 POP D
|
|
00EE+C1 POP B
|
|
00EF+F1 POP PSW
|
|
00F0 3A4602 lda p$rup
|
|
00F3 6F mov l,a
|
|
00F4 CD0000 call pr$d$word
|
|
conout '.'
|
|
00F7+F5 PUSH PSW
|
|
00F8+C5 PUSH B
|
|
00F9+D5 PUSH D
|
|
00FA+E5 PUSH H
|
|
00FB+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
00FD+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
00FF+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0102+E1 POP H
|
|
0103+D1 POP D
|
|
0104+C1 POP B
|
|
0105+F1 POP PSW
|
|
0106 3A4702 lda p$rtp
|
|
0109 6F mov l,a
|
|
010A CD0000 call pr$d$word
|
|
conout ','
|
|
010D+F5 PUSH PSW
|
|
010E+C5 PUSH B
|
|
010F+D5 PUSH D
|
|
0110+E5 PUSH H
|
|
0111+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0113+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
0115+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0118+E1 POP H
|
|
0119+D1 POP D
|
|
011A+C1 POP B
|
|
011B+F1 POP PSW
|
|
conout ' '
|
|
011C+F5 PUSH PSW
|
|
011D+C5 PUSH B
|
|
011E+D5 PUSH D
|
|
011F+E5 PUSH H
|
|
0120+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0122+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
0124+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0127+E1 POP H
|
|
0128+D1 POP D
|
|
0129+C1 POP B
|
|
012A+F1 POP PSW
|
|
|
|
012B 3A4802 lda p$mon
|
|
012E 6F mov l,a
|
|
012F CD0000 call pr$d$word
|
|
conout '/'
|
|
0132+F5 PUSH PSW
|
|
0133+C5 PUSH B
|
|
0134+D5 PUSH D
|
|
0135+E5 PUSH H
|
|
0136+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0138+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
013A+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
013D+E1 POP H
|
|
013E+D1 POP D
|
|
013F+C1 POP B
|
|
0140+F1 POP PSW
|
|
0141 3A4902 lda p$day
|
|
0144 6F mov l,a
|
|
0145 CD0000 call pr$d$word
|
|
conout '/'
|
|
0148+F5 PUSH PSW
|
|
0149+C5 PUSH B
|
|
014A+D5 PUSH D
|
|
014B+E5 PUSH H
|
|
014C+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
014E+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
0150+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0153+E1 POP H
|
|
0154+D1 POP D
|
|
0155+C1 POP B
|
|
0156+F1 POP PSW
|
|
0157 2A4A02 lhld p$year
|
|
015A CD0000 call pr$d$word
|
|
conout ','
|
|
015D+F5 PUSH PSW
|
|
015E+C5 PUSH B
|
|
015F+D5 PUSH D
|
|
0160+E5 PUSH H
|
|
0161+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0163+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
0165+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0168+E1 POP H
|
|
0169+D1 POP D
|
|
016A+C1 POP B
|
|
016B+F1 POP PSW
|
|
conout ' '
|
|
016C+F5 PUSH PSW
|
|
016D+C5 PUSH B
|
|
016E+D5 PUSH D
|
|
016F+E5 PUSH H
|
|
0170+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0172+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
0174+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0177+E1 POP H
|
|
0178+D1 POP D
|
|
0179+C1 POP B
|
|
017A+F1 POP PSW
|
|
|
|
017B 118C02 lxi d,d$prod
|
|
017E 0E09 mvi c,9
|
|
0180 CD0500 call BDOS
|
|
conout ','
|
|
0183+F5 PUSH PSW
|
|
0184+C5 PUSH B
|
|
0185+D5 PUSH D
|
|
0186+E5 PUSH H
|
|
0187+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0189+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
018B+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
018E+E1 POP H
|
|
018F+D1 POP D
|
|
0190+C1 POP B
|
|
0191+F1 POP PSW
|
|
conout ' '
|
|
0192+F5 PUSH PSW
|
|
0193+C5 PUSH B
|
|
0194+D5 PUSH D
|
|
0195+E5 PUSH H
|
|
0196+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
0198+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
019A+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
019D+E1 POP H
|
|
019E+D1 POP D
|
|
019F+C1 POP B
|
|
01A0+F1 POP PSW
|
|
|
|
01A1 119202 lxi d,d$orig
|
|
01A4 0E09 mvi c,9
|
|
01A6 CD0500 call BDOS
|
|
conout ','
|
|
01A9+F5 PUSH PSW
|
|
01AA+C5 PUSH B
|
|
01AB+D5 PUSH D
|
|
01AC+E5 PUSH H
|
|
01AD+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
01AF+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
01B1+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
01B4+E1 POP H
|
|
01B5+D1 POP D
|
|
01B6+C1 POP B
|
|
01B7+F1 POP PSW
|
|
conout ' '
|
|
01B8+F5 PUSH PSW
|
|
01B9+C5 PUSH B
|
|
01BA+D5 PUSH D
|
|
01BB+E5 PUSH H
|
|
01BC+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
01BE+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
01C0+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
01C3+E1 POP H
|
|
01C4+D1 POP D
|
|
01C5+C1 POP B
|
|
01C6+F1 POP PSW
|
|
|
|
01C7 118502 lxi d,d$ser
|
|
01CA 0E09 mvi c,9
|
|
01CC CD0500 call BDOS
|
|
conout ','
|
|
01CF+F5 PUSH PSW
|
|
01D0+C5 PUSH B
|
|
01D1+D5 PUSH D
|
|
01D2+E5 PUSH H
|
|
01D3+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
01D5+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
01D7+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
01DA+E1 POP H
|
|
01DB+D1 POP D
|
|
01DC+C1 POP B
|
|
01DD+F1 POP PSW
|
|
conout ' '
|
|
01DE+F5 PUSH PSW
|
|
01DF+C5 PUSH B
|
|
01E0+D5 PUSH D
|
|
01E1+E5 PUSH H
|
|
01E2+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
01E4+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
01E6+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
01E9+E1 POP H
|
|
01EA+D1 POP D
|
|
01EB+C1 POP B
|
|
01EC+F1 POP PSW
|
|
|
|
01ED 3ACE02 lda d$term2
|
|
01F0 FE24 cpi '$'
|
|
01F2 C20A02 jnz do$name
|
|
conout ' '
|
|
01F5+F5 PUSH PSW
|
|
01F6+C5 PUSH B
|
|
01F7+D5 PUSH D
|
|
01F8+E5 PUSH H
|
|
01F9+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
|
|
01FB+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
|
|
01FD+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
|
|
0200+E1 POP H
|
|
0201+D1 POP D
|
|
0202+C1 POP B
|
|
0203+F1 POP PSW
|
|
0204 11BD02 lxi d,d$uuid+19
|
|
0207 C30D02 jmp do$any
|
|
do$name:
|
|
020A 119602 lxi d,d$name
|
|
do$any:
|
|
020D 0E09 mvi c,9
|
|
020F CD0500 call BDOS
|
|
|
|
0212 3E00 mvi a,SUCCESS ; set return code
|
|
fini:
|
|
0214 C9 ret
|
|
|
|
0215 lfcbptr ds 2
|
|
0217 ldrive ds 1
|
|
0218 lcolon ds 1
|
|
0219 lname ds 8
|
|
0221 ldot ds 1
|
|
0222 lext ds 3
|
|
0225 lterm ds 1
|
|
|
|
0226 6275666665 db 'buffer-->'
|
|
022F buffer ds 1
|
|
0230 p$start ds 2
|
|
0232 p$hexrf ds 16
|
|
0242 p$sig ds 2
|
|
0244 p$rmj ds 1
|
|
0245 p$rmn ds 1
|
|
0246 p$rup ds 1
|
|
0247 p$rtp ds 1
|
|
0248 p$mon ds 1
|
|
0249 p$day ds 1
|
|
024A p$year ds 2
|
|
024C p$argv ds 2
|
|
024E p$e5 ds 1
|
|
024F p$pr$st ds 2
|
|
0251 p$code1 ds 3 ; begin: lxi h,0
|
|
0254 p$code2 ds 1 ; dad sp
|
|
0255 p$code3 ds 3 ; shld pre$stk
|
|
0258 p$code4 ds 3 ; lxi sp,stack$top
|
|
025B p$code5 ds 1 ; nop
|
|
025C p$code6 ds 3 ; jmp around$bandata
|
|
025F p$prog ds 2 ; dw prog
|
|
0261 p$dat ds 2 ; dw dat
|
|
0263 p$prod ds 2 ; dw prod
|
|
0265 p$orig ds 2 ; dw orig
|
|
0267 p$ser ds 2 ; dw ser
|
|
0269 p$nam ds 2 ; dw nam
|
|
026B p$term ds 2 ; dw 0
|
|
026D d$prog ds 8+1+3+1 ; db '12345678.123$'
|
|
027A d$date ds 2+1+2+1+4+1 ; db ' 2/11/2012$'
|
|
0285 d$ser ds 6+1 ; db '654321$'
|
|
028C d$prod ds 5+1 ; db 'CPM80$'
|
|
0292 d$orig ds 3+1 ; db 'DWG$'
|
|
0296 d$name ds 1+7+1+1+1+1+7+1 ; db ' Douglas W. Goodall$'
|
|
02AA d$uuid ds 36 ; unique user identification
|
|
02CE d$term2 ds 1 ; can be set to zero or dollar sign
|
|
00A0 = p$len equ $-buffer
|
|
02CF p$rsvd ds 256-p$len
|
|
032F 3C2D2D6275 db '<--buffer'
|
|
0338 A000 dw p$len
|
|
033A 0D0A24 crlf db CR,LF,'$'
|
|
|
|
; eof - identity.asm
|
|
|