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 fc71ba44..9d26fdc1 100644
Binary files a/Apps/core/access.com and b/Apps/core/access.com differ
diff --git a/Apps/core/cpmname.com b/Apps/core/cpmname.com
index 665804f6..788096ad 100644
Binary files a/Apps/core/cpmname.com and b/Apps/core/cpmname.com differ
diff --git a/Apps/core/findfile.com b/Apps/core/findfile.com
index 1e0416ab..dbf33a1a 100644
Binary files a/Apps/core/findfile.com and b/Apps/core/findfile.com differ
diff --git a/Apps/core/map.com b/Apps/core/map.com
index 4efc2a81..c14a894b 100644
Binary files a/Apps/core/map.com and b/Apps/core/map.com differ
diff --git a/Apps/core/meta.com b/Apps/core/meta.com
index 17690542..07746a1e 100644
Binary files a/Apps/core/meta.com and b/Apps/core/meta.com differ
diff --git a/Apps/core/multifmt.com b/Apps/core/multifmt.com
index 8102760a..c7e482dd 100644
Binary files a/Apps/core/multifmt.com and b/Apps/core/multifmt.com differ
diff --git a/Apps/core/setlabel.com b/Apps/core/setlabel.com
index 7b53f016..579d7ff0 100644
Binary files a/Apps/core/setlabel.com and b/Apps/core/setlabel.com differ
diff --git a/Apps/core/sysgen.com b/Apps/core/sysgen.com
index 11536f4b..2f7cc788 100644
Binary files a/Apps/core/sysgen.com and b/Apps/core/sysgen.com differ
diff --git a/Apps/core/termtype.com b/Apps/core/termtype.com
index c01dcdb8..bd32e2a6 100644
Binary files a/Apps/core/termtype.com and b/Apps/core/termtype.com differ
diff --git a/Apps/core/view.com b/Apps/core/view.com
index 11ff9af7..e1a6d28b 100644
Binary files a/Apps/core/view.com and b/Apps/core/view.com differ
diff --git a/Apps/crossdev/ACCESS.CPM b/Apps/crossdev/ACCESS.CPM
new file mode 100644
index 00000000..9d26fdc1
Binary files /dev/null and b/Apps/crossdev/ACCESS.CPM differ
diff --git a/Apps/crossdev/ACCESS.PRN b/Apps/crossdev/ACCESS.PRN
new file mode 100644
index 00000000..90a16852
--- /dev/null
+++ b/Apps/crossdev/ACCESS.PRN
@@ -0,0 +1,248 @@
+ ; access.asm 7/19/2012 dwg - for 2.0.0.0 B22
+ ; access.com 2/17/2012 dwg - review for release 1.5.1.0
+ ; access.asm 2/11/2012 dwg - make ident compliant
+ ; access.com 2/07/2012 dwg - review for release 1.5
+ ; access.com 2/05/2012 dwg - adjust for new macros
+ ; access.asm 1/30/2012 dwg - use new do$start and do$end macros
+ ; access.asm 1/28/2012 dwg - assure file exists from within submit file
+
+ ; 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 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 00000000..c689f5ae
Binary files /dev/null and b/Apps/crossdev/ACCESS.REL differ
diff --git a/Apps/crossdev/APPLVERS.H b/Apps/crossdev/APPLVERS.H
index d40ca1e0..a963a80c 100644
--- a/Apps/crossdev/APPLVERS.H
+++ b/Apps/crossdev/APPLVERS.H
@@ -1,14 +1,14 @@
/************************************/
-/* applvers.h dwg - 2.2.0.3 Beta */
+/* applvers.h dwg - 2.5.0.1 Beta */
/************************************/
#define A_RMJ 2
#define A_RMN 5
#define A_RUP 0
-#define A_RTP 0
+#define A_RTP 1
#define A_MONTH 3
-#define A_DAY 18
+#define A_DAY 31
#define A_YEAR 2013
#define A_YR 13
@@ -17,4 +17,3 @@
/********************/
-
diff --git a/Apps/crossdev/APPLVERS.LIB b/Apps/crossdev/APPLVERS.LIB
index f20a6db1..70f47566 100644
--- a/Apps/crossdev/APPLVERS.LIB
+++ b/Apps/crossdev/APPLVERS.LIB
@@ -1,16 +1,16 @@
-; applvers.lib 2/29/2012 dwg - For RomWBW 2.1.1 Release
+; applvers.lib 3/31/2012 dwg - For RomWBW 2.5.0.1 Release
A$RMJ equ 2
-A$RMN equ 2
+A$RMN equ 5
A$RUP equ 0
-A$RTP equ 0
+A$RTP equ 1
-A$MONTH equ 2
-A$DAY equ 15
+A$MONTH equ 3
+A$DAY equ 31
A$YEAR equ 2013
date macro
-dat db ' 2/15/2013$'
+dat db ' 3/31/2013$'
endm
serial macro
diff --git a/Apps/crossdev/ASMIFACE.O b/Apps/crossdev/ASMIFACE.O
new file mode 100644
index 00000000..fa0de31b
Binary files /dev/null and b/Apps/crossdev/ASMIFACE.O differ
diff --git a/Apps/crossdev/BANNER.PRN b/Apps/crossdev/BANNER.PRN
new file mode 100644
index 00000000..488b7628
--- /dev/null
+++ b/Apps/crossdev/BANNER.PRN
@@ -0,0 +1,587 @@
+ ; banner.asm 9/5/2012 dwg - new version semantics - #.#.# (#)
+
+ maclib portab
+ maclib globals
+ maclib cpmbios
+ maclib cpmbdos
+ maclib bioshdr
+ maclib printers
+ maclib cpmappl
+ maclib applvers
+
+ cseg
+
+
+ ; entered with argv in hl
+ public x$banner
+ x$banner:
+ 0000 221E04 shld argv
+ 0003 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg
+ 000C 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg
+ 0015 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg
+ 001E 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg
+ 0027 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg
+ 0030 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg
+
+
+ printf '----------------------------------------'
+ 0039+F5 PUSH PSW
+ 003A+C5 PUSH B
+ 003B+D5 PUSH D
+ 003C+E5 PUSH H
+ 003D+0E09 MVI C,PRINTSTR
+ 003F+114C00 LXI D,??0002
+ 0042+CD0500 CALL BDOS
+ 0045+E1 POP H
+ 0046+D1 POP D
+ 0047+C1 POP B
+ 0048+F1 POP PSW
+ 0049+C37500 JMP ??0001
+ 004C+2D2D2D2D2D??0002 DB '----------------------------------------'
+ 0074+24 DB '$'
+ print crlf
+ 0075+F5 PUSH PSW
+ 0076+C5 PUSH B
+ 0077+D5 PUSH D
+ 0078+E5 PUSH H
+ 0079+0E09 MVI C,PRINTSTR
+ 007B+112C04 LXI D,CRLF
+ 007E+CD0500 CALL BDOS
+ 0081+E1 POP H
+ 0082+D1 POP D
+ 0083+C1 POP B
+ 0084+F1 POP PSW
+ 0085 2A2004EB0E lhld xprog ! xchg ! mvi c,9 ! call BDOS
+ printf ' '
+ 008E+F5 PUSH PSW
+ 008F+C5 PUSH B
+ 0090+D5 PUSH D
+ 0091+E5 PUSH H
+ 0092+0E09 MVI C,PRINTSTR
+ 0094+11A100 LXI D,??0004
+ 0097+CD0500 CALL BDOS
+ 009A+E1 POP H
+ 009B+D1 POP D
+ 009C+C1 POP B
+ 009D+F1 POP PSW
+ 009E+C3A300 JMP ??0003
+ 00A1+20 ??0004 DB ' '
+ 00A2+24 DB '$'
+ IF A$MONTH LT 10
+ conout ' '
+ 00A3+F5 PUSH PSW
+ 00A4+C5 PUSH B
+ 00A5+D5 PUSH D
+ 00A6+E5 PUSH H
+ 00A7+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 00A9+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 00AB+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 00AE+E1 POP H
+ 00AF+D1 POP D
+ 00B0+C1 POP B
+ 00B1+F1 POP PSW
+ ENDIF
+ IF A$DAY LT 10
+ conout ' '
+ ENDIF
+ 00B2 210300 lxi h,A$MONTH
+ 00B5 CD0000 call pr$d$word
+ conout '/'
+ 00B8+F5 PUSH PSW
+ 00B9+C5 PUSH B
+ 00BA+D5 PUSH D
+ 00BB+E5 PUSH H
+ 00BC+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 00BE+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 00C0+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 00C3+E1 POP H
+ 00C4+D1 POP D
+ 00C5+C1 POP B
+ 00C6+F1 POP PSW
+ 00C7 211F00 lxi h,A$DAY
+ 00CA CD0000 call pr$d$word
+ conout '/'
+ 00CD+F5 PUSH PSW
+ 00CE+C5 PUSH B
+ 00CF+D5 PUSH D
+ 00D0+E5 PUSH H
+ 00D1+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 00D3+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 00D5+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 00D8+E1 POP H
+ 00D9+D1 POP D
+ 00DA+C1 POP B
+ 00DB+F1 POP PSW
+ 00DC 21DD07 lxi h,A$YEAR
+ 00DF CD0000 call pr$d$word
+ printf ' '
+ 00E2+F5 PUSH PSW
+ 00E3+C5 PUSH B
+ 00E4+D5 PUSH D
+ 00E5+E5 PUSH H
+ 00E6+0E09 MVI C,PRINTSTR
+ 00E8+11F500 LXI D,??0006
+ 00EB+CD0500 CALL BDOS
+ 00EE+E1 POP H
+ 00EF+D1 POP D
+ 00F0+C1 POP B
+ 00F1+F1 POP PSW
+ 00F2+C3F800 JMP ??0005
+ 00F5+2020 ??0006 DB ' '
+ 00F7+24 DB '$'
+ printf 'Version '
+ 00F8+F5 PUSH PSW
+ 00F9+C5 PUSH B
+ 00FA+D5 PUSH D
+ 00FB+E5 PUSH H
+ 00FC+0E09 MVI C,PRINTSTR
+ 00FE+110B01 LXI D,??0008
+ 0101+CD0500 CALL BDOS
+ 0104+E1 POP H
+ 0105+D1 POP D
+ 0106+C1 POP B
+ 0107+F1 POP PSW
+ 0108+C31401 JMP ??0007
+ 010B+5665727369??0008 DB 'Version '
+ 0113+24 DB '$'
+ 0114 210200 lxi h,A$RMJ
+ 0117 CD0000 call pr$d$word
+ conout '.'
+ 011A+F5 PUSH PSW
+ 011B+C5 PUSH B
+ 011C+D5 PUSH D
+ 011D+E5 PUSH H
+ 011E+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 0120+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 0122+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 0125+E1 POP H
+ 0126+D1 POP D
+ 0127+C1 POP B
+ 0128+F1 POP PSW
+ 0129 210500 lxi h,A$RMN
+ 012C CD0000 call pr$d$word
+ conout '.'
+ 012F+F5 PUSH PSW
+ 0130+C5 PUSH B
+ 0131+D5 PUSH D
+ 0132+E5 PUSH H
+ 0133+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 0135+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 0137+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 013A+E1 POP H
+ 013B+D1 POP D
+ 013C+C1 POP B
+ 013D+F1 POP PSW
+ 013E 210000 lxi h,A$RUP
+ 0141 CD0000 call pr$d$word
+ printf ' ('
+ 0144+F5 PUSH PSW
+ 0145+C5 PUSH B
+ 0146+D5 PUSH D
+ 0147+E5 PUSH H
+ 0148+0E09 MVI C,PRINTSTR
+ 014A+115701 LXI D,??0010
+ 014D+CD0500 CALL BDOS
+ 0150+E1 POP H
+ 0151+D1 POP D
+ 0152+C1 POP B
+ 0153+F1 POP PSW
+ 0154+C35A01 JMP ??0009
+ 0157+2028 ??0010 DB ' ('
+ 0159+24 DB '$'
+ 015A 210100 lxi h,A$RTP
+ 015D CD0000 call pr$d$word
+ conout ')'
+ 0160+F5 PUSH PSW
+ 0161+C5 PUSH B
+ 0162+D5 PUSH D
+ 0163+E5 PUSH H
+ 0164+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 0166+1E29 MVI E,')' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 0168+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 016B+E1 POP H
+ 016C+D1 POP D
+ 016D+C1 POP B
+ 016E+F1 POP PSW
+ print crlf
+ 016F+F5 PUSH PSW
+ 0170+C5 PUSH B
+ 0171+D5 PUSH D
+ 0172+E5 PUSH H
+ 0173+0E09 MVI C,PRINTSTR
+ 0175+112C04 LXI D,CRLF
+ 0178+CD0500 CALL BDOS
+ 017B+E1 POP H
+ 017C+D1 POP D
+ 017D+C1 POP B
+ 017E+F1 POP PSW
+ printf 'S/N '
+ 017F+F5 PUSH PSW
+ 0180+C5 PUSH B
+ 0181+D5 PUSH D
+ 0182+E5 PUSH H
+ 0183+0E09 MVI C,PRINTSTR
+ 0185+119201 LXI D,??0012
+ 0188+CD0500 CALL BDOS
+ 018B+E1 POP H
+ 018C+D1 POP D
+ 018D+C1 POP B
+ 018E+F1 POP PSW
+ 018F+C39701 JMP ??0011
+ 0192+532F4E20 ??0012 DB 'S/N '
+ 0196+24 DB '$'
+
+ 0197 2A2404EB0E lhld xprod ! xchg ! mvi c,9 ! call BDOS
+
+ conout '-'
+ 01A0+F5 PUSH PSW
+ 01A1+C5 PUSH B
+ 01A2+D5 PUSH D
+ 01A3+E5 PUSH H
+ 01A4+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 01A6+1E2D MVI E,'-' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 01A8+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 01AB+E1 POP H
+ 01AC+D1 POP D
+ 01AD+C1 POP B
+ 01AE+F1 POP PSW
+
+ 01AF 2A2604EB0E lhld xorig ! xchg ! mvi c,9 ! call BDOS
+
+ 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+1E2D 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
+
+ ; print xser
+ 01C7 2A2804EB0E lhld xser ! xchg ! mvi c,9 ! call BDOS
+
+ printf ' '
+ 01D0+F5 PUSH PSW
+ 01D1+C5 PUSH B
+ 01D2+D5 PUSH D
+ 01D3+E5 PUSH H
+ 01D4+0E09 MVI C,PRINTSTR
+ 01D6+11E301 LXI D,??0014
+ 01D9+CD0500 CALL BDOS
+ 01DC+E1 POP H
+ 01DD+D1 POP D
+ 01DE+C1 POP B
+ 01DF+F1 POP PSW
+ 01E0+C3E501 JMP ??0013
+ 01E3+20 ??0014 DB ' '
+ 01E4+24 DB '$'
+ ; printf 'All Rights Reserved'
+ printf 'Licensed under GPL3'
+ 01E5+F5 PUSH PSW
+ 01E6+C5 PUSH B
+ 01E7+D5 PUSH D
+ 01E8+E5 PUSH H
+ 01E9+0E09 MVI C,PRINTSTR
+ 01EB+11F801 LXI D,??0016
+ 01EE+CD0500 CALL BDOS
+ 01F1+E1 POP H
+ 01F2+D1 POP D
+ 01F3+C1 POP B
+ 01F4+F1 POP PSW
+ 01F5+C30C02 JMP ??0015
+ 01F8+4C6963656E??0016 DB 'Licensed under GPL3'
+ 020B+24 DB '$'
+ print crlf
+ 020C+F5 PUSH PSW
+ 020D+C5 PUSH B
+ 020E+D5 PUSH D
+ 020F+E5 PUSH H
+ 0210+0E09 MVI C,PRINTSTR
+ 0212+112C04 LXI D,CRLF
+ 0215+CD0500 CALL BDOS
+ 0218+E1 POP H
+ 0219+D1 POP D
+ 021A+C1 POP B
+ 021B+F1 POP PSW
+ printf 'Copyright (C) 2011-12'
+ 021C+F5 PUSH PSW
+ 021D+C5 PUSH B
+ 021E+D5 PUSH D
+ 021F+E5 PUSH H
+ 0220+0E09 MVI C,PRINTSTR
+ 0222+112F02 LXI D,??0018
+ 0225+CD0500 CALL BDOS
+ 0228+E1 POP H
+ 0229+D1 POP D
+ 022A+C1 POP B
+ 022B+F1 POP PSW
+ 022C+C34502 JMP ??0017
+ 022F+436F707972??0018 DB 'Copyright (C) 2011-12'
+ 0244+24 DB '$'
+
+ 0245 2A2A04EB0E lhld xnam ! xchg ! mvi c,9 ! call BDOS
+
+ print crlf
+ 024E+F5 PUSH PSW
+ 024F+C5 PUSH B
+ 0250+D5 PUSH D
+ 0251+E5 PUSH H
+ 0252+0E09 MVI C,PRINTSTR
+ 0254+112C04 LXI D,CRLF
+ 0257+CD0500 CALL BDOS
+ 025A+E1 POP H
+ 025B+D1 POP D
+ 025C+C1 POP B
+ 025D+F1 POP PSW
+ printf '----------------------------------------'
+ 025E+F5 PUSH PSW
+ 025F+C5 PUSH B
+ 0260+D5 PUSH D
+ 0261+E5 PUSH H
+ 0262+0E09 MVI C,PRINTSTR
+ 0264+117102 LXI D,??0020
+ 0267+CD0500 CALL BDOS
+ 026A+E1 POP H
+ 026B+D1 POP D
+ 026C+C1 POP B
+ 026D+F1 POP PSW
+ 026E+C39A02 JMP ??0019
+ 0271+2D2D2D2D2D??0020 DB '----------------------------------------'
+ 0299+24 DB '$'
+ print crlf
+ 029A+F5 PUSH PSW
+ 029B+C5 PUSH B
+ 029C+D5 PUSH D
+ 029D+E5 PUSH H
+ 029E+0E09 MVI C,PRINTSTR
+ 02A0+112C04 LXI D,CRLF
+ 02A3+CD0500 CALL BDOS
+ 02A6+E1 POP H
+ 02A7+D1 POP D
+ 02A8+C1 POP B
+ 02A9+F1 POP PSW
+
+ 02AA C9 ret
+
+
+ ; entered with argv in hl
+ public x$sbanner
+ x$sbanner:
+ 02AB 221E04 shld argv
+ 02AE 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg
+ 02B7 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg
+ 02C0 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg
+ 02C9 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg
+ 02D2 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg
+ 02DB 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg
+
+
+ ; printf '----------------------------------------'
+ ; print crlf
+ 02E4 2A2004EB0E lhld xprog ! xchg ! mvi c,9 ! call BDOS
+ printf ' '
+ 02ED+F5 PUSH PSW
+ 02EE+C5 PUSH B
+ 02EF+D5 PUSH D
+ 02F0+E5 PUSH H
+ 02F1+0E09 MVI C,PRINTSTR
+ 02F3+110003 LXI D,??0022
+ 02F6+CD0500 CALL BDOS
+ 02F9+E1 POP H
+ 02FA+D1 POP D
+ 02FB+C1 POP B
+ 02FC+F1 POP PSW
+ 02FD+C30203 JMP ??0021
+ 0300+20 ??0022 DB ' '
+ 0301+24 DB '$'
+ IF A$MONTH LT 10
+ conout ' '
+ 0302+F5 PUSH PSW
+ 0303+C5 PUSH B
+ 0304+D5 PUSH D
+ 0305+E5 PUSH H
+ 0306+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 0308+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 030A+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 030D+E1 POP H
+ 030E+D1 POP D
+ 030F+C1 POP B
+ 0310+F1 POP PSW
+ ENDIF
+ IF A$DAY LT 10
+ conout ' '
+ ENDIF
+ 0311 210300 lxi h,A$MONTH
+ 0314 CD0000 call pr$d$word
+ conout '/'
+ 0317+F5 PUSH PSW
+ 0318+C5 PUSH B
+ 0319+D5 PUSH D
+ 031A+E5 PUSH H
+ 031B+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 031D+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 031F+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 0322+E1 POP H
+ 0323+D1 POP D
+ 0324+C1 POP B
+ 0325+F1 POP PSW
+ 0326 211F00 lxi h,A$DAY
+ 0329 CD0000 call pr$d$word
+ conout '/'
+ 032C+F5 PUSH PSW
+ 032D+C5 PUSH B
+ 032E+D5 PUSH D
+ 032F+E5 PUSH H
+ 0330+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 0332+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 0334+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 0337+E1 POP H
+ 0338+D1 POP D
+ 0339+C1 POP B
+ 033A+F1 POP PSW
+ 033B 21DD07 lxi h,A$YEAR
+ 033E CD0000 call pr$d$word
+ printf ' '
+ 0341+F5 PUSH PSW
+ 0342+C5 PUSH B
+ 0343+D5 PUSH D
+ 0344+E5 PUSH H
+ 0345+0E09 MVI C,PRINTSTR
+ 0347+115403 LXI D,??0024
+ 034A+CD0500 CALL BDOS
+ 034D+E1 POP H
+ 034E+D1 POP D
+ 034F+C1 POP B
+ 0350+F1 POP PSW
+ 0351+C35703 JMP ??0023
+ 0354+2020 ??0024 DB ' '
+ 0356+24 DB '$'
+ printf 'Vers. '
+ 0357+F5 PUSH PSW
+ 0358+C5 PUSH B
+ 0359+D5 PUSH D
+ 035A+E5 PUSH H
+ 035B+0E09 MVI C,PRINTSTR
+ 035D+116A03 LXI D,??0026
+ 0360+CD0500 CALL BDOS
+ 0363+E1 POP H
+ 0364+D1 POP D
+ 0365+C1 POP B
+ 0366+F1 POP PSW
+ 0367+C37103 JMP ??0025
+ 036A+566572732E??0026 DB 'Vers. '
+ 0370+24 DB '$'
+ 0371 210200 lxi h,A$RMJ
+ 0374 CD0000 call pr$d$word
+ conout '.'
+ 0377+F5 PUSH PSW
+ 0378+C5 PUSH B
+ 0379+D5 PUSH D
+ 037A+E5 PUSH H
+ 037B+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 037D+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 037F+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 0382+E1 POP H
+ 0383+D1 POP D
+ 0384+C1 POP B
+ 0385+F1 POP PSW
+ 0386 210500 lxi h,A$RMN
+ 0389 CD0000 call pr$d$word
+ conout '.'
+ 038C+F5 PUSH PSW
+ 038D+C5 PUSH B
+ 038E+D5 PUSH D
+ 038F+E5 PUSH H
+ 0390+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL
+ 0392+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED
+ 0394+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT
+ 0397+E1 POP H
+ 0398+D1 POP D
+ 0399+C1 POP B
+ 039A+F1 POP PSW
+ 039B 210000 lxi h,A$RUP
+ 039E CD0000 call pr$d$word
+ printf ' ( '
+ 03A1+F5 PUSH PSW
+ 03A2+C5 PUSH B
+ 03A3+D5 PUSH D
+ 03A4+E5 PUSH H
+ 03A5+0E09 MVI C,PRINTSTR
+ 03A7+11B403 LXI D,??0028
+ 03AA+CD0500 CALL BDOS
+ 03AD+E1 POP H
+ 03AE+D1 POP D
+ 03AF+C1 POP B
+ 03B0+F1 POP PSW
+ 03B1+C3B803 JMP ??0027
+ 03B4+202820 ??0028 DB ' ( '
+ 03B7+24 DB '$'
+ 03B8 210100 lxi h,A$RTP
+ 03BB CD0000 call pr$d$word
+ printf ') '
+ 03BE+F5 PUSH PSW
+ 03BF+C5 PUSH B
+ 03C0+D5 PUSH D
+ 03C1+E5 PUSH H
+ 03C2+0E09 MVI C,PRINTSTR
+ 03C4+11D103 LXI D,??0030
+ 03C7+CD0500 CALL BDOS
+ 03CA+E1 POP H
+ 03CB+D1 POP D
+ 03CC+C1 POP B
+ 03CD+F1 POP PSW
+ 03CE+C3D403 JMP ??0029
+ 03D1+2920 ??0030 DB ') '
+ 03D3+24 DB '$'
+ printf 'COPR Douglas Goodall Licensed w/GPLv3'
+ 03D4+F5 PUSH PSW
+ 03D5+C5 PUSH B
+ 03D6+D5 PUSH D
+ 03D7+E5 PUSH H
+ 03D8+0E09 MVI C,PRINTSTR
+ 03DA+11E703 LXI D,??0032
+ 03DD+CD0500 CALL BDOS
+ 03E0+E1 POP H
+ 03E1+D1 POP D
+ 03E2+C1 POP B
+ 03E3+F1 POP PSW
+ 03E4+C30D04 JMP ??0031
+ 03E7+434F505220??0032 DB 'COPR Douglas Goodall Licensed w/GPLv3'
+ 040C+24 DB '$'
+
+
+ print crlf
+ 040D+F5 PUSH PSW
+ 040E+C5 PUSH B
+ 040F+D5 PUSH D
+ 0410+E5 PUSH H
+ 0411+0E09 MVI C,PRINTSTR
+ 0413+112C04 LXI D,CRLF
+ 0416+CD0500 CALL BDOS
+ 0419+E1 POP H
+ 041A+D1 POP D
+ 041B+C1 POP B
+ 041C+F1 POP PSW
+
+ 041D C9 ret
+
+
+ ;----------------------------------------------------------------
+
+ 041E argv ds 2
+ ;----------------
+ 0420 xprog ds 2
+ 0422 xvers ds 2
+ 0424 xprod ds 2
+ 0426 xorig ds 2
+ 0428 xser ds 2
+ 042A xnam ds 2
+
+ 042C 0D0A24 crlf db CR,LF,'$'
+
+ 042F end
+
\ No newline at end of file
diff --git a/Apps/crossdev/BANNER.REL b/Apps/crossdev/BANNER.REL
new file mode 100644
index 00000000..2c35feb0
Binary files /dev/null and b/Apps/crossdev/BANNER.REL differ
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 00000000..ce37563d
Binary files /dev/null and b/Apps/crossdev/BDOSCALL.O differ
diff --git a/Apps/crossdev/BIOSCALL.O b/Apps/crossdev/BIOSCALL.O
new file mode 100644
index 00000000..9a6a9fba
Binary files /dev/null and b/Apps/crossdev/BIOSCALL.O differ
diff --git a/Apps/crossdev/CBANNER.ASM b/Apps/crossdev/CBANNER.ASM
new file mode 100644
index 00000000..48ac451b
--- /dev/null
+++ b/Apps/crossdev/CBANNER.ASM
@@ -0,0 +1,208 @@
+ extrn .begin,.chl,.swt
+ extrn csave,cret,.move
+ DSEG
+ public lines_
+lines_:
+ DW .1+0
+ CSEG
+.1:
+ DB 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
+ DB 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
+ DB 45,45,45,45,45,45,45,45,45,45,0
+ DSEG
+ public line1_
+line1_:
+ DW .2+0
+ CSEG
+.2:
+ DB 49,50,51,52,53,54,55,56,46,49,50,51,32,109,109
+ DB 47,100,100,47,121,121,121,121,32,32,86,101,114,115,105
+ DB 111,110,32,120,46,120,46,120,46,120,0
+ DSEG
+ public line2_
+line2_:
+ DW .3+0
+ CSEG
+.3:
+ DB 83,47,78,32,67,80,77,56,48,45,68,87,71,45,54
+ DB 53,52,51,50,49,32,76,105,99,101,110,115,101,100,32
+ DB 117,110,100,101,114,32,71,80,76,51,0
+ DSEG
+ public line3_
+line3_:
+ DW .4+0
+ CSEG
+.4:
+ DB 67,111,112,121,114,105,103,104,116,32,40,67,41,32,50
+ DB 48,49,49,45,49,50,32,68,111,117,103,108,97,115,32
+ DB 87,46,32,71,111,111,100,97,108,108,0
+ PUBLIC sbanner_
+sbanner_: lxi d,.6
+ call csave
+ LXI H,8-.6
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,.5+0
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,2013
+ PUSH H
+ LXI H,31
+ PUSH H
+ LXI H,3
+ PUSH H
+ LXI H,.5+4
+ PUSH H
+ CALL printf_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LXI H,1
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,5
+ PUSH H
+ LXI H,2
+ PUSH H
+ LXI H,.5+18
+ PUSH H
+ CALL printf_
+ XCHG
+ LXI H,10
+ DAD SP
+ SPHL
+ LXI H,.5+39
+ PUSH H
+ CALL printf_
+ POP D
+ RET
+.6 EQU -128
+.5:
+ DB 37,115,32,0,37,50,100,47,37,50,100,47,37,52,100
+ DB 32,32,0,86,101,114,115,105,111,110,32,37,100,46,37
+ DB 100,46,37,100,46,37,100,32,0,67,79,80,82,32,68
+ DB 111,117,103,108,97,115,32,71,111,111,100,97,108,108,32
+ DB 76,105,99,101,110,115,101,100,32,119,47,71,80,76,118
+ DB 51,10,0
+ PUBLIC banner_
+banner_: lxi d,.8
+ call csave
+ LHLD lines_
+ PUSH H
+ LXI H,.7+0
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.8
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,-122-.8
+ DAD SP
+ PUSH H
+ CALL strcpy_
+ POP D
+ POP D
+.9:
+ LXI H,-124-.8
+ DAD SP
+ PUSH H
+ CALL strlen_
+ POP D
+ PUSH H
+ LXI H,12
+ POP D
+ XCHG
+ CALL .gt
+ JZ .10
+ LXI H,.7+4
+ PUSH H
+ LXI H,-122-.8
+ DAD SP
+ PUSH H
+ CALL strcat_
+ POP D
+ POP D
+ JMP .9
+.10:
+ LXI H,-124-.8
+ DAD SP
+ PUSH H
+ LXI H,.7+6
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,2013
+ PUSH H
+ LXI H,31
+ PUSH H
+ LXI H,3
+ PUSH H
+ LXI H,.7+10
+ PUSH H
+ CALL printf_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LXI H,1
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,5
+ PUSH H
+ LXI H,2
+ PUSH H
+ LXI H,.7+24
+ PUSH H
+ CALL printf_
+ XCHG
+ LXI H,10
+ DAD SP
+ SPHL
+ LHLD line2_
+ PUSH H
+ LXI H,.7+45
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LHLD line3_
+ PUSH H
+ LXI H,.7+49
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LHLD lines_
+ PUSH H
+ LXI H,.7+53
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ RET
+.8 EQU -128
+.7:
+ DB 37,115,10,0,32,0,37,115,32,0,37,50,100,47,37
+ DB 50,100,47,37,52,100,32,32,0,86,101,114,115,105,111
+ DB 110,32,37,100,46,37,100,46,37,100,46,37,100,10,0
+ DB 37,115,10,0,37,115,10,0,37,115,10,0
+ extrn strcat_
+ extrn strlen_
+ extrn strcpy_
+ extrn printf_
+ extrn .gt
+ END
+
\ No newline at end of file
diff --git a/Apps/crossdev/CBANNER.O b/Apps/crossdev/CBANNER.O
new file mode 100644
index 00000000..da1cbf76
Binary files /dev/null and b/Apps/crossdev/CBANNER.O differ
diff --git a/Apps/crossdev/CLOGICAL.ASM b/Apps/crossdev/CLOGICAL.ASM
new file mode 100644
index 00000000..017c74b6
--- /dev/null
+++ b/Apps/crossdev/CLOGICAL.ASM
@@ -0,0 +1,159 @@
+ extrn .begin,.chl,.swt
+ extrn csave,cret,.move
+ PUBLIC lugcur_
+lugcur_: lxi d,.2
+ call csave
+ LXI H,0
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,12-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,-6602
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LHLD xregde_
+ RET
+.2 EQU 0
+ PUBLIC lugnum_
+lugnum_: lxi d,.3
+ call csave
+ LXI H,0
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,12-.3
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,-6602
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LHLD xreghl_
+ RET
+.3 EQU 0
+ PUBLIC lugdu_
+lugdu_: lxi d,.4
+ call csave
+ LXI H,0
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,12-.4
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,-6602
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LHLD xregbc_
+ LXI D,8
+ XCHG
+ CALL .ur
+ RET
+.4 EQU 0
+ PUBLIC luscur_
+luscur_: lxi d,.5
+ call csave
+ LXI H,0
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,12-.5
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,-6602
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LHLD xreghl_
+ PUSH H
+ LXI H,12-.5
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LHLD xregbc_
+ PUSH H
+ LXI H,-6599
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ RET
+.5 EQU 0
+ PUBLIC lusnum_
+lusnum_: lxi d,.6
+ call csave
+ LXI H,0
+ PUSH H
+ LXI H,0
+ PUSH H
+ LXI H,12-.6
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,-6602
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ LXI H,10-.6
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LHLD xregde_
+ PUSH H
+ LHLD xregbc_
+ PUSH H
+ LXI H,-6599
+ PUSH H
+ CALL asmif_
+ XCHG
+ LXI H,8
+ DAD SP
+ SPHL
+ RET
+.6 EQU 0
+ extrn asmif_
+ extrn xreghl_
+ extrn xregde_
+ extrn xregbc_
+ extrn .ur
+ END
+
\ No newline at end of file
diff --git a/Apps/crossdev/CLOGICAL.O b/Apps/crossdev/CLOGICAL.O
new file mode 100644
index 00000000..cb9e3a5c
Binary files /dev/null and b/Apps/crossdev/CLOGICAL.O differ
diff --git a/Apps/crossdev/CMEMORY.O b/Apps/crossdev/CMEMORY.O
new file mode 100644
index 00000000..d58456b5
Binary files /dev/null and b/Apps/crossdev/CMEMORY.O differ
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 00000000..30243fe5
Binary files /dev/null and b/Apps/crossdev/CNAMEPT1.O differ
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 00000000..ad28d6bb
Binary files /dev/null and b/Apps/crossdev/CNAMEPT2.O differ
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 00000000..4d1a1517
Binary files /dev/null and b/Apps/crossdev/CNAMEPT3.O differ
diff --git a/Apps/crossdev/CNAMEPT4.ASM b/Apps/crossdev/CNAMEPT4.ASM
new file mode 100644
index 00000000..437a4620
--- /dev/null
+++ b/Apps/crossdev/CNAMEPT4.ASM
@@ -0,0 +1,742 @@
+ extrn .begin,.chl,.swt
+ extrn csave,cret,.move
+ global cache_,17
+ PUBLIC cnamept4_
+cnamept4_: 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
+ LXI H,24
+ DAD D
+ MOV E,M
+ MVI D,0
+ PUSH D
+ LXI H,3
+ POP D
+ CALL .eq
+ JZ .3
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,63
+ DAD D
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+17
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ POP D
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+41
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,65
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .4
+.6:
+ LXI H,.1+61
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .5
+.7:
+ LXI H,.1+66
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .5
+.8:
+ LXI H,.1+72
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .5
+.4:
+ CALL .swt
+ DW 2
+ DW 0,.7
+ DW 1,.6
+ DW .8
+.5:
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+82
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,66
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .9
+.11:
+ LXI H,.1+102
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .10
+.12:
+ LXI H,.1+107
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .10
+.13:
+ LXI H,.1+113
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .10
+.9:
+ CALL .swt
+ DW 2
+ DW 0,.12
+ DW 1,.11
+ DW .13
+.10:
+ CALL pager_
+.3:
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,67
+ DAD D
+ MOV E,M
+ MVI D,0
+ PUSH D
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+123
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ POP D
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+149
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,68
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .14
+.16:
+ LXI H,.1+169
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .15
+.17:
+ LXI H,.1+178
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .15
+.18:
+ LXI H,.1+188
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .15
+.19:
+ LXI H,.1+198
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .15
+.20:
+ LXI H,.1+208
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .15
+.14:
+ CALL .swt
+ DW 4
+ DW 0,.16
+ DW 1,.17
+ DW 2,.18
+ DW 3,.19
+ DW .20
+.15:
+ CALL pager_
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,69
+ DAD D
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+218
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ POP D
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+240
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,84
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .21
+.23:
+ LXI H,.1+260
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .22
+.24:
+ LXI H,.1+265
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .22
+.25:
+ LXI H,.1+271
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .22
+.21:
+ CALL .swt
+ DW 2
+ DW 0,.24
+ DW 1,.23
+ DW .25
+.22:
+ CALL pager_
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,84
+ DAD D
+ MOV E,M
+ MVI D,0
+ PUSH D
+ LXI H,1
+ POP D
+ CALL .eq
+ JZ .26
+ LXI H,.1+281
+ PUSH H
+ CALL printf_
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,71
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .27
+.29:
+ LXI H,.1+301
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .28
+.30:
+ LXI H,.1+306
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .28
+.31:
+ LXI H,.1+312
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .28
+.27:
+ CALL .swt
+ DW 2
+ DW 0,.30
+ DW 1,.29
+ DW .31
+.28:
+ CALL pager_
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,71
+ DAD D
+ MOV E,M
+ MVI D,0
+ PUSH D
+ LXI H,1
+ POP D
+ CALL .eq
+ JZ .32
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+322
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,72
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .33
+.35:
+ LXI H,.1+342
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .34
+.36:
+ LXI H,.1+349
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .34
+.37:
+ LXI H,.1+356
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .34
+.38:
+ LXI H,.1+367
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .34
+.33:
+ CALL .swt
+ DW 3
+ DW 0,.35
+ DW 1,.36
+ DW 2,.37
+ DW .38
+.34:
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+377
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+397
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,75
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .39
+.41:
+ LXI H,.1+417
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .40
+.42:
+ LXI H,.1+422
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .40
+.43:
+ LXI H,.1+428
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .40
+.39:
+ CALL .swt
+ DW 2
+ DW 0,.42
+ DW 1,.41
+ DW .43
+.40:
+ CALL pager_
+.32:
+.26:
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,76
+ DAD D
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+438
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ POP D
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+460
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,78
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .44
+.46:
+ LXI H,.1+480
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .45
+.47:
+ LXI H,.1+485
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .45
+.48:
+ LXI H,.1+491
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .45
+.44:
+ CALL .swt
+ DW 2
+ DW 0,.47
+ DW 1,.46
+ DW .48
+.45:
+ CALL pager_
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,78
+ DAD D
+ MOV E,M
+ MVI D,0
+ PUSH D
+ LXI H,1
+ POP D
+ CALL .eq
+ JZ .49
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+501
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,79
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .50
+.52:
+ LXI H,.1+520
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .51
+.53:
+ LXI H,.1+525
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .51
+.54:
+ LXI H,.1+531
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .51
+.50:
+ CALL .swt
+ DW 2
+ DW 0,.53
+ DW 1,.52
+ DW .54
+.51:
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+541
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,80
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .55
+.57:
+ LXI H,.1+561
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .56
+.58:
+ LXI H,.1+568
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .56
+.59:
+ LXI H,.1+575
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .56
+.60:
+ LXI H,.1+586
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .56
+.55:
+ CALL .swt
+ DW 3
+ DW 0,.57
+ DW 1,.58
+ DW 2,.59
+ DW .60
+.56:
+ CALL pager_
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,73
+ DAD D
+ MOV E,M
+ INX H
+ MOV D,M
+ PUSH D
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+596
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ POP D
+ CALL pager_
+ LXI H,cache_
+ PUSH H
+ LXI H,.1+618
+ PUSH H
+ CALL printf_
+ POP D
+ POP D
+ LXI H,8-.2
+ DAD SP
+ MOV E,M
+ INX H
+ MOV D,M
+ LXI H,83
+ DAD D
+ MOV E,M
+ MVI D,0
+ XCHG
+ JMP .61
+.63:
+ LXI H,.1+638
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .62
+.64:
+ LXI H,.1+643
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .62
+.65:
+ LXI H,.1+649
+ PUSH H
+ CALL printf_
+ POP D
+ JMP .62
+.61:
+ CALL .swt
+ DW 2
+ DW 0,.64
+ DW 1,.63
+ DW .65
+.62:
+ CALL pager_
+.49:
+ 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,115,100,99,97,112,97,99,105,116,121
+ DB 32,32,32,32,61,32,37,117,75,66,0,37,115,46,115
+ DB 100,99,115,105,111,32,32,32,32,32,32,32,32,61,32
+ DB 0,84,82,85,69,0,70,65,76,83,69,0,85,110,107
+ DB 110,111,119,110,33,33,0,37,115,46,115,100,99,115,105
+ DB 111,102,97,115,116,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,100,101,102,105,111,98,121,116,101
+ DB 32,32,32,32,32,61,32,48,120,37,48,50,120,0,37
+ DB 115,46,116,101,114,109,116,121,112,101,32,32,32,32,32
+ DB 32,61,32,0,84,69,82,77,95,84,84,89,0,84,69
+ DB 82,77,95,65,78,83,73,0,84,69,82,77,95,87,89
+ DB 83,69,0,84,69,82,77,95,86,84,53,50,0,85,110
+ DB 107,110,111,119,110,33,33,0,37,115,46,114,101,118,105
+ DB 115,105,111,110,32,32,32,32,32,32,61,32,37,100,0
+ DB 37,115,46,112,114,112,101,110,97,98,108,101,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,112
+ DB 114,112,115,100,101,110,97,98,108,101,32,32,32,61,32
+ DB 0,84,82,85,69,0,70,65,76,83,69,0,85,110,107
+ DB 110,111,119,110,33,33,0,37,115,46,112,114,112,115,100
+ DB 116,114,97,99,101,32,32,32,32,61,32,0,83,73,76
+ DB 69,78,84,0,69,82,82,79,82,83,0,69,86,69,82
+ DB 89,84,72,73,78,71,0,85,110,107,110,111,119,110,33
+ DB 33,0,37,115,46,112,114,112,115,100,99,97,112,97,99
+ DB 105,116,121,32,61,32,0,37,115,46,112,114,112,99,111
+ DB 110,101,110,97,98,108,101,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,98,105,111,115,115,105,122,101,32
+ DB 32,32,32,32,32,61,32,37,100,0,37,115,46,112,112
+ DB 112,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,85,110,107,110
+ DB 111,119,110,33,33,0,37,115,46,112,112,112,115,100,101
+ DB 110,97,98,108,101,32,32,61,32,0,84,82,85,69,0
+ DB 70,65,76,83,69,0,85,110,107,110,111,119,110,33,33
+ DB 0,37,115,46,112,112,112,115,100,116,114,97,99,101,32
+ DB 32,32,32,61,32,0,83,73,76,69,78,84,0,69,82
+ DB 82,79,82,83,0,69,86,69,82,89,84,72,73,78,71
+ DB 0,85,110,107,110,111,119,110,33,33,0,37,115,46,112
+ DB 112,112,99,97,112,97,99,105,116,121,32,32,32,61,32
+ DB 37,100,0,37,115,46,112,112,112,99,111,110,101,110,97
+ DB 98,108,101,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/CNAMEPT4.O b/Apps/crossdev/CNAMEPT4.O
new file mode 100644
index 00000000..50309b57
Binary files /dev/null and b/Apps/crossdev/CNAMEPT4.O differ
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 665804f6..788096ad 100644
Binary files a/Apps/crossdev/CPMNAME.CPM and b/Apps/crossdev/CPMNAME.CPM differ
diff --git a/Apps/crossdev/CPMNAME.O b/Apps/crossdev/CPMNAME.O
new file mode 100644
index 00000000..d1cf9ac4
Binary files /dev/null and b/Apps/crossdev/CPMNAME.O differ
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 00000000..f6da9622
Binary files /dev/null and b/Apps/crossdev/CTERMCAP.O differ
diff --git a/Apps/crossdev/DIAGNOSE.O b/Apps/crossdev/DIAGNOSE.O
new file mode 100644
index 00000000..eb1ff811
Binary files /dev/null and b/Apps/crossdev/DIAGNOSE.O differ
diff --git a/Apps/crossdev/FINDFILE.COM b/Apps/crossdev/FINDFILE.COM
index 44f2a480..dbf33a1a 100644
Binary files a/Apps/crossdev/FINDFILE.COM and b/Apps/crossdev/FINDFILE.COM differ
diff --git a/Apps/crossdev/FINDFILE.CPM b/Apps/crossdev/FINDFILE.CPM
index 44f2a480..dbf33a1a 100644
Binary files a/Apps/crossdev/FINDFILE.CPM and b/Apps/crossdev/FINDFILE.CPM differ
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 00000000..3fe5818e
Binary files /dev/null and b/Apps/crossdev/FINDFILE.REL differ
diff --git a/Apps/crossdev/HBIOS.PRN b/Apps/crossdev/HBIOS.PRN
new file mode 100644
index 00000000..d4a10596
--- /dev/null
+++ b/Apps/crossdev/HBIOS.PRN
@@ -0,0 +1,18 @@
+ ; hbios.asm 7/19/2012 dwg -
+
+ 0000 = CFGVERS equ 0
+
+ public xgetsc
+ xgetsc:
+ enter
+ 0000 06F0 mvi b,0F0h
+ 0002 0E00 mvi c,CFGVERS
+ 0004 110080 lxi d,8000h
+ 0007 CF db 0cfh ; rst 8
+ 0008 210080 lxi h,8000h
+ leave
+ 000B C9 ret
+
+
+ 000C END
+
\ No newline at end of file
diff --git a/Apps/crossdev/HBIOS.REL b/Apps/crossdev/HBIOS.REL
new file mode 100644
index 00000000..b47b7c7d
Binary files /dev/null and b/Apps/crossdev/HBIOS.REL differ
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 00000000..b451b042
Binary files /dev/null and b/Apps/crossdev/IDENTITY.REL differ
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