From 01b68baf684908d36dfebbe27f8d7bc55165fb59 Mon Sep 17 00:00:00 2001 From: wayne Date: Mon, 1 Apr 2013 00:20:45 +0000 Subject: [PATCH] Reintegrate dwg -> trunk --- Apps/apps-bins/readme.txt | 1 + Apps/core/FETCH.BAT | 12 + Apps/core/access.com | Bin 2432 -> 2432 bytes Apps/core/cpmname.com | Bin 15744 -> 15744 bytes Apps/core/findfile.com | Bin 4992 -> 4992 bytes Apps/core/map.com | Bin 11776 -> 11776 bytes Apps/core/meta.com | Bin 11136 -> 11136 bytes Apps/core/multifmt.com | Bin 13440 -> 13440 bytes Apps/core/setlabel.com | Bin 4736 -> 4736 bytes Apps/core/sysgen.com | Bin 11776 -> 11776 bytes Apps/core/termtype.com | Bin 9216 -> 9216 bytes Apps/core/view.com | Bin 12288 -> 12288 bytes Apps/crossdev/ACCESS.CPM | Bin 0 -> 2432 bytes Apps/crossdev/ACCESS.PRN | 248 ++++ Apps/crossdev/ACCESS.REL | Bin 0 -> 896 bytes Apps/crossdev/APPLVERS.H | 7 +- Apps/crossdev/APPLVERS.LIB | 12 +- Apps/crossdev/ASMIFACE.O | Bin 0 -> 512 bytes Apps/crossdev/BANNER.PRN | 587 ++++++++++ Apps/crossdev/BANNER.REL | Bin 0 -> 1408 bytes Apps/crossdev/BANNER.SYM | 4 +- Apps/crossdev/BDOSCALL.O | Bin 0 -> 256 bytes Apps/crossdev/BIOSCALL.O | Bin 0 -> 256 bytes Apps/crossdev/CBANNER.ASM | 208 ++++ Apps/crossdev/CBANNER.O | Bin 0 -> 1280 bytes Apps/crossdev/CLOGICAL.ASM | 159 +++ Apps/crossdev/CLOGICAL.O | Bin 0 -> 768 bytes Apps/crossdev/CMEMORY.O | Bin 0 -> 768 bytes Apps/crossdev/CNAMEPT1.ASM | 527 +++++++++ Apps/crossdev/CNAMEPT1.O | Bin 0 -> 2304 bytes Apps/crossdev/CNAMEPT2.ASM | 480 ++++++++ Apps/crossdev/CNAMEPT2.O | Bin 0 -> 2560 bytes Apps/crossdev/CNAMEPT3.ASM | 794 +++++++++++++ Apps/crossdev/CNAMEPT3.O | Bin 0 -> 3328 bytes Apps/crossdev/CNAMEPT4.ASM | 742 ++++++++++++ Apps/crossdev/CNAMEPT4.O | Bin 0 -> 3072 bytes Apps/crossdev/CPMNAME.ASM | 164 +++ Apps/crossdev/CPMNAME.CPM | Bin 15744 -> 15744 bytes Apps/crossdev/CPMNAME.O | Bin 0 -> 1024 bytes Apps/crossdev/CTERMCAP.ASM | 334 ++++++ Apps/crossdev/CTERMCAP.O | Bin 0 -> 1024 bytes Apps/crossdev/DIAGNOSE.O | Bin 0 -> 256 bytes Apps/crossdev/FINDFILE.COM | Bin 4992 -> 4992 bytes Apps/crossdev/FINDFILE.CPM | Bin 4992 -> 4992 bytes Apps/crossdev/FINDFILE.PRN | 1552 +++++++++++++++++++++++++ Apps/crossdev/FINDFILE.REL | Bin 0 -> 1920 bytes Apps/crossdev/HBIOS.PRN | 18 + Apps/crossdev/HBIOS.REL | Bin 0 -> 128 bytes Apps/crossdev/IDENTITY.PRN | 419 +++++++ Apps/crossdev/IDENTITY.REL | Bin 0 -> 896 bytes Apps/crossdev/LABELIB.PRN | 351 ++++++ Apps/crossdev/LABELIB.REL | Bin 0 -> 1024 bytes Apps/crossdev/MAP.ASM | 1649 ++++++++++++++++++++++++++ Apps/crossdev/MAP.CPM | Bin 11776 -> 11776 bytes Apps/crossdev/MAP.O | Bin 0 -> 5376 bytes Apps/crossdev/MEMORY.PRN | 27 + Apps/crossdev/MEMORY.REL | Bin 0 -> 128 bytes Apps/crossdev/META.ASM | 750 ++++++++++++ Apps/crossdev/META.CPM | Bin 11136 -> 11136 bytes Apps/crossdev/META.O | Bin 0 -> 3072 bytes Apps/crossdev/METADATA.PRN | 529 +++++++++ Apps/crossdev/METADATA.REL | Bin 0 -> 896 bytes Apps/crossdev/METADATA.SYM | 4 +- Apps/crossdev/MULTIFMT.ASM | 1319 +++++++++++++++++++++ Apps/crossdev/MULTIFMT.CPM | Bin 13440 -> 13440 bytes Apps/crossdev/MULTIFMT.O | Bin 0 -> 5120 bytes Apps/crossdev/N8CHARS.ASM | 2056 +++++++++++++++++++++++++++++++++ Apps/crossdev/N8CHARS.O | Bin 0 -> 2304 bytes Apps/crossdev/N8VIDTST.ASM | 609 ++++++++++ Apps/crossdev/N8VIDTST.CPM | Bin 0 -> 14976 bytes Apps/crossdev/N8VIDTST.O | Bin 0 -> 2304 bytes Apps/crossdev/PRINTERS.PRN | 153 +++ Apps/crossdev/PRINTERS.REL | Bin 0 -> 384 bytes Apps/crossdev/REM.PRN | 24 + Apps/crossdev/REM.REL | Bin 0 -> 128 bytes Apps/crossdev/SECTORIO.ASM | 117 ++ Apps/crossdev/SETLABEL.CPM | Bin 4736 -> 4736 bytes Apps/crossdev/SETLABEL.PRN | 152 +++ Apps/crossdev/SETLABEL.REL | Bin 0 -> 768 bytes Apps/crossdev/SYSGEN.ASM | 982 ++++++++++++++++ Apps/crossdev/SYSGEN.CPM | Bin 11776 -> 11776 bytes Apps/crossdev/SYSGEN.O | Bin 3328 -> 3328 bytes Apps/crossdev/TERMINAL.PRN | 370 ++++++ Apps/crossdev/TERMINAL.REL | Bin 0 -> 1152 bytes Apps/crossdev/TERMTYPE.ASM | 448 ++++++++ Apps/crossdev/TERMTYPE.CPM | Bin 9216 -> 9216 bytes Apps/crossdev/TERMTYPE.O | Bin 2304 -> 2304 bytes Apps/crossdev/TMS9918.ASM | 1463 +++++++++++++++++++++++ Apps/crossdev/TMS9918.O | Bin 0 -> 4096 bytes Apps/crossdev/TMSSTAT.CPM | Bin 0 -> 14208 bytes Apps/crossdev/TMSSTAT.O | Bin 0 -> 2816 bytes Apps/crossdev/VIEW.ASM | 2233 ++++++++++++++++++++++++++++++++++++ Apps/crossdev/VIEW.CPM | Bin 12288 -> 12288 bytes Apps/crossdev/VIEW.O | Bin 6144 -> 6144 bytes Apps/dougs-devo/readme.txt | 7 + 95 files changed, 19497 insertions(+), 14 deletions(-) create mode 100644 Apps/apps-bins/readme.txt create mode 100644 Apps/core/FETCH.BAT create mode 100644 Apps/crossdev/ACCESS.CPM create mode 100644 Apps/crossdev/ACCESS.PRN create mode 100644 Apps/crossdev/ACCESS.REL create mode 100644 Apps/crossdev/ASMIFACE.O create mode 100644 Apps/crossdev/BANNER.PRN create mode 100644 Apps/crossdev/BANNER.REL create mode 100644 Apps/crossdev/BDOSCALL.O create mode 100644 Apps/crossdev/BIOSCALL.O create mode 100644 Apps/crossdev/CBANNER.ASM create mode 100644 Apps/crossdev/CBANNER.O create mode 100644 Apps/crossdev/CLOGICAL.ASM create mode 100644 Apps/crossdev/CLOGICAL.O create mode 100644 Apps/crossdev/CMEMORY.O create mode 100644 Apps/crossdev/CNAMEPT1.ASM create mode 100644 Apps/crossdev/CNAMEPT1.O create mode 100644 Apps/crossdev/CNAMEPT2.ASM create mode 100644 Apps/crossdev/CNAMEPT2.O create mode 100644 Apps/crossdev/CNAMEPT3.ASM create mode 100644 Apps/crossdev/CNAMEPT3.O create mode 100644 Apps/crossdev/CNAMEPT4.ASM create mode 100644 Apps/crossdev/CNAMEPT4.O create mode 100644 Apps/crossdev/CPMNAME.ASM create mode 100644 Apps/crossdev/CPMNAME.O create mode 100644 Apps/crossdev/CTERMCAP.ASM create mode 100644 Apps/crossdev/CTERMCAP.O create mode 100644 Apps/crossdev/DIAGNOSE.O create mode 100644 Apps/crossdev/FINDFILE.PRN create mode 100644 Apps/crossdev/FINDFILE.REL create mode 100644 Apps/crossdev/HBIOS.PRN create mode 100644 Apps/crossdev/HBIOS.REL create mode 100644 Apps/crossdev/IDENTITY.PRN create mode 100644 Apps/crossdev/IDENTITY.REL create mode 100644 Apps/crossdev/LABELIB.PRN create mode 100644 Apps/crossdev/LABELIB.REL create mode 100644 Apps/crossdev/MAP.ASM create mode 100644 Apps/crossdev/MAP.O create mode 100644 Apps/crossdev/MEMORY.PRN create mode 100644 Apps/crossdev/MEMORY.REL create mode 100644 Apps/crossdev/META.ASM create mode 100644 Apps/crossdev/META.O create mode 100644 Apps/crossdev/METADATA.PRN create mode 100644 Apps/crossdev/METADATA.REL create mode 100644 Apps/crossdev/MULTIFMT.ASM create mode 100644 Apps/crossdev/MULTIFMT.O create mode 100644 Apps/crossdev/N8CHARS.ASM create mode 100644 Apps/crossdev/N8CHARS.O create mode 100644 Apps/crossdev/N8VIDTST.ASM create mode 100644 Apps/crossdev/N8VIDTST.CPM create mode 100644 Apps/crossdev/N8VIDTST.O create mode 100644 Apps/crossdev/PRINTERS.PRN create mode 100644 Apps/crossdev/PRINTERS.REL create mode 100644 Apps/crossdev/REM.PRN create mode 100644 Apps/crossdev/REM.REL create mode 100644 Apps/crossdev/SECTORIO.ASM create mode 100644 Apps/crossdev/SETLABEL.PRN create mode 100644 Apps/crossdev/SETLABEL.REL create mode 100644 Apps/crossdev/SYSGEN.ASM create mode 100644 Apps/crossdev/TERMINAL.PRN create mode 100644 Apps/crossdev/TERMINAL.REL create mode 100644 Apps/crossdev/TERMTYPE.ASM create mode 100644 Apps/crossdev/TMS9918.ASM create mode 100644 Apps/crossdev/TMS9918.O create mode 100644 Apps/crossdev/TMSSTAT.CPM create mode 100644 Apps/crossdev/TMSSTAT.O create mode 100644 Apps/crossdev/VIEW.ASM diff --git a/Apps/apps-bins/readme.txt b/Apps/apps-bins/readme.txt new file mode 100644 index 00000000..89232839 --- /dev/null +++ b/Apps/apps-bins/readme.txt @@ -0,0 +1 @@ +The library in this folder is not current. The best of everything is in the crossdev folder. diff --git a/Apps/core/FETCH.BAT b/Apps/core/FETCH.BAT new file mode 100644 index 00000000..5557a41f --- /dev/null +++ b/Apps/core/FETCH.BAT @@ -0,0 +1,12 @@ +@echo Copy CP/M-80 executables from the crossdev folder to here (core only) +copy ..\crossdev\ACCESS.CPM ACCESS.COM +copy ..\crossdev\CPMNAME.CPM CPMNAME.COM +copy ..\crossdev\FINDFILE.CPM FINDFILE.COM +copy ..\crossdev\MAP.CPM MAP.COM +copy ..\crossdev\META.CPM META.COM +copy ..\crossdev\MULTIFMT.CPM MULTIFMT.COM +copy ..\crossdev\REM.CPM REM.COM +copy ..\crossdev\SETLABEL.CPM SETLABEL.COM +copy ..\crossdev\SYSGEN.CPM SYSGEN.COM +copy ..\crossdev\TERMTYPE.CPM TERMTYPE.COM +copy ..\crossdev\VIEW.CPM VIEW.COM diff --git a/Apps/core/access.com b/Apps/core/access.com index fc71ba44439e175bb641f5d72b8f4106a77bca75..9d26fdc1c56829c20e091b5c3eb17737367179c8 100644 GIT binary patch delta 156 zcmZn=ZV;Xz#>UFP$Si+%qKpBjvA(gPzL9~U@y5_iEZWQrXAg3IJ$m&iACsK^SyqOJ x7Y}|^l*cA`cd`+y4T|Jz{z)KqKpBjrM{twzL9~U(ZUFP$Si+%qKpBjvA(gPzL9~U@y5_jZf$0Uv&#g&9=-aMk4aAdEGxsq ziw8d{%3~9}JDHQmhmm!%Bag`BEFKv~#?9?K+ZahQAcM~fZUE2Z%Y1@BL!R=@W&r@Z Cj68b) delta 160 zcmZorZ&05g#>T|Jz{z)KqKpBjrM{twzL9~U(Zt<8 delta 38 ncmZpOX^7cyltq$(;i)1BGXpUb5Z`5gswe=Y88_c!QPKne_5ln@ diff --git a/Apps/core/meta.com b/Apps/core/meta.com index 176905421117ca8ba84c230cecbd841927162f3f..07746a1e2b11aefc212978067e785e89815bcd0b 100644 GIT binary patch delta 78 zcmZn&ZwTLTltWIQ;i)1s2y;C>dxP(_A_s%zPen$c00R)SPJYaB0oZxcM1V61yZL!&9KhQ$`xWtfi&~x IL@s$P065YT7ytkO delta 59 zcmZq3Y{=Yjor#~Bq1Nbwg(3rx`Us>pKVwQ_mtUFP$Si+%qKpBjvA(gPzL9~U@y1XAPHkp}v;Lf4k6wMs$0VnJmX+b* z#e*Le<*^Cgojiflhmm#iT}}f=#?5?O+ZajG{GQtjtXW}l6ptVyT|Jz{z)KqKpBjrM{twzL9~U(Z)~#PHj$xv;Lf4k6wMs$0VnJmX+b* z#e*Le`LGGznLL5hhmmRWT}}f=hRu9j+ZajG{GQtjtXW}l6ptVy!{i*E`J7DU%61GO UJXwVI8wZeA0pe^H;>%+J0OO56j{pDw diff --git a/Apps/core/sysgen.com b/Apps/core/sysgen.com index 11536f4be12a0ee7f7b92b98f2f2f614b16b34b5..2f7cc78803952947d96306755614ebf4fcdd2091 100644 GIT binary patch delta 38 ocmZpOX^7ddfJu^(;i)165VHa?6A<5Jf2t@Cq?tGGWOCOA0P&g(HUIzs delta 38 ncmZpOX^7ddfJu^p;i)1BGXpUb5Z`5gswe=Y88`1_a@Pg`@U9FZ diff --git a/Apps/core/termtype.com b/Apps/core/termtype.com index c01dcdb8e9830f54ab28bac64de8ed5b06dca990..bd32e2a6b645d33635fd883fe232d5cb0388837c 100644 GIT binary patch delta 36 mcmZqhXz-ZeD9On1RFMIQS%H`di0`sLRg?$P%p0SYDFXn_OACPj delta 36 lcmZqhXz-ZeD9OO^R1t)kftU%1@3KEt6adnU8>5yf0|3l(3vB=Z diff --git a/Apps/core/view.com b/Apps/core/view.com index 11ff9af7f3fc86fa33ec8c5b9c77a7bbf444c483..e1a6d28ba29197f9d8b83d2c3352713cf2e6b224 100644 GIT binary patch delta 38 ocmZojXh_&_l~0n9;i)165VHa?6A<5Jf2t@Cq?tFr;}cQ@0Q-{+fdBvi delta 38 ncmZojXh_&_l~0m^;i)1BGXpUb5Z`5gswe=Y88^S<6H){K`lk$S diff --git a/Apps/crossdev/ACCESS.CPM b/Apps/crossdev/ACCESS.CPM new file mode 100644 index 0000000000000000000000000000000000000000..9d26fdc1c56829c20e091b5c3eb17737367179c8 GIT binary patch literal 2432 zcmeHI%Wo4$7@yg&w#RK8R=rdloY`a|B^Dd6ABp3DEII4Mpqe_u5H39G+KXcmdyyZ! z6e=XdAHa=B95_}&0`(7|YGOsI4|}MpN>vd^9Kt0MU?hW((zvtE>;ys%h_)vfX-D7p zo9{96eZQS)3_vvy428$WBNNg1l$MyDIh+tg0DJl$IaRm@fDAx%0K>q>9?-Z0WAGbz z3g+M(EI{3_gLA z>2xBVN@1c-B*M|L(6ll&J`+~Lsg~-&hN)8S}A)OpRX7>UC$FAhHpH*G+`5b9-njtARz=>BXfM} zUlgL(O`7f2#lbJymws9~B(|CZ6?A%VZg72|hSs-)3$}2{7OvRBqAmP@))|@a*#A$X zDJma02=l#$*stWH$vu|B7TP@MYY}f*3tr5OF#Soa)wn8=W?3EmNweCNrT{*=3} zJ2L)nG4avjZ&yU{D$L(Ud$B7{TeFQLDdMzG8+G!-ra1VWGgZv#ZgkULF=Dp7zN-@P={PW4~if3vKt& zVO~cq`dQC?7hGF3m(Y`|)?`Dbxh3BZ4!PlrKh5U|e!XGMw>xz9yt1ZFtV360{)6bR q777yg)g@!`R$-F3H`SG1_vDa!6Z}fGE. + + ;---------------------------------------------------------------------- + maclib portab + maclib globals + maclib cpmbdos + maclib printers + maclib banner + maclib applvers + maclib z80 + maclib memory + maclib version + maclib cpmappl + maclib banner + ;----------------------- + + do$start + 0000+C32200 START: JMP BEGIN + 0003+3031323334HEXREF DB '0123456789ABCDEF' + 0013+4944 ID$SIG DB 'ID' + 0015+02 ID$RMJ DB A$RMJ + 0016+05 ID$RMN DB A$RMN + 0017+00 ID$RUP DB A$RUP + 0018+01 ID$RTP DB A$RTP + 0019+03 ID$MON DB A$MONTH + 001A+1F ID$DAY DB A$DAY + 001B+DD07 ID$YR DW A$YEAR + 001D+3000 ID$ARGV DW ARGV + 001F+E5 DB 0E5H + 0020+ PRE$STK DS 2 + 0022+210000 BEGIN: LXI H,0 + 0025+39 DAD SP + 0026+222000 SHLD PRE$STK + 0029+31FC03 LXI SP,STACK$TOP + 002C+00 NOP + + 002D C3A000 jmp around$bandata + 0030 3E004B005Dargv dw prog,dat,prod,orig,ser,myname,0 + 003E 4143434553prog db 'ACCESS.COM $' + date + 004B+20332F3331DAT DB ' 3/31/2013$' + serial + 0056+3635343332SER DB '654321$' + product + 005D+43504D3830PROD DB 'CPM80$' + originator + 0063+44574724 ORIG DB 'DWG$' + oriname + 0067+20444F5547MYNAME DB ' DOUGLAS W GOODALL $' + 007B 3038443439uuid db '08D4953E-B6F4-4673-990C-7E17A0A299BD$' + around$bandata: + + sbanner argv + 00A0+213000 LXI H,ARGV + 00A3+CD0000 CALL X$SBANNER + + 00A6 3A8000 lda 80h ; pick up the command tail length provided by CCP + 00A9 FE00 cpi 0 ; were there any parameters given? + 00AB C2DE00 jnz no$usage ; If not, go around + printf 'usage - access ' + 00AE+F5 PUSH PSW + 00AF+C5 PUSH B + 00B0+D5 PUSH D + 00B1+E5 PUSH H + 00B2+0E09 MVI C,PRINTSTR + 00B4+11C100 LXI D,??0002 + 00B7+CD0500 CALL BDOS + 00BA+E1 POP H + 00BB+D1 POP D + 00BC+C1 POP B + 00BD+F1 POP PSW + 00BE+C3DB00 JMP ??0001 + 00C1+7573616765??0002 DB 'usage - access ' + 00DA+24 DB '$' + 00DB C3F201 jmp do$exit + no$usage: + + memcpy work$fcb,PRIFCB,32 ; Save initial default FCB from CCP + 00DE+111F04 LXI D,WORK$FCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 00E1+215C00 LXI H,PRIFCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 00E4+012000 LXI B,32 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 00E7+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + + printf 'Checking: ' + 00EA+F5 PUSH PSW + 00EB+C5 PUSH B + 00EC+D5 PUSH D + 00ED+E5 PUSH H + 00EE+0E09 MVI C,PRINTSTR + 00F0+11FD00 LXI D,??0004 + 00F3+CD0500 CALL BDOS + 00F6+E1 POP H + 00F7+D1 POP D + 00F8+C1 POP B + 00F9+F1 POP PSW + 00FA+C30801 JMP ??0003 + 00FD+436865636B??0004 DB 'Checking: ' + 0107+24 DB '$' + + 0108 3E24 mvi a,'$' ; place a terminating dollar sign + 010A 326500 sta PRIFCB+9 ; at the end of the filname field + print PRIFCB+1 ; and print the filename portion + 010D+F5 PUSH PSW + 010E+C5 PUSH B + 010F+D5 PUSH D + 0110+E5 PUSH H + 0111+0E09 MVI C,PRINTSTR + 0113+115D00 LXI D,PRIFCB+1 + 0116+CD0500 CALL BDOS + 0119+E1 POP H + 011A+D1 POP D + 011B+C1 POP B + 011C+F1 POP PSW + + conout '.' ; print the seperating dot + 011D+F5 PUSH PSW + 011E+C5 PUSH B + 011F+D5 PUSH D + 0120+E5 PUSH H + 0121+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 0123+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 0125+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 0128+E1 POP H + 0129+D1 POP D + 012A+C1 POP B + 012B+F1 POP PSW + + memcpy PRIFCB,work$fcb,16 ; get a fresh copy of the initial FCB + 012C+115C00 LXI D,PRIFCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 012F+211F04 LXI H,WORK$FCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 0132+011000 LXI B,16 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 0135+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + 0138 3E24 mvi a,'$' ; place a terminating dollar sign + 013A 326800 sta PRIFCB+12 ; at the end of the filetype field + print PRIFCB+9 ; and print the filetype + 013D+F5 PUSH PSW + 013E+C5 PUSH B + 013F+D5 PUSH D + 0140+E5 PUSH H + 0141+0E09 MVI C,PRINTSTR + 0143+116500 LXI D,PRIFCB+9 + 0146+CD0500 CALL BDOS + 0149+E1 POP H + 014A+D1 POP D + 014B+C1 POP B + 014C+F1 POP PSW + print crlf ; followed by a CR and LF + 014D+F5 PUSH PSW + 014E+C5 PUSH B + 014F+D5 PUSH D + 0150+E5 PUSH H + 0151+0E09 MVI C,PRINTSTR + 0153+114304 LXI D,CRLF + 0156+CD0500 CALL BDOS + 0159+E1 POP H + 015A+D1 POP D + 015B+C1 POP B + 015C+F1 POP PSW + + memcpy PRIFCB,work$fcb,32 ; restore the initial FCB + 015D+115C00 LXI D,PRIFCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 0160+211F04 LXI H,WORK$FCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 0163+012000 LXI B,32 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 0166+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + + 0169 0E0F mvi c,FOPEN ; Try to open the given filename + 016B 115C00 lxi d,PRIFCB ; using the primary default FCB + 016E CD0500 call BDOS ; with a BDOS call + 0171 FEFF cpi 255 ; Test for Open Failure (255) + 0173 C2C001 jnz done ; jump if file existed + + 0176 0E13 mvi c,FDELETE ; Delete the A:$$$.SUB file + 0178 11FC03 lxi d,del$fcb ; using an alternative FCB + 017B CD0500 call BDOS + + printf 'Submit file terminated due to missing file$' + 017E+F5 PUSH PSW + 017F+C5 PUSH B + 0180+D5 PUSH D + 0181+E5 PUSH H + 0182+0E09 MVI C,PRINTSTR + 0184+119101 LXI D,??0006 + 0187+CD0500 CALL BDOS + 018A+E1 POP H + 018B+D1 POP D + 018C+C1 POP B + 018D+F1 POP PSW + 018E+C3BD01 JMP ??0005 + 0191+5375626D69??0006 DB 'Submit file terminated due to missing file$' + 01BC+24 DB '$' + + 01BD C3F201 jmp do$exit ; Go to the one true exit point + + done: + printf 'File found, Submit may proceed' + 01C0+F5 PUSH PSW + 01C1+C5 PUSH B + 01C2+D5 PUSH D + 01C3+E5 PUSH H + 01C4+0E09 MVI C,PRINTSTR + 01C6+11D301 LXI D,??0008 + 01C9+CD0500 CALL BDOS + 01CC+E1 POP H + 01CD+D1 POP D + 01CE+C1 POP B + 01CF+F1 POP PSW + 01D0+C3F201 JMP ??0007 + 01D3+46696C6520??0008 DB 'File found, Submit may proceed' + 01F1+24 DB '$' + do$exit: + do$end + 01F2+2A2000 LHLD PRE$STK + 01F5+F9 SPHL + 01F6+0E0D MVI C,13 + 01F8+CD0500 CALL BDOS + 01FB+C9 RET + 01FC+ DS STACK$SIZE + + newfcb del$fcb,1,'$$$ SUB' + 03FC+0124242420DEL$FCB DB 1,'$$$ SUB' + 0408+0000000000 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + 041F work$fcb ds 36 ; A place to save a copy of the default FCB on entry + + 0443 0D0A crlf db CR,LF ; a dollar sign terminated CR and LF + 0445 24 term db '$' ; a general purpose terminating character + + 0446 end start + \ No newline at end of file diff --git a/Apps/crossdev/ACCESS.REL b/Apps/crossdev/ACCESS.REL new file mode 100644 index 0000000000000000000000000000000000000000..c689f5aea8288bac04484fb529c3bba50455141c GIT binary patch literal 896 zcmZpjFd=yI#E=CkEupO{AsM2og1)M9te!4GzFv(%fg+QG7lcf4RSo3;N_Yl30VRC> z{eTjJ0$~X*Q(UKNNIH6o`UdK;I=Q-g`b}YA@C|H~DCuBGFqGsu)*QIuPJyMugpL#^ zO^Hb^jEoKp0ur^m*q1TzMP>>xv@kHpbgX1xIQEaRL87dIX+A^92CiL<5eKw3u%~>e4*vJ!QuGHi9 zM6i)1#ZqQMN0TG30Yh2?1M?CF#y<>+u@Bf+i>`Xg&g5jy!Z?eS!6HgWyqoWBgREbg zu;mm7T>%N7G-J&(&lKb&d({qW?l_cd)Zfx${e($y@q;Fz2MkOK48{%&a5KIj%xGbl zaF#7ta?PbYN-^+fmb&p19>wp21w6WsZy!UZo1i@;+kDT=J~gWOmOZX2T^nQiV7r z%1^MqI-0f9@xX-M%ZzD_4t!$Wtd9=wb5Ke4+;B?4So++u#|j%9f~{usE}Oid;Z~we z2Oqm~WzVTpBTm+k2F6c(Y?~bxu=#BNz{8{>#L2?M$k5;rtTmwlm>94F?|_4h3l^%B z@Gz?=tsA-bctVJ;;9ZUf0{o`=Iv9Z}DvDCm6XSuVbTC1A vNy+g@yp&XAUPewl15*dcp2XtZ%ru}rrUpA8FF7$MCozSAfzbgZH=FCp5kL^$=bmUl@ODSVie$FX%gUIoE^{*2lg!!KUd^}0Or<32PWf zb8@H`qin(hZ=i#!Hb$)rC{R(ZH~_PM!+Q;m26zPhVb~0fpu`IYloFR5OEs4{v&@n4 z%AFLWIV~(jjRt8dFf+UvCDHxxzz3d0L^#^=E#&;%CR;9ep&%k~REcrIfh0q*9yce) zP++P;_QZr<9hS642R^ZG)<>|EvZE0e?TI%RC=!>z!olMJ4Hga? z1(;V985<3^2!qN2NMoi-5r(tt7UY9dB_n(58K{$86d0Jzjxxd$-?j$0U&i9|DL7M8=FJ*V<4 zXZkcT@7U89peEavelat8?L1+T*R*Q1r)Ky}cHi^mGvr%;^!=y_KJTns%Ohi=r z8W^CZ+uI1Sh+rp2Kfj)Pj89orTuZ)c9AIDz2=Z`>4C!HDNM%)NE%~Z>fPrD26ukfd Dh0*$J literal 0 HcmV?d00001 diff --git a/Apps/crossdev/BANNER.SYM b/Apps/crossdev/BANNER.SYM index 78bc51c5..e38913b1 100644 --- a/Apps/crossdev/BANNER.SYM +++ b/Apps/crossdev/BANNER.SYM @@ -1,5 +1,5 @@ -000F ADAY 0009 AL0OFS 000A AL1OFS 000E ALVOFS 0002 AMONTH -041E ARGV 0002 ARMJ 0002 ARMN 0000 ARTP 0000 ARUP +001F ADAY 0009 AL0OFS 000A AL1OFS 000E ALVOFS 0003 AMONTH +041E ARGV 0002 ARMJ 0005 ARMN 0001 ARTP 0000 ARUP 07DD AYEAR 0005 BDOS E600 BIBOOT E609 BICONIN E60C BICONOUT E606 BICONST 0000 BIDRVA 0001 BIDRVB 0002 BIDRVC 0003 BIDRVD 0004 BIDRVE 0005 BIDRVF 0006 BIDRVG 0007 BIDRVH E618 BIHOME diff --git a/Apps/crossdev/BDOSCALL.O b/Apps/crossdev/BDOSCALL.O new file mode 100644 index 0000000000000000000000000000000000000000..ce37563dc22eccd72c7a4bad1023fd3ef960a0c8 GIT binary patch literal 256 zcmZRPVt@h%Fuk22nPEEv1Ec)Wt53i3sS4IJFxE4iWo7s%@$llolORE@LIxohU#%hr zp^#XuVg>=L0tR8A0;2*30i|LFq3k3jpj2jpQXzxLN01%{_6|m%(J4i#>51_SKpqp6 tmy{fj#7jv<=4Ir>Gca|4T$EElTFr1Zs1|;Rr$~_b0W;m<(Ot69Btje>q z((2D1UOf2mBv9Q~twIJN7hkO+2BDBxtzrfNCB-rZLjkJ-2H~@;3`PY&fno-s>?9?i zg3JV^LI#nKK&>Yk*gF`3mSz^ErYFWT0C`MMUQ%*A5-%kcnU|3h&%o3Ha%*~ONp5OM fVmwoaI*^x?nO~fon3KcQUh>!sqdyDXc)F4?6N()jzr z-G9M9q=|`%CLB1Jc=5=It3BwYzL_1``XliVaA02Md*AzJ-utq1mqD(QvWTY-;V+6Z z2lGelDP+Ep)NkvLM0{2NM@-|2Y%X6|E8Zxnc%bcenixiUfQ!;?)AMcDiPOF+eyFH( z#e?)+TCUzHWl|eEl~i$!6!N(&-L!Sn@lAv7IdQ}EXr;QDM}^K6Ww$f%Y^&L&*UKw3 zmm%3~Dx0Gl?w-}se7d7vq7~OQv{nmZ21G|bL|LL_z=icE*S0@1WBD@4OJFf%L_+!$ikjxoru?xhY z6y(%2X{bqpoBt`4?^U<3UlKGdo5h)l9C|;E^Y-!)h{hVh0INNSVTYD%eF< z65IU-EUiyQ&pus2)qJ^WG9MF2o>*}+#;#sCB?rRWWmjU z7-YfYUkqC9%f5F5m+-OGflS?hBQE2q*>sPB6d7|fBY<`WmJ;ddiKWDKgs0Nd2wdUy zvkeRUV+OTuTDAi-q&HhUD>;9^dx~^l>zOBfkEJGF@uC61H)4=R##d=+mdjhCxH%Bm+AKDDd=>Qqwc@ z7+}2Qj2w_CRIa$Z1i?!#PAp4>%Ow}3BFX9H=7Z&!IzZ}kO4E}|i{hcCBo^mprp3d| ztSCxNPf3kuVCqnZsLU(Pg{cI|W#oY5{2+2Er6~H6l3^A>4X-k+q${*6Z3`>e?gEI0!(e$hhDXVCl zX?g}T&**4+F7BB&>`)J2s_Cbp!!P5csP?S4JEPh%rW2YYop$AI*s@R>^+0)c&@NW( zC+*XN;`RoNHT`IzFd6m56z>Hq)$ literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNAMEPT1.ASM b/Apps/crossdev/CNAMEPT1.ASM new file mode 100644 index 00000000..98b7e2d6 --- /dev/null +++ b/Apps/crossdev/CNAMEPT1.ASM @@ -0,0 +1,527 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept1_ +cnamept1_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+51 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,5 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+85 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+119 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,9 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+153 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+175 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,11 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+197 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+241 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,13 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+261 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+266 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 2 + DW 0,.6 + DW 1,.5 + DW .4 +.4: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,14 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+272 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+298 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,23 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+324 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+349 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .7 +.9: + LXI H,.1+369 + PUSH H + CALL printf_ + POP D + JMP .8 +.10: + LXI H,.1+375 + PUSH H + CALL printf_ + POP D + JMP .8 +.11: + LXI H,.1+380 + PUSH H + CALL printf_ + POP D + JMP .8 +.7: + CALL .swt + DW 3 + DW 1,.9 + DW 2,.10 + DW 3,.11 + DW .8 +.8: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+383 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,25 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+403 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+415 + PUSH H + CALL printf_ + POP D + JMP .13 +.16: + LXI H,.1+429 + PUSH H + CALL printf_ + POP D + JMP .13 +.17: + LXI H,.1+441 + PUSH H + CALL printf_ + POP D + JMP .13 +.18: + LXI H,.1+453 + PUSH H + CALL printf_ + POP D + JMP .13 +.19: + LXI H,.1+463 + PUSH H + CALL printf_ + POP D + JMP .13 +.20: + LXI H,.1+478 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 6 + DW 0,.14 + DW 1,.15 + DW 2,.16 + DW 3,.17 + DW 4,.18 + DW 5,.19 + DW .20 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+486 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,26 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .21 +.23: + LXI H,.1+506 + PUSH H + CALL printf_ + POP D + JMP .22 +.24: + LXI H,.1+518 + PUSH H + CALL printf_ + POP D + JMP .22 +.25: + LXI H,.1+529 + PUSH H + CALL printf_ + POP D + JMP .22 +.26: + LXI H,.1+541 + PUSH H + CALL printf_ + POP D + JMP .22 +.27: + LXI H,.1+555 + PUSH H + CALL printf_ + POP D + JMP .22 +.28: + LXI H,.1+567 + PUSH H + CALL printf_ + POP D + JMP .22 +.21: + CALL .swt + DW 5 + DW 0,.23 + DW 1,.24 + DW 2,.25 + DW 3,.26 + DW 4,.27 + DW .28 +.22: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,27 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+577 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,29 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+599 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,115,121,115,99,102,103,45,62,106,109,112,32,32 + DB 32,32,32,32,32,32,32,32,32,32,106,112,32,32,48 + DB 37,48,52,120,104,0,115,121,115,99,102,103,45,62,99 + DB 110,102,108,111,99,32,32,32,32,32,32,32,32,32,46 + DB 100,119,32,48,37,48,52,120,104,0,115,121,115,99,102 + DB 103,45,62,116,115,116,108,111,99,32,32,32,32,32,32 + DB 32,32,32,46,100,119,32,48,37,48,52,120,104,0,115 + DB 121,115,99,102,103,45,62,118,97,114,108,111,99,32,32 + DB 32,32,32,32,32,32,32,46,100,119,32,48,37,48,52 + DB 120,104,0,37,115,46,114,109,106,32,32,32,32,32,32 + DB 32,32,32,32,32,61,32,37,100,0,37,115,46,114,109 + DB 110,32,32,32,32,32,32,32,32,32,32,32,61,32,37 + DB 100,0,37,115,46,114,117,112,32,32,32,32,32,32,32 + DB 32,32,32,32,61,32,37,100,0,37,115,46,114,116,112 + DB 32,32,32,32,32,32,32,32,32,32,32,61,32,37,100 + DB 0,37,115,46,100,105,115,107,98,111,111,116,32,32,32 + DB 32,32,32,61,32,0,84,82,85,69,0,70,65,76,83 + DB 69,0,37,115,46,100,101,118,117,110,105,116,32,32,32 + DB 32,32,32,32,61,32,48,120,37,48,50,120,0,37,115 + DB 46,98,111,111,116,108,117,32,32,32,32,32,32,32,32 + DB 61,32,48,120,37,48,52,120,0,37,115,46,102,114,101 + DB 113,32,32,32,32,32,32,32,32,32,32,61,32,37,100 + DB 77,72,122,0,37,115,46,112,108,97,116,102,111,114,109 + DB 32,32,32,32,32,32,61,32,0,78,56,86,69,77,0 + DB 90,69,84,65,0,78,56,0,37,115,46,100,105,111,112 + DB 108,97,116,32,32,32,32,32,32,32,61,32,0,68,73 + DB 79,80,76,84,95,78,79,78,69,0,68,73,79,80,76 + DB 84,95,68,73,83,75,73,79,0,68,73,79,80,76,84 + DB 95,90,69,84,65,0,68,73,79,80,76,84,95,68,73 + DB 68,69,0,68,73,79,80,76,84,95,78,56,0,68,73 + DB 79,80,76,84,95,68,73,83,75,73,79,51,0,85,110 + DB 107,110,111,119,110,0,37,115,46,118,100,117,109,111,100 + DB 101,32,32,32,32,32,32,32,61,32,0,86,68,85,80 + DB 76,84,95,78,79,78,69,0,86,68,85,80,76,84,95 + DB 86,68,85,0,86,68,85,80,76,84,95,86,68,85,67 + DB 0,86,68,85,80,76,84,95,80,82,79,80,73,79,0 + DB 86,68,85,80,76,84,95,86,80,78,56,0,85,110,107 + DB 110,111,119,110,33,33,0,37,115,46,114,111,109,115,105 + DB 122,101,32,32,32,32,32,32,32,61,32,37,100,0,37 + DB 115,46,114,97,109,115,105,122,101,32,32,32,32,32,32 + DB 32,61,32,37,100,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + END + \ No newline at end of file diff --git a/Apps/crossdev/CNAMEPT1.O b/Apps/crossdev/CNAMEPT1.O new file mode 100644 index 0000000000000000000000000000000000000000..30243fe56cbcc67e3813e03387a3d4ab618a8c7b GIT binary patch literal 2304 zcmd5-OK;;;6h2N{I>WPOB%ozR*QNwkgfOrekcy~C&{TBVbQ-6cmX7P#&Z~(XY&U)E z5E?Nc5D$S6@3+_^u|%rW4J?XOp;@qD#VpYL0JfZS{Ag@V_gKo;d%yFYbG~zL+>A~^ z^!z+Vi~aG(##^W0^n|HnowSk;kdNwJ=Hr9pV^Z(oz@W8eASR)@DSRt`G zOdNV}CWm)rgDimwC`li>dT+)`<^8mk7$VR!FR5iC2aRns)>wXo8%BHpnB;0Zinfv!N)bpfx+A^$G<-;m@{FeG^l>XIp?C#ikO z`RPffqDd@?U&z(3;vS8VsC}IwmcGdl>sey$+l*r6yCH&%(?0}TLgP&djkhE;-X`N6 zX*2SC{6%^g4Gw>imcHj=w|V!@Wt1yF3@gQN{;qE}nom4$I*q1f1j2xr>Gb-Fq6qwi zPY1Wfd{I2J(@Hd$)fKK8OO%4OtrSJRIIIbL5p>fUL4}4jVqkbFji5rIChr%#Ugy|{ zqRc3H3k35{(i)vIPxKZ!Ppl`j2$+vjkQNr8+-m!qb=M7|lo1P#~g5swj} zz`})E`4X&_tFyS|;jFexvQR?9L1}KWGGEmf78lAOqD^UT`Q^Dq3<-{LfiNWW(p;&W zBw^81%G00;XVY=F9r8M`wtB85?64a(tCh6MyokE-rmELULJI@5)?UQ5Kvh+*Twbi8 z3z7-k)+#uI7FJh=ePH`K3!#UCkE2zLO!Np{1mZx55~U`|F6$~_j5fg literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNAMEPT2.ASM b/Apps/crossdev/CNAMEPT2.ASM new file mode 100644 index 00000000..a8280c90 --- /dev/null +++ b/Apps/crossdev/CNAMEPT2.ASM @@ -0,0 +1,480 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept2_ +cnamept2_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,31 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+37 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+47 + PUSH H + CALL printf_ + POP D + JMP .4 +.7: + LXI H,.1+56 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 3 + DW 0,.5 + DW 1,.6 + DW 2,.7 + DW .4 +.4: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+68 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .8 +.10: + LXI H,.1+88 + PUSH H + CALL printf_ + POP D + JMP .9 +.11: + LXI H,.1+93 + PUSH H + CALL printf_ + POP D + JMP .9 +.8: + CALL .swt + DW 2 + DW 0,.11 + DW 1,.10 + DW .9 +.9: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+99 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,33 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+119 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+124 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 2 + DW 0,.15 + DW 1,.14 + DW .13 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+130 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,34 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .16 +.18: + LXI H,.1+150 + PUSH H + CALL printf_ + POP D + JMP .17 +.19: + LXI H,.1+155 + PUSH H + CALL printf_ + POP D + JMP .17 +.16: + CALL .swt + DW 2 + DW 0,.19 + DW 1,.18 + DW .17 +.17: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+161 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,35 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .20 +.22: + LXI H,.1+181 + PUSH H + CALL printf_ + POP D + JMP .21 +.23: + LXI H,.1+186 + PUSH H + CALL printf_ + POP D + JMP .21 +.20: + CALL .swt + DW 2 + DW 0,.23 + DW 1,.22 + DW .21 +.21: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,35 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .24 + LXI H,cache_ + PUSH H + LXI H,.1+192 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,36 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .25 +.27: + LXI H,.1+212 + PUSH H + CALL printf_ + POP D + JMP .26 +.28: + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + JMP .26 +.29: + LXI H,.1+232 + PUSH H + CALL printf_ + POP D + JMP .26 +.30: + LXI H,.1+243 + PUSH H + CALL printf_ + POP D + JMP .26 +.31: + LXI H,.1+254 + PUSH H + CALL printf_ + POP D + JMP .26 +.25: + CALL .swt + DW 4 + DW 0,.27 + DW 1,.28 + DW 2,.29 + DW 3,.30 + DW .31 +.26: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+264 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,37 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .32 +.34: + LXI H,.1+284 + PUSH H + CALL printf_ + POP D + LXI H,.1+291 + PUSH H + CALL printf_ + POP D + JMP .33 +.35: + LXI H,.1+329 + PUSH H + CALL printf_ + POP D + LXI H,.1+336 + PUSH H + CALL printf_ + POP D + JMP .33 +.36: + LXI H,.1+376 + PUSH H + CALL printf_ + POP D + LXI H,.1+383 + PUSH H + CALL printf_ + POP D + JMP .33 +.37: + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + LXI H,.1+429 + PUSH H + CALL printf_ + POP D + JMP .33 +.38: + LXI H,.1+468 + PUSH H + CALL printf_ + POP D + JMP .33 +.32: + CALL .swt + DW 4 + DW 0,.34 + DW 1,.35 + DW 2,.36 + DW 3,.37 + DW .38 +.33: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+478 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,38 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+498 + PUSH H + CALL printf_ + POP D + LXI H,.1+505 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+543 + PUSH H + CALL printf_ + POP D + LXI H,.1+550 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+590 + PUSH H + CALL printf_ + POP D + LXI H,.1+597 + PUSH H + CALL printf_ + POP D + JMP .40 +.44: + LXI H,.1+636 + PUSH H + CALL printf_ + POP D + LXI H,.1+643 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 4 + DW 0,.41 + DW 1,.42 + DW 2,.43 + DW 3,.44 + DW .40 +.40: + CALL pager_ +.24: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,99,108,114,114,97,109,100,107,32,32 + DB 32,32,32,32,61,32,0,67,76,82,95,78,69,86,69 + DB 82,0,67,76,82,95,65,85,84,79,0,67,76,82,95 + DB 65,76,76,87,65,89,83,0,37,115,46,100,115,107,121 + DB 101,110,97,98,108,101,32,32,32,32,61,32,0,84,82 + DB 85,69,0,70,65,76,83,69,0,37,115,46,117,97,114 + DB 116,101,110,97,98,108,101,32,32,32,32,61,32,0,84 + DB 82,85,69,0,70,65,76,83,69,0,37,115,46,118,100 + DB 117,101,110,97,98,108,101,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,37,115,46,102 + DB 100,101,110,97,98,108,101,32,32,32,32,32,32,61,32 + DB 0,84,82,85,69,0,70,65,76,83,69,0,37,115,46 + DB 102,100,116,114,97,99,101,32,32,32,32,32,32,32,61 + DB 32,0,83,105,108,101,110,116,0,70,97,116,97,108,32 + DB 69,114,114,111,114,115,0,65,108,108,32,69,114,114,111 + DB 114,115,0,69,118,101,114,121,116,104,105,110,103,0,85 + DB 110,107,110,111,119,110,33,33,0,37,115,46,102,100,109 + DB 101,100,105,97,32,32,32,32,32,32,32,61,32,0,70 + DB 68,77,55,50,48,0,32,32,51,46,53,32,55,50,48 + DB 75,66,32,50,45,115,105,100,101,100,32,56,48,32,84 + DB 114,107,115,32,57,32,83,101,99,116,111,114,115,0,70 + DB 68,77,49,52,52,0,32,32,51,46,53,32,49,46,52 + DB 52,77,66,32,50,45,115,105,100,101,100,32,56,48,32 + DB 84,114,107,115,32,49,56,32,83,101,99,116,111,114,115 + DB 0,70,68,77,51,54,48,0,32,32,53,46,50,53,32 + DB 51,54,48,75,66,32,50,45,115,105,100,101,100,32,52 + DB 48,32,84,114,107,115,32,57,32,83,101,99,116,111,114 + DB 115,0,70,68,77,49,50,48,0,32,32,51,46,53,32 + DB 49,46,50,77,66,32,50,45,115,105,100,101,100,32,56 + DB 48,32,84,114,107,115,32,49,53,32,83,101,99,116,111 + DB 114,115,0,85,110,107,110,111,119,110,33,33,0,37,115 + DB 46,102,100,109,101,100,105,97,97,108,116,32,32,32,32 + DB 61,32,0,70,68,77,55,50,48,0,32,32,51,46,53 + DB 32,55,50,48,75,66,32,50,45,115,105,100,101,100,32 + DB 56,48,32,84,114,107,115,32,57,32,83,101,99,116,111 + DB 114,115,0,70,68,77,49,52,52,0,32,32,51,46,53 + DB 32,49,46,52,52,77,66,32,50,45,115,105,100,101,100 + DB 32,56,48,32,84,114,107,115,32,49,56,32,83,101,99 + DB 116,111,114,115,0,70,68,77,51,54,48,0,32,32,53 + DB 46,50,53,32,51,54,48,75,66,32,50,45,115,105,100 + DB 101,100,32,52,48,32,84,114,107,115,32,57,32,83,101 + DB 99,116,111,114,115,0,70,68,77,49,50,48,0,32,32 + DB 51,46,53,32,49,46,50,77,66,32,50,45,115,105,100 + DB 101,100,32,56,48,32,84,114,107,115,32,49,53,32,83 + DB 101,99,116,111,114,115,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/Apps/crossdev/CNAMEPT2.O b/Apps/crossdev/CNAMEPT2.O new file mode 100644 index 0000000000000000000000000000000000000000..ad28d6bb4edaac1174dbf500dc9b089efb4c8fc4 GIT binary patch literal 2560 zcmd^=O>Y}j6o&6igF<0rgH(wM>5iM06|rL1fmEodE_H;21Fgq)6Pnl=&xh@JJP9+? z6vK*AAbfud2?VGJ1RH)rrAXNTl7R@ZVZjDvf!J28Sa8m{Gns4Se}JXDx^vFC=Q;1a z<9O;gi#|Wzfs22ptJ70Q*KW@(i<3^op* zgUvVrVyibMV6_O_7L?_e;-*~@Sd#-tQGv37ln#TE5rF>k1VAPN^hCeQuf%}92&~G1 z7~mnmWl%B#sO(GtoQMFMqF?>h7+@%L30LGm3}`6;SXZEA1aRrK34oahV2XaV*JFS! z0#D0<7~mklQlNwYc+Z^fS#lG~@t|JO#Jf#gTgoygROvKEnEnH+DM9?@XBPRDAqmnALY96uxo#dokBg z=`L12kg^v)9Lp|$BxRfN!(Ozv{;`x@iyz`_^;4-?>}XvDM=cc`nJPH4R9hXr?}pfg zU(V#4_(0^y5i?glm$)nO!(K;Zn>VFw{fl^rDBJi_%GSOb%dUPcW%X~QY;2&72D)fq z0}b?4=nL-?|2`N5rqiB%)byOTWrW;dr-H2M`o7V(dYYzj_&cky$I6xFlcjp8!Zm@9>YWN`*xO}Xj%tgVrb(Qiq zVWkdbol^(Lit>kpMF=2pL^xLH8z!~K9x#L6b!{(Xi$-X0S1bAcrXR4POG}RH(zfjn z!cNy~vl{n$-sUwglM%i8Hn+M4nt>1WTD-8tAI{G)O*@^P*I@O;d5!01gRW&;+QOVx z^?QNF&uF@BhS(bFbAT}sbVd=b|@3^9bNHQ!TN`@x1yrSTx)aEpp*8v50QP0Fgy5JSG;o@R(TS z!ee5Q7lnbtf$&(ov+xB73^ld4Z?Qe?QP8upq!|d2i#?&3$ZF)xE-U{=gXAt`4)}R>? zw*0OaI)_h2+xB5!M7N*8?Myj`s_veIUtD!pr*)pxAw5g_IO%7kh*fvLC4Hatfb=KQ z+oZpdKB!>jG15m!Go%6O8tHY?4(SZdaGTb*NbiPUXm$5HTK_`&JL#XKHz+$x`U&Yd cQk~Qx9grTS&bMf-(fVgv|3UgU=>PfiFOz&;qW}N^ literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNAMEPT3.ASM b/Apps/crossdev/CNAMEPT3.ASM new file mode 100644 index 00000000..1d77ae04 --- /dev/null +++ b/Apps/crossdev/CNAMEPT3.ASM @@ -0,0 +1,794 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept3_ +cnamept3_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,39 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+37 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+42 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 2 + DW 0,.6 + DW 1,.5 + DW .4 +.4: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+48 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,40 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .7 +.9: + LXI H,.1+68 + PUSH H + CALL printf_ + POP D + JMP .8 +.10: + LXI H,.1+73 + PUSH H + CALL printf_ + POP D + JMP .8 +.7: + CALL .swt + DW 2 + DW 0,.10 + DW 1,.9 + DW .8 +.8: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,40 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .11 + LXI H,cache_ + PUSH H + LXI H,.1+79 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,41 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+95 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+102 + PUSH H + CALL printf_ + POP D + JMP .13 +.16: + LXI H,.1+109 + PUSH H + CALL printf_ + POP D + JMP .13 +.17: + LXI H,.1+120 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 3 + DW 0,.14 + DW 1,.15 + DW 2,.16 + DW .17 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+130 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,42 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .18 +.20: + LXI H,.1+149 + PUSH H + CALL printf_ + POP D + JMP .19 +.21: + LXI H,.1+154 + PUSH H + CALL printf_ + POP D + JMP .19 +.22: + LXI H,.1+160 + PUSH H + CALL printf_ + POP D + JMP .19 +.18: + CALL .swt + DW 2 + DW 0,.21 + DW 1,.20 + DW .22 +.19: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,43 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+170 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ +.11: + LXI H,cache_ + PUSH H + LXI H,.1+194 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,45 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .23 +.25: + LXI H,.1+214 + PUSH H + CALL printf_ + POP D + JMP .24 +.26: + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + JMP .24 +.23: + CALL .swt + DW 2 + DW 0,.26 + DW 1,.25 + DW .24 +.24: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,45 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .27 + LXI H,cache_ + PUSH H + LXI H,.1+225 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,46 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .28 +.30: + LXI H,.1+245 + PUSH H + CALL printf_ + POP D + JMP .29 +.31: + LXI H,.1+252 + PUSH H + CALL printf_ + POP D + JMP .29 +.32: + LXI H,.1+259 + PUSH H + CALL printf_ + POP D + JMP .29 +.33: + LXI H,.1+270 + PUSH H + CALL printf_ + POP D + JMP .29 +.28: + CALL .swt + DW 3 + DW 0,.30 + DW 1,.31 + DW 2,.32 + DW .33 +.29: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+280 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,47 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .34 +.36: + LXI H,.1+300 + PUSH H + CALL printf_ + POP D + JMP .35 +.37: + LXI H,.1+305 + PUSH H + CALL printf_ + POP D + JMP .35 +.38: + LXI H,.1+311 + PUSH H + CALL printf_ + POP D + JMP .35 +.34: + CALL .swt + DW 2 + DW 0,.37 + DW 1,.36 + DW .38 +.35: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,48 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+321 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+345 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+365 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+370 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+376 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 2 + DW 0,.42 + DW 1,.41 + DW .43 +.40: + CALL pager_ +.27: + LXI H,cache_ + PUSH H + LXI H,.1+386 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,51 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .44 +.46: + LXI H,.1+406 + PUSH H + CALL printf_ + POP D + JMP .45 +.47: + LXI H,.1+414 + PUSH H + CALL printf_ + POP D + JMP .45 +.44: + CALL .swt + DW 2 + DW 1,.46 + DW 2,.47 + DW .45 +.45: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,52 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,53 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+452 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,54 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,54 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+475 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,3 + POP D + CALL .eq + JZ .48 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,56 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+511 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,57 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+533 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,58 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+559 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,59 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+585 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,60 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+611 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+637 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,61 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .49 +.51: + LXI H,.1+657 + PUSH H + CALL printf_ + POP D + JMP .50 +.52: + LXI H,.1+662 + PUSH H + CALL printf_ + POP D + JMP .50 +.53: + LXI H,.1+668 + PUSH H + CALL printf_ + POP D + JMP .50 +.49: + CALL .swt + DW 2 + DW 0,.52 + DW 1,.51 + DW .53 +.50: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+678 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,62 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .54 +.56: + LXI H,.1+698 + PUSH H + CALL printf_ + POP D + JMP .55 +.57: + LXI H,.1+703 + PUSH H + CALL printf_ + POP D + JMP .55 +.58: + LXI H,.1+709 + PUSH H + CALL printf_ + POP D + JMP .55 +.54: + CALL .swt + DW 2 + DW 0,.57 + DW 1,.56 + DW .58 +.55: + CALL pager_ +.48: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,102,100,109,97,117,116,111,32,32,32 + DB 32,32,32,32,61,32,0,84,82,85,69,0,70,65,76 + DB 83,69,0,37,115,46,105,100,101,101,110,97,98,108,101 + DB 32,32,32,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,37,115,46,105,100,101,116,114,97,99,101 + DB 32,32,61,32,0,83,73,76,69,78,84,0,69,82,82 + DB 79,82,83,0,69,86,69,82,89,84,72,73,78,71,0 + DB 85,110,107,110,111,119,110,33,33,0,37,115,46,100,101 + DB 56,98,105,116,32,32,32,32,32,32,32,61,32,0,84 + DB 82,85,69,0,70,65,76,83,69,0,85,110,107,110,111 + DB 119,110,33,33,0,37,115,46,105,100,101,99,97,112,97 + DB 99,105,116,121,32,32,32,61,32,37,100,77,66,0,37 + DB 115,46,112,112,105,100,101,101,110,97,98,108,101,32,32 + DB 32,61,32,0,84,82,85,69,0,70,65,76,83,69,0 + DB 37,115,46,112,112,105,100,101,116,114,97,99,101,32,32 + DB 32,32,61,32,0,83,73,76,69,78,84,0,69,82,82 + DB 79,82,83,0,69,86,69,82,89,84,72,73,78,71,0 + DB 85,110,107,110,111,119,110,33,33,0,37,115,46,112,112 + DB 105,100,101,56,98,105,116,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,85,110,107,110 + DB 111,119,110,33,33,0,37,115,46,112,112,105,100,101,99 + DB 97,112,97,99,105,116,121,32,61,32,37,100,75,66,0 + DB 37,115,46,112,112,105,100,101,115,108,111,119,32,32,32 + DB 32,32,61,32,0,84,82,85,69,0,70,65,76,83,69 + DB 0,85,110,107,110,111,119,110,33,33,0,37,115,46,98 + DB 111,111,116,116,121,112,101,32,32,32,32,32,32,61,32 + DB 0,66,84,95,77,69,78,85,0,66,84,95,65,85,84 + DB 79,0,37,115,46,98,111,111,116,116,105,109,101,111,117 + DB 116,32,32,32,61,32,37,100,32,115,101,99,111,110,100 + DB 115,0,37,115,46,98,111,111,116,100,101,102,97,117,108 + DB 116,32,32,32,61,32,37,99,58,0,37,115,46,98,97 + DB 117,100,114,97,116,101,32,32,32,32,32,32,61,32,37 + DB 117,32,40,48,120,37,48,52,120,41,32,66,97,117,100 + DB 0,37,115,46,99,107,100,105,118,32,32,32,32,32,32 + DB 32,32,32,61,32,37,100,0,37,115,46,109,101,109,119 + DB 97,105,116,32,32,32,32,32,32,32,61,32,48,120,37 + DB 48,50,120,0,37,115,46,105,111,119,97,105,116,32,32 + DB 32,32,32,32,32,32,61,32,48,120,37,48,50,120,0 + DB 37,115,46,99,110,116,108,98,48,32,32,32,32,32,32 + DB 32,32,61,32,48,120,37,48,50,120,0,37,115,46,99 + DB 110,116,108,98,49,32,32,32,32,32,32,32,32,61,32 + DB 48,120,37,48,50,120,0,37,115,46,115,100,101,110,97 + DB 98,108,101,32,32,32,32,32,32,61,32,0,84,82,85 + DB 69,0,70,65,76,83,69,0,85,110,107,110,111,119,110 + DB 33,33,0,37,115,46,115,100,116,114,97,99,101,32,32 + DB 32,32,32,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,85,110,107,110,111,119,110,33,33,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/Apps/crossdev/CNAMEPT3.O b/Apps/crossdev/CNAMEPT3.O new file mode 100644 index 0000000000000000000000000000000000000000..4d1a1517fdc1e6d72eedbb5b073db1f4c0cc0f31 GIT binary patch literal 3328 zcmd^BOK%%h7`-!Y)v6Q`wZIg~@R3WkOo#-kF-`QR#2kLcv1bXrX zM%9q&9?Fu3hZhf}qmPgW7dy$$R*sjZUPMi}zNK+u)=z9#$w8U9>Le@?l`zTnb4&(a zU@&p9g+Z@tkmvo9mxMu)6El877#LtsAWVV=5SLk1mxOD%5cW_k6&dcEE>qr~eivh|A@@hIub z!nw$aIX@wy7!ai(F-c%XyqkYUtc$oKlUG{!4~Q9YyVOWc` ztQ2Rl@CEYCucc8e-r35A@XAkqi5m9)&v7ChB51h(I~Xl^r4*Lw6S%iTxn=jSCxvQ8cq!p_Gt9n81$%AL^ulR{LyIK z6Yy~E<{I%R&)0}Yc|L9mt*IB$ZOxkExrnVqDQ*R0@Pw2_9F6p7XGA`#>2}FlgMIQQ zR2;5o;+{v&vK*&YVf%ojpdCwQ&c(-5WQ-;=CsN7tupv|#w5(ezaCTr7v2~SNre=$E zP0uTIrR1)wBgj)_MXM?f922jjE0NyVdQa@=dS7IWE#fHEWzAUS637AVp}MS>*A&CS zU|0=>gX?_y7A(0nP~xt!GSzfwDHjv{aEU@4Un}JfvnAftS4IbH&AV{mM*UY3PL0Af z;$yNkm@ZBqY{U(q&0~rZvS%;+5**0s1;g~dsl^ho?wY;kG`^{}vZ{M)YE}2G4U{du zwh?9uRZ)w2h7frJs#Q}d>lNn+?`b<#wNlHt4wb55I(hG#QqZfc&UM$Hg>oW24JdE+ z?FKxB&x42;5JwTOBGwRZB3?qgEJ4+7#9xu=!sp-d`A@`u5a*B|L0m$NBTgXxfOreB zj`%I&0rsm--W*~-Z{^MXh-VNVK7%Q6vt=Rk;+GfY$EX`q_JE1NHA4FKouYbr;VDXj=gr{B#yn_UE3SmyNh>8 z<06pCXA1=iln)UEMTNq(_aGwm091;QLAh2Skpn^q4%}hp&5S+XM4a&9ul0Z4zW00Y zO+H5MLHx72hdw-X%bPc^--`A|V-*zL^iedC&`~P3omfG!?aftmd#{(+_izQ_N0#;% z5_h4ym+nAYi3sXNH@hf$y-Hr7$M?eVw4#k#yy9RQPx4`jt{2$bJEoC8w+q`-oUP4Jim!>vE;F*P zhm6IrQ8*up$h;vLlzxQF%c1lYC8i=>iA7LVF%&krK_6*?B5!q`<=N3k<}JuSyj6|& zVJdL5ve*o9>2w-SoDkTy^IHm@Vy&LbRUnT3?z5hyKY zWZw-LbFv{&+7zX!I6F{SdI`lPX~pid7a{lXY>slEiVCwSyeH~cnNbQG+WVo1vTRVo z2wADF5<){ID>YS19sW5eejqr8emqJa3R{}jF^*SbG_xOx;tkFlHWp<=%*&=Ub#_`7+`y|#kgN|-kqW#>|bb3ZZ zgfx31n?vbBI$P9^PR$(IwMu^jq)O7q6w`1WQF|OqA&7tZLP5r~l1pw5ZF^{8Pc;o8jv#R{zZCSkl>8 z+hu2GVu4}r3nb$Gr2`UB`1=oQebp!*=30{Q^xUeG&1 zFM|4@mqDKgJqP+LOy(bWz5#k0IKRR3-=K@&q(EKJL!gtOv!FkMUIqOHbRG0tqW{O| EUk^JnegFUf literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CPMNAME.ASM b/Apps/crossdev/CPMNAME.ASM new file mode 100644 index 00000000..86a14a6f --- /dev/null +++ b/Apps/crossdev/CPMNAME.ASM @@ -0,0 +1,164 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global pINFOLIS_,2 + global pSYSCFG_,2 + global line_,2 + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,5 + SHLD line_ + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + CALL crtinit_ + POP D + CALL crtclr_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + CALL crtlc_ + POP D + POP D + LXI H,1 + PUSH H + LXI H,0 + PUSH H + LXI H,5 + PUSH H + LXI H,2 + PUSH H + LXI H,2013 + PUSH H + LXI H,31 + PUSH H + LXI H,3 + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + XCHG + LXI H,16 + DAD SP + SPHL + LXI H,.1+36 + PUSH H + CALL printf_ + POP D + CALL pager_ + CALL pager_ + LXI H,-6596 + SHLD ireghl_ + CALL bioscall_ + LHLD ireghl_ + SHLD pINFOLIS_ + LXI H,.1+72 + PUSH H + CALL printf_ + POP D + LHLD pINFOLIS_ + INX H + INX H + MOV E,M + INX H + MOV D,M + XCHG + SHLD dregde_ + LXI H,9 + SHLD dregbc_ + CALL bdoscall_ + CALL pager_ + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LXI H,-16384 + SHLD pSYSCFG_ + LHLD pSYSCFG_ + PUSH H + CALL cnamept1_ + POP D + LHLD pSYSCFG_ + PUSH H + CALL cnamept2_ + POP D + LHLD pSYSCFG_ + PUSH H + CALL cnamept3_ + POP D + LHLD pSYSCFG_ + PUSH H + CALL cnamept4_ + POP D + RET +.2 EQU -7 +.1: + DB 67,80,77,78,65,77,69,46,67,79,77,32,37,100,47 + DB 37,100,47,37,100,32,118,37,100,46,37,100,46,37,100 + DB 32,40,37,100,41,0,32,100,119,103,32,45,32,68,105 + DB 115,112,108,97,121,32,83,121,115,116,101,109,32,67,111 + DB 110,102,105,103,117,114,97,116,105,111,110,0,112,73,78 + DB 70,79,76,73,83,84,45,62,98,97,110,112,116,114,32 + DB 61,61,62,32,0 + PUBLIC pager_ +pager_: lxi d,.4 + call csave + LHLD line_ + INX H + SHLD line_ + LXI H,.3+0 + PUSH H + CALL printf_ + POP D + LXI H,24 + XCHG + LHLD line_ + CALL .eq + JZ .5 + LXI H,.3+2 + PUSH H + CALL printf_ + POP D + LXI H,1 + SHLD dregbc_ + CALL bdoscall_ + LXI H,1 + SHLD line_ +.5: + RET +.4 EQU 0 +.3: + DB 10,0,32,32,32,32,32,112,114,101,115,115,32,97,110 + DB 121,32,107,101,121,32,116,111,32,99,111,110,116,105,110 + DB 117,101,0 + extrn printf_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn cnamept4_ + extrn cnamept3_ + extrn cnamept2_ + extrn cnamept1_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn bdoscall_ + extrn dregde_ + extrn dregbc_ + extrn bioscall_ + extrn ireghl_ + extrn .eq + END + \ No newline at end of file diff --git a/Apps/crossdev/CPMNAME.CPM b/Apps/crossdev/CPMNAME.CPM index 665804f6806234bd9953eb77105e7f9ee635dc39..788096ad9bbb4c2578c6b5b6cb06237b19763dc7 100644 GIT binary patch delta 36 lcmZpuZm6E%BFV_`RFMIQS%H`di0`sLRg?$P%o}5sZ2{U*3xogw delta 36 kcmZpuZm6E%BFVt;R1t)kftU%1@3KEt6adnU8)KDi0oi#AZ~y=R diff --git a/Apps/crossdev/CPMNAME.O b/Apps/crossdev/CPMNAME.O new file mode 100644 index 0000000000000000000000000000000000000000..d1cf9ac44e957e7c0119ed82fec74707bbe673a7 GIT binary patch literal 1024 zcmcIiOK;Oa5FRH*1x~gCQQ&~rjv_&%rck&bXa!0sibPtZR0u8&er%l;&f2w|SIa{J z4*dn(`6sy+DF+|8!7*HN;aYKk+1L%qg&V7V%s1aRJ3C`9U4?Xfl7#Ug`%C(qg(X>e z3Gyg}oOTZMJ|6H>KNQDMKSJVlV)j5T_n@F`!j-)|d>y?3B_6$nf(9@aYxEA(IM$>D z;Z%MoUcwz`P?3~aYb+?u9f#R)AHos5wKH8=NVTbMcZi&JP%m_M4dR9{%9I;ZPK&9K(Dq_bkq2 zUT7Jvo907qF8jjEOnY8waidNB=vMlc1g$Ng+Y9JUf-3Ytv;d?Br@yfu!*5etcrwEd MzBMz9aR1Na4*@COz5oCK literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CTERMCAP.ASM b/Apps/crossdev/CTERMCAP.ASM new file mode 100644 index 00000000..50ae771d --- /dev/null +++ b/Apps/crossdev/CTERMCAP.ASM @@ -0,0 +1,334 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global termtype_,1 + DSEG + public wy50row_ +wy50row_: + DB 32 + DB 33 + DB 34 + DB 35 + DB 36 + DB 37 + DB 38 + DB 39 + DB 40 + DB 41 + DB 42 + DB 43 + DB 44 + DB 45 + DB 46 + DB 47 + DB 48 + DB 49 + DB 50 + DB 51 + DB 52 + DB 53 + DB 54 + DB 55 + CSEG + DSEG + public wy50col_ +wy50col_: + DB 32 + DB 33 + DB 34 + DB 35 + DB 36 + DB 37 + DB 38 + DB 39 + DB 40 + DB 41 + DB 42 + DB 43 + DB 44 + DB 45 + DB 46 + DB 47 + DB 48 + DB 49 + DB 50 + DB 51 + DB 52 + DB 53 + DB 54 + DB 55 + DB 56 + DB 57 + DB 58 + DB 59 + DB 60 + DB 61 + DB 62 + DB 63 + DB 64 + DB 65 + DB 66 + DB 67 + DB 68 + DB 69 + DB 70 + DB 71 + DB 72 + DB 73 + DB 74 + DB 75 + DB 76 + DB 77 + DB 78 + DB 79 + DB 80 + DB 81 + DB 82 + DB 83 + DB 84 + DB 85 + DB 86 + DB 87 + DB 88 + DB 89 + DB 90 + DB 91 + DB 92 + DB 93 + DB 94 + DB 95 + DB 96 + DB 97 + DB 98 + DB 99 + DB 100 + DB 101 + DB 102 + DB 103 + DB 104 + DB 105 + DB 106 + DB 107 + DB 108 + DB 109 + DB 110 + DB 111 + CSEG + PUBLIC crtinit_ +crtinit_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + XCHG + MOV A,L + STA termtype_ + RET +.2 EQU 0 + PUBLIC crtclr_ +crtclr_: lxi d,.3 + call csave + LDA termtype_ + MOV L,A + MVI H,0 + JMP .4 +.6: + LXI H,0 + XCHG + LXI H,2-.3 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .8 +.7: + LXI H,2-.3 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + INX H + XCHG + POP H + MOV M,E + INX H + MOV M,D +.8: + LXI H,2-.3 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,43 + CALL .lt + JZ .9 + LXI H,10 + PUSH H + LXI H,13 + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + POP D + JMP .7 +.9: + JMP .5 +.10: + LXI H,27 + PUSH H + LXI H,.1+5 + PUSH H + CALL printf_ + POP D + POP D + JMP .5 +.11: + LXI H,27 + PUSH H + LXI H,.1+11 + PUSH H + CALL printf_ + POP D + POP D + JMP .5 +.12: + LXI H,27 + PUSH H + LXI H,27 + PUSH H + LXI H,.1+15 + PUSH H + CALL printf_ + POP D + POP D + POP D + JMP .5 +.4: + CALL .swt + DW 4 + DW 0,.6 + DW 1,.10 + DW 2,.11 + DW 3,.12 + DW .5 +.5: + RET +.3 EQU -2 +.1: + DB 37,99,37,99,0,37,99,91,50,74,0,37,99,43,0 + DB 37,99,74,37,99,72,0 + PUBLIC crtlc_ +crtlc_: lxi d,.14 + call csave + LDA termtype_ + MOV L,A + MVI H,0 + JMP .15 +.17: + JMP .16 +.18: + LXI H,102 + PUSH H + LXI H,12-.14 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,12-.14 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,27 + PUSH H + LXI H,.13+0 + PUSH H + CALL printf_ + XCHG + LXI H,10 + DAD SP + SPHL + JMP .16 +.19: + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,wy50col_ + DAD D + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,wy50row_ + DAD D + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,27 + PUSH H + LXI H,.13+11 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + JMP .16 +.20: + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + PUSH H + LXI H,10-.14 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + PUSH H + LXI H,27 + PUSH H + LXI H,.13+19 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + JMP .16 +.15: + CALL .swt + DW 4 + DW 0,.17 + DW 1,.18 + DW 2,.19 + DW 3,.20 + DW .16 +.16: + RET +.14 EQU -2 +.13: + DB 37,99,91,37,100,59,37,100,37,99,0,37,99,61,37 + DB 99,37,99,0,37,99,89,37,99,37,99,0 + extrn printf_ + extrn .lt + END + \ No newline at end of file diff --git a/Apps/crossdev/CTERMCAP.O b/Apps/crossdev/CTERMCAP.O new file mode 100644 index 0000000000000000000000000000000000000000..f6da96227fe95447620de7c7629d140567cecb99 GIT binary patch literal 1024 zcmbtS+fUPQ6h7@pBqk=SL#~?A&EjP`aXMrS1aE+N7ex_WxBk|xg>EHXW#TQ-#AN?~ zFa8($2bd*$5fdJGFebkFz|&sw!58)Pw1XKR{U!Z!&iT&mJ84@l`0p*Jqcs_L&3_C) z+Yhl{3P%pg1BVVDIT}57Ja(dM@MQed>BP{Pt$#VO$qgq*Qln#M$Hj?r=Pz8mG&wbW zdFIO1Yu9gxH*ejZy>oZ&-u?Lp3lATq6)}@lSx(CrbYpSJES9XTppb#!dKrRJcsK(c z$#mmIdpa`R;*Z$%p4F-noHWI8e@ zMPdCJ1V87YTiOkq(jNSz0t^b9>(3#yv9VFtAXwM2ZJ);^h}nxoOEA?E?50dVdwi#l zj+@#LYQsY^5I8VE;9(Jj04#wH;+o841~OZS&mcyjOJ*}Nn+C!BTVWB`v2dL{t`iPN0$Hv5V+x70Odmt5Hy4rQwx%4VEJvKQoBO3sn^F}csX!aQ9AcD1`d zU`*8tMhTi8(@i((bLEP&t+jBmqUCW_4l^9hE;_5rTA=DyS5^~)wpCFA z)o$NomZ|W>G21aphJ&7f9D2;OmF9Gl2Ke5xZIqn60(|w8muWHufSW)E@z-wvzV;4n vzSd7TMi?Vh2|p0NCv#o literal 0 HcmV?d00001 diff --git a/Apps/crossdev/FINDFILE.COM b/Apps/crossdev/FINDFILE.COM index 44f2a4804bcd8e6e334de099473213d3fe50b444..dbf33a1a9abe3e9364ecf6cdc7c5264e38999e76 100644 GIT binary patch delta 120 zcmZorZ&05g#>&dT$Sglm+K|Oq-`H?tKp(dlGsD?s0$-0_eagoqr+=1};o-%D9~I>% uf8kDKWS#8DBQiOQM~0Dcb34yAM%-!@CKvPB!`1UlzRV{G)bo^YHVXhF`6wCy delta 116 zcmZorZ&05g#>&LNz{EdM+K|Oa-_UepKp(dl6T{hM0$-0_eagoqr+=1};o-%D9~Jp0 sf8kD??7$;BIg3YzkzsQ?&o)NfDitOd^VvgH^Gv?XCkWK>ly5c*0IRkq)&Kwi diff --git a/Apps/crossdev/FINDFILE.CPM b/Apps/crossdev/FINDFILE.CPM index 44f2a4804bcd8e6e334de099473213d3fe50b444..dbf33a1a9abe3e9364ecf6cdc7c5264e38999e76 100644 GIT binary patch delta 120 zcmZorZ&05g#>&dT$Sglm+K|Oq-`H?tKp(dlGsD?s0$-0_eagoqr+=1};o-%D9~I>% uf8kDKWS#8DBQiOQM~0Dcb34yAM%-!@CKvPB!`1UlzRV{G)bo^YHVXhF`6wCy delta 116 zcmZorZ&05g#>&LNz{EdM+K|Oa-_UepKp(dl6T{hM0$-0_eagoqr+=1};o-%D9~Jp0 sf8kD??7$;BIg3YzkzsQ?&o)NfDitOd^VvgH^Gv?XCkWK>ly5c*0IRkq)&Kwi diff --git a/Apps/crossdev/FINDFILE.PRN b/Apps/crossdev/FINDFILE.PRN new file mode 100644 index 00000000..272a1e1a --- /dev/null +++ b/Apps/crossdev/FINDFILE.PRN @@ -0,0 +1,1552 @@ + ; findfile.asm 7/21/2012 dwg - added keystroke scan terminate + ; findfile.asm 7/19/2012 dwg - for 2.0.0.0 B22 + ; findfile.asm 2/20.2012 dwg - add RESET$DISK before exit for ZDOS + ; findfile.asm 2/17/2012 dwg - review for release 1.5.1.0 + ; findfile.asm 2/11/2012 dwg - make ident compliant + ; findfile.asm 1/30/2012 dwg - use new do$start and do$end macros + ; findfile.asm 1/22/2012 dwg - find a file on any slice + + ; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. + ; + ; This file is part of NuBiosDWG and is free software: you can + ; redistribute it and/or modify it under the terms of the GNU + ; General Public License as published by the Free Software Foundation, + ; either version 3 of the License, or (at your option) any later version. + ; This file is distributed in the hope that it will be useful, + ; but WITHOUT ANY WARRANTY; without even the implied warranty of + ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ; GNU General Public License for more details. + ; You should have received a copy of the GNU General Public License + ; along with it. If not, see . + + maclib portab + maclib globals + maclib stdlib + maclib cpmbios + maclib cpmbdos + maclib bioshdr + maclib printers + maclib banner + maclib terminal + maclib applvers + maclib version + ; maclib ffhaslu + ; maclib ffnumlu + ; maclib ffsetlu + ; maclib ffgetlu + ; maclib z80 + ; maclib memory + ; maclib cpmappl + ; maclib identity + + ; identity.lib 2/19/2012 dwg - add ify macro + ; identity.lib 2/17/2012 dwg - Program Identity Declarations + + extrn x$ident + + ident macro file1fcb + lxi h,file1fcb + call x$ident + endm + + ify macro progname,bool + local done + local file + local fini + ident file + jmp fini + newfcb file,0,progname + fini: mvi a,bool + cpi TRUE + jnz done + conout CR + conout LF + done: + endm + + + identx macro file1fcb + local openok + local identend + + local ldrive,lcolon,lname,ldot,lext,lterm + + mvi c,FOPEN + lxi d,file1fcb + call BDOS + cpi 255 + jnz openok + + memcpy lname,file1fcb+1,8 + mvi a,',' + sta ldot + memcpy lext,file1fcb+9,3 + mvi a,'$' + sta lterm + print lname + printf ' -- File Not Found' + jmp identend + openok: + + mvi c,SETDMA + lxi d,buffer + call BDOS + + mvi c,READSEQ + lxi d,file1fcb + call BDOS + + mvi c,FCLOSE + lxi d,file1fcb + 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 ' ' + + lxi d,d$name + mvi c,9 + call BDOS + jmp identend + + ldrive ds 1 + lcolon ds 1 + lname ds 8 + ldot ds 1 + lext ds 3 + lterm ds 1 + + identend: + endm + + idata macro + jmp around$bandata + argv dw prog,dat,prod,orig,ser,myname,0 + prog db 'IDENT.COM $' + date + serial + product + originator + oriname + uuid db '777A67C2-4A92-42D4-80FE-C96FD6483BD2$' + db 'buffer-->' + public buffer,p$start,p$hexrf,p$sig + public p$rmj,p$rmn,p$rup,p$rtp + public p$mon,p$day,p$year + 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 37 ; unique user identification + d$term2 ds 1 ; can be set to zero or dollar sign + p$len equ $-buffer + p$rsvd ds 128-p$len + db '<--buffer' + crlf db CR,LF,'$' + around$bandata: + + endm + + ; eof - identity.lib + + + + ; cpmappl.lib 2/10/2012 dwg - begin 1.6 development + ; cpmappl.lib 2/04/2012 dwg - fix typo mov becomes mvi + ; cpmappl.lib 2/ 2/2012 dwg - initial version + + ; + ; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. + ; + ; This file is part of NuBiosDWG and is free software: you can + ; redistribute it and/or modify it under the terms of the GNU + ; General Public License as published by the Free Software Foundation, + ; either version 3 of the License, or (at your option) any later version. + ; This file is distributed in the hope that it will be useful, + ; but WITHOUT ANY WARRANTY; without even the implied warranty of + ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ; GNU General Public License for more details. + ; You should have received a copy of the GNU General Public License + ; along with it. If not, see . + ; + + do$start macro + + start: jmp begin + + public hexref + hexref db '0123456789ABCDEF' + + public id$sig,id$rmj,id$rmn,id$rup,id$rtp,id$mon,id$day,id$yr + id$sig db 'ID' + id$rmj db A$RMJ + id$rmn db A$RMN + id$rup db A$RUP + id$rtp db A$RTP + id$mon db A$MONTH + id$day db A$DAY + id$yr dw A$YEAR + id$argv dw argv + db 0e5h + + + public pre$stk + pre$stk ds 2 + + public begin + begin: lxi h,0 + dad sp + shld pre$stk + lxi sp,stack$top + nop + endm + + + ;--------------------------------- + + + do$end macro + lhld pre$stk + sphl + + mvi c,13 + call BDOS + + ret + ds stack$size + stack$top: + + endm + + movfcb macro destn,source + lxi d,destn + lxi h,source + lxi b,LENFCB + ldir + endm + + copyfcb macro fcbname,source + local around + jmp around + fcbname ds 32 + around: + endm + + + ; memory.lib 2/17/2012 dwg - review for release 1.5.1.0 + ; memory.lib 2/11/2012 dwg - review for release 1.5 + ; memory.lib 2/04/2012 dwg - adjust for new macros + ; memory.lib 1/13/2012 dwg - POSIX memcpy and memset + + extrn x$memcpy + extrn x$memset + + memcpy macro dst,src,siz + lxi d,dst ; load 1st positional parameter into reg + lxi h,src ; load 2nd positional parameter into reg + lxi b,siz ; load 3rd positional parameter into reg + call x$memcpy ; call actual routine in see memory.asm + endm + + memset macro dst,data,siz + lxi h,dst ; load 1st positional parameter into reg + mvi a,data ; load 2nd positional parameter into reg + lxi b,siz ; load 3rd positional parameter into reg + call x$memset ; call actual routine in see memory.asm + endm + + ; eof - memory.lib + + + ; @CHK MACRO USED FOR CHECKING 8 BIT DISPLACMENTS + ; + @CHK MACRO ?DD ;; USED FOR CHECKING RANGE OF 8-BIT DISP.S + IF (?DD GT 7FH) AND (?DD LT 0FF80H) + 'DISPLACEMENT RANGE ERROR - Z80 LIB' + ENDIF + ENDM + LDX MACRO ?R,?D + @CHK ?D + DB 0DDH,?R*8+46H,?D + ENDM + LDY MACRO ?R,?D + @CHK ?D + DB 0FDH,?R*8+46H,?D + ENDM + STX MACRO ?R,?D + @CHK ?D + DB 0DDH,70H+?R,?D + ENDM + STY MACRO ?R,?D + @CHK ?D + DB 0FDH,70H+?R,?D + ENDM + MVIX MACRO ?N,?D + @CHK ?D + DB 0DDH,36H,?D,?N + ENDM + MVIY MACRO ?N,?D + @CHK ?D + DB 0FDH,36H,?D,?N + ENDM + LDAI MACRO + DB 0EDH,57H + ENDM + LDAR MACRO + DB 0EDH,5FH + ENDM + STAI MACRO + DB 0EDH,47H + ENDM + STAR MACRO + DB 0EDH,4FH + ENDM + + LXIX MACRO ?NNNN + DB 0DDH,21H + DW ?NNNN + ENDM + LXIY MACRO ?NNNN + DB 0FDH,21H + DW ?NNNN + ENDM + LDED MACRO ?NNNN + DB 0EDH,5BH + DW ?NNNN + ENDM + LBCD MACRO ?NNNN + DB 0EDH,4BH + DW ?NNNN + ENDM + LSPD MACRO ?NNNN + DB 0EDH,07BH + DW ?NNNN + ENDM + LIXD MACRO ?NNNN + DB 0DDH,2AH + DW ?NNNN + ENDM + LIYD MACRO ?NNNN + DB 0FDH,2AH + DW ?NNNN + ENDM + SBCD MACRO ?NNNN + DB 0EDH,43H + DW ?NNNN + ENDM + SDED MACRO ?NNNN + DB 0EDH,53H + DW ?NNNN + ENDM + SSPD MACRO ?NNNN + DB 0EDH,73H + DW ?NNNN + ENDM + SIXD MACRO ?NNNN + DB 0DDH,22H + DW ?NNNN + ENDM + SIYD MACRO ?NNNN + DB 0FDH,22H + DW ?NNNN + ENDM + SPIX MACRO + DB 0DDH,0F9H + ENDM + SPIY MACRO + DB 0FDH,0F9H + ENDM + PUSHIX MACRO + DB 0DDH,0E5H + ENDM + PUSHIY MACRO + DB 0FDH,0E5H + ENDM + POPIX MACRO + DB 0DDH,0E1H + ENDM + POPIY MACRO + DB 0FDH,0E1H + ENDM + EXAF MACRO + DB 08H + ENDM + EXX MACRO + DB 0D9H + ENDM + XTIX MACRO + DB 0DDH,0E3H + ENDM + XTIY MACRO + DB 0FDH,0E3H + ENDM + + LDI MACRO + DB 0EDH,0A0H + ENDM + LDIR MACRO + DB 0EDH,0B0H + ENDM + LDD MACRO + DB 0EDH,0A8H + ENDM + LDDR MACRO + DB 0EDH,0B8H + ENDM + CCI MACRO + DB 0EDH,0A1H + ENDM + CCIR MACRO + DB 0EDH,0B1H + ENDM + CCD MACRO + DB 0EDH,0A9H + ENDM + CCDR MACRO + DB 0EDH,0B9H + ENDM + + ADDX MACRO ?D + @CHK ?D + DB 0DDH,86H,?D + ENDM + ADDY MACRO ?D + @CHK ?D + DB 0FDH,86H,?D + ENDM + ADCX MACRO ?D + @CHK ?D + DB 0DDH,8EH,?D + ENDM + ADCY MACRO ?D + @CHK ?D + DB 0FDH,8EH,?D + ENDM + SUBX MACRO ?D + @CHK ?D + DB 0DDH,96H,?D + ENDM + SUBY MACRO ?D + @CHK ?D + DB 0FDH,96H,?D + ENDM + SBCX MACRO ?D + @CHK ?D + DB 0DDH,9EH,?D + ENDM + SBCY MACRO ?D + @CHK ?D + DB 0FDH,9EH,?D + ENDM + ANDX MACRO ?D + @CHK ?D + DB 0DDH,0A6H,?D + ENDM + ANDY MACRO ?D + @CHK ?D + DB 0FDH,0A6H,?D + ENDM + XORX MACRO ?D + @CHK ?D + DB 0DDH,0AEH,?D + ENDM + XORY MACRO ?D + @CHK ?D + DB 0FDH,0AEH,?D + ENDM + ORX MACRO ?D + @CHK ?D + DB 0DDH,0B6H,?D + ENDM + ORY MACRO ?D + @CHK ?D + DB 0FDH,0B6H,?D + ENDM + CMPX MACRO ?D + @CHK ?D + DB 0DDH,0BEH,?D + ENDM + CMPY MACRO ?D + @CHK ?D + DB 0FDH,0BEH,?D + ENDM + INRX MACRO ?D + @CHK ?D + DB 0DDH,34H,?D + ENDM + INRY MACRO ?D + @CHK ?D + DB 0FDH,34H,?D + ENDM + DCRX MACRO ?D + @CHK ?D + DB 0DDH,035H,?D + ENDM + DCRY MACRO ?D + @CHK ?D + DB 0FDH,35H,?D + ENDM + + NEG MACRO + DB 0EDH,44H + ENDM + IM0 MACRO + DB 0EDH,46H + ENDM + IM1 MACRO + DB 0EDH,56H + ENDM + IM2 MACRO + DB 0EDH,5EH + ENDM + + + 0000 = BC EQU 0 + 0002 = DE EQU 2 + 0004 = HL EQU 4 + 0004 = IX EQU 4 + 0004 = IY EQU 4 + DADC MACRO ?R + DB 0EDH,?R*8+4AH + ENDM + DSBC MACRO ?R + DB 0EDH,?R*8+42H + ENDM + DADX MACRO ?R + DB 0DDH,?R*8+09H + ENDM + DADY MACRO ?R + DB 0FDH,?R*8+09H + ENDM + INXIX MACRO + DB 0DDH,23H + ENDM + INXIY MACRO + DB 0FDH,23H + ENDM + DCXIX MACRO + DB 0DDH,2BH + ENDM + DCXIY MACRO + DB 0FDH,2BH + ENDM + + BIT MACRO ?N,?R + DB 0CBH,?N*8+?R+40H + ENDM + SETB MACRO ?N,?R + DB 0CBH,?N*8+?R+0C0H + ENDM + RES MACRO ?N,?R + DB 0CBH,?N*8+?R+80H + ENDM + + BITX MACRO ?N,?D + @CHK ?D + DB 0DDH,0CBH,?D,?N*8+46H + ENDM + BITY MACRO ?N,?D + @CHK ?D + DB 0FDH,0CBH,?D,?N*8+46H + ENDM + SETX MACRO ?N,?D + @CHK ?D + DB 0DDH,0CBH,?D,?N*8+0C6H + ENDM + SETY MACRO ?N,?D + @CHK ?D + DB 0FDH,0CBH,?D,?N*8+0C6H + ENDM + RESX MACRO ?N,?D + @CHK ?D + DB 0DDH,0CBH,?D,?N*8+86H + ENDM + RESY MACRO ?N,?D + @CHK ?D + DB 0FDH,0CBH,?D,?N*8+86H + ENDM + + JR MACRO ?N + DB 18H,?N-$-1 + ENDM + JRC MACRO ?N + DB 38H,?N-$-1 + ENDM + JRNC MACRO ?N + DB 30H,?N-$-1 + ENDM + JRZ MACRO ?N + DB 28H,?N-$-1 + ENDM + JRNZ MACRO ?N + DB 20H,?N-$-1 + ENDM + DJNZ MACRO ?N + DB 10H,?N-$-1 + ENDM + + PCIX MACRO + DB 0DDH,0E9H + ENDM + PCIY MACRO + DB 0FDH,0E9H + ENDM + + RETI MACRO + DB 0EDH,4DH + ENDM + RETN MACRO + DB 0EDH,45H + ENDM + + INP MACRO ?R + DB 0EDH,?R*8+40H + ENDM + OUTP MACRO ?R + DB 0EDH,?R*8+41H + ENDM + INI MACRO + DB 0EDH,0A2H + ENDM + INIR MACRO + DB 0EDH,0B2H + ENDM + IND MACRO + DB 0EDH,0AAH + ENDM + INDR MACRO + DB 0EDH,0BAH + ENDM + OUTI MACRO + DB 0EDH,0A3H + ENDM + OUTIR MACRO + DB 0EDH,0B3H + ENDM + OUTD MACRO + DB 0EDH,0ABH + ENDM + OUTDR MACRO + DB 0EDH,0BBH + ENDM + + + RLCR MACRO ?R + DB 0CBH, 00H + ?R + ENDM + RLCX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 06H + ENDM + RLCY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 06H + ENDM + RALR MACRO ?R + DB 0CBH, 10H+?R + ENDM + RALX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 16H + ENDM + RALY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 16H + ENDM + RRCR MACRO ?R + DB 0CBH, 08H + ?R + ENDM + RRCX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 0EH + ENDM + RRCY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 0EH + ENDM + RARR MACRO ?R + DB 0CBH, 18H + ?R + ENDM + RARX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 1EH + ENDM + RARY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 1EH + ENDM + SLAR MACRO ?R + DB 0CBH, 20H + ?R + ENDM + SLAX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 26H + ENDM + SLAY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 26H + ENDM + SRAR MACRO ?R + DB 0CBH, 28H+?R + ENDM + SRAX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 2EH + ENDM + SRAY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 2EH + ENDM + SRLR MACRO ?R + DB 0CBH, 38H + ?R + ENDM + SRLX MACRO ?D + @CHK ?D + DB 0DDH, 0CBH, ?D, 3EH + ENDM + SRLY MACRO ?D + @CHK ?D + DB 0FDH, 0CBH, ?D, 3EH + ENDM + RLD MACRO + DB 0EDH, 6FH + ENDM + RRD MACRO + DB 0EDH, 67H + ENDM + + ; ffsetlu.lib 1/24/2012 dwg - + ffgetlu macro + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16+2 + dad d + mov a,m + endm + ; eof - ffsetlu + + + ; ffsetlu.lib 2/12/2012 dwg - review for use in superfmt + ; ffsetlu.lib 1/24/2012 dwg - + + ; enter with desired LU in A reg + ffsetlu macro + enter + push psw + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK ; uses c parameter (drive) + lxi d,16+2 + dad d + pop psw + mov m,a ; put slice into CURRENT + mvi c,13 + call BDOS + leave + endm + + ; eof - ffsetlu + + + ; ffhaslu.lib 1/22/2012 dwg - macro to detect drive with logical unit support + + ffhaslu macro + local ret$false,fini + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16 ; offset to end of DPH + dad d ; calc offset of 1st signature byte + mov a,m ; pick up first sig byte which s/b 'L' + cpi 'L' + jnz ret$false ; if it wasn't, indicate to caller no LU + inx h ; bump ptr to 2nd signature byte + mov a,m ; pick up second sig byte which s/b 'U' + cpi 'U' + jnz ret$false ; if it wasn't, indicate to caller no LU + mvi a,TRUE ; otherwise indicate presence of LU support + jmp fini ; finish up macro + ret$false: + mvi a,FALSE ; prepare negative response for caller + fini: + endm + + + + ; ffnumlu.lib 1/22/2012 dwg - macro to get number of logical units + + ffnumlu macro + mvi c,RETCURR + call BDOS + mov c,a + call BISELDSK + lxi d,16+2+2 ; offset to end of DPH + dad d ; calc offset of 1st signature byte + mov a,m + endm + + ; eof - ffnumlu.lib + + + + prfilnam macro fcb + local fnbuf,fnext,prfnfini + memcpy fnbuf,fcb+1,8 + memcpy fnext,fcb+9,3 + + lda fnext + ani 07fh + sta fnext + + lda fnext+1 + ani 07fh + sta fnext+1 + + lda fnext+2 + ani 07fh + sta fnext+2 + + mvi c,9 + lxi d,fnbuf + call BDOS + + jmp prfnfini + + fnbuf db 0,0,0,0,0,0,0,0 + db '.' + fnext db 0,0,0,' $' + prfnfini: + endm + + + do$start + 0000+C32200 START: JMP BEGIN + 0003+3031323334HEXREF DB '0123456789ABCDEF' + 0013+4944 ID$SIG DB 'ID' + 0015+02 ID$RMJ DB A$RMJ + 0016+05 ID$RMN DB A$RMN + 0017+00 ID$RUP DB A$RUP + 0018+01 ID$RTP DB A$RTP + 0019+03 ID$MON DB A$MONTH + 001A+1F ID$DAY DB A$DAY + 001B+DD07 ID$YR DW A$YEAR + 001D+3000 ID$ARGV DW ARGV + 001F+E5 DB 0E5H + 0020+ PRE$STK DS 2 + 0022+210000 BEGIN: LXI H,0 + 0025+39 DAD SP + 0026+222000 SHLD PRE$STK + 0029+31C006 LXI SP,STACK$TOP + 002C+00 NOP + + + 002D C3A000 jmp around$bandata + 0030 3E004B005Dargv dw prog,dat,prod,orig,ser,myname,0 + 003E 46494E4446prog db 'FINDFILE.COM$' + date + 004B+20332F3331DAT DB ' 3/31/2013$' + serial + 0056+3635343332SER DB '654321$' + product + 005D+43504D3830PROD DB 'CPM80$' + originator + 0063+44574724 ORIG DB 'DWG$' + oriname + 0067+20444F5547MYNAME DB ' DOUGLAS W GOODALL $' + 007B 3130374344uuid db '107CDD27-2E4D-4340-A324-BEB13054E67B$' + around$bandata: + + + crtinit + 00A0+F5 PUSH PSW + 00A1+C5 PUSH B + 00A2+D5 PUSH D + 00A3+E5 PUSH H + 00A4+CD0000 CALL XCRTINIT + 00A7+E1 POP H + 00A8+D1 POP D + 00A9+C1 POP B + 00AA+F1 POP PSW + crtclr + 00AB+F5 PUSH PSW + 00AC+C5 PUSH B + 00AD+D5 PUSH D + 00AE+E5 PUSH H + 00AF+CD0000 CALL XCRTCLR ; CALL ACTUAL ROUTINE IN TERMINAL.ASM + 00B2+E1 POP H + 00B3+D1 POP D + 00B4+C1 POP B + 00B5+F1 POP PSW + crtlc 1,1 + 00B6+F5 PUSH PSW + 00B7+C5 PUSH B + 00B8+D5 PUSH D + 00B9+E5 PUSH H + 00BA+2601 MVI H,1 ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 00BC+2E01 MVI L,1 ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 00BE+CD0000 CALL XCRTLC ; CALL ACTUAL ROUTINE IN TERMINAL.ASM + 00C1+E1 POP H + 00C2+D1 POP D + 00C3+C1 POP B + 00C4+F1 POP PSW + sbanner argv + 00C5+213000 LXI H,ARGV + 00C8+CD0000 CALL X$SBANNER + ; version wrnmsg,errmsg + + 00CB 3A8000 lda 80h + 00CE FE00 cpi 0 + 00D0 C21501 jnz no$usage + print crlf + 00D3+F5 PUSH PSW + 00D4+C5 PUSH B + 00D5+D5 PUSH D + 00D6+E5 PUSH H + 00D7+0E09 MVI C,PRINTSTR + 00D9+111A07 LXI D,CRLF + 00DC+CD0500 CALL BDOS + 00DF+E1 POP H + 00E0+D1 POP D + 00E1+C1 POP B + 00E2+F1 POP PSW + printf 'usage - findfile ' + 00E3+F5 PUSH PSW + 00E4+C5 PUSH B + 00E5+D5 PUSH D + 00E6+E5 PUSH H + 00E7+0E09 MVI C,PRINTSTR + 00E9+11F600 LXI D,??0002 + 00EC+CD0500 CALL BDOS + 00EF+E1 POP H + 00F0+D1 POP D + 00F1+C1 POP B + 00F2+F1 POP PSW + 00F3+C31201 JMP ??0001 + 00F6+7573616765??0002 DB 'usage - findfile ' + 0111+24 DB '$' + 0112 C38E04 jmp all$done + no$usage: + + + memcpy work$fcb,PRIFCB,32 + 0115+112207 LXI D,WORK$FCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 0118+215C00 LXI H,PRIFCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 011B+012000 LXI B,32 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 011E+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + + printf 'Finding: ' + 0121+F5 PUSH PSW + 0122+C5 PUSH B + 0123+D5 PUSH D + 0124+E5 PUSH H + 0125+0E09 MVI C,PRINTSTR + 0127+113401 LXI D,??0004 + 012A+CD0500 CALL BDOS + 012D+E1 POP H + 012E+D1 POP D + 012F+C1 POP B + 0130+F1 POP PSW + 0131+C33E01 JMP ??0003 + 0134+46696E6469??0004 DB 'Finding: ' + 013D+24 DB '$' + memcpy PRIFCB,work$fcb,16 + 013E+115C00 LXI D,PRIFCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 0141+212207 LXI H,WORK$FCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 0144+011000 LXI B,16 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 0147+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + + 014A 3E24 mvi a,'$' + 014C 326500 sta PRIFCB+9 + print PRIFCB+1 + 014F+F5 PUSH PSW + 0150+C5 PUSH B + 0151+D5 PUSH D + 0152+E5 PUSH H + 0153+0E09 MVI C,PRINTSTR + 0155+115D00 LXI D,PRIFCB+1 + 0158+CD0500 CALL BDOS + 015B+E1 POP H + 015C+D1 POP D + 015D+C1 POP B + 015E+F1 POP PSW + conout '.' + 015F+F5 PUSH PSW + 0160+C5 PUSH B + 0161+D5 PUSH D + 0162+E5 PUSH H + 0163+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 0165+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 0167+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 016A+E1 POP H + 016B+D1 POP D + 016C+C1 POP B + 016D+F1 POP PSW + memcpy PRIFCB,work$fcb,16 + 016E+115C00 LXI D,PRIFCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 0171+212207 LXI H,WORK$FCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 0174+011000 LXI B,16 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 0177+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + 017A 3E24 mvi a,'$' + 017C 326800 sta PRIFCB+12 + print PRIFCB+9 + 017F+F5 PUSH PSW + 0180+C5 PUSH B + 0181+D5 PUSH D + 0182+E5 PUSH H + 0183+0E09 MVI C,PRINTSTR + 0185+116500 LXI D,PRIFCB+9 + 0188+CD0500 CALL BDOS + 018B+E1 POP H + 018C+D1 POP D + 018D+C1 POP B + 018E+F1 POP PSW + print crlf + 018F+F5 PUSH PSW + 0190+C5 PUSH B + 0191+D5 PUSH D + 0192+E5 PUSH H + 0193+0E09 MVI C,PRINTSTR + 0195+111A07 LXI D,CRLF + 0198+CD0500 CALL BDOS + 019B+E1 POP H + 019C+D1 POP D + 019D+C1 POP B + 019E+F1 POP PSW + + ffhaslu + 019F+0E19 MVI C,RETCURR + 01A1+CD0500 CALL BDOS + 01A4+4F MOV C,A + 01A5+CD1BE6 CALL BISELDSK + 01A8+111000 LXI D,16 ; OFFSET TO END OF DPH + 01AB+19 DAD D ; CALC OFFSET OF 1ST SIGNATURE BYTE + 01AC+7E MOV A,M ; PICK UP FIRST SIG BYTE WHICH S/B 'L' + 01AD+FE4C CPI 'L' + 01AF+C2BE01 JNZ RET$FALSE ; IF IT WASN'T, INDICATE TO CALLER NO LU + 01B2+23 INX H ; BUMP PTR TO 2ND SIGNATURE BYTE + 01B3+7E MOV A,M ; PICK UP SECOND SIG BYTE WHICH S/B 'U' + 01B4+FE55 CPI 'U' + 01B6+C2BE01 JNZ RET$FALSE ; IF IT WASN'T, INDICATE TO CALLER NO LU + 01B9+3E01 MVI A,TRUE ; OTHERWISE INDICATE PRESENCE OF LU SUPPORT + 01BB+C3C001 JMP ??0006 ; FINISH UP MACRO + 01BE+3E00 MVI A,FALSE ; PREPARE NEGATIVE RESPONSE FOR CALLER + 01C0 FE01 cpi TRUE + 01C2 CAFD01 jz do$lu + memcpy PRIFCB,work$fcb,32 + 01C5+115C00 LXI D,PRIFCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 01C8+212207 LXI H,WORK$FCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 01CB+012000 LXI B,32 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 01CE+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + 01D1 0E0F mvi c,FOPEN + 01D3 115C00 lxi d,PRIFCB + 01D6 CD0500 call BDOS + 01D9 FEFF cpi 255 + 01DB C2E101 jnz single$true + 01DE C38E04 jmp all$done + single$true: + printf 'Found' + 01E1+F5 PUSH PSW + 01E2+C5 PUSH B + 01E3+D5 PUSH D + 01E4+E5 PUSH H + 01E5+0E09 MVI C,PRINTSTR + 01E7+11F401 LXI D,??0008 + 01EA+CD0500 CALL BDOS + 01ED+E1 POP H + 01EE+D1 POP D + 01EF+C1 POP B + 01F0+F1 POP PSW + 01F1+C3FA01 JMP ??0007 + 01F4+466F756E64??0008 DB 'Found' + 01F9+24 DB '$' + 01FA C38E04 jmp all$done + + do$lu: + ffgetlu + 01FD+0E19 MVI C,RETCURR + 01FF+CD0500 CALL BDOS + 0202+4F MOV C,A + 0203+CD1BE6 CALL BISELDSK + 0206+111200 LXI D,16+2 + 0209+19 DAD D + 020A+7E MOV A,M + 020B 322007 sta entry$lu + ; + ffnumlu + 020E+0E19 MVI C,RETCURR + 0210+CD0500 CALL BDOS + 0213+4F MOV C,A + 0214+CD1BE6 CALL BISELDSK + 0217+111400 LXI D,16+2+2 ; OFFSET TO END OF DPH + 021A+19 DAD D ; CALC OFFSET OF 1ST SIGNATURE BYTE + 021B+7E MOV A,M + 021C 321E07 sta lu$cnt + ; + 021F 6F mov l,a + 0220 2600 mvi h,0 + 0222 CD0000 call pr$d$word + printf ' Logical Units Detected' + 0225+F5 PUSH PSW + 0226+C5 PUSH B + 0227+D5 PUSH D + 0228+E5 PUSH H + 0229+0E09 MVI C,PRINTSTR + 022B+113802 LXI D,??0010 + 022E+CD0500 CALL BDOS + 0231+E1 POP H + 0232+D1 POP D + 0233+C1 POP B + 0234+F1 POP PSW + 0235+C35002 JMP ??0009 + 0238+204C6F6769??0010 DB ' Logical Units Detected' + 024F+24 DB '$' + print crlf + 0250+F5 PUSH PSW + 0251+C5 PUSH B + 0252+D5 PUSH D + 0253+E5 PUSH H + 0254+0E09 MVI C,PRINTSTR + 0256+111A07 LXI D,CRLF + 0259+CD0500 CALL BDOS + 025C+E1 POP H + 025D+D1 POP D + 025E+C1 POP B + 025F+F1 POP PSW + + 0260 3E00 mvi a,0 + 0262 321F07 sta lu$num + loop: + printf 'Scanning Logical Unit ' + 0265+F5 PUSH PSW + 0266+C5 PUSH B + 0267+D5 PUSH D + 0268+E5 PUSH H + 0269+0E09 MVI C,PRINTSTR + 026B+117802 LXI D,??0012 + 026E+CD0500 CALL BDOS + 0271+E1 POP H + 0272+D1 POP D + 0273+C1 POP B + 0274+F1 POP PSW + 0275+C38F02 JMP ??0011 + 0278+5363616E6E??0012 DB 'Scanning Logical Unit ' + 028E+24 DB '$' + 028F 3A1F07 lda lu$num + 0292 6F mov l,a + 0293 2600 mvi h,0 + 0295 CD0000 call pr$d$word + conout ' ' + 0298+F5 PUSH PSW + 0299+C5 PUSH B + 029A+D5 PUSH D + 029B+E5 PUSH H + 029C+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 029E+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 02A0+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 02A3+E1 POP H + 02A4+D1 POP D + 02A5+C1 POP B + 02A6+F1 POP PSW + + ; set the Logical Unit + 02A7 3A1F07 lda lu$num + ffsetlu + 02AA+F5 PUSH PSW + 02AB+C5 PUSH B + 02AC+D5 PUSH D + 02AD+E5 PUSH H + 02AE+F5 PUSH PSW + 02AF+0E19 MVI C,RETCURR + 02B1+CD0500 CALL BDOS + 02B4+4F MOV C,A + 02B5+CD1BE6 CALL BISELDSK ; USES C PARAMETER (DRIVE) + 02B8+111200 LXI D,16+2 + 02BB+19 DAD D + 02BC+F1 POP PSW + 02BD+77 MOV M,A ; PUT SLICE INTO CURRENT + 02BE+0E0D MVI C,13 + 02C0+CD0500 CALL BDOS + 02C3+E1 POP H + 02C4+D1 POP D + 02C5+C1 POP B + 02C6+F1 POP PSW + + ; test for the target file + memcpy PRIFCB,work$fcb,32 + 02C7+115C00 LXI D,PRIFCB ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 02CA+212207 LXI H,WORK$FCB ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 02CD+012000 LXI B,32 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 02D0+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + 02D3 0E0F mvi c,FOPEN + 02D5 115C00 lxi d,PRIFCB + 02D8 CD0500 call BDOS + 02DB 322107 sta retcode + + 02DE 3A2107 lda retcode + 02E1 FEFF cpi 255 + 02E3 CAFB03 jz not$yet + conout CR + 02E6+F5 PUSH PSW + 02E7+C5 PUSH B + 02E8+D5 PUSH D + 02E9+E5 PUSH H + 02EA+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 02EC+1E0D MVI E,CR ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 02EE+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 02F1+E1 POP H + 02F2+D1 POP D + 02F3+C1 POP B + 02F4+F1 POP PSW + prfilnam PRIFCB + 02F5+113003 LXI D,??0013 ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 02F8+215D00 LXI H,PRIFCB+1 ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 02FB+010800 LXI B,8 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 02FE+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + 0301+113903 LXI D,??0014 ; LOAD 1ST POSITIONAL PARAMETER INTO REG + 0304+216500 LXI H,PRIFCB+9 ; LOAD 2ND POSITIONAL PARAMETER INTO REG + 0307+010300 LXI B,3 ; LOAD 3RD POSITIONAL PARAMETER INTO REG + 030A+CD0000 CALL X$MEMCPY ; CALL ACTUAL ROUTINE IN SEE MEMORY.ASM + 030D+3A3903 LDA ??0014 + 0310+E67F ANI 07FH + 0312+323903 STA ??0014 + 0315+3A3A03 LDA ??0014+1 + 0318+E67F ANI 07FH + 031A+323A03 STA ??0014+1 + 031D+3A3B03 LDA ??0014+2 + 0320+E67F ANI 07FH + 0322+323B03 STA ??0014+2 + 0325+0E09 MVI C,9 + 0327+113003 LXI D,??0013 + 032A+CD0500 CALL BDOS + 032D+C33E03 JMP ??0015 + 0330+0000000000??0013 DB 0,0,0,0,0,0,0,0 + 0338+2E DB '.' + 0339+0000002024??0014 DB 0,0,0,' $' + printf ' ' + 033E+F5 PUSH PSW + 033F+C5 PUSH B + 0340+D5 PUSH D + 0341+E5 PUSH H + 0342+0E09 MVI C,PRINTSTR + 0344+115103 LXI D,??0017 + 0347+CD0500 CALL BDOS + 034A+E1 POP H + 034B+D1 POP D + 034C+C1 POP B + 034D+F1 POP PSW + 034E+C35303 JMP ??0016 + 0351+20 ??0017 DB ' ' + 0352+24 DB '$' + printf 'Found on Logical Unit ' + 0353+F5 PUSH PSW + 0354+C5 PUSH B + 0355+D5 PUSH D + 0356+E5 PUSH H + 0357+0E09 MVI C,PRINTSTR + 0359+116603 LXI D,??0019 + 035C+CD0500 CALL BDOS + 035F+E1 POP H + 0360+D1 POP D + 0361+C1 POP B + 0362+F1 POP PSW + 0363+C37D03 JMP ??0018 + 0366+466F756E64??0019 DB 'Found on Logical Unit ' + 037C+24 DB '$' + 037D 3A1F07 lda lu$num + 0380 6F mov l,a + 0381 2600 mvi h,0 + 0383 CD0000 call pr$d$word + conout ',' + 0386+F5 PUSH PSW + 0387+C5 PUSH B + 0388+D5 PUSH D + 0389+E5 PUSH H + 038A+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 038C+1E2C MVI E,',' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 038E+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 0391+E1 POP H + 0392+D1 POP D + 0393+C1 POP B + 0394+F1 POP PSW + conout '(' + 0395+F5 PUSH PSW + 0396+C5 PUSH B + 0397+D5 PUSH D + 0398+E5 PUSH H + 0399+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 039B+1E28 MVI E,'(' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 039D+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 03A0+E1 POP H + 03A1+D1 POP D + 03A2+C1 POP B + 03A3+F1 POP PSW + 03A4 3A1D07 lda drv$num + 03A7 4F mov c,a + 03A8 CD1BE6 call BISELDSK + 03AB 010000 lxi b,0 + 03AE CD1EE6 call BISETTRK + 03B1 010B00 lxi b,11 + 03B4 CD21E6 call BISETSEC + 03B7 016207 lxi b,buffer + 03BA CD24E6 call BISETDMA + 03BD CD27E6 call BIREAD + + 03C0 3E24 mvi a,'$' + 03C2 32D907 sta buffer+128-8-1 + print buffer+128-8-1-16 + 03C5+F5 PUSH PSW + 03C6+C5 PUSH B + 03C7+D5 PUSH D + 03C8+E5 PUSH H + 03C9+0E09 MVI C,PRINTSTR + 03CB+11C907 LXI D,BUFFER+128-8-1-16 + 03CE+CD0500 CALL BDOS + 03D1+E1 POP H + 03D2+D1 POP D + 03D3+C1 POP B + 03D4+F1 POP PSW + conout ')' + 03D5+F5 PUSH PSW + 03D6+C5 PUSH B + 03D7+D5 PUSH D + 03D8+E5 PUSH H + 03D9+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 03DB+1E29 MVI E,')' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 03DD+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 03E0+E1 POP H + 03E1+D1 POP D + 03E2+C1 POP B + 03E3+F1 POP PSW + + 03E4 0E10 mvi c,FCLOSE + 03E6 115C00 lxi d,PRIFCB + 03E9 CD0500 call BDOS + conout LF + 03EC+F5 PUSH PSW + 03ED+C5 PUSH B + 03EE+D5 PUSH D + 03EF+E5 PUSH H + 03F0+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 03F2+1E0A MVI E,LF ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 03F4+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 03F7+E1 POP H + 03F8+D1 POP D + 03F9+C1 POP B + 03FA+F1 POP PSW + not$yet: + conout CR + 03FB+F5 PUSH PSW + 03FC+C5 PUSH B + 03FD+D5 PUSH D + 03FE+E5 PUSH H + 03FF+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 0401+1E0D MVI E,CR ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 0403+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 0406+E1 POP H + 0407+D1 POP D + 0408+C1 POP B + 0409+F1 POP PSW + + ; Check for key hit interrupt scan + 040A 0E0B mvi c,11 ; get console status + 040C CD0500 caLL BDOS + 040F FE00 cpi 0 + 0411 CA1704 jz nyok ; jump if no key hit + 0414 C34D04 jmp abort ; gracefully exit loop + nyok: + + + 0417 3A1F07 lda lu$num + 041A 3C inr a + 041B 321F07 sta lu$num + ; + 041E 3A1E07 lda lu$cnt + 0421 3D dcr a + 0422 321E07 sta lu$cnt + 0425 FE00 cpi 0 + 0427 C26502 jnz loop + + printf ' ' + 042A+F5 PUSH PSW + 042B+C5 PUSH B + 042C+D5 PUSH D + 042D+E5 PUSH H + 042E+0E09 MVI C,PRINTSTR + 0430+113D04 LXI D,??0021 + 0433+CD0500 CALL BDOS + 0436+E1 POP H + 0437+D1 POP D + 0438+C1 POP B + 0439+F1 POP PSW + 043A+C34D04 JMP ??0020 + 043D+2020202020??0021 DB ' ' + 044C+24 DB '$' + + abort: conout cr + 044D+F5 PUSH PSW + 044E+C5 PUSH B + 044F+D5 PUSH D + 0450+E5 PUSH H + 0451+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL + 0453+1E0D MVI E,CR ; PLACE OUTPUT CHARACTER IN E AS REQUIRED + 0455+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT + 0458+E1 POP H + 0459+D1 POP D + 045A+C1 POP B + 045B+F1 POP PSW + printf 'Scan Completed ' + 045C+F5 PUSH PSW + 045D+C5 PUSH B + 045E+D5 PUSH D + 045F+E5 PUSH H + 0460+0E09 MVI C,PRINTSTR + 0462+116F04 LXI D,??0023 + 0465+CD0500 CALL BDOS + 0468+E1 POP H + 0469+D1 POP D + 046A+C1 POP B + 046B+F1 POP PSW + 046C+C38E04 JMP ??0022 + 046F+5363616E20??0023 DB 'Scan Completed ' + 048D+24 DB '$' + + all$done: + 048E 3A2007 lda entry$lu + ffsetlu + 0491+F5 PUSH PSW + 0492+C5 PUSH B + 0493+D5 PUSH D + 0494+E5 PUSH H + 0495+F5 PUSH PSW + 0496+0E19 MVI C,RETCURR + 0498+CD0500 CALL BDOS + 049B+4F MOV C,A + 049C+CD1BE6 CALL BISELDSK ; USES C PARAMETER (DRIVE) + 049F+111200 LXI D,16+2 + 04A2+19 DAD D + 04A3+F1 POP PSW + 04A4+77 MOV M,A ; PUT SLICE INTO CURRENT + 04A5+0E0D MVI C,13 + 04A7+CD0500 CALL BDOS + 04AA+E1 POP H + 04AB+D1 POP D + 04AC+C1 POP B + 04AD+F1 POP PSW + + 04AE 0E25 mvi c,RESET$DRIVE ; call to logout drive + 04B0 11FF00 lxi d,0ffh + 04B3 CD0500 call BDOS + + do$end + 04B6+2A2000 LHLD PRE$STK + 04B9+F9 SPHL + 04BA+0E0D MVI C,13 + 04BC+CD0500 CALL BDOS + 04BF+C9 RET + 04C0+ DS STACK$SIZE + + + 06C0 4279207468wrnmsg db 'By the way, this program is newer than the BIOS$' + + 06F0 536F727279errmsg db 'Sorry, this program requires a newer BIOS$' + + 071A 0D0A crlf db CR,LF + 071C 24 term db '$' + + 071D drv$num ds 1 ; drive code of current drive + 071E lu$cnt ds 1 ; number of slices on drive + 071F lu$num ds 1 ; slice index + 0720 entry$lu ds 1 + 0721 retcode ds 1 + + 0722 work$fcb ds 64 + 0762 buffer ds 80h + + + 07E2 end start + \ No newline at end of file diff --git a/Apps/crossdev/FINDFILE.REL b/Apps/crossdev/FINDFILE.REL new file mode 100644 index 0000000000000000000000000000000000000000..3fe5818e8e9283eeaf317312733ddfec6e7a4658 GIT binary patch literal 1920 zcmc&z`%@EF6h6BNWO>B|QHea2#!j`*rI)HNTg9w z0u2^ZD*-7lv5l=A(XnF)h%^N!SaGyvY*e%}4nO#4XKaUYx`~O7?H|zl%iaCXz2|=C zeBasE(xfzBEp)34Mf-Tl%6W^KIg4WhGSk=QWa-uxM0{3gRhlyv7hz-|vp`A)a`JM? z0FzN%nr_Z$iDyYN=j9YE3y@~WGjq)VIkmbQS|gMSS)n8P0^5`(1veR0(uBz7bOaFt zBl4s3v@W2puVR1!AlldqFyf{_ivO31=cZ@Fr49}PT1{=^d(KhbtpTnPtIp#ZAJ%(!+CK{7|&5kD1?z= zqbeyrx??GeDKkhaU20Keh=MCLxi&~Srh2ZBxK^1F6*elBpPbisPfY-Q{=tAde{TMM zW4{X!$3*FcP5s3u&DqETSZ@W&zK+3KV--OW0mR@i$4v=7K>Sd0YF&JCIP-*f#ufka zN^}tRTWMfr1l+E)Z4#vN(A_Dm+4l?Jj94xDqM^P#)8@ouS%>&T2?LJpNsWev)zKKU zQ+y}f4JZyP#6a^fqM=feE5H%}$r}U<4$|A8=@9=eyK`zw3`W(FN7pEHb~aE}HWG~n zJvSbCaB1r~iQTkc3*#sey>x!arRNC#@SHD+F?|3SS8)v{hVfqD-o{5=u=n(auk$rL zP6hd{l@^jw_sEBEWxAWzd~ex$y}%U@$H&9Y)v*Cov(Na;Pd&sMW}hY6$o(lgGyq&T zJLk5qKealnVPYp6mkn}NYEod|qWQMsn+s`gfkB88op#vTdf8nLSdr zDvIoRGSOPS!ji3?TT1lp5PeBSC6kM2tM(J2zsRT_yI9?fTCuO^!@K2!w@BNxJfMeu zC$^#=h*sXm3}QiO$P5TVu+Gk6yK}`;mmjsHP+|(LtAw)^xx{7V zOxV~btU}vz4Ud}*9wF&%2tkgPcZCq-Mkt<>SIByFBvr5WWs}Q=(ByN{AvML%c<39e zs(jD2DHS7X+<}%|xKbr-&8b6s2d-)vK{VxuUO~3m=1v}%tkDya+vPrS7kG^fdPlu) z8n}I_bdS1r1|XK$T_7RnWZxLlFP@p;9<{{nnq$x}`Ihb{Hm&y)d#(_cmf&YZ$Ea@; zo*DBi5bgZaWr zU3C~0MSu|F4F8AELDbm5SBdes?+lU>dZ)!UqhWijgJJ3?RrVVdsjTd}SF?E1NhWcx z?bh`qCz14mW?a9va>5~SQ=CTgl6e;M6T)MSJ`=ntv0o?4{qcyK!f51B+O1A}b!#4H z5OKMxQjByOch9luvX#cLI3Y6Nd_U=!fwo3sn8H&RhIXJ#-tofli1FXKP17YL;yGiV zu3mAhfj@zaI(Md8a%F|Bgacp2%DrD`A`F>v=3&B>-@GAh&eBD+BPPmE3dy}r@#E|G zo@z##Hk88S^e1pm$kXkKSsY7NnpTN+b|mn>l4lSk(7aWv-RJ=ld*m|k038OciUj!G z-Ex`d1Sfb*yA9=a2zuoTNUCd2v~+CL8qs#niOz0W89c6Q=A7SaE(J<_0*@`|lY!@u z^f@G8sS?Z) X@H@KNd%V!r#H|*=G{EtN|Ks`xWeEEMbj literal 0 HcmV?d00001 diff --git a/Apps/crossdev/IDENTITY.PRN b/Apps/crossdev/IDENTITY.PRN new file mode 100644 index 00000000..dfe166e4 --- /dev/null +++ b/Apps/crossdev/IDENTITY.PRN @@ -0,0 +1,419 @@ + ; 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 + \ No newline at end of file diff --git a/Apps/crossdev/IDENTITY.REL b/Apps/crossdev/IDENTITY.REL new file mode 100644 index 0000000000000000000000000000000000000000..b451b042361d460a5bf24228a7859428a7a2f1b9 GIT binary patch literal 896 zcmZpjA~Gp>s$fED%M_Q8r=AWBELXnpxVkzt9{3n4%2c}9VFCN+zpXJ2j0YNeC7DD6 z0~DoA7#QTa*+N=4WSD_`g$@-4NsdbjYPr%3@|SU2mV zuSr{D7Ci89Thm|+G>_Z0>0{!x1B?t?q7;;+eA@yUE$)>F2=+b?E}Y= zGc+GMmLbCMFk?fUewcRXDLzK_79OB?4_!>y<78&QA;Sp_4}PdjYY$W=ZcW(gDKbp_ z9FhwHm|GVetZ2!ZAYdVMmZ?DwD#Hzv*&DGoT*HDzP5>4|95(_K3RHn1V+)lLgUM8F zj9M2^z+s~Ri(adp2mBu@bG0(Ulp+kdeL+o@mx<$M0>mu-2A-K2J4Ci5a77uh>MAl# zo5<+x>9BOk0XOB9GtQ)1a=R{mnb{z+C1<&EAU4og=x1YHf#%sL>lHHRx|2di#8)3gnZ-Vq0uu2~Rttw1vysACOR z)Gb!sDyC_N8oiSlmTqzgx|yJv8z8dXf-8C+tFAt?9JlK-i0v8-3>N|>Surq96ABaz zo~o?+Kr+!()RfoB04O9J7#wmjSv$ef(Ni$i)(a>E%sB$nLX{a9Bpp2!fkFig4D+N& F1pw*zI~)K2 literal 0 HcmV?d00001 diff --git a/Apps/crossdev/LABELIB.PRN b/Apps/crossdev/LABELIB.PRN new file mode 100644 index 00000000..2545fef4 --- /dev/null +++ b/Apps/crossdev/LABELIB.PRN @@ -0,0 +1,351 @@ + ; labelib.asm 2/22/2012 dwg - label library function implementation + ; label.asm 2/11/2012 dwg - make ident compliant + ; label.asm 2/11/2012 dwg - begin 1.6 enhancements + ; label.asm 2/04/2012 dwg - use new macros for benefits + ; label.asm 1/20/2012 dwg - label a drive or slice + + ; + ; Copyright (C) 2011-2012 Douglas Goodall Licensed under GPL Ver 3. + ; + ; This file is part of NuBiosDWG and is free software: you can + ; redistribute it and/or modify it under the terms of the GNU + ; General Public License as published by the Free Software Foundation, + ; either version 3 of the License, or (at your option) any later version. + ; This file is distributed in the hope that it will be useful, + ; but WITHOUT ANY WARRANTY; without even the implied warranty of + ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ; GNU General Public License for more details. + ; You should have received a copy of the GNU General Public License + ; along with it. If not, see . + ; + + + maclib portab + maclib globals + maclib cpmbios + maclib cpmbdos + maclib bioshdr + maclib hardware + maclib z80 + maclib memory + ; maclib applvers + ; maclib cpmappl + maclib printers + maclib metadata + ; maclib banner + maclib stdlib + ; maclib ffhaslu + ; maclib identity + + + + cseg + + public x$label + x$label: + 0000 79 mov a,c + 0001 323E01 sta drive$num + + get$off + 0004+F5 PUSH PSW + 0005+C5 PUSH B + 0006+D5 PUSH D + 0007+CD1BE6 CALL BISELDSK + 000A+110A00 LXI D,DPB$OFS + 000D+19 DAD D + 000E+5E MOV E,M + 000F+23 INX H + 0010+56 MOV D,M + 0011+EB XCHG + 0012+110D00 LXI D,OFF$OFS + 0015+19 DAD D + 0016+5E MOV E,M + 0017+23 INX H + 0018+56 MOV D,M + 0019+EB XCHG + 001A+D1 POP D + 001B+C1 POP B + 001C+F1 POP PSW + 001D 7C mov a,h + 001E B5 ora l + 001F C26E00 jnz off$ok + printf 'Sorry, you can only label drives with reserved tracks' + 0022+F5 PUSH PSW + 0023+C5 PUSH B + 0024+D5 PUSH D + 0025+E5 PUSH H + 0026+0E09 MVI C,PRINTSTR + 0028+113500 LXI D,??0002 + 002B+CD0500 CALL BDOS + 002E+E1 POP H + 002F+D1 POP D + 0030+C1 POP B + 0031+F1 POP PSW + 0032+C36B00 JMP ??0001 + 0035+536F727279??0002 DB 'Sorry, you can only label drives with reserved tracks' + 006A+24 DB '$' + 006B C3A901 jmp main$exit + off$ok: + + 006E 3A3E01 lda drive$num + 0071 4F mov c,a + 0072 215101 lxi h,buffer + 0075 CD0000 call x$g$meta + + 0078 3A80004F lda DEFBUF ! mov c,a + 007C FE00C2FA00 cpi 0 ! jnz x$lab2 + + ; ; Interactive label functionality here... + + prompt: + ; signature exists so label should be displayable + + print old$lbl + 0081+F5 PUSH PSW + 0082+C5 PUSH B + 0083+D5 PUSH D + 0084+E5 PUSH H + 0085+0E09 MVI C,PRINTSTR + 0087+11DE00 LXI D,OLD$LBL + 008A+CD0500 CALL BDOS + 008D+E1 POP H + 008E+D1 POP D + 008F+C1 POP B + 0090+F1 POP PSW + + ; print label + 0091 215101 lxi h,buffer + 0094 116700 lxi d,meta$label + 0097 19 dad d + 0098 E5 push h + 0099 D1 pop d + 009A 0E09 mvi c,PRINTSTR + 009C CD0500 call BDOS + + print crlf + 009F+F5 PUSH PSW + 00A0+C5 PUSH B + 00A1+D5 PUSH D + 00A2+E5 PUSH H + 00A3+0E09 MVI C,PRINTSTR + 00A5+113B01 LXI D,CRLF + 00A8+CD0500 CALL BDOS + 00AB+E1 POP H + 00AC+D1 POP D + 00AD+C1 POP B + 00AE+F1 POP PSW + print new$lbl + 00AF+F5 PUSH PSW + 00B0+C5 PUSH B + 00B1+D5 PUSH D + 00B2+E5 PUSH H + 00B3+0E09 MVI C,PRINTSTR + 00B5+11EA00 LXI D,NEW$LBL + 00B8+CD0500 CALL BDOS + 00BB+E1 POP H + 00BC+D1 POP D + 00BD+C1 POP B + 00BE+F1 POP PSW + + 00BF 0E0A mvi c,READ$CON$BUF + 00C1 113F01 lxi d,rcbuff + 00C4 CD0500 call BDOS + 00C7 3A4001 lda rclen + 00CA FE00 cpi 0 + 00CC C2D200 jnz length$ok + 00CF C3A901 jmp main$exit + length$ok: + 00D2 3C inr a + 00D3 328000 sta DEFBUF + 00D6 3E20 mvi a,' ' + 00D8 328100 sta DEFBUF+1 + 00DB 4F mov c,a + 00DC 0600 mvi b,0 + 00DE 214101 lxi h,rcdata + 00E1 118200 lxi d,DEFBUF+2 + ldir + 00E4+EDB0 DB 0EDH,0B0H + + print crlf + 00E6+F5 PUSH PSW + 00E7+C5 PUSH B + 00E8+D5 PUSH D + 00E9+E5 PUSH H + 00EA+0E09 MVI C,PRINTSTR + 00EC+113B01 LXI D,CRLF + 00EF+CD0500 CALL BDOS + 00F2+E1 POP H + 00F3+D1 POP D + 00F4+C1 POP B + 00F5+F1 POP PSW + + 00F6 3A3E01 lda drive$num + 00F9 4F mov c,a + ; fall through to code below + + + ;;; not$interactive: + + public x$lab2 + x$lab2: + ; This routine can be used interactively or non-interactively. + ; You can set up the default buffer at 80h and call x$lab2, + ; or you can call x$label and it will interactively redo the label. + ; + 00FA 79 mov a,c + 00FB 323E01 sta drive$num + + + 00FE 215101 lxi h,buffer + 0101 116700 lxi d,meta$label + 0104 19 dad d + 0105 3E20 mvi a,' ' + 0107 011000 lxi b,meta$label$len ; max length of label + 010A CD0000 call x$memset + + 010D 3A8000 lda DEFBUF ; pick up length of command tail + 0110 FE12 cpi 18 ; compare with max size of label + 0112 DA1A01 jc lenok ; jump if size is within limits + 0115 3E11 mvi a,17 ; specify maximum size + 0117 328000 sta DEFBUF ; and poke into default buffer size byte + + 011A 3A8000 lenok: lda DEFBUF ; pick up command tail size byte + 011D 3D dcr a ; decrement + + 011E 4F mov c,a ; move to c reg as counter + 011F 0600 mvi b,0 + + 0121 215101 lxi h,buffer + 0124 116700 lxi d,meta$label + 0127 19 dad d + 0128 EB xchg + 0129 218200 lxi h,DEFBUF+2 ; set source index for move + ldir + 012C+EDB0 DB 0EDH,0B0H + + 012E 215101 lxi h,buffer + 0131 117700 lxi d,meta$term + 0134 19 dad d + 0135 3E24 mvi a,'$' + 0137 77 mov m,a + + 0138 3A3E01 lda drive$num + 013B 4F mov c,a + + 013C 215101 lxi h,buffer + 013F CD0000 call x$u$meta + 0142 FE01 cpi FAILURE + 0144 CA6001 jz write$prot$err + + 0147 215101 lxi h,buffer + 014A CD0000 call x$p$meta + + print suc$msg + 014D+F5 PUSH PSW + 014E+C5 PUSH B + 014F+D5 PUSH D + 0150+E5 PUSH H + 0151+0E09 MVI C,PRINTSTR + 0153+110000 LXI D,SUC$MSG + 0156+CD0500 CALL BDOS + 0159+E1 POP H + 015A+D1 POP D + 015B+C1 POP B + 015C+F1 POP PSW + + 015D C3A901 jmp main$exit + + write$prot$err: + print wr$prot$msg + 0160+F5 PUSH PSW + 0161+C5 PUSH B + 0162+D5 PUSH D + 0163+E5 PUSH H + 0164+0E09 MVI C,PRINTSTR + 0166+115C00 LXI D,WR$PROT$MSG + 0169+CD0500 CALL BDOS + 016C+E1 POP H + 016D+D1 POP D + 016E+C1 POP B + 016F+F1 POP PSW + 0170 C3A901 jmp main$exit + + readerr: + print rd$err$msg + 0173+F5 PUSH PSW + 0174+C5 PUSH B + 0175+D5 PUSH D + 0176+E5 PUSH H + 0177+0E09 MVI C,PRINTSTR + 0179+111B00 LXI D,RD$ERR$MSG + 017C+CD0500 CALL BDOS + 017F+E1 POP H + 0180+D1 POP D + 0181+C1 POP B + 0182+F1 POP PSW + 0183 C3A901 jmp main$exit + + writeerr: + print wr$err$msg + 0186+F5 PUSH PSW + 0187+C5 PUSH B + 0188+D5 PUSH D + 0189+E5 PUSH H + 018A+0E09 MVI C,PRINTSTR + 018C+113B00 LXI D,WR$ERR$MSG + 018F+CD0500 CALL BDOS + 0192+E1 POP H + 0193+D1 POP D + 0194+C1 POP B + 0195+F1 POP PSW + 0196 C3A901 jmp main$exit + + dontboth: + print usage$msg + 0199+F5 PUSH PSW + 019A+C5 PUSH B + 019B+D5 PUSH D + 019C+E5 PUSH H + 019D+0E09 MVI C,PRINTSTR + 019F+117F00 LXI D,USAGE$MSG + 01A2+CD0500 CALL BDOS + 01A5+E1 POP H + 01A6+D1 POP D + 01A7+C1 POP B + 01A8+F1 POP PSW + + main$exit: + 01A9 C9 ret + + dseg + + 0000 4C6162656Csuc$msg db 'Label Written Successfully$' + 001B 536F727279rd$err$msg db 'Sorry, cannot read label sector$' + 003B 536F727279wr$err$msg db 'Sorry, cannot write label sector$' + 005C 536F727279wr$prot$msg db 'Sorry, metadata is write protected$' + 007F 7573616765usage$msg db 'usage - label