From 85fe28c43efdbd6e56a1b9f4fd68eb99bffad847 Mon Sep 17 00:00:00 2001 From: wayne Date: Sat, 16 Feb 2013 06:42:29 +0000 Subject: [PATCH] Reintegrate dwg -> trunk --- Apps/crossdev/2DRIVE.C | 68 + Apps/crossdev/2MAP.C | 322 ++ Apps/crossdev/ACCESS.ASM | 106 + Apps/crossdev/ACCESS.BAT | 18 + Apps/crossdev/ACCESS.CPM | Bin 0 -> 2432 bytes Apps/crossdev/ACCESS.REL | Bin 0 -> 896 bytes Apps/crossdev/ACCESS.SUB | 7 + Apps/crossdev/ACCESS.SYM | 8 + Apps/crossdev/ANSI.H | Bin 0 -> 384 bytes Apps/crossdev/APPLVERS.H | 18 +- Apps/crossdev/APPLVERS.LIB | 34 + Apps/crossdev/AS.COM | Bin 0 -> 23040 bytes Apps/crossdev/ASCII.H | 13 + Apps/crossdev/ASMIFACE.O | Bin 0 -> 512 bytes Apps/crossdev/ASMIFACE.REL | Bin 0 -> 512 bytes Apps/crossdev/AUTOEXEC.Z80 | 18 + Apps/crossdev/BANKER.ASM | 656 ++++ Apps/crossdev/BANKER.C | 153 + Apps/crossdev/BANNER.ASM | 156 + Apps/crossdev/BANNER.LIB | 18 + Apps/crossdev/BANNER.REL | Bin 0 -> 1408 bytes Apps/crossdev/BANNER.SYM | 29 + Apps/crossdev/BDOSCALL.O | Bin 0 -> 256 bytes Apps/crossdev/BDOSCALL.REL | Bin 0 -> 256 bytes Apps/crossdev/BIOSCALL.O | Bin 0 -> 256 bytes Apps/crossdev/BIOSCALL.REL | Bin 0 -> 256 bytes Apps/crossdev/BIOSHDR.LIB | 385 +++ Apps/crossdev/CBANNER.ASM | 208 ++ Apps/crossdev/CBANNER.O | Bin 0 -> 1280 bytes Apps/crossdev/CC.COM | Bin 0 -> 39296 bytes Apps/crossdev/CC.TMP | 333 ++ Apps/crossdev/CHARS.ASM | 970 ++++++ Apps/crossdev/CHARS.C | 23 +- Apps/crossdev/CHARS.SUB | 18 + Apps/crossdev/CHECK.SUB | 12 + Apps/crossdev/CLEAN.SUB | 27 + Apps/crossdev/CLEAR.ASM | 44 + Apps/crossdev/CLEAR.C | 48 + Apps/crossdev/CLEAR.SUB | 10 + Apps/crossdev/CLOGICAL.ASM | 159 + Apps/crossdev/CLOGICAL.H | 6 +- Apps/crossdev/CLOGICAL.O | Bin 0 -> 768 bytes Apps/crossdev/CLS.C | 127 + Apps/crossdev/CMEMORY.ASM | 283 ++ Apps/crossdev/CMEMORY.O | Bin 0 -> 768 bytes Apps/crossdev/CNAMEPT1.ASM | 527 +++ Apps/crossdev/CNAMEPT1.O | Bin 0 -> 2304 bytes Apps/crossdev/CNAMEPT2.ASM | 480 +++ Apps/crossdev/CNAMEPT2.O | Bin 0 -> 2560 bytes Apps/crossdev/CNAMEPT3.ASM | 794 +++++ Apps/crossdev/CNAMEPT3.O | Bin 0 -> 3328 bytes Apps/crossdev/CNAMEPT4.ASM | 742 +++++ Apps/crossdev/CNAMEPT4.O | Bin 0 -> 3072 bytes Apps/crossdev/CNFGDATA.LIB | 210 ++ Apps/crossdev/CONVERT.C | 80 + Apps/crossdev/COREAPPS.BAK | 28 + Apps/crossdev/COREAPPS.BAT | 38 + Apps/crossdev/COREAPPS.SUB | 71 + Apps/crossdev/CPM80.H | 5 +- Apps/crossdev/CPMAPPL.LIB | 82 + Apps/crossdev/CPMBDOS.H | 3 +- Apps/crossdev/CPMBDOS.LIB | 174 + Apps/crossdev/CPMBIND.H | 4 +- Apps/crossdev/CPMBIOS.LIB | 137 + Apps/crossdev/CPMNAME.ASM | 164 + Apps/crossdev/CPMNAME.BAT | 57 + Apps/crossdev/CPMNAME.C | 37 +- Apps/crossdev/CPMNAME.CPM | Bin 0 -> 15744 bytes Apps/crossdev/CPMNAME.O | Bin 0 -> 1024 bytes Apps/crossdev/CPMNAME.SUB | 20 + Apps/crossdev/CTERMCAP.ASM | 334 ++ Apps/crossdev/CTERMCAP.C | 47 +- Apps/crossdev/CTERMCAP.H | 8 +- Apps/crossdev/CTERMCAP.O | Bin 0 -> 1024 bytes Apps/crossdev/CVT2H.C | 42 + Apps/crossdev/CVT2H.H | 41 + Apps/crossdev/CVT2INC.H | 45 + Apps/crossdev/DIAGNOSE.ASM | 4 +- Apps/crossdev/DIAGNOSE.O | Bin 0 -> 256 bytes Apps/crossdev/DIAGNOSE.REL | Bin 0 -> 256 bytes Apps/crossdev/DISKCOPY.C | 229 ++ Apps/crossdev/DOIT.C | 12 + Apps/crossdev/DPHDPB.H | 36 +- Apps/crossdev/DPHMAP.H | 8 +- Apps/crossdev/DUMP.ASM | 1494 +++++++++ Apps/crossdev/DUMP.C | 101 + Apps/crossdev/DUMPCOM.H | 1542 +++++++++ Apps/crossdev/DUMPMAC.ASM | 108 + Apps/crossdev/EDITOR.ASM | 367 +++ Apps/crossdev/EDITOR.C | 103 + Apps/crossdev/EDITOR.SUB | 6 + Apps/crossdev/EXTRACT.SUB | 1 + Apps/crossdev/FAST.SUB | 4 + Apps/crossdev/FCNTL.H | 8 + Apps/crossdev/FFGETLU.LIB | 12 + Apps/crossdev/FFHASLU.LIB | 25 + Apps/crossdev/FFNUMLU.LIB | 13 + Apps/crossdev/FFSETLU.LIB | 22 + Apps/crossdev/FINDFILE.ASM | 1088 +++++++ Apps/crossdev/FINDFILE.BAK | 12 + Apps/crossdev/FINDFILE.BAT | 12 + Apps/crossdev/FINDFILE.COM | Bin 0 -> 4992 bytes Apps/crossdev/FINDFILE.CPM | Bin 0 -> 4992 bytes Apps/crossdev/FINDFILE.REL | Bin 0 -> 1920 bytes Apps/crossdev/FINDFILE.SUB | 13 + Apps/crossdev/FINDFILE.SYM | 10 + Apps/crossdev/FLIP.ASM | 428 +++ Apps/crossdev/FLIP.C | 98 + Apps/crossdev/FLIP.SUB | 5 + Apps/crossdev/FORM.ASM | 646 ++++ Apps/crossdev/FORM.C | 107 + Apps/crossdev/FORMFEED.ASM | 19 + Apps/crossdev/FORMFEED.C | 8 + Apps/crossdev/FORMFEED.SUB | 4 + Apps/crossdev/GETCFG.ASM | 219 ++ Apps/crossdev/GETCFG.C | 333 ++ Apps/crossdev/GLOBALS.H | 5 +- Apps/crossdev/GLOBALS.LIB | 18 + Apps/crossdev/HARDWARE.LIB | 16 + Apps/crossdev/HBIOS.ASM | 18 + Apps/crossdev/HBIOS.H | 48 + Apps/crossdev/HBIOS.LIB | 3 + Apps/crossdev/HBIOS.REL | Bin 0 -> 128 bytes Apps/crossdev/HBIOS.SYM | 2 + Apps/crossdev/HELLO.C | 333 ++ Apps/crossdev/HELP.ASM | 17 + Apps/crossdev/HELP.C | 11 + Apps/crossdev/IDENT.ASM | 64 + Apps/crossdev/IDENTITY.ASM | 196 ++ Apps/crossdev/IDENTITY.LIB | 191 ++ Apps/crossdev/IDENTITY.REL | Bin 0 -> 896 bytes Apps/crossdev/IDENTITY.SYM | 35 + Apps/crossdev/LABEL.DWG | 3 + Apps/crossdev/LABELIB.ASM | 217 ++ Apps/crossdev/LABELIB.LIB | 33 + Apps/crossdev/LABELIB.REL | Bin 0 -> 1024 bytes Apps/crossdev/LABELIB.SYM | 40 + Apps/crossdev/LINK.COM | Bin 0 -> 15744 bytes Apps/crossdev/LN.COM | Bin 0 -> 23296 bytes Apps/crossdev/LOOKN8.ASM | 2430 ++++++++++++++ Apps/crossdev/MAKEREM.BAT | 9 + Apps/crossdev/MAP.ASM | 1649 ++++++++++ Apps/crossdev/MAP.BAK | 14 + Apps/crossdev/MAP.BAT | 14 + Apps/crossdev/MAP.C | 238 +- Apps/crossdev/MAP.CPM | Bin 0 -> 11776 bytes Apps/crossdev/MAP.O | Bin 0 -> 5376 bytes Apps/crossdev/MAP.SUB | 20 + Apps/crossdev/MEMORY.ASM | 27 + Apps/crossdev/MEMORY.LIB | 24 + Apps/crossdev/MEMORY.REL | Bin 0 -> 128 bytes Apps/crossdev/MEMORY.SYM | 2 + Apps/crossdev/MENU.C | 184 ++ Apps/crossdev/MENU1.C | 184 ++ Apps/crossdev/MENUCOL.C | 153 + Apps/crossdev/META.ASM | 750 +++++ Apps/crossdev/META.BAK | 62 + Apps/crossdev/META.BAT | 62 + Apps/crossdev/META.C | 27 +- Apps/crossdev/META.CPM | Bin 0 -> 11136 bytes Apps/crossdev/META.O | Bin 0 -> 3072 bytes Apps/crossdev/META.SUB | 19 + Apps/crossdev/METADATA.ASM | 523 +++ Apps/crossdev/METADATA.H | 5 +- Apps/crossdev/METADATA.LIB | 86 + Apps/crossdev/METADATA.REL | Bin 0 -> 896 bytes Apps/crossdev/METADATA.SYM | 36 + Apps/crossdev/MKRASM80.C | 11 + Apps/crossdev/MONITOR.C | 115 + Apps/crossdev/MULTIFMT.ASM | 1319 ++++++++ Apps/crossdev/MULTIFMT.BAT | 42 + Apps/crossdev/MULTIFMT.C | 480 +++ Apps/crossdev/MULTIFMT.CPM | Bin 0 -> 13440 bytes Apps/crossdev/MULTIFMT.O | Bin 0 -> 5120 bytes Apps/crossdev/MULTIFMT.SUB | 16 + Apps/crossdev/MYDUMP.ASM | 59 + Apps/crossdev/N8CHARS.ASM | 2056 ++++++++++++ Apps/crossdev/N8CHARS.C | 281 ++ Apps/crossdev/N8CHARS.H | 113 + Apps/crossdev/N8VEM.ASM | 621 ++++ Apps/crossdev/N8VIDEO.ASM | 3710 ++++++++++++++++++++++ Apps/crossdev/N8VIDTST.ASM | 609 ++++ Apps/crossdev/N8VIDTST.C | 81 + Apps/crossdev/N8VIDTST.SUB | 8 + Apps/crossdev/N8VTEST.ASM | 595 ++++ Apps/crossdev/NOACCESS.ASM | 84 + Apps/crossdev/PLIDIO.ASM | 607 ++++ Apps/crossdev/PORTAB.LIB | 35 + Apps/crossdev/PORTIO.C | 17 + Apps/crossdev/PRINTERS.ASM | 113 + Apps/crossdev/PRINTERS.LIB | 13 + Apps/crossdev/PRINTERS.REL | Bin 0 -> 384 bytes Apps/crossdev/PRINTERS.SYM | 15 + Apps/crossdev/PSECIO.C | 79 + Apps/crossdev/PUTC.ASM | 185 ++ Apps/crossdev/PUTC.C | 43 + Apps/crossdev/PUTC.SUB | 7 + Apps/crossdev/RASM80.H | 1700 ++++++++++ Apps/crossdev/{readme.1st => README.1ST} | 0 Apps/crossdev/README.TXT | 14 + Apps/crossdev/RECONV.C | 31 + Apps/crossdev/REM.ASM | 24 + Apps/crossdev/REM.CPM | Bin 0 -> 128 bytes Apps/crossdev/REM.REL | Bin 0 -> 128 bytes Apps/crossdev/REM.SUB | 4 + Apps/crossdev/REM.SYM | 2 + Apps/crossdev/REMOTE.ASM | 246 ++ Apps/crossdev/REMOTE.C | 104 + Apps/crossdev/REMOTE.SUB | 14 + Apps/crossdev/REQ1PARM.ASM | 70 + Apps/crossdev/RMAC.COM | Bin 0 -> 13568 bytes Apps/crossdev/SECTORIO.ASM | 117 + Apps/crossdev/SECTORIO.C | 21 +- Apps/crossdev/SECTORIO.O | Bin 0 -> 512 bytes Apps/crossdev/SETLABEL.ASM | 89 + Apps/crossdev/SETLABEL.BAT | 26 + Apps/crossdev/SETLABEL.CPM | Bin 0 -> 4736 bytes Apps/crossdev/SETLABEL.REL | Bin 0 -> 768 bytes Apps/crossdev/SETLABEL.SUB | 12 + Apps/crossdev/SETLABEL.SYM | 10 + Apps/crossdev/SOURCES.SUB | 9 + Apps/crossdev/STAT9918.C | 80 + Apps/crossdev/STD.ASM | 578 ++++ Apps/crossdev/STD.H | 3 +- Apps/crossdev/STD.LIB | 475 +++ Apps/crossdev/STD21.H | 630 ++++ Apps/crossdev/STDLIB.LIB | 10 + Apps/crossdev/STOP.ASM | 67 + Apps/crossdev/SYSGEN.ASM | 982 ++++++ Apps/crossdev/SYSGEN.BAT | 34 + Apps/crossdev/SYSGEN.C | 23 +- Apps/crossdev/SYSGEN.CPM | Bin 0 -> 11776 bytes Apps/crossdev/SYSGEN.O | Bin 0 -> 3328 bytes Apps/crossdev/SYSGEN.SUB | 14 + Apps/crossdev/TERMINAL.ASM | 322 ++ Apps/crossdev/TERMINAL.LIB | 34 + Apps/crossdev/TERMINAL.REL | Bin 0 -> 1152 bytes Apps/crossdev/TERMINAL.SYM | 47 + Apps/crossdev/TERMTYPE.ASM | 448 +++ Apps/crossdev/TERMTYPE.BAT | 25 + Apps/crossdev/TERMTYPE.C | 417 +++ Apps/crossdev/TERMTYPE.CPM | Bin 0 -> 9216 bytes Apps/crossdev/TERMTYPE.O | Bin 0 -> 2304 bytes Apps/crossdev/TERMTYPE.SUB | 13 + Apps/crossdev/TEST.C | 325 ++ Apps/crossdev/TESTN8.C | 50 + Apps/crossdev/TESTV5.C | 36 + Apps/crossdev/TESTV6.C | 31 + Apps/crossdev/TMS9918.ASM | 1463 +++++++++ Apps/crossdev/TMS9918.C | 362 +++ Apps/crossdev/TMS9918.H | 64 + Apps/crossdev/TMS9918X.C | 402 +++ Apps/crossdev/TMSBIND.C | 60 + Apps/crossdev/TMSSTAT.ASM | 585 ++++ Apps/crossdev/TMSSTAT.C | 114 + Apps/crossdev/TMSSTAT.SUB | 8 + Apps/crossdev/TRACKIO.C | 74 + Apps/crossdev/TRACKIO.H | 14 + Apps/crossdev/TWODRIVE.ASM | 239 ++ Apps/crossdev/VERIFY.ASM | 47 + Apps/crossdev/VERSION.LIB | 65 + Apps/crossdev/VIDEO.ASM | 500 +++ Apps/crossdev/VIDEO.C | 99 + Apps/crossdev/VIEW.ASM | 2233 +++++++++++++ Apps/crossdev/VIEW.BAT | 19 + Apps/crossdev/VIEW.C | 57 +- Apps/crossdev/VIEW.CPM | Bin 0 -> 12288 bytes Apps/crossdev/VIEW.O | Bin 0 -> 6144 bytes Apps/crossdev/VIEW.SUB | 11 + Apps/crossdev/VISIBLE.H | 19 + Apps/crossdev/Z80.LIB | 457 +++ Apps/crossdev/Z80MU.EXE | Bin 0 -> 206058 bytes 272 files changed, 48497 insertions(+), 158 deletions(-) create mode 100644 Apps/crossdev/2DRIVE.C create mode 100644 Apps/crossdev/2MAP.C create mode 100644 Apps/crossdev/ACCESS.ASM create mode 100644 Apps/crossdev/ACCESS.BAT create mode 100644 Apps/crossdev/ACCESS.CPM create mode 100644 Apps/crossdev/ACCESS.REL create mode 100644 Apps/crossdev/ACCESS.SUB create mode 100644 Apps/crossdev/ACCESS.SYM create mode 100644 Apps/crossdev/ANSI.H create mode 100644 Apps/crossdev/APPLVERS.LIB create mode 100644 Apps/crossdev/AS.COM create mode 100644 Apps/crossdev/ASCII.H create mode 100644 Apps/crossdev/ASMIFACE.O create mode 100644 Apps/crossdev/ASMIFACE.REL create mode 100644 Apps/crossdev/AUTOEXEC.Z80 create mode 100644 Apps/crossdev/BANKER.ASM create mode 100644 Apps/crossdev/BANKER.C create mode 100644 Apps/crossdev/BANNER.ASM create mode 100644 Apps/crossdev/BANNER.LIB create mode 100644 Apps/crossdev/BANNER.REL create mode 100644 Apps/crossdev/BANNER.SYM create mode 100644 Apps/crossdev/BDOSCALL.O create mode 100644 Apps/crossdev/BDOSCALL.REL create mode 100644 Apps/crossdev/BIOSCALL.O create mode 100644 Apps/crossdev/BIOSCALL.REL create mode 100644 Apps/crossdev/BIOSHDR.LIB create mode 100644 Apps/crossdev/CBANNER.ASM create mode 100644 Apps/crossdev/CBANNER.O create mode 100644 Apps/crossdev/CC.COM create mode 100644 Apps/crossdev/CC.TMP create mode 100644 Apps/crossdev/CHARS.ASM create mode 100644 Apps/crossdev/CHARS.SUB create mode 100644 Apps/crossdev/CHECK.SUB create mode 100644 Apps/crossdev/CLEAN.SUB create mode 100644 Apps/crossdev/CLEAR.ASM create mode 100644 Apps/crossdev/CLEAR.C create mode 100644 Apps/crossdev/CLEAR.SUB create mode 100644 Apps/crossdev/CLOGICAL.ASM create mode 100644 Apps/crossdev/CLOGICAL.O create mode 100644 Apps/crossdev/CLS.C create mode 100644 Apps/crossdev/CMEMORY.ASM create mode 100644 Apps/crossdev/CMEMORY.O create mode 100644 Apps/crossdev/CNAMEPT1.ASM create mode 100644 Apps/crossdev/CNAMEPT1.O create mode 100644 Apps/crossdev/CNAMEPT2.ASM create mode 100644 Apps/crossdev/CNAMEPT2.O create mode 100644 Apps/crossdev/CNAMEPT3.ASM create mode 100644 Apps/crossdev/CNAMEPT3.O create mode 100644 Apps/crossdev/CNAMEPT4.ASM create mode 100644 Apps/crossdev/CNAMEPT4.O create mode 100644 Apps/crossdev/CNFGDATA.LIB create mode 100644 Apps/crossdev/CONVERT.C create mode 100644 Apps/crossdev/COREAPPS.BAK create mode 100644 Apps/crossdev/COREAPPS.BAT create mode 100644 Apps/crossdev/COREAPPS.SUB create mode 100644 Apps/crossdev/CPMAPPL.LIB create mode 100644 Apps/crossdev/CPMBDOS.LIB create mode 100644 Apps/crossdev/CPMBIOS.LIB create mode 100644 Apps/crossdev/CPMNAME.ASM create mode 100644 Apps/crossdev/CPMNAME.BAT create mode 100644 Apps/crossdev/CPMNAME.CPM create mode 100644 Apps/crossdev/CPMNAME.O create mode 100644 Apps/crossdev/CPMNAME.SUB create mode 100644 Apps/crossdev/CTERMCAP.ASM create mode 100644 Apps/crossdev/CTERMCAP.O create mode 100644 Apps/crossdev/CVT2H.C create mode 100644 Apps/crossdev/CVT2H.H create mode 100644 Apps/crossdev/CVT2INC.H create mode 100644 Apps/crossdev/DIAGNOSE.O create mode 100644 Apps/crossdev/DIAGNOSE.REL create mode 100644 Apps/crossdev/DISKCOPY.C create mode 100644 Apps/crossdev/DOIT.C create mode 100644 Apps/crossdev/DUMP.ASM create mode 100644 Apps/crossdev/DUMP.C create mode 100644 Apps/crossdev/DUMPCOM.H create mode 100644 Apps/crossdev/DUMPMAC.ASM create mode 100644 Apps/crossdev/EDITOR.ASM create mode 100644 Apps/crossdev/EDITOR.C create mode 100644 Apps/crossdev/EDITOR.SUB create mode 100644 Apps/crossdev/EXTRACT.SUB create mode 100644 Apps/crossdev/FAST.SUB create mode 100644 Apps/crossdev/FCNTL.H create mode 100644 Apps/crossdev/FFGETLU.LIB create mode 100644 Apps/crossdev/FFHASLU.LIB create mode 100644 Apps/crossdev/FFNUMLU.LIB create mode 100644 Apps/crossdev/FFSETLU.LIB create mode 100644 Apps/crossdev/FINDFILE.ASM create mode 100644 Apps/crossdev/FINDFILE.BAK create mode 100644 Apps/crossdev/FINDFILE.BAT create mode 100644 Apps/crossdev/FINDFILE.COM create mode 100644 Apps/crossdev/FINDFILE.CPM create mode 100644 Apps/crossdev/FINDFILE.REL create mode 100644 Apps/crossdev/FINDFILE.SUB create mode 100644 Apps/crossdev/FINDFILE.SYM create mode 100644 Apps/crossdev/FLIP.ASM create mode 100644 Apps/crossdev/FLIP.C create mode 100644 Apps/crossdev/FLIP.SUB create mode 100644 Apps/crossdev/FORM.ASM create mode 100644 Apps/crossdev/FORM.C create mode 100644 Apps/crossdev/FORMFEED.ASM create mode 100644 Apps/crossdev/FORMFEED.C create mode 100644 Apps/crossdev/FORMFEED.SUB create mode 100644 Apps/crossdev/GETCFG.ASM create mode 100644 Apps/crossdev/GETCFG.C create mode 100644 Apps/crossdev/GLOBALS.LIB create mode 100644 Apps/crossdev/HARDWARE.LIB create mode 100644 Apps/crossdev/HBIOS.ASM create mode 100644 Apps/crossdev/HBIOS.H create mode 100644 Apps/crossdev/HBIOS.LIB create mode 100644 Apps/crossdev/HBIOS.REL create mode 100644 Apps/crossdev/HBIOS.SYM create mode 100644 Apps/crossdev/HELLO.C create mode 100644 Apps/crossdev/HELP.ASM create mode 100644 Apps/crossdev/HELP.C create mode 100644 Apps/crossdev/IDENT.ASM create mode 100644 Apps/crossdev/IDENTITY.ASM create mode 100644 Apps/crossdev/IDENTITY.LIB create mode 100644 Apps/crossdev/IDENTITY.REL create mode 100644 Apps/crossdev/IDENTITY.SYM create mode 100644 Apps/crossdev/LABEL.DWG create mode 100644 Apps/crossdev/LABELIB.ASM create mode 100644 Apps/crossdev/LABELIB.LIB create mode 100644 Apps/crossdev/LABELIB.REL create mode 100644 Apps/crossdev/LABELIB.SYM create mode 100644 Apps/crossdev/LINK.COM create mode 100644 Apps/crossdev/LN.COM create mode 100644 Apps/crossdev/LOOKN8.ASM create mode 100644 Apps/crossdev/MAKEREM.BAT create mode 100644 Apps/crossdev/MAP.ASM create mode 100644 Apps/crossdev/MAP.BAK create mode 100644 Apps/crossdev/MAP.BAT create mode 100644 Apps/crossdev/MAP.CPM create mode 100644 Apps/crossdev/MAP.O create mode 100644 Apps/crossdev/MAP.SUB create mode 100644 Apps/crossdev/MEMORY.ASM create mode 100644 Apps/crossdev/MEMORY.LIB create mode 100644 Apps/crossdev/MEMORY.REL create mode 100644 Apps/crossdev/MEMORY.SYM create mode 100644 Apps/crossdev/MENU.C create mode 100644 Apps/crossdev/MENU1.C create mode 100644 Apps/crossdev/MENUCOL.C create mode 100644 Apps/crossdev/META.ASM create mode 100644 Apps/crossdev/META.BAK create mode 100644 Apps/crossdev/META.BAT create mode 100644 Apps/crossdev/META.CPM create mode 100644 Apps/crossdev/META.O create mode 100644 Apps/crossdev/META.SUB create mode 100644 Apps/crossdev/METADATA.ASM create mode 100644 Apps/crossdev/METADATA.LIB create mode 100644 Apps/crossdev/METADATA.REL create mode 100644 Apps/crossdev/METADATA.SYM create mode 100644 Apps/crossdev/MKRASM80.C create mode 100644 Apps/crossdev/MONITOR.C create mode 100644 Apps/crossdev/MULTIFMT.ASM create mode 100644 Apps/crossdev/MULTIFMT.BAT create mode 100644 Apps/crossdev/MULTIFMT.C create mode 100644 Apps/crossdev/MULTIFMT.CPM create mode 100644 Apps/crossdev/MULTIFMT.O create mode 100644 Apps/crossdev/MULTIFMT.SUB create mode 100644 Apps/crossdev/MYDUMP.ASM create mode 100644 Apps/crossdev/N8CHARS.ASM create mode 100644 Apps/crossdev/N8CHARS.C create mode 100644 Apps/crossdev/N8CHARS.H create mode 100644 Apps/crossdev/N8VEM.ASM create mode 100644 Apps/crossdev/N8VIDEO.ASM create mode 100644 Apps/crossdev/N8VIDTST.ASM create mode 100644 Apps/crossdev/N8VIDTST.C create mode 100644 Apps/crossdev/N8VIDTST.SUB create mode 100644 Apps/crossdev/N8VTEST.ASM create mode 100644 Apps/crossdev/NOACCESS.ASM create mode 100644 Apps/crossdev/PLIDIO.ASM create mode 100644 Apps/crossdev/PORTAB.LIB create mode 100644 Apps/crossdev/PORTIO.C create mode 100644 Apps/crossdev/PRINTERS.ASM create mode 100644 Apps/crossdev/PRINTERS.LIB create mode 100644 Apps/crossdev/PRINTERS.REL create mode 100644 Apps/crossdev/PRINTERS.SYM create mode 100644 Apps/crossdev/PSECIO.C create mode 100644 Apps/crossdev/PUTC.ASM create mode 100644 Apps/crossdev/PUTC.C create mode 100644 Apps/crossdev/PUTC.SUB create mode 100644 Apps/crossdev/RASM80.H rename Apps/crossdev/{readme.1st => README.1ST} (100%) create mode 100644 Apps/crossdev/README.TXT create mode 100644 Apps/crossdev/RECONV.C create mode 100644 Apps/crossdev/REM.ASM create mode 100644 Apps/crossdev/REM.CPM create mode 100644 Apps/crossdev/REM.REL create mode 100644 Apps/crossdev/REM.SUB create mode 100644 Apps/crossdev/REM.SYM create mode 100644 Apps/crossdev/REMOTE.ASM create mode 100644 Apps/crossdev/REMOTE.C create mode 100644 Apps/crossdev/REMOTE.SUB create mode 100644 Apps/crossdev/REQ1PARM.ASM create mode 100644 Apps/crossdev/RMAC.COM create mode 100644 Apps/crossdev/SECTORIO.ASM create mode 100644 Apps/crossdev/SECTORIO.O create mode 100644 Apps/crossdev/SETLABEL.ASM create mode 100644 Apps/crossdev/SETLABEL.BAT create mode 100644 Apps/crossdev/SETLABEL.CPM create mode 100644 Apps/crossdev/SETLABEL.REL create mode 100644 Apps/crossdev/SETLABEL.SUB create mode 100644 Apps/crossdev/SETLABEL.SYM create mode 100644 Apps/crossdev/SOURCES.SUB create mode 100644 Apps/crossdev/STAT9918.C create mode 100644 Apps/crossdev/STD.ASM create mode 100644 Apps/crossdev/STD.LIB create mode 100644 Apps/crossdev/STD21.H create mode 100644 Apps/crossdev/STDLIB.LIB create mode 100644 Apps/crossdev/STOP.ASM create mode 100644 Apps/crossdev/SYSGEN.ASM create mode 100644 Apps/crossdev/SYSGEN.BAT create mode 100644 Apps/crossdev/SYSGEN.CPM create mode 100644 Apps/crossdev/SYSGEN.O create mode 100644 Apps/crossdev/SYSGEN.SUB create mode 100644 Apps/crossdev/TERMINAL.ASM create mode 100644 Apps/crossdev/TERMINAL.LIB create mode 100644 Apps/crossdev/TERMINAL.REL create mode 100644 Apps/crossdev/TERMINAL.SYM create mode 100644 Apps/crossdev/TERMTYPE.ASM create mode 100644 Apps/crossdev/TERMTYPE.BAT create mode 100644 Apps/crossdev/TERMTYPE.C create mode 100644 Apps/crossdev/TERMTYPE.CPM create mode 100644 Apps/crossdev/TERMTYPE.O create mode 100644 Apps/crossdev/TERMTYPE.SUB create mode 100644 Apps/crossdev/TEST.C create mode 100644 Apps/crossdev/TESTN8.C create mode 100644 Apps/crossdev/TESTV5.C create mode 100644 Apps/crossdev/TESTV6.C create mode 100644 Apps/crossdev/TMS9918.ASM create mode 100644 Apps/crossdev/TMS9918.C create mode 100644 Apps/crossdev/TMS9918.H create mode 100644 Apps/crossdev/TMS9918X.C create mode 100644 Apps/crossdev/TMSBIND.C create mode 100644 Apps/crossdev/TMSSTAT.ASM create mode 100644 Apps/crossdev/TMSSTAT.C create mode 100644 Apps/crossdev/TMSSTAT.SUB create mode 100644 Apps/crossdev/TRACKIO.C create mode 100644 Apps/crossdev/TRACKIO.H create mode 100644 Apps/crossdev/TWODRIVE.ASM create mode 100644 Apps/crossdev/VERIFY.ASM create mode 100644 Apps/crossdev/VERSION.LIB create mode 100644 Apps/crossdev/VIDEO.ASM create mode 100644 Apps/crossdev/VIDEO.C create mode 100644 Apps/crossdev/VIEW.ASM create mode 100644 Apps/crossdev/VIEW.BAT create mode 100644 Apps/crossdev/VIEW.CPM create mode 100644 Apps/crossdev/VIEW.O create mode 100644 Apps/crossdev/VIEW.SUB create mode 100644 Apps/crossdev/VISIBLE.H create mode 100644 Apps/crossdev/Z80.LIB create mode 100644 Apps/crossdev/Z80MU.EXE diff --git a/Apps/crossdev/2DRIVE.C b/Apps/crossdev/2DRIVE.C new file mode 100644 index 00000000..c80e722d --- /dev/null +++ b/Apps/crossdev/2DRIVE.C @@ -0,0 +1,68 @@ +/* twodrive.c 7/11/2012 dwg - */ + +/* This program is experimental and is not for release because + it contains techniques which are not recommended because + there are better API functions to do these operations. */ + + +#include "cpmbios.h" +#include "bioscall.h" + +#include "cpmbdos.h" +#include "bdoscall.h" + +#define u8 unsigned char +#define u16 unsigned int + +struct DPH * pDPH_C; +struct DPB * pDPB_C; +u8 * pDU_C; +u16 * pCUR_C; +u16 * pNUM_C; + +struct DPH * pDPH_D; +struct DPB * pDPB_D; +u8 * pDU_D; +u16 * pCUR_D; +u16 * pNUM_D; + +main(argc,argv) + int argc; + char *argv[]; +{ + + ireghl = pSELDSK; + iregbc = DRIVEC; + iregde = 0; + bioscall(); + pDPH_C = ireghl; + pDPB_C = pDPH_C->dpb; + pDU_C = ireghl -1; + *pDU_C = 0X41; + printf("Current C: DevUnit is %02x\n",*pDU_C); + pCUR_C = ireghl + 18; + *pCUR_C = 0; + printf("Current C: Logical Unit is %d\n",* pCUR_C); + pNUM_C = ireghl + 20; + *pNUM_C = 64/9; + printf("Current C: Number of LU's is %d\n",* pNUM_C); + + ireghl = pSELDSK; + iregbc = DRIVED; + iregde = 0; + bioscall(); + pDPH_D = ireghl; + pDPB_D = pDPH_D->dpb; + pDU_D = ireghl -1; + *pDU_D = 0x41; + printf("Current D: DevUnit is %02x\n",*pDU_D); + pCUR_D = ireghl + 18; + *pCUR_D = 1; + printf("Current D: Logical Unit is %d\n",* pCUR_D); + pNUM_D = ireghl + 20; + *pNUM_D = 64/9; + printf("Current D: Number of LU's is %d\n",* pNUM_D); + + +} + \ No newline at end of file diff --git a/Apps/crossdev/2MAP.C b/Apps/crossdev/2MAP.C new file mode 100644 index 00000000..48dfb65b --- /dev/null +++ b/Apps/crossdev/2MAP.C @@ -0,0 +1,322 @@ +/* map.c 6/7/2012 dwg - */ + +#include "portab.h" +#include "globals.h" +#include "stdio.h" +#include "stdlib.h" +#include "memory.h" + +#include "cpmbind.h" + +#include "infolist.h" +#include "dphdpb.h" +#include "dphmap.h" +#include "metadata.h" +#include "clogical.h" +#include "applvers.h" + +#define MAXDRIVE 8 + +/* Drive List Geometry */ +#define COL1 0 +#define COL2 (80/4) +#define COL3 (80/2) +#define COL4 (COL2+COL3) +#define LINE 3 + +/* Logical Unit List Geometry */ +#define LGUT 5 +#define COL1A 0 +#define COL2A (80/3) +#define COL3A (2*COL2A) + +/* Nomenclature Geometry */ +#define LINE2 8 + +/* Misc Info Geometry */ +#define CDLINE 6 + +/* BDOS Function number */ +#define RETCURR 25 + +/* function defined in bdoscall.asm */ +extern lurst(); + +struct BIOS * pBIOS; + +struct DPH * pDPH; + +int devunit; +int dev; +int unit; +int currlu; +int numlu; +int drivenum; +int drive; +int deflu; + +char szTemp[128]; + +int readsec(drive,track,sector,buffer) + int drive; + int track; + int sector; + unsigned int buffer; +{ + ireghl = pSELDSK; + iregbc = drive; + iregde = 0; + bioscall(); + + ireghl = pSETTRK; + iregbc = track; + bioscall(); + + ireghl = pSETSEC; + iregbc = sector; + bioscall(); + + ireghl = pSETDMA; + iregbc = buffer; + bioscall(); + + ireghl = pREAD; + bioscall(); + return irega; +} + + + + +int haslu(dr) + int dr; +{ + if(0 < lugnum(dr)) { + return TRUE; + } else { + return FALSE; + } +} + + + +void dispdph(l,c,drive,ptr) + int l; + int c; + char drive; + struct DPH *ptr; +{ + +/* + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + unsigned int dpb; + unsigned int csv; + unsigned int alv; + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +*/ + crtlc(l,c); + printf("%c: ",drive); + + devunit = lugdu(drive-'A'); + dev = devunit & 0xf0; + unit = devunit & 0x0f; + + currlu = lugcur(drive-'A'); + switch(dev) { + case DEV_MD: + if(0 == unit) printf("ROM"); + if(1 == unit) printf("RAM"); + break; + case DEV_FD: + printf("FD%d",unit); + break; + case DEV_IDE: + printf("IDE%d",unit); + break; + case DEV_ATAPI: + printf("ATAPI%d",unit); + break; + case DEV_PPIDE: + printf("PPIDE%d",unit); + break; + case DEV_SD: + printf("SD%d",unit); + break; + case DEV_PRPSD: + printf("PRPSD%d",unit); + break; + default: + printf("UNK"); + break; + }; + + if('L' == (unsigned char)ptr->sigl) { + if('U' == (unsigned char)ptr->sigu) { +/* printf("-LU%d",(int)ptr->current); */ + printf("-LU%d",currlu); + } + } + +/* printf("dpb=0x%04x, ",(unsigned int)ptr->dpb); + printf("sigl=0x%02x, ",(unsigned char)ptr->sigl); + printf("sigu=0x%02x, ",(unsigned char)ptr->sigu); + printf("curr=0x%04x, ",(unsigned int)ptr->current); + printf("numb=0x%04x", (unsigned int)ptr->number); +*/ + +} + +int main(argc,argv) + int argc; + char *argv[]; +{ + int i; + int mylu; + int drivenum; + int column; + int line; + char szDrive[32]; + char szLuNum[32]; + + if(argc == 3) { + + strcpy(szDrive,argv[1]); + strcpy(szLuNum,argv[2]); + + mylu = atoi(szLuNum); + + if(strlen(szDrive) == 2) { + if(':' == szDrive[1]) { + switch(szDrive[0]) { + case 'a': + case 'A': + luscur(0,mylu); + break; + case 'b': + case 'B': + luscur(1,mylu); + break; + case 'c': + case 'C': + luscur(2,mylu); + break; + case 'd': + case 'D': + luscur(3,mylu); + break; + case 'e': + case 'E': + luscur(4,mylu); + break; + case 'f': + case 'F': + luscur(5,mylu); + break; + case 'g': + case 'G': + luscur(6,mylu); + break; + case 'h': + case 'H': + luscur(7,mylu); + break; + default: + break; + } + + } + } + exit(1); + } + + + pBIOS = BIOSAD; + + crtinit(); + crtclr(); + crtlc(0,0); + + printf("MAP.COM %d/%d/%d v%d.%d.%d.%d", + A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP,A_RTP); + printf(" dwg - System Storage Drives and Logical Units"); + + ireghl = pGETINFO; + bioscall(); + pINFOLIST = ireghl; + + crtlc(CDLINE,COL3A+LGUT); + printf("infolist.version %d\n",pINFOLIST->version); + + pDPHMAP = (struct DPHMAPA *)pINFOLIST->dphmap; + + dispdph(LINE, COL1+LGUT-1,'A',(struct DPH *)pDPHMAP->drivea); + dispdph(LINE+1,COL1+LGUT-1,'B',(struct DPH *)pDPHMAP->driveb); + dispdph(LINE, COL2+LGUT-1,'C',(struct DPH *)pDPHMAP->drivec); + dispdph(LINE+1,COL2+LGUT-1,'D',(struct DPH *)pDPHMAP->drived); + dispdph(LINE, COL3+LGUT-1,'E',(struct DPH *)pDPHMAP->drivee); + dispdph(LINE+1,COL3+LGUT-1,'F',(struct DPH *)pDPHMAP->drivef); + dispdph(LINE, COL4+LGUT-1,'G',(struct DPH *)pDPHMAP->driveg); + dispdph(LINE+1,COL4+LGUT-1,'H',(struct DPH *)pDPHMAP->driveh); + + dregbc = RETCURR; + bdoscall(); + drive = drega; + + crtlc(CDLINE,5); + printf("Current drive is %c:",'A'+drive); + + devunit = lugdu(drive); + dev = devunit & 0xf0; + unit = devunit & 0x0f; + currlu = lugcur(drive); + deflu = currlu; + numlu = lugnum(drive); + + crtlc(CDLINE,COL2A+LGUT); + printf("Number of LUs is %d\n",lugnum(drive)); + + if(0. + +;---------------------------------------------------------------------- + maclib portab + maclib globals + maclib cpmbdos + maclib printers + maclib banner + maclib applvers + maclib z80 + maclib memory + maclib version + maclib cpmappl + maclib banner +;----------------------- + + do$start + + jmp around$bandata +argv dw prog,dat,prod,orig,ser,myname,0 +prog db 'ACCESS.COM $' + date + serial + product + originator + oriname +uuid db '08D4953E-B6F4-4673-990C-7E17A0A299BD$' +around$bandata: + + sbanner argv + + lda 80h ; pick up the command tail length provided by CCP + cpi 0 ; were there any parameters given? + jnz no$usage ; If not, go around + printf 'usage - access ' + jmp do$exit +no$usage: + + memcpy work$fcb,PRIFCB,32 ; Save initial default FCB from CCP + + printf 'Checking: ' + + mvi a,'$' ; place a terminating dollar sign + sta PRIFCB+9 ; at the end of the filname field + print PRIFCB+1 ; and print the filename portion + + conout '.' ; print the seperating dot + + memcpy PRIFCB,work$fcb,16 ; get a fresh copy of the initial FCB + mvi a,'$' ; place a terminating dollar sign + sta PRIFCB+12 ; at the end of the filetype field + print PRIFCB+9 ; and print the filetype + print crlf ; followed by a CR and LF + + memcpy PRIFCB,work$fcb,32 ; restore the initial FCB + + mvi c,FOPEN ; Try to open the given filename + lxi d,PRIFCB ; using the primary default FCB + call BDOS ; with a BDOS call + cpi 255 ; Test for Open Failure (255) + jnz done ; jump if file existed + + mvi c,FDELETE ; Delete the A:$$$.SUB file + lxi d,del$fcb ; using an alternative FCB + call BDOS + + printf 'Submit file terminated due to missing file$' + + jmp do$exit ; Go to the one true exit point + +done: + printf 'File found, Submit may proceed' +do$exit: + do$end + + newfcb del$fcb,1,'$$$ SUB' + +work$fcb ds 36 ; A place to save a copy of the default FCB on entry + +crlf db CR,LF ; a dollar sign terminated CR and LF +term db '$' ; a general purpose terminating character + + end start + +; eof - access.asm + + \ No newline at end of file diff --git a/Apps/crossdev/ACCESS.BAT b/Apps/crossdev/ACCESS.BAT new file mode 100644 index 00000000..c233bcdb --- /dev/null +++ b/Apps/crossdev/ACCESS.BAT @@ -0,0 +1,18 @@ +rem access.sub 9/5/2012 dwg - build access from sources + +if not exist access.rel erase access.cpm +if not exist access.rel z80mu rmac access + +if not exist printers.rel erase access.cpm +if not exist printers.rel z80mu rmac printers + +if not exist memory.rel erase access.cpm +if not exist memory.rel z80mu rmac memory + +if not exist banner.rel erase access.cpm +if not exist banner.rel z80mu rmac banner + +if not exist access.cpm z80mu link access,memory,banner,printers +if not exist access.cpm rename access.com access.cpm + +dir access.cpm diff --git a/Apps/crossdev/ACCESS.CPM b/Apps/crossdev/ACCESS.CPM new file mode 100644 index 0000000000000000000000000000000000000000..dbf6b87843847cf6eaf382a5510e269e74cb0f44 GIT binary patch literal 2432 zcmeHI&2Jk;6rWk@k1@n%#RYM2pOcA{SlxKNcH%fxmYj8BDqI|4nqK;WvA2#z?5+IK z50s)x6@LIXB5~*usS=1k07PO%!iPN|goHq?)I)lS1h|qxNFip{nVpa{hpNB{M%vMP zzj+@sZ+`oxGm6!y7K=~MBxaN8c|EhRcqSuB2uXqa9u;pR6hbID3OKrZ0(I`<6n-6F z#3j6pD;S})t}he{Q+oa^00k`)osMW~G)8Bp<1sBt^`*13D$ShFQpn`bWpn8QoQG^a zpGoI(K-JkyJUJa(Q08YA<4Sxc5mS;$RaX)V(L`EJYsut%hK5vZ4LozV(H`1-fcsnD zZTpG5fh`w$_{~PI^CNCIixmSDD3(e_vk9lKR9B69v1X)b=dmQ8bcHS;49Hq^ao<0L zuUFDnjMBT+dSwo1ifRVpCKnM8Kh&k*6j$X7D0I?=U$mn!`xVFDIAl*`-F4VunBE^? z?hM}>Yq}ThFLOlN4Vh#?>WMnBfL*`IGOJ{|4*mu zQl4^9?t7c?Un$Iz`)!3U^hMC$T(EB~1%VrfBxG%np`{dzIAGv7@V>{fB=Q+IH|^xy ztO4>&mj$}wUN#!ds#ynmD1*~bjt7xQOXPbZ)~9ZmpsW`=*`?qlPk!{|Tz@27cie@@ z8$iRX_y-k{f(rK!v%5GJXIFE86FK2=PMh?I!{!9|wkKCD8TBS>R;=|H4ahF#VopuO zweZc|5pL@q-Mo6UQLU`BU_ze+_I^Z_s7Aw#4}Z;mG{TmM@RR2$IiftVn`fu$QF^`Q zb&9j>{io>liHLd6dqA%*1-j+6={5DtG32@}qVa>y)#G^pyIsAcn$?v>lT^sEO*s$)9 z9{cR)eh6-_S?lECEqihx%i5Pe)5d-Hm+!5g34VFko z{eTjJ0$~X*Q(UKNNIH6o`UdK;I=Q-g`b}YA@C|H~DCuBGFqGsu)*QIuPJyMugpL#^ zO^Hb^j0_D73<9>h*q1TzMP>>xv@kHpbgX1xIQEaRL87dIX+A^92CiL<5eKw3u%~>e4*vJ!QuGHi9 zM6i)1#ZqQMN0TG30Yh2?1M?CF#y<>+u@Bf+i>`Xg&g5jy!Z?eS!6HgWyqoWBgREbg zu;mm7T>%N7G-J&(&lKb&d({qW?l_cd)Zfx${e($y@q;Fz2MkOK48{%&a5KIj%xGbl zaF#7ta?PbYN-^+fmb&p19>wp21w6WsZy!UZo1i@;+kDT=J~gWOmOZX2T^nQiV7r z%1^MqI-0f9@xX-M%ZzD_4t!$Wtd9=wb5Ke4+;B?4So++u#|j%9f~{usE}Oid;Z~we z2Oqm~WzVTpBTm+k2F6c(Y?~bxu=#BNz{8{>#L2=0Ofe3@S`&cD1_$sCILNqQp-Kr4 zvx?FhO{K-|E(f%{lxBI^l!P!XS){49)ZMiKC@?9jq$CC;ptZu?jR7REsHG$YD4@1{ zxw{)kg%a19k{l+LMLH|pJs6CdCTY!D6jRc{v`}gBlI3m;AQ7cqRZ|iem^Cz26m?cX ygq$EkI*JO*)s>EAG8i42CB#)!k~)W7M{Uuvg)2a+4rOU&&C+?oz%Wk=D*yo1Jt8sy literal 0 HcmV?d00001 diff --git a/Apps/crossdev/ACCESS.SUB b/Apps/crossdev/ACCESS.SUB new file mode 100644 index 00000000..66ec69d7 --- /dev/null +++ b/Apps/crossdev/ACCESS.SUB @@ -0,0 +1,7 @@ +e:rem access.sub 9/5/2012 dwg - build access from sources +rasm80 access +rasm80 printers +rasm80 memory +rasm80 banner +link80 access,memory,banner,printers + \ No newline at end of file diff --git a/Apps/crossdev/ACCESS.SYM b/Apps/crossdev/ACCESS.SYM new file mode 100644 index 00000000..a05bf1be --- /dev/null +++ b/Apps/crossdev/ACCESS.SYM @@ -0,0 +1,8 @@ +0103 HEXREF 0113 IDSIG 0115 IDRMJ 0116 IDRMN +0117 IDRUP 0118 IDRTP 0119 IDMON 011A IDDAY +011B IDYR 0120 PRESTK 0122 BEGIN 09C1 PRDWOR +0999 PRHBYT 09AE PRHWOR 0554 XBANNE 07FF XSBANN +0546 XMEMCP 0547 XMEMSE 0983 PRHNYB 09CD PDEC +09EF PDEC1 09F1 PDEC2 0A0D PDEC3 0A24 PDEC4 +0A25 PDEC5 + \ No newline at end of file diff --git a/Apps/crossdev/ANSI.H b/Apps/crossdev/ANSI.H new file mode 100644 index 0000000000000000000000000000000000000000..a6e6f32f8af7a334881124e97a7bfaf2e95e38b3 GIT binary patch literal 384 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 literal 0 HcmV?d00001 diff --git a/Apps/crossdev/ASCII.H b/Apps/crossdev/ASCII.H new file mode 100644 index 00000000..8e1b7765 --- /dev/null +++ b/Apps/crossdev/ASCII.H @@ -0,0 +1,13 @@ +/* ascii.h 11/25/2012 dwg - */ + +#define ASCII_BS 8 +#define ASCII_TAB 9 +#define ASCII_LF 10 +#define ASCII_VT 11 +#define ASCII_FF 12 +#define ASCII_CR 13 +#define ASCII_ESC 27 + +/* eof - ascii.h */ + + \ No newline at end of file diff --git a/Apps/crossdev/ASMIFACE.O b/Apps/crossdev/ASMIFACE.O new file mode 100644 index 0000000000000000000000000000000000000000..fa0de31b4f95149af3402a132fe8c665fb40205e GIT binary patch literal 512 zcmZRPVt|4`Fs;Yf#$dw8z$74;z#wq8m_a~M$s&P4)G|&v?6s0&HG?5gzzQx<4wAQl zb1OhxJ2f0{o`=Iv9Z}DvDCm6XSuVbTC1A vNy+g@yp&XAUPewl15*dcp2XtZ%ru}rrUpA8FF7$MCozSAfzbgZH=Ff0{o`=Iv9Z}DvDCm6XSuVbTC1A vNy+g@yp&XAUPewl15*dcp2XtZ%ru}rrUpA8FF7$MCozSAfzbgZH=Fcnfgdata.termtype); + crtclr(); + crtlc(0,0); + + printf("BANKER.COM %d/%d/%d v%d.%d.%d.%d", + A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP,A_RTP); + printf(" dwg - Display Memory Bank Characteristics"); + + hregbc = 0x0f000; + hregde = 0x0c000; + diagnose(); + pSYSCFG = 0x0C000; + + crtlc(LINE+0,COL1); + crtlc(LINE+1,COL1); + printf("ROM Bank1"); + crtlc(LINE+2,COL1); + printf("RMJ = %d",pSYSCFG->cnfgdata.rmj); + crtlc(LINE+3,COL1); + printf("RMN = %d",pSYSCFG->cnfgdata.rmn); + crtlc(LINE+4,COL1); + printf("RUP = %d",pSYSCFG->cnfgdata.rup); + crtlc(LINE+5,COL1); + printf("RTP = %d",pSYSCFG->cnfgdata.rtp); + crtlc(LINE+7,COL1); + varloc = pSYSCFG->varloc; +/* dregde = (unsigned int)varloc-0x200+0x0c000; */ + dregde = (unsigned int)varloc+0x0c000; + + dregbc = 9; + bdoscall(); + crtlc(LINE+8,COL1); +/* tstloc = 0x0c000-0x0200+(unsigned int)pSYSCFG->tstloc; */ + tstloc = 0x0c000+(unsigned int)pSYSCFG->tstloc; + memset(temp,0,sizeof(temp)); + memcpy(temp,tstloc,11); + printf("%s",temp); + + crtlc(LINE+1,COL2); + printf("CBIOS HDR"); + crtlc(LINE+2,COL2); + printf("RMJ = %d",pCBIOS->rmj); + crtlc(LINE+3,COL2); + printf("RMN = %d",pCBIOS->rmn); + crtlc(LINE+4,COL2); + printf("RUP = %d",pCBIOS->rup); + crtlc(LINE+5,COL2); + printf("RTP = %d",pCBIOS->rtp); + /* */ + crtlc(LINE+7,COL2); + varloc = pINFOLIST->varloc; + memset(temp,0,sizeof(temp)); + memcpy(temp,varloc,sizeof(temp)-1); + for(i=0;itstloc; + memset(temp,0,sizeof(temp)); + memcpy(temp,tstloc,11); + printf("%s",temp); + + crtlc(LINE+1,COL3); + printf("BANKER.COM"); + crtlc(LINE+2,COL3); + printf("RMJ = %d",A_RMJ); + crtlc(LINE+3,COL3); + printf("RMN = %d",A_RMN); + crtlc(LINE+4,COL3); + printf("RUP = %d",A_RUP); + crtlc(LINE+5,COL3); + printf("RTP = %d",A_RTP); + + crtlc(LINE+8,COL3); + printf("%02d%02d%02d",A_YR,A_MONTH,A_DAY); + crtlc(23,0); +} + +/*****************/ +/* eof - cview.c */ +/*****************/ + \ No newline at end of file diff --git a/Apps/crossdev/BANNER.ASM b/Apps/crossdev/BANNER.ASM new file mode 100644 index 00000000..935a8671 --- /dev/null +++ b/Apps/crossdev/BANNER.ASM @@ -0,0 +1,156 @@ +; 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: + shld argv + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg + + + printf '----------------------------------------' + print crlf + lhld xprog ! xchg ! mvi c,9 ! call BDOS + printf ' ' + IF A$MONTH LT 10 + conout ' ' + ENDIF + IF A$DAY LT 10 + conout ' ' + ENDIF + lxi h,A$MONTH + call pr$d$word + conout '/' + lxi h,A$DAY + call pr$d$word + conout '/' + lxi h,A$YEAR + call pr$d$word + printf ' ' + printf 'Version ' + lxi h,A$RMJ + call pr$d$word + conout '.' + lxi h,A$RMN + call pr$d$word + conout '.' + lxi h,A$RUP + call pr$d$word + printf ' (' + lxi h,A$RTP + call pr$d$word + conout ')' + print crlf + printf 'S/N ' + + lhld xprod ! xchg ! mvi c,9 ! call BDOS + + conout '-' + + lhld xorig ! xchg ! mvi c,9 ! call BDOS + + conout '-' + +; print xser + lhld xser ! xchg ! mvi c,9 ! call BDOS + + printf ' ' +; printf 'All Rights Reserved' + printf 'Licensed under GPL3' + print crlf + printf 'Copyright (C) 2011-12' + + lhld xnam ! xchg ! mvi c,9 ! call BDOS + + print crlf + printf '----------------------------------------' + print crlf + + ret + + +; entered with argv in hl + public x$sbanner +x$sbanner: + shld argv + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg + mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg + + +; printf '----------------------------------------' +; print crlf + lhld xprog ! xchg ! mvi c,9 ! call BDOS + printf ' ' + IF A$MONTH LT 10 + conout ' ' + ENDIF + IF A$DAY LT 10 + conout ' ' + ENDIF + lxi h,A$MONTH + call pr$d$word + conout '/' + lxi h,A$DAY + call pr$d$word + conout '/' + lxi h,A$YEAR + call pr$d$word + printf ' ' + printf 'Vers. ' + lxi h,A$RMJ + call pr$d$word + conout '.' + lxi h,A$RMN + call pr$d$word + conout '.' + lxi h,A$RUP + call pr$d$word + printf ' ( ' + lxi h,A$RTP + call pr$d$word + printf ') ' + printf 'COPR Douglas Goodall Licensed w/GPLv3' + + + print crlf + + ret + + +;---------------------------------------------------------------- + +argv ds 2 +;---------------- +xprog ds 2 +xvers ds 2 +xprod ds 2 +xorig ds 2 +xser ds 2 +xnam ds 2 + +crlf db CR,LF,'$' + + end + +; eof - banner.asm + \ No newline at end of file diff --git a/Apps/crossdev/BANNER.LIB b/Apps/crossdev/BANNER.LIB new file mode 100644 index 00000000..fca38939 --- /dev/null +++ b/Apps/crossdev/BANNER.LIB @@ -0,0 +1,18 @@ +; banner.lib 7/19/2012 dwg - for 2.0.0.0 B22 +; banner.lib 2/17/2012 dwg - review for release 1.5.1.0 +; banner.lib 2/11/2012 dwg - banner library declarations + + extrn x$banner +banner macro argv + lxi h,argv + call x$banner + endm + + extrn x$sbanner +sbanner macro argv + lxi h,argv + call x$sbanner + endm + +; eof - banner.lib + \ No newline at end of file diff --git a/Apps/crossdev/BANNER.REL b/Apps/crossdev/BANNER.REL new file mode 100644 index 0000000000000000000000000000000000000000..e3566c2bd3d5e1e430bb17bca5f2a62818c12ea1 GIT binary patch literal 1408 zcmZpj5F#QhIx!)&MMdPvlL*N~Urts_s{jT@Q+<|c4GbJBJ}6eWg$eFD64D@eElzN1 zOWsCNC6?0ZEvbppYg|1UWm6wYM!3Be3`%g1geqJBSE$8Ox;J8NxQ2z0;K~M`3mS}v zE+*`WD80fEr7PC$y69rY7GfA4Uz4`REO_AIHjT;HVF5e0Ytu*3AO`mc3!$@24RUM3 zR!@=P3Bfl!`@k}3>Hy3 z;vFq=3~9F$*jJ0LddkkweCQk06eY12va^d0z>L2ifH3|8gMt7jOya@@F_^tp8cbnE zbNbRISMG370aWioN;o-gD!?6Pt;ZBBKDmX-F;s=6w7F3Ss1gvbDP>0^EZP%qE>I*cnL(4HGB|1)6{R9LpaF1nlG5S>tfRK2^21>6<4;dzaQf1~3 zY0Ol~!Ekonf_!kQWMpqW19h^C0t2(zQASwe+tvX0OW6Y+2MqyE7LbDTjW7kf6yOTV z19*a9xl>4R&jYwbiHSg)zlKN)i*x0bb2$ccj<6J0?m3ZYCe6Zf*t6$Up5;uRCgvS` z`U2Es+mhVD-e+<$*&ql_z};$54xGA5EYl`2d3!dhE@hZ>X@O^Ef`W;NN?!v5v~+tL xAr=wr=L0tR8A0;2*30i|LFq3k3jpj2jpQXzxLN01%{_6|m%(J4i#>51_SKpqp6 tmy{fj#7jv<=4Ir>Gca|4T$EE=L0tR8A0;2*30i|LFq3k3jpj2jpQXzxLN01%{_6|m%(J4i#>51_SKpqp6 tmy{fj#7jv<=4Ir>Gca|4T$EElTFr1Zs1|;Rr$~_b0W;m<(Ot69Btje>q z((2D1UOf2mBv9Q~twIJN7hkO+2BDBxtzrfNCB-rZLjkJ-2H~@;3`PY&fno-s>?9?i zg3JV^LI#nKK&>Yk*gF`3mSz^ErYFWT0C`MMUQ%*A5-%kcnU|3h&%o3Ha%*~ONp5OM fVmwoaI*^x?nO~fon3KcQUlTFr1Zs1|;Rr$~_b0W;m<(Ot69Btje>q z((2D1UOf2mBv9Q~twIJN7hkO+2BDBxtzrfNCB-rZLjkJ-2H~@;3`PY&fno-s>?9?i zg3JV^LI#nKK&>Yk*gF`3mSz^ErYFWT0C`MMUQ%*A5-%kcnU|3h&%o3Ha%*~ONp5OM fVmwoaI*^x?nO~fon3KcQU ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + lxi d,offset ; load caller's parameter in de + mov m,e ; stuff LO offset byte into offset + inx h ; bump ptr + mov m,d ; stuff HO offset byte into offset + mvi c,13 ; BDOS DSKRESET + call 5 ; call BDOS + endm + +getlu13 macro + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + mov e,m ; pick up LO byte of offset + inx h ; bump ptr + mov d,m ; pick up HO byte of offset + xchg ; hl = offset + endm + +setlu14 macro offset + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + lxi d,offset ; load caller's parameter in de + mov m,e ; stuff LO offset byte into offset + inx h ; bump ptr + mov m,d ; stuff HO offset byte into offset + mvi c,13 ; BDOS DSKRESET + call 5 ; call BDOS + endm + +getlu14 macro + lxi h,PPIPTR2 ; set pointer to ppide.asm data + mov e,m ; dereference pointer + inx h + mov d,m ; de -> ppide.asm data + xchg ; hl -> ppide.asm data + lxi d,6 ; offset to offset + dad d ; hl -> offset in ppide.asm data + mov e,m ; pick up LO byte of offset + inx h ; bump ptr + mov d,m ; pick up HO byte of offset + xchg ; hl = offset + endm + +setlu macro drive,slice + local dontboth,msg,msg2 + mvi c,drive + call BISELDSK + lxi d,16 + dad d + mov a,m + cpi 'L' + jnz dontboth + inx h + mov a,m + cpi 'U' + jnz dontboth + inx h + mvi a,slice + mov m,a + print msg + mvi a,drive + adi 'A' + mov e,a + mvi c,2 + call BDOS + print msg2 + lxi h,slice + call pr$d$word + jmp dontboth +msg db CR,LF,'Drive $' +msg2 db ': set to Logical Unit (slice) $' +dontboth: + endm + + +xluset macro + local ldrive,lslice,dontboth,msg,msg2 + ; C = DRIVE + ; A = SLICE + sta lslice + mov a,c + sta ldrive + + call BISELDSK ; uses c parameter (drive) + lxi d,16 + dad d + mov a,m + cpi 'L' + jnz dontboth + inx h + mov a,m + cpi 'U' + jnz dontboth + inx h + lda lslice + mov m,a ; put slice into CURRENT + +; print msg +; lda ldrive +; adi 'A' +; mov e,a +; mvi c,2 +; call BDOS +; print msg2 +; lda lslice +; mov l,a +; mvi h,0 +; call pr$d$word + + jmp dontboth +msg db CR,LF,'Drive $' +msg2 db ': set to Logical Unit (slice) $' +ldrive db 0 +lslice db 0 +dontboth: + endm + + + + + + + +hdrlit macro ptr,val,msg + local notval + lxi h,ptr + mvi a,val + cmp m + jnz notval + print msg +notval: + endm + + +hdrbool macro ptr,tmsg,fmsg + local itstrue,itsfalse,imdone + enter + lxi h,ptr + mov a,m + cpi TRUE + jnz itsfalse + lxi d,tmsg + jmp imdone +itsfalse: lxi d,fmsg +imdone: mvi c,PRINTSTR + call BDOS + leave + endm + +hdrbyte macro ptr,msg + enter + mvi c,PRINTSTR + lxi d,msg + call BDOS + lxi h,ptr + mov a,m + call pr$h$byte + + conout '(' + mov e,m + mov d,0 + xchg + call pr$d$word + conout ')' + + leave + endm + +hdrpbyte macro ptr,msg + enter + mvi c,PRINTSTR + lxi d,msg + call BDOS + lxi h,PTR + mov e,m + inx h + mov d,m + xchg + mov a,m + call pr$h$byte + +; conout ' ' + conout '(' + mov e,m + mov d,0 + xchg + call pr$d$word + conout ')' + leave + endm + +hdrword macro ptr,msg + enter + + mvi c,PRINTSTR + lxi d,msg + call BDOS + + lxi h,ptr + inx h + mov a,m + call pr$h$byte + + lxi h,ptr + mov a,m + call pr$h$byte + + conout '(' + lxi h,ptr + mov e,m + inx h + mov d,m + xchg + call pr$d$word + conout ')' + leave + endm + +syncerr macro + print syncmsg + exit + endm + +hdrvalid macro + local byte1ok,byte2ok + enter + lxi h,CFDA + mov a,m + cpi 0DAh + jz byte1ok + syncerr +byte1ok: + inx h + mov al,m + cpi 0CFh + jz byte2ok + syncerr +byte2ok: + leave + endm + +; eof - bioshdr.lib + \ No newline at end of file diff --git a/Apps/crossdev/CBANNER.ASM b/Apps/crossdev/CBANNER.ASM new file mode 100644 index 00000000..7648636c --- /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,16 + PUSH H + LXI H,1 + PUSH H + LXI H,.5+4 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,3 + 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,16 + PUSH H + LXI H,1 + PUSH H + LXI H,.7+10 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,3 + 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 0000000000000000000000000000000000000000..5759d5a045e33de255f394d876d112ffdf8f470d GIT binary patch literal 1280 zcmd^7O^*^m5G@9DH^c*M;)v;taq}xr%nwA*hBBZK2u4!8lGF12v6-}nN zpSVMc<=gpWe79DL=XT_5CY>UCrm9=6u91B!qUjDPmG?5JP?@4=_ePFswEN^*af_sr zaw-*1rOB?nZ*&?isVNsp$+opdrvqUPLK7E4G@94oeBsH}>Ss!INQP&VL%1@X(ywbX z8iE=1;YK3M33*P}q41poCfW9HVvxLw$}3*7Ij2EZf|}ZEPc;1)a|y)KT7vJatPuiY zY7*0wn2ekK2^8;^E7-5>H7uINnPoBbK?3I;WP%V1x4Z$i2N1>%4bl1rwjRy579&Ng z!xn55W|L>YnFj(shYQmgJqOeI!FfkV=zqUS@!`!=&ks8~tv?*evX3l>OicUV?%?m>TrRJSqEmz?V8r#Pi+bIw0z^&QjF-8z7OED4n2C?HUp zqq72K5J}^Ah}>qwvUI2Jz20+7tKX_4cgqJLDAAeQchugfzCs<{S|G*XjjcGf(Z^ek i@BxflJXUx-#OS;E@`UAooI0Q2d(u&t$F~^&@AVT%2Mn_S literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CC.COM b/Apps/crossdev/CC.COM new file mode 100644 index 0000000000000000000000000000000000000000..1fbf701bb7a1b900412e52d244a13f59f5492708 GIT binary patch literal 39296 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.termtype); */ + + + crtinit(pSYSCFG->cnfgdata.termtype); crtclr(); crtlc(0,0); @@ -130,4 +149,4 @@ int main(argc,argv) return 0; } - \ No newline at end of file + \ No newline at end of file diff --git a/Apps/crossdev/CHARS.SUB b/Apps/crossdev/CHARS.SUB new file mode 100644 index 00000000..3a21c6d9 --- /dev/null +++ b/Apps/crossdev/CHARS.SUB @@ -0,0 +1,18 @@ +e:rem chars.sub 7/22/2012 dwg - build chars from source +cc chars +as chars +as bdoscall +as bioscall +as diagnose +cc cbanner +as cbanner +cc ctermcap +as ctermcap +ln chars.o bdoscall.o bioscall.o cbanner.o diagnose.o ctermcap.o c.lib +era chars.o +era bdoscall.o +era bioscall.o +era diagose.o +era cbanner.o +era ctermcap.o + \ No newline at end of file diff --git a/Apps/crossdev/CHECK.SUB b/Apps/crossdev/CHECK.SUB new file mode 100644 index 00000000..bc711968 --- /dev/null +++ b/Apps/crossdev/CHECK.SUB @@ -0,0 +1,12 @@ +e:access access.com +e:access cpmname.com +e:access findfile.com +e:access map.com +e:access meta.com +e:access multifmt.com +e:access rem.com +e:access setlabel.com +e:access sysgen.com +e:access termtype.com +e:access view.com + \ No newline at end of file diff --git a/Apps/crossdev/CLEAN.SUB b/Apps/crossdev/CLEAN.SUB new file mode 100644 index 00000000..46363e2d --- /dev/null +++ b/Apps/crossdev/CLEAN.SUB @@ -0,0 +1,27 @@ +era *.bak +era *.prn +era *.rel +era *.sym +era *.lst +era *.o +era sect0*.h +era sect1*.h +era sect2*.h +era sect3*.h +era sect4*.h +era sect5*.h +era sect6*.h +era sect7*.h +era sect8*.h +era sect9*.h +era sect0*.inc +era sect1*.inc +era sect2*.inc +era sect3*.inc +era sect4*.inc +era sect5*.inc +era sect6*.inc +era sect7*.inc +era sect8*.inc +era sect9*.inc + \ No newline at end of file diff --git a/Apps/crossdev/CLEAR.ASM b/Apps/crossdev/CLEAR.ASM new file mode 100644 index 00000000..261b3d1f --- /dev/null +++ b/Apps/crossdev/CLEAR.ASM @@ -0,0 +1,44 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global style_,1 + global vdp_rege_,960 + global pINFOLIS_,2 + global metadata_,128 + global pCNFGDAT_,2 + global pSYSCFG_,2 + PUBLIC main_ +main_: lxi d,.2 + call csave + 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 + RET +.2 EQU -1 + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + END + \ No newline at end of file diff --git a/Apps/crossdev/CLEAR.C b/Apps/crossdev/CLEAR.C new file mode 100644 index 00000000..2edfea8d --- /dev/null +++ b/Apps/crossdev/CLEAR.C @@ -0,0 +1,48 @@ +/* clear.c 11/23/2012 dwg - */ + +#include "portab.h" +#include "globals.h" + +#include "stdio.h" +#include "stdlib.h" +#include "memory.h" +#include "applvers.h" +#include "n8chars.h" +#include "tms9918.h" +#include "std.h" +#include "ctermcap.h" +#include "cpmbdos.h" +#include "bdoscall.h" +#include "hbios.h" +#include "asmiface.h" +#include "diagnose.h" +#include "cnfgdata.h" +#include "syscfg.h" +#include "cpmbind.h" +#include "infolist.h" +#include "metadata.h" +#include "clogical.h" + +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +struct CNFGDATA * pCNFGDATA; +struct SYSCFG * pSYSCFG; + +int main(argc,argv) + int argc; + char *argv[]; +{ + char column; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); +} + + \ No newline at end of file diff --git a/Apps/crossdev/CLEAR.SUB b/Apps/crossdev/CLEAR.SUB new file mode 100644 index 00000000..5a9b9907 --- /dev/null +++ b/Apps/crossdev/CLEAR.SUB @@ -0,0 +1,10 @@ +e:rem clear.sub 7/22/2012 dwg - build clear from sources +cc clear +as clear +as bdoscall +as bioscall +cc ctermcap +as ctermcap +as diagnose +ln clear.o diagnose.o bioscall.o bdoscall.o ctermcap.o c.lib + \ No newline at end of file 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.H b/Apps/crossdev/CLOGICAL.H index 37385b8e..c0624494 100644 --- a/Apps/crossdev/CLOGICAL.H +++ b/Apps/crossdev/CLOGICAL.H @@ -1,11 +1,7 @@ - /*****************************/ /* clogical.H 6/4/2012 dwg - */ /*****************************/ -#define METATRK 0 -#define METASEC 11 - extern lugdu(); extern lugcur(); extern luscur(); @@ -15,4 +11,4 @@ extern lusnum(); /********************/ /* eof - clogical.h */ /********************/ - \ No newline at end of file + \ No newline at end of file diff --git a/Apps/crossdev/CLOGICAL.O b/Apps/crossdev/CLOGICAL.O new file mode 100644 index 0000000000000000000000000000000000000000..cb9e3a5ca4a160de82e9c13f70ab357c34894fe0 GIT binary patch literal 768 zcmZRPVt|5wU|NmIjnRdPfmuK>fkEJGF@uC61H)4=R##d=+mdjhCxH%Bm+AKDDd=>Qqwc@ z7+}2Qj2w_CRIa$Z1i?!#PAp4>%Ow}3BFX9H=7Z&!IzZ}kO4E}|i{hcCBo^mprp3d| ztSCxNPf3kuVCqnZsLU(Pg{cI|W#oY5{2+2Er6~H6l3^cnfgdata.termtype); /* pass termtype to init */ + + crtclr(); + + crtlc(0,0); +} + + + \ No newline at end of file diff --git a/Apps/crossdev/CMEMORY.ASM b/Apps/crossdev/CMEMORY.ASM new file mode 100644 index 00000000..cb11cdc3 --- /dev/null +++ b/Apps/crossdev/CMEMORY.ASM @@ -0,0 +1,283 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC memcmp_ +memcmp_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,-2-.2 + 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 +.4: + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .5 + LXI H,0-.2 + 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 + XCHG + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,4-.2 + 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 + XCHG + DCX H + MOV E,M + MVI D,0 + POP H + CALL .ne + JZ .6 + LXI H,0 + RET +.6: + JMP .3 +.5: + LXI H,1 + RET +.2 EQU -6 + PUBLIC memcpy_ +memcpy_: lxi d,.7 + call csave + LXI H,10-.7 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2-.7 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,8-.7 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.7 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-2-.7 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .9 +.8: + LXI H,-2-.7 + 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 +.9: + LXI H,-2-.7 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12-.7 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .10 + LXI H,2-.7 + 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 + XCHG + DCX H + MOV E,M + PUSH D + LXI H,2-.7 + 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 + XCHG + DCX H + POP D + MOV M,E + JMP .8 +.10: + RET +.7 EQU -6 + PUBLIC memset_ +memset_: lxi d,.11 + call csave + LXI H,8-.11 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2-.11 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.11 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .13 +.12: + LXI H,0-.11 + 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 +.13: + LXI H,0-.11 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12-.11 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .ul + JZ .14 + LXI H,10-.11 + DAD SP + MOV E,M + PUSH D + LXI H,4-.11 + 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 + XCHG + DCX H + POP D + MOV M,E + JMP .12 +.14: + RET +.11 EQU -4 + extrn .ne + extrn .lt + extrn .ul + END + \ No newline at end of file diff --git a/Apps/crossdev/CMEMORY.O b/Apps/crossdev/CMEMORY.O new file mode 100644 index 0000000000000000000000000000000000000000..d58456b5320cf912e67d9d9513d4dc9babd3b76c GIT binary patch literal 768 zcmZva!AiqG5QZmF(1SvvRYU|yaujMP9-30LzJ$j%ZQQo2OA>4X-k+q${*6Z3`>e?gEI0!(e$hhDXVCl zX?g}T&**4+F7BB&>`)J2s_Cbp!!P5csP?S4JEPh%rW2YYop$AI*s@R>^+0)c&@NW( zC+*XN;`RoNHT`IzFd6m56z>Hq)$ literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNAMEPT1.ASM b/Apps/crossdev/CNAMEPT1.ASM new file mode 100644 index 00000000..98b7e2d6 --- /dev/null +++ b/Apps/crossdev/CNAMEPT1.ASM @@ -0,0 +1,527 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept1_ +cnamept1_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+51 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,5 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+85 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+119 + PUSH H + CALL printf_ + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,9 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+153 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+175 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,11 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+197 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,12 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+241 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,13 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+261 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+266 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 2 + DW 0,.6 + DW 1,.5 + DW .4 +.4: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,14 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+272 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+298 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,23 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+324 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+349 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .7 +.9: + LXI H,.1+369 + PUSH H + CALL printf_ + POP D + JMP .8 +.10: + LXI H,.1+375 + PUSH H + CALL printf_ + POP D + JMP .8 +.11: + LXI H,.1+380 + PUSH H + CALL printf_ + POP D + JMP .8 +.7: + CALL .swt + DW 3 + DW 1,.9 + DW 2,.10 + DW 3,.11 + DW .8 +.8: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+383 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,25 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+403 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+415 + PUSH H + CALL printf_ + POP D + JMP .13 +.16: + LXI H,.1+429 + PUSH H + CALL printf_ + POP D + JMP .13 +.17: + LXI H,.1+441 + PUSH H + CALL printf_ + POP D + JMP .13 +.18: + LXI H,.1+453 + PUSH H + CALL printf_ + POP D + JMP .13 +.19: + LXI H,.1+463 + PUSH H + CALL printf_ + POP D + JMP .13 +.20: + LXI H,.1+478 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 6 + DW 0,.14 + DW 1,.15 + DW 2,.16 + DW 3,.17 + DW 4,.18 + DW 5,.19 + DW .20 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+486 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,26 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .21 +.23: + LXI H,.1+506 + PUSH H + CALL printf_ + POP D + JMP .22 +.24: + LXI H,.1+518 + PUSH H + CALL printf_ + POP D + JMP .22 +.25: + LXI H,.1+529 + PUSH H + CALL printf_ + POP D + JMP .22 +.26: + LXI H,.1+541 + PUSH H + CALL printf_ + POP D + JMP .22 +.27: + LXI H,.1+555 + PUSH H + CALL printf_ + POP D + JMP .22 +.28: + LXI H,.1+567 + PUSH H + CALL printf_ + POP D + JMP .22 +.21: + CALL .swt + DW 5 + DW 0,.23 + DW 1,.24 + DW 2,.25 + DW 3,.26 + DW 4,.27 + DW .28 +.22: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,27 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+577 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,29 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+599 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,115,121,115,99,102,103,45,62,106,109,112,32,32 + DB 32,32,32,32,32,32,32,32,32,32,106,112,32,32,48 + DB 37,48,52,120,104,0,115,121,115,99,102,103,45,62,99 + DB 110,102,108,111,99,32,32,32,32,32,32,32,32,32,46 + DB 100,119,32,48,37,48,52,120,104,0,115,121,115,99,102 + DB 103,45,62,116,115,116,108,111,99,32,32,32,32,32,32 + DB 32,32,32,46,100,119,32,48,37,48,52,120,104,0,115 + DB 121,115,99,102,103,45,62,118,97,114,108,111,99,32,32 + DB 32,32,32,32,32,32,32,46,100,119,32,48,37,48,52 + DB 120,104,0,37,115,46,114,109,106,32,32,32,32,32,32 + DB 32,32,32,32,32,61,32,37,100,0,37,115,46,114,109 + DB 110,32,32,32,32,32,32,32,32,32,32,32,61,32,37 + DB 100,0,37,115,46,114,117,112,32,32,32,32,32,32,32 + DB 32,32,32,32,61,32,37,100,0,37,115,46,114,116,112 + DB 32,32,32,32,32,32,32,32,32,32,32,61,32,37,100 + DB 0,37,115,46,100,105,115,107,98,111,111,116,32,32,32 + DB 32,32,32,61,32,0,84,82,85,69,0,70,65,76,83 + DB 69,0,37,115,46,100,101,118,117,110,105,116,32,32,32 + DB 32,32,32,32,61,32,48,120,37,48,50,120,0,37,115 + DB 46,98,111,111,116,108,117,32,32,32,32,32,32,32,32 + DB 61,32,48,120,37,48,52,120,0,37,115,46,102,114,101 + DB 113,32,32,32,32,32,32,32,32,32,32,61,32,37,100 + DB 77,72,122,0,37,115,46,112,108,97,116,102,111,114,109 + DB 32,32,32,32,32,32,61,32,0,78,56,86,69,77,0 + DB 90,69,84,65,0,78,56,0,37,115,46,100,105,111,112 + DB 108,97,116,32,32,32,32,32,32,32,61,32,0,68,73 + DB 79,80,76,84,95,78,79,78,69,0,68,73,79,80,76 + DB 84,95,68,73,83,75,73,79,0,68,73,79,80,76,84 + DB 95,90,69,84,65,0,68,73,79,80,76,84,95,68,73 + DB 68,69,0,68,73,79,80,76,84,95,78,56,0,68,73 + DB 79,80,76,84,95,68,73,83,75,73,79,51,0,85,110 + DB 107,110,111,119,110,0,37,115,46,118,100,117,109,111,100 + DB 101,32,32,32,32,32,32,32,61,32,0,86,68,85,80 + DB 76,84,95,78,79,78,69,0,86,68,85,80,76,84,95 + DB 86,68,85,0,86,68,85,80,76,84,95,86,68,85,67 + DB 0,86,68,85,80,76,84,95,80,82,79,80,73,79,0 + DB 86,68,85,80,76,84,95,86,80,78,56,0,85,110,107 + DB 110,111,119,110,33,33,0,37,115,46,114,111,109,115,105 + DB 122,101,32,32,32,32,32,32,32,61,32,37,100,0,37 + DB 115,46,114,97,109,115,105,122,101,32,32,32,32,32,32 + DB 32,61,32,37,100,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + END + \ No newline at end of file diff --git a/Apps/crossdev/CNAMEPT1.O b/Apps/crossdev/CNAMEPT1.O new file mode 100644 index 0000000000000000000000000000000000000000..30243fe56cbcc67e3813e03387a3d4ab618a8c7b GIT binary patch literal 2304 zcmd5-OK;;;6h2N{I>WPOB%ozR*QNwkgfOrekcy~C&{TBVbQ-6cmX7P#&Z~(XY&U)E z5E?Nc5D$S6@3+_^u|%rW4J?XOp;@qD#VpYL0JfZS{Ag@V_gKo;d%yFYbG~zL+>A~^ z^!z+Vi~aG(##^W0^n|HnowSk;kdNwJ=Hr9pV^Z(oz@W8eASR)@DSRt`G zOdNV}CWm)rgDimwC`li>dT+)`<^8mk7$VR!FR5iC2aRns)>wXo8%BHpnB;0Zinfv!N)bpfx+A^$G<-;m@{FeG^l>XIp?C#ikO z`RPffqDd@?U&z(3;vS8VsC}IwmcGdl>sey$+l*r6yCH&%(?0}TLgP&djkhE;-X`N6 zX*2SC{6%^g4Gw>imcHj=w|V!@Wt1yF3@gQN{;qE}nom4$I*q1f1j2xr>Gb-Fq6qwi zPY1Wfd{I2J(@Hd$)fKK8OO%4OtrSJRIIIbL5p>fUL4}4jVqkbFji5rIChr%#Ugy|{ zqRc3H3k35{(i)vIPxKZ!Ppl`j2$+vjkQNr8+-m!qb=M7|lo1P#~g5swj} zz`})E`4X&_tFyS|;jFexvQR?9L1}KWGGEmf78lAOqD^UT`Q^Dq3<-{LfiNWW(p;&W zBw^81%G00;XVY=F9r8M`wtB85?64a(tCh6MyokE-rmELULJI@5)?UQ5Kvh+*Twbi8 z3z7-k)+#uI7FJh=ePH`K3!#UCkE2zLO!Np{1mZx55~U`|F6$~_j5fg literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNAMEPT2.ASM b/Apps/crossdev/CNAMEPT2.ASM new file mode 100644 index 00000000..a8280c90 --- /dev/null +++ b/Apps/crossdev/CNAMEPT2.ASM @@ -0,0 +1,480 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept2_ +cnamept2_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,31 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+37 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+47 + PUSH H + CALL printf_ + POP D + JMP .4 +.7: + LXI H,.1+56 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 3 + DW 0,.5 + DW 1,.6 + DW 2,.7 + DW .4 +.4: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+68 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,32 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .8 +.10: + LXI H,.1+88 + PUSH H + CALL printf_ + POP D + JMP .9 +.11: + LXI H,.1+93 + PUSH H + CALL printf_ + POP D + JMP .9 +.8: + CALL .swt + DW 2 + DW 0,.11 + DW 1,.10 + DW .9 +.9: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+99 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,33 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+119 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+124 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 2 + DW 0,.15 + DW 1,.14 + DW .13 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+130 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,34 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .16 +.18: + LXI H,.1+150 + PUSH H + CALL printf_ + POP D + JMP .17 +.19: + LXI H,.1+155 + PUSH H + CALL printf_ + POP D + JMP .17 +.16: + CALL .swt + DW 2 + DW 0,.19 + DW 1,.18 + DW .17 +.17: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+161 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,35 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .20 +.22: + LXI H,.1+181 + PUSH H + CALL printf_ + POP D + JMP .21 +.23: + LXI H,.1+186 + PUSH H + CALL printf_ + POP D + JMP .21 +.20: + CALL .swt + DW 2 + DW 0,.23 + DW 1,.22 + DW .21 +.21: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,35 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .24 + LXI H,cache_ + PUSH H + LXI H,.1+192 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,36 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .25 +.27: + LXI H,.1+212 + PUSH H + CALL printf_ + POP D + JMP .26 +.28: + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + JMP .26 +.29: + LXI H,.1+232 + PUSH H + CALL printf_ + POP D + JMP .26 +.30: + LXI H,.1+243 + PUSH H + CALL printf_ + POP D + JMP .26 +.31: + LXI H,.1+254 + PUSH H + CALL printf_ + POP D + JMP .26 +.25: + CALL .swt + DW 4 + DW 0,.27 + DW 1,.28 + DW 2,.29 + DW 3,.30 + DW .31 +.26: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+264 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,37 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .32 +.34: + LXI H,.1+284 + PUSH H + CALL printf_ + POP D + LXI H,.1+291 + PUSH H + CALL printf_ + POP D + JMP .33 +.35: + LXI H,.1+329 + PUSH H + CALL printf_ + POP D + LXI H,.1+336 + PUSH H + CALL printf_ + POP D + JMP .33 +.36: + LXI H,.1+376 + PUSH H + CALL printf_ + POP D + LXI H,.1+383 + PUSH H + CALL printf_ + POP D + JMP .33 +.37: + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + LXI H,.1+429 + PUSH H + CALL printf_ + POP D + JMP .33 +.38: + LXI H,.1+468 + PUSH H + CALL printf_ + POP D + JMP .33 +.32: + CALL .swt + DW 4 + DW 0,.34 + DW 1,.35 + DW 2,.36 + DW 3,.37 + DW .38 +.33: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+478 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,38 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+498 + PUSH H + CALL printf_ + POP D + LXI H,.1+505 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+543 + PUSH H + CALL printf_ + POP D + LXI H,.1+550 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+590 + PUSH H + CALL printf_ + POP D + LXI H,.1+597 + PUSH H + CALL printf_ + POP D + JMP .40 +.44: + LXI H,.1+636 + PUSH H + CALL printf_ + POP D + LXI H,.1+643 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 4 + DW 0,.41 + DW 1,.42 + DW 2,.43 + DW 3,.44 + DW .40 +.40: + CALL pager_ +.24: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,99,108,114,114,97,109,100,107,32,32 + DB 32,32,32,32,61,32,0,67,76,82,95,78,69,86,69 + DB 82,0,67,76,82,95,65,85,84,79,0,67,76,82,95 + DB 65,76,76,87,65,89,83,0,37,115,46,100,115,107,121 + DB 101,110,97,98,108,101,32,32,32,32,61,32,0,84,82 + DB 85,69,0,70,65,76,83,69,0,37,115,46,117,97,114 + DB 116,101,110,97,98,108,101,32,32,32,32,61,32,0,84 + DB 82,85,69,0,70,65,76,83,69,0,37,115,46,118,100 + DB 117,101,110,97,98,108,101,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,37,115,46,102 + DB 100,101,110,97,98,108,101,32,32,32,32,32,32,61,32 + DB 0,84,82,85,69,0,70,65,76,83,69,0,37,115,46 + DB 102,100,116,114,97,99,101,32,32,32,32,32,32,32,61 + DB 32,0,83,105,108,101,110,116,0,70,97,116,97,108,32 + DB 69,114,114,111,114,115,0,65,108,108,32,69,114,114,111 + DB 114,115,0,69,118,101,114,121,116,104,105,110,103,0,85 + DB 110,107,110,111,119,110,33,33,0,37,115,46,102,100,109 + DB 101,100,105,97,32,32,32,32,32,32,32,61,32,0,70 + DB 68,77,55,50,48,0,32,32,51,46,53,32,55,50,48 + DB 75,66,32,50,45,115,105,100,101,100,32,56,48,32,84 + DB 114,107,115,32,57,32,83,101,99,116,111,114,115,0,70 + DB 68,77,49,52,52,0,32,32,51,46,53,32,49,46,52 + DB 52,77,66,32,50,45,115,105,100,101,100,32,56,48,32 + DB 84,114,107,115,32,49,56,32,83,101,99,116,111,114,115 + DB 0,70,68,77,51,54,48,0,32,32,53,46,50,53,32 + DB 51,54,48,75,66,32,50,45,115,105,100,101,100,32,52 + DB 48,32,84,114,107,115,32,57,32,83,101,99,116,111,114 + DB 115,0,70,68,77,49,50,48,0,32,32,51,46,53,32 + DB 49,46,50,77,66,32,50,45,115,105,100,101,100,32,56 + DB 48,32,84,114,107,115,32,49,53,32,83,101,99,116,111 + DB 114,115,0,85,110,107,110,111,119,110,33,33,0,37,115 + DB 46,102,100,109,101,100,105,97,97,108,116,32,32,32,32 + DB 61,32,0,70,68,77,55,50,48,0,32,32,51,46,53 + DB 32,55,50,48,75,66,32,50,45,115,105,100,101,100,32 + DB 56,48,32,84,114,107,115,32,57,32,83,101,99,116,111 + DB 114,115,0,70,68,77,49,52,52,0,32,32,51,46,53 + DB 32,49,46,52,52,77,66,32,50,45,115,105,100,101,100 + DB 32,56,48,32,84,114,107,115,32,49,56,32,83,101,99 + DB 116,111,114,115,0,70,68,77,51,54,48,0,32,32,53 + DB 46,50,53,32,51,54,48,75,66,32,50,45,115,105,100 + DB 101,100,32,52,48,32,84,114,107,115,32,57,32,83,101 + DB 99,116,111,114,115,0,70,68,77,49,50,48,0,32,32 + DB 51,46,53,32,49,46,50,77,66,32,50,45,115,105,100 + DB 101,100,32,56,48,32,84,114,107,115,32,49,53,32,83 + DB 101,99,116,111,114,115,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/Apps/crossdev/CNAMEPT2.O b/Apps/crossdev/CNAMEPT2.O new file mode 100644 index 0000000000000000000000000000000000000000..ad28d6bb4edaac1174dbf500dc9b089efb4c8fc4 GIT binary patch literal 2560 zcmd^=O>Y}j6o&6igF<0rgH(wM>5iM06|rL1fmEodE_H;21Fgq)6Pnl=&xh@JJP9+? z6vK*AAbfud2?VGJ1RH)rrAXNTl7R@ZVZjDvf!J28Sa8m{Gns4Se}JXDx^vFC=Q;1a z<9O;gi#|Wzfs22ptJ70Q*KW@(i<3^op* zgUvVrVyibMV6_O_7L?_e;-*~@Sd#-tQGv37ln#TE5rF>k1VAPN^hCeQuf%}92&~G1 z7~mnmWl%B#sO(GtoQMFMqF?>h7+@%L30LGm3}`6;SXZEA1aRrK34oahV2XaV*JFS! z0#D0<7~mklQlNwYc+Z^fS#lG~@t|JO#Jf#gTgoygROvKEnEnH+DM9?@XBPRDAqmnALY96uxo#dokBg z=`L12kg^v)9Lp|$BxRfN!(Ozv{;`x@iyz`_^;4-?>}XvDM=cc`nJPH4R9hXr?}pfg zU(V#4_(0^y5i?glm$)nO!(K;Zn>VFw{fl^rDBJi_%GSOb%dUPcW%X~QY;2&72D)fq z0}b?4=nL-?|2`N5rqiB%)byOTWrW;dr-H2M`o7V(dYYzj_&cky$I6xFlcjp8!Zm@9>YWN`*xO}Xj%tgVrb(Qiq zVWkdbol^(Lit>kpMF=2pL^xLH8z!~K9x#L6b!{(Xi$-X0S1bAcrXR4POG}RH(zfjn z!cNy~vl{n$-sUwglM%i8Hn+M4nt>1WTD-8tAI{G)O*@^P*I@O;d5!01gRW&;+QOVx z^?QNF&uF@BhS(bFbAT}sbVd=b|@3^9bNHQ!TN`@x1yrSTx)aEpp*8v50QP0Fgy5JSG;o@R(TS z!ee5Q7lnbtf$&(ov+xB73^ld4Z?Qe?QP8upq!|d2i#?&3$ZF)xE-U{=gXAt`4)}R>? zw*0OaI)_h2+xB5!M7N*8?Myj`s_veIUtD!pr*)pxAw5g_IO%7kh*fvLC4Hatfb=KQ z+oZpdKB!>jG15m!Go%6O8tHY?4(SZdaGTb*NbiPUXm$5HTK_`&JL#XKHz+$x`U&Yd cQk~Qx9grTS&bMf-(fVgv|3UgU=>PfiFOz&;qW}N^ literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNAMEPT3.ASM b/Apps/crossdev/CNAMEPT3.ASM new file mode 100644 index 00000000..1d77ae04 --- /dev/null +++ b/Apps/crossdev/CNAMEPT3.ASM @@ -0,0 +1,794 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global cache_,17 + PUBLIC cnamept3_ +cnamept3_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,cache_ + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,cache_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,39 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .3 +.5: + LXI H,.1+37 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + LXI H,.1+42 + PUSH H + CALL printf_ + POP D + JMP .4 +.3: + CALL .swt + DW 2 + DW 0,.6 + DW 1,.5 + DW .4 +.4: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+48 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,40 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .7 +.9: + LXI H,.1+68 + PUSH H + CALL printf_ + POP D + JMP .8 +.10: + LXI H,.1+73 + PUSH H + CALL printf_ + POP D + JMP .8 +.7: + CALL .swt + DW 2 + DW 0,.10 + DW 1,.9 + DW .8 +.8: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,40 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .11 + LXI H,cache_ + PUSH H + LXI H,.1+79 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,41 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .12 +.14: + LXI H,.1+95 + PUSH H + CALL printf_ + POP D + JMP .13 +.15: + LXI H,.1+102 + PUSH H + CALL printf_ + POP D + JMP .13 +.16: + LXI H,.1+109 + PUSH H + CALL printf_ + POP D + JMP .13 +.17: + LXI H,.1+120 + PUSH H + CALL printf_ + POP D + JMP .13 +.12: + CALL .swt + DW 3 + DW 0,.14 + DW 1,.15 + DW 2,.16 + DW .17 +.13: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+130 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,42 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .18 +.20: + LXI H,.1+149 + PUSH H + CALL printf_ + POP D + JMP .19 +.21: + LXI H,.1+154 + PUSH H + CALL printf_ + POP D + JMP .19 +.22: + LXI H,.1+160 + PUSH H + CALL printf_ + POP D + JMP .19 +.18: + CALL .swt + DW 2 + DW 0,.21 + DW 1,.20 + DW .22 +.19: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,43 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+170 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ +.11: + LXI H,cache_ + PUSH H + LXI H,.1+194 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,45 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .23 +.25: + LXI H,.1+214 + PUSH H + CALL printf_ + POP D + JMP .24 +.26: + LXI H,.1+219 + PUSH H + CALL printf_ + POP D + JMP .24 +.23: + CALL .swt + DW 2 + DW 0,.26 + DW 1,.25 + DW .24 +.24: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,45 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .27 + LXI H,cache_ + PUSH H + LXI H,.1+225 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,46 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .28 +.30: + LXI H,.1+245 + PUSH H + CALL printf_ + POP D + JMP .29 +.31: + LXI H,.1+252 + PUSH H + CALL printf_ + POP D + JMP .29 +.32: + LXI H,.1+259 + PUSH H + CALL printf_ + POP D + JMP .29 +.33: + LXI H,.1+270 + PUSH H + CALL printf_ + POP D + JMP .29 +.28: + CALL .swt + DW 3 + DW 0,.30 + DW 1,.31 + DW 2,.32 + DW .33 +.29: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+280 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,47 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .34 +.36: + LXI H,.1+300 + PUSH H + CALL printf_ + POP D + JMP .35 +.37: + LXI H,.1+305 + PUSH H + CALL printf_ + POP D + JMP .35 +.38: + LXI H,.1+311 + PUSH H + CALL printf_ + POP D + JMP .35 +.34: + CALL .swt + DW 2 + DW 0,.37 + DW 1,.36 + DW .38 +.35: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,48 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+321 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+345 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .39 +.41: + LXI H,.1+365 + PUSH H + CALL printf_ + POP D + JMP .40 +.42: + LXI H,.1+370 + PUSH H + CALL printf_ + POP D + JMP .40 +.43: + LXI H,.1+376 + PUSH H + CALL printf_ + POP D + JMP .40 +.39: + CALL .swt + DW 2 + DW 0,.42 + DW 1,.41 + DW .43 +.40: + CALL pager_ +.27: + LXI H,cache_ + PUSH H + LXI H,.1+386 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,51 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .44 +.46: + LXI H,.1+406 + PUSH H + CALL printf_ + POP D + JMP .45 +.47: + LXI H,.1+414 + PUSH H + CALL printf_ + POP D + JMP .45 +.44: + CALL .swt + DW 2 + DW 1,.46 + DW 2,.47 + DW .45 +.45: + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,52 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+422 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,53 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+452 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,54 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,54 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+475 + PUSH H + CALL printf_ + XCHG + LXI H,8 + DAD SP + SPHL + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,24 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,3 + POP D + CALL .eq + JZ .48 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,56 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+511 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,57 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+533 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,58 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+559 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,59 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+585 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,60 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,cache_ + PUSH H + LXI H,.1+611 + PUSH H + CALL printf_ + POP D + POP D + POP D + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+637 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,61 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .49 +.51: + LXI H,.1+657 + PUSH H + CALL printf_ + POP D + JMP .50 +.52: + LXI H,.1+662 + PUSH H + CALL printf_ + POP D + JMP .50 +.53: + LXI H,.1+668 + PUSH H + CALL printf_ + POP D + JMP .50 +.49: + CALL .swt + DW 2 + DW 0,.52 + DW 1,.51 + DW .53 +.50: + CALL pager_ + LXI H,cache_ + PUSH H + LXI H,.1+678 + PUSH H + CALL printf_ + POP D + POP D + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,62 + DAD D + MOV E,M + MVI D,0 + XCHG + JMP .54 +.56: + LXI H,.1+698 + PUSH H + CALL printf_ + POP D + JMP .55 +.57: + LXI H,.1+703 + PUSH H + CALL printf_ + POP D + JMP .55 +.58: + LXI H,.1+709 + PUSH H + CALL printf_ + POP D + JMP .55 +.54: + CALL .swt + DW 2 + DW 0,.57 + DW 1,.56 + DW .58 +.55: + CALL pager_ +.48: + RET +.2 EQU 0 +.1: + DB 115,121,115,99,102,103,45,62,99,110,102,103,100,97,116 + DB 97,0,37,115,46,102,100,109,97,117,116,111,32,32,32 + DB 32,32,32,32,61,32,0,84,82,85,69,0,70,65,76 + DB 83,69,0,37,115,46,105,100,101,101,110,97,98,108,101 + DB 32,32,32,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,37,115,46,105,100,101,116,114,97,99,101 + DB 32,32,61,32,0,83,73,76,69,78,84,0,69,82,82 + DB 79,82,83,0,69,86,69,82,89,84,72,73,78,71,0 + DB 85,110,107,110,111,119,110,33,33,0,37,115,46,100,101 + DB 56,98,105,116,32,32,32,32,32,32,32,61,32,0,84 + DB 82,85,69,0,70,65,76,83,69,0,85,110,107,110,111 + DB 119,110,33,33,0,37,115,46,105,100,101,99,97,112,97 + DB 99,105,116,121,32,32,32,61,32,37,100,77,66,0,37 + DB 115,46,112,112,105,100,101,101,110,97,98,108,101,32,32 + DB 32,61,32,0,84,82,85,69,0,70,65,76,83,69,0 + DB 37,115,46,112,112,105,100,101,116,114,97,99,101,32,32 + DB 32,32,61,32,0,83,73,76,69,78,84,0,69,82,82 + DB 79,82,83,0,69,86,69,82,89,84,72,73,78,71,0 + DB 85,110,107,110,111,119,110,33,33,0,37,115,46,112,112 + DB 105,100,101,56,98,105,116,32,32,32,32,32,61,32,0 + DB 84,82,85,69,0,70,65,76,83,69,0,85,110,107,110 + DB 111,119,110,33,33,0,37,115,46,112,112,105,100,101,99 + DB 97,112,97,99,105,116,121,32,61,32,37,100,75,66,0 + DB 37,115,46,112,112,105,100,101,115,108,111,119,32,32,32 + DB 32,32,61,32,0,84,82,85,69,0,70,65,76,83,69 + DB 0,85,110,107,110,111,119,110,33,33,0,37,115,46,98 + DB 111,111,116,116,121,112,101,32,32,32,32,32,32,61,32 + DB 0,66,84,95,77,69,78,85,0,66,84,95,65,85,84 + DB 79,0,37,115,46,98,111,111,116,116,105,109,101,111,117 + DB 116,32,32,32,61,32,37,100,32,115,101,99,111,110,100 + DB 115,0,37,115,46,98,111,111,116,100,101,102,97,117,108 + DB 116,32,32,32,61,32,37,99,58,0,37,115,46,98,97 + DB 117,100,114,97,116,101,32,32,32,32,32,32,61,32,37 + DB 117,32,40,48,120,37,48,52,120,41,32,66,97,117,100 + DB 0,37,115,46,99,107,100,105,118,32,32,32,32,32,32 + DB 32,32,32,61,32,37,100,0,37,115,46,109,101,109,119 + DB 97,105,116,32,32,32,32,32,32,32,61,32,48,120,37 + DB 48,50,120,0,37,115,46,105,111,119,97,105,116,32,32 + DB 32,32,32,32,32,32,61,32,48,120,37,48,50,120,0 + DB 37,115,46,99,110,116,108,98,48,32,32,32,32,32,32 + DB 32,32,61,32,48,120,37,48,50,120,0,37,115,46,99 + DB 110,116,108,98,49,32,32,32,32,32,32,32,32,61,32 + DB 48,120,37,48,50,120,0,37,115,46,115,100,101,110,97 + DB 98,108,101,32,32,32,32,32,32,61,32,0,84,82,85 + DB 69,0,70,65,76,83,69,0,85,110,107,110,111,119,110 + DB 33,33,0,37,115,46,115,100,116,114,97,99,101,32,32 + DB 32,32,32,32,32,61,32,0,84,82,85,69,0,70,65 + DB 76,83,69,0,85,110,107,110,111,119,110,33,33,0 + extrn printf_ + extrn strcpy_ + extrn pager_ + extrn .eq + END + \ No newline at end of file diff --git a/Apps/crossdev/CNAMEPT3.O b/Apps/crossdev/CNAMEPT3.O new file mode 100644 index 0000000000000000000000000000000000000000..4d1a1517fdc1e6d72eedbb5b073db1f4c0cc0f31 GIT binary patch literal 3328 zcmd^BOK%%h7`-!Y)v6Q`wZIg~@R3WkOo#-kF-`QR#2kLcv1bXrX zM%9q&9?Fu3hZhf}qmPgW7dy$$R*sjZUPMi}zNK+u)=z9#$w8U9>Le@?l`zTnb4&(a zU@&p9g+Z@tkmvo9mxMu)6El877#LtsAWVV=5SLk1mxOD%5cW_k6&dcEE>qr~eivh|A@@hIub z!nw$aIX@wy7!ai(F-c%XyqkYUtc$oKlUG{!4~Q9YyVOWc` ztQ2Rl@CEYCucc8e-r35A@XAkqi5m9)&v7ChB51h(I~Xl^r4*Lw6S%iTxn=jSCxvQ8cq!p_Gt9n81$%AL^ulR{LyIK z6Yy~E<{I%R&)0}Yc|L9mt*IB$ZOxkExrnVqDQ*R0@Pw2_9F6p7XGA`#>2}FlgMIQQ zR2;5o;+{v&vK*&YVf%ojpdCwQ&c(-5WQ-;=CsN7tupv|#w5(ezaCTr7v2~SNre=$E zP0uTIrR1)wBgj)_MXM?f922jjE0NyVdQa@=dS7IWE#fHEWzAUS637AVp}MS>*A&CS zU|0=>gX?_y7A(0nP~xt!GSzfwDHjv{aEU@4Un}JfvnAftS4IbH&AV{mM*UY3PL0Af z;$yNkm@ZBqY{U(q&0~rZvS%;+5**0s1;g~dsl^ho?wY;kG`^{}vZ{M)YE}2G4U{du zwh?9uRZ)w2h7frJs#Q}d>lNn+?`b<#wNlHt4wb55I(hG#QqZfc&UM$Hg>oW24JdE+ z?FKxB&x42;5JwTOBGwRZB3?qgEJ4+7#9xu=!sp-d`A@`u5a*B|L0m$NBTgXxfOreB zj`%I&0rsm--W*~-Z{^MXh-VNVK7%Q6vt=Rk;+GfY$EX`q_JE1NHA4FKouYbr;VDXj=gr{B#yn_UE3SmyNh>8 z<06pCXA1=iln)UEMTNq(_aGwm091;QLAh2Skpn^q4%}hp&5S+XM4a&9ul0Z4zW00Y zO+H5MLHx72hdw-X%bPc^--`A|V-*zL^iedC&`~P3omfG!?aftmd#{(+_izQ_N0#;% z5_h4ym+nAYi3sXNH@hf$y-Hr7$M?eVw4#k#yy9RQPx4`jt{2$bJEoC8w+q`-oUP4Jim!>vE;F*P zhm6IrQ8*up$h;vLlzxQF%c1lYC8i=>iA7LVF%&krK_6*?B5!q`<=N3k<}JuSyj6|& zVJdL5ve*o9>2w-SoDkTy^IHm@Vy&LbRUnT3?z5hyKY zWZw-LbFv{&+7zX!I6F{SdI`lPX~pid7a{lXY>slEiVCwSyeH~cnNbQG+WVo1vTRVo z2wADF5<){ID>YS19sW5eejqr8emqJa3R{}jF^*SbG_xOx;tkFlHWp<=%*&=Ub#_`7+`y|#kgN|-kqW#>|bb3ZZ zgfx31n?vbBI$P9^PR$(IwMu^jq)O7q6w`1WQF|OqA&7tZLP5r~l1pw5ZF^{8Pc;o8jv#R{zZCSkl>8 z+hu2GVu4}r3nb$Gr2`UB`1=oQebp!*=30{Q^xUeG&1 zFM|4@mqDKgJqP+LOy(bWz5#k0IKRR3-=K@&q(EKJL!gtOv!FkMUIqOHbRG0tqW{O| EUk^JnegFUf literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CNFGDATA.LIB b/Apps/crossdev/CNFGDATA.LIB new file mode 100644 index 00000000..10b24d99 --- /dev/null +++ b/Apps/crossdev/CNFGDATA.LIB @@ -0,0 +1,210 @@ +; cnfgdata.lib 7/19/2012 dwg - + +byte equ 1 +word equ 2 + +;; /* cnfgdata.h 6/04/2012 dwg - */ +;; +;; struct CNFGDATA { +;; unsigned char rmj; +cfgrmj equ 08009h +;; +;; unsigned char rmn; +cfgrmn equ cfgrmj + byte +;; +;; unsigned char rup; +cfgrup equ cfgrmn + byte +;; +;; unsigned char rtp; +cfgrtp equ cfgrup + byte +;; +;; unsigned char diskboot; +diskboot equ cfgrtp + byte +;; +;; unsigned char devunit; +devunit equ diskboot + byte +;; +;; unsigned int bootlu; +bootlu equ devunit + byte +;; +;; unsigned char hour; +hour equ bootlu + word +;; +;; unsigned char minute; +minute equ hour + byte +;; +;; unsigned char second; +second equ minute + byte +;; +;; unsigned char month; +month equ second + byte +;; +;; unsigned char day; +day equ month + byte +;; +;; unsigned char year; +year equ day + byte +;; +;; unsigned char freq; +freq equ year + byte +;; +;; unsigned char platform; +platform equ freq+ byte +;; +;; unsigned char dioplat; +dioplat equ platform + byte +;; +;; unsigned char vdumode; +vdumode equ dioplat + byte +;; +;; unsigned int romsize; +romsize equ vdumode + byte +;; +;; unsigned int ramsize; +ramsize equ romsize + word +;; +;; unsigned char clrramdk; +clrramdk equ ramsize + word +;; +;; unsigned char dskyenable; +dskyenable equ clrramdk + byte +;; +;; unsigned char uartenable; +uartenable equ dskyenable + byte +;; +;; unsigned char vduenable; +vduenable equ uartenable + byte +;; +;; unsigned char fdenable; +fdenable equ vduenable + byte +;; +;; unsigned char fdtrace; +fdtrace equ fdenable + byte +;; +;; unsigned char fdmedia; +fdmedia equ fdtrace + byte +;; +;; unsigned char fdmediaalt; +fdmediaalt equ fdmedia + byte +;; +;; unsigned char fdmauto; +fdmauto equ fdmediaalt + byte +;; +;; unsigned char ideenable; +ideenable equ fdmauto + byte +;; +;; unsigned char idetrace; +idetrace equ ideenable + byte +;; +;; unsigned char ide8bit; +ide8bit equ idetrace + byte +;; +;; unsigned int idecapacity; +idecapacity equ ide8bit + byte +;; +;; unsigned char ppideenable; +ppideenable equ idecapacity + word +;; +;; unsigned char ppidetrace; +ppidetrace equ ppideenable + byte +;; +;; unsigned char ppide8bit; +ppide8bit equ ppidetrace + byte +;; +;; unsigned int ppidecapacity; +ppidecapacity equ ppide8bit + byte +;; +;; unsigned char ppideslow; +ppideslow equ ppidecapacity + word +;; +;; unsigned char boottype; +boottype equ ppideslow + byte +;; +;; unsigned char boottimeout; +boottimeout equ boottype + byte +;; +;; unsigned char bootdefault; +bootdefault equ boottimeout + byte +;; +;; unsigned int baudrate; +baudrate equ bootdefault + byte +;; +;; unsigned char ckdiv; +ckdiv equ baudrate + word +;; +;; unsigned char memwait; +memwait equ ckdiv + byte +;; +;; unsigned char iowait; +iowait equ memwait + byte +;; +;; unsigned char cntlb0; +cntlb0 equ iowait + byte +;; +;; unsigned char cntlb1; +cntlb1 equ cntlb0 + byte +;; +;; unsigned char sdenable; +sdenable equ cntlb1 + byte +;; +;; unsigned char sdtrace; +sdtrace equ sdenable + byte +;; +;; unsigned int sdcapacity; +sdcapacity equ sdtrace + byte +;; +;; unsigned char sdcsio; +sdcsio equ sdcapacity + word +;; +;; unsigned char sdcsiofast; +sdcsiofast equ sdcsio + byte +;; +;; unsigned char defiobyte; +defiobyte equ sdcsiofast + byte +;; +;; unsigned char termtype; +termtype equ defiobyte + byte +;; +;; unsigned int revision; +revision equ termtype + byte +;; +;; unsigned char prpsdenable; +prpsdenable equ revision + word +;; +;; unsigned char prpsdtrace; +prpsdtrace equ prpsdenable + byte +;; +;; unsigned int prpsdcapacity; +prpsdcapacity equ prpsdtrace + byte +;; +;; unsigned char prpconenable; +prpconenable equ prpsdcapacity + word +;; +;; unsigned int biossize; +biossize equ prpconenable + byte +;; +;; unsigned char pppenable; +pppenable equ biossize + word +;; +;; unsigned char pppsdenable; +pppsdenable equ pppenable + byte +;; +;; unsigned char pppsdtrace; +pppsdtrace equ pppsdenable + byte +;; +;; unsigned int pppsdcapacity; +pppsdcapacity equ pppsdtrace + byte +;; +;; unsigned char pppconenable; +pppconenable equ pppsdcapacity + word +;; +;; unsigned char prpenable; +prpenable equ pppconenable + byte +;; +;; }; +;; +;; /********************/ +;; /* eof - cnfgdata.h */ +;; /********************/ + + \ No newline at end of file diff --git a/Apps/crossdev/CONVERT.C b/Apps/crossdev/CONVERT.C new file mode 100644 index 00000000..57cfdf2a --- /dev/null +++ b/Apps/crossdev/CONVERT.C @@ -0,0 +1,80 @@ +/* convert.c 7/11/2012 dwg - + + The purpose of this program is similar to the CP/M dump program + except that in addition to the normal hexadecimal bytes, a field + of ascii bytes to the right are displayed as well. + +*/ + +#include "stdio.h" + + +char visible[256] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 20 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 30 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 40 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 50 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 60 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 70 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */ +}; + +#include "cvt2h.h" + +unsigned char sector[32767]; + +main(argc,argv) + int argc; + char *argv[]; +{ + int i,j; + int offset; + int result; + unsigned char byte; + char name[32]; + + + FILE * fd; + + for(i=0;i0;i--) { + if(sector[i] != 0) break; + } + + sprintf(name,"sect%04x.h",0); + cvt2h(sector,i,name); + fclose(fd); + + exit(0); +} + \ No newline at end of file diff --git a/Apps/crossdev/COREAPPS.BAK b/Apps/crossdev/COREAPPS.BAK new file mode 100644 index 00000000..5ad6bb86 --- /dev/null +++ b/Apps/crossdev/COREAPPS.BAK @@ -0,0 +1,28 @@ +rem coreapps.bat 2/15/2013 dwg - build all core apps using batch files + +if not exist access.cpm call access.bat + +if not exist cpmname.cpm call cpmname.bat + +if not exist findfile.cpm call findfile.bat +if not exist findfile.cpm pause + +if not exist map.cpm call map.bat + +if not exist meta.cpm call meta.bat + +if not exist multifmt.cpm call multifmt.bat + +if not exist rem.cpm call makerem.bat + +if not exist setlabel.cpm call setlabel.bat + +if not exist sysgen.cpm call sysgen.bat + +if not exist termtype.cpm call termtype.bat + +if not exist view.cpm call view.bat + +rem All Core Apps Built +dir *.cpm /w + diff --git a/Apps/crossdev/COREAPPS.BAT b/Apps/crossdev/COREAPPS.BAT new file mode 100644 index 00000000..bdd9ddea --- /dev/null +++ b/Apps/crossdev/COREAPPS.BAT @@ -0,0 +1,38 @@ +rem coreapps.bat 2/15/2013 dwg - build all core apps using batch files + +if not exist access.cpm call access.bat +if not exist access.cpm pause + +if not exist cpmname.cpm call cpmname.bat +if not exist cpmname.cpm pause + +if not exist findfile.cpm call findfile.bat +if not exist findfile.cpm pause + +if not exist map.cpm call map.bat +if not exist map.cpm pause + +if not exist meta.cpm call meta.bat +if not exist meta.cpm pause + +if not exist multifmt.cpm call multifmt.bat +if not exist multifmt.cpm pause + +if not exist rem.cpm call makerem.bat +if not exist rem.cpm pause + +if not exist setlabel.cpm call setlabel.bat +if not exist setlabel.cpm pause + +if not exist sysgen.cpm call sysgen.bat +if not exist sysgen.cpm pause + +if not exist termtype.cpm call termtype.bat +if not exist termtype.cpm pause + +if not exist view.cpm call view.bat +if not exist view.cpm pause + +rem All Core Apps Built +dir *.cpm /w + diff --git a/Apps/crossdev/COREAPPS.SUB b/Apps/crossdev/COREAPPS.SUB new file mode 100644 index 00000000..e6681ac7 --- /dev/null +++ b/Apps/crossdev/COREAPPS.SUB @@ -0,0 +1,71 @@ +e:rmac access +e:rmac banner +e:rmac findfile +e:rmac hbios +e:rmac identity +e:rmac labelib +e:rmac memory +e:rmac metadata +e:rmac printers +e:rmac rem +e:rmac setlabel +e:rmac terminal +as asmiface +as bdoscall +as bioscall +cc cbanner +as cbanner +cc clogical +as clogical +cc cmemory +as cmemory +cc cnamept1 +as cnamept1 +cc cnamept2 +as cnamept2 +cc cnamept3 +as cnamept3 +cc cnamept4 +as cnamept4 +cc cpmname +as cpmname +cc ctermcap +as ctermcap +as diagnose +cc map +as map +cc meta +as meta +cc multifmt +as multifmt +cc sectorio +as sectorio +cc sysgen +as sysgen +cc termtype +as termtype +cc view +as view +e:link access,memory,banner,printers +ln cpmname.o ctermcap.o cnamept1.o cnamept2.o cnamept3.o cnamept4.o cmemory.o diagnose.o bioscall.o bdoscall.o c.lib +e:link findfile,hbios,identity,banner,memory,printers,terminal +ln map.o asmiface.o bioscall.o bdoscall.o clogical.o diagnose.o ctermcap.o c.lib +ln meta.o asmiface.o bioscall.o bdoscall.o cbanner.o clogical.o diagnose.o ctermcap.o sectorio.o c.lib +ln multifmt.o asmiface.o bioscall.o bdoscall.o clogical.o cmemory.o sectorio.o diagnose.o ctermcap.o c.lib +e:link rem +e:link setlabel,labelib,identity,printers,banner,metadata,memory +ln sysgen.o sectorio.o ctermcap.o diagnose.o bdoscall.o bioscall.o c.lib +ln termtype.o asmiface.o ctermcap.o diagnose.o c.lib +ln view.o ctermcap.o diagnose.o bdoscall.o bioscall.o c.lib +e:access access.com +e:access cpmname.com +e:access findfile.com +e:access map.com +e:access meta.com +e:access multifmt.com +e:access rem.com +e:access setlabel.com +e:access sysgen.com +e:access termtype.com +e:access view.com + \ No newline at end of file diff --git a/Apps/crossdev/CPM80.H b/Apps/crossdev/CPM80.H index f7ed0bac..20d45f51 100644 --- a/Apps/crossdev/CPM80.H +++ b/Apps/crossdev/CPM80.H @@ -63,8 +63,7 @@ struct BIOS { char diskboot; char bootdrive; - char devunit; - + char rmj; char rmn; char rup; @@ -193,4 +192,4 @@ struct DPHMAP * pDPHVEC[MAXDRIVE]; /*****************/ /* eof - cpm80.h */ /*****************/ - \ No newline at end of file + \ No newline at end of file diff --git a/Apps/crossdev/CPMAPPL.LIB b/Apps/crossdev/CPMAPPL.LIB new file mode 100644 index 00000000..fa626600 --- /dev/null +++ b/Apps/crossdev/CPMAPPL.LIB @@ -0,0 +1,82 @@ +; 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 + + \ No newline at end of file diff --git a/Apps/crossdev/CPMBDOS.H b/Apps/crossdev/CPMBDOS.H index cc941b65..5ee0c55f 100644 --- a/Apps/crossdev/CPMBDOS.H +++ b/Apps/crossdev/CPMBDOS.H @@ -1,4 +1,3 @@ -/* cpmbdos.h 6/11/2012 dwg - */ #define TERMCPM 0 #define CONIN 1 @@ -50,4 +49,4 @@ struct FCB { char filetype[3]; char filler[24]; }; - \ No newline at end of file + \ No newline at end of file diff --git a/Apps/crossdev/CPMBDOS.LIB b/Apps/crossdev/CPMBDOS.LIB new file mode 100644 index 00000000..a5c8db6f --- /dev/null +++ b/Apps/crossdev/CPMBDOS.LIB @@ -0,0 +1,174 @@ +; cpmbdos.lib 1/19/2012 dwg - add READ$CON$BUF (10) +; cpmbdos.lib 1/15/2012 dwg - add more functions + +; +; 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 . +; + +; BDOS function codes + +TERMCPM equ 0 ; return to command line +CREAD equ 1 ; read a character +CWRITE equ 2 ; write a character +PRINTSTR equ 9 ; print string +READ$CON$BUF equ 10 ; read console buffer +RETVERNO equ 12 ; return version number +DSKRESET equ 13 ; disk reset +SELDSK equ 14 ; select disk +FOPEN equ 15 ; open file +FCLOSE equ 16 ; close file +FDELETE equ 19 ; delete file +READSEQ equ 20 ; read sequential +WRITESEQ equ 21 ; write sequential +FMAKE equ 22 ; make file +FRENAME equ 23 ; rename file +RETCURR equ 25 ; return current disk, 0=a +SETDMA equ 26 ; set dma address +WRITERAND equ 34 ; write random record +FCOMPSIZE equ 35 ; compute file size +SETRANDREC equ 36 ; set random record +RESETDRIVE equ 37 ; reset drive +WRITERANDZF equ 40 ; write random with zero fill + +OEMID equ 0E5h + +; File Control Block +DR$OFS equ 0 +F1$OFS equ DR$OFS+BYTESIZE +F2$OFS equ F1$OFS+BYTESIZE +F3$OFS equ F2$OFS+BYTESIZE +F4$OFS equ F3$OFS+BYTESIZE +F5$OFS equ F4$OFS+BYTESIZE +F6$OFS equ F5$OFS+BYTESIZE +F7$OFS equ F6$OFS+BYTESIZE +F8$OFS equ F7$OFS+BYTESIZE +T1$OFS equ F8$OFS+BYTESIZE +T2$OFS equ T1$OFS+BYTESIZE +T3$OFS equ T2$OFS+BYTESIZE +EX$OFS equ T3$OFS+BYTESIZE +S1$OFS equ EX$OFS+BYTESIZE +S2$OFS equ S1$OFS+BYTESIZE +RC$OFS equ S2$OFS+BYTESIZE +D0$OFS equ RC$OFS+BYTESIZE +CR$OFS equ DR$OFS+32 +R0$OFS equ CR$OFS+BYTESIZE +R1$OFS equ R0$OFS+BYTESIZE +R2$OFS equ R1$OFS+BYTESIZE +FCB$LEN equ R2$OFS+BYTESIZE + +; Memory Locations + +BDOS equ 5 ; entry point fo BDOS function calls +PRIFCB equ 5Ch ; primary file control block address +SECFCB equ 6Ch ; secondary file control block address +LENFCB equ 32 ; length of file control block +DEFBUF equ 80h ; address of default buffer + + +EXIT macro + mvi c,TERMCPM + call BDOS + endm + +conin macro + push b ; save context B&C + push d ; save context D&E + push h ; save context H&L + mvi c,CREAD ; set up for console input BDOS call + call BDOS ; call BDOS function entry point + pop h ; restore context H&L + pop d ; restore context D&E + pop b ; restore context B&C + endm + +conout macro char + enter ; save all context regs + mvi c,CWRITE ; set for console output BDOS call + mvi e,char ; place output character in E as required + call bdos ; call BDOS function entry point + leave ; restore all context regs + endm + +conouta macro + enter + mvi c,CWRITE + mov e,a + call bdos + leave + endm + +PRINT macro addr + enter + mvi c,PRINTSTR + lxi d,addr + call BDOS + leave + endm + +PTRPRT macro addr + enter ; save all context registers + lxi h,addr ; load the address parameter into H&L + mov e,m ; pick up LO byte of new pointer + inx h ; bump index register + mov d,m ; pick up HO byte of new pointer + mvi c,PRINTSTR ; assembled pointer used for printstring call + call BDOS + leave ; restore all context registers + 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 + +printf macro parmdata + local around + local string + print string + jmp around +string db parmdata + db '$' +around: + endm + +printmsg macro parmdata + enter + local around + local string + print string + jmp around +string db parmdata + db '$' +around: + leave + endm + +newfcb macro fcbname,drive,filename +fcbname db drive,filename + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + endm + + +; eof - cpmbdos.lib + \ No newline at end of file diff --git a/Apps/crossdev/CPMBIND.H b/Apps/crossdev/CPMBIND.H index 0a0dfcf7..ae14800b 100644 --- a/Apps/crossdev/CPMBIND.H +++ b/Apps/crossdev/CPMBIND.H @@ -208,6 +208,8 @@ struct BIOS { #define DEV_PPIDE 0x40 #define DEV_SD 0x50 #define DEV_PRPSD 0x60 +#define DEV_PPPSD 0x70 +#define DEV_HDSK 0x80 #define PLT_N8VEM 1 #define PLT_ZETA 2 @@ -679,4 +681,4 @@ TERM$VT52 equ 3 ; eof - std.lib */ - \ No newline at end of file + \ No newline at end of file diff --git a/Apps/crossdev/CPMBIOS.LIB b/Apps/crossdev/CPMBIOS.LIB new file mode 100644 index 00000000..82c80bea --- /dev/null +++ b/Apps/crossdev/CPMBIOS.LIB @@ -0,0 +1,137 @@ +; cpmbios.lib 2/20/2012 dwg - get$off, get$drm, and get$spt need c=drvnum +; cpmbios.lib 12/26/2011 dwg - + +; Copyright (C) 2011-2012 Douglas Goodall All Rights Reserved. +; For non-commercial use by N8VEM community + +XLT$OFS equ 0 ; Translate Table +RV1$OFS equ XLT$OFS+WORDSIZE ; Reserved Field 1 +RV2$OFS equ RV1$OFS+WORDSIZE ; Reserved Field 2 +RV3$OFS equ RV2$OFS+WORDSIZE ; Reserved Field 3 +DBF$OFS equ RV3$OFS+WORDSIZE ; Directory Buffer +DPB$OFS equ DBF$OFS+WORDSIZE ; Diskk Parameter Block Pointer +CSV$OFS equ DPB$OFS+WORDSIZE ; Checksum Vector +ALV$OFS equ CSV$OFS+WORDSIZE ; Allocation Vector +DPH$LEN equ ALV$OFS+WORDSIZE ; size of normal DPH +LU1$OFS equ ALV$OFS+WORDSIZE ; Logical Unit Signature Byte 1 'L' +LU2$OFS equ LU1$OFS+BYTESIZE ; Logical Unit Signature Byte 2 'U' +CUR$OFS equ LU2$OFS+BYTESIZE ; Current Logical Unit (default) +NLU$OFS equ CUR$OFS+WORDSIZE ; Number of LU's (capacity/9) + + +SPT$OFS equ 0 ; Sectors Per Track +BSH$OFS equ SPT$OFS+WORDSIZE ; Block Shift Factor +BLM$OFS equ BSH$OFS+BYTESIZE ; Data Allocation Block Mask +EXM$OFS equ BLM$OFS+BYTESIZE ; Extend Mask +DSM$OFS equ EXM$OFS+BYTESIZE ; Disk Size Max +DRM$OFS equ DSM$OFS+WORDSIZE ; Number of Directory Entries +AL0$OFS equ DRM$OFS+WORDSIZE ; Allocation bitmask for directories +AL1$OFS equ AL0$OFS+BYTESIZE ; Allocation bitmask for directories +CKS$OFS equ AL1$OFS+BYTESIZE ; Size of Directory Check Vector +OFF$OFS equ CKS$OFS+WORDSIZE ; Number of Reserved Tracks +DPB$LEN equ OFF$OFS+WORDSIZE ; Disk Parameter Block Length + +; BIOS Memory Locations +BIBOOT equ 0E600h +BIWBOOT equ 0E603h +BICONST equ 0E606h +BICONIN equ 0E609h +BICONOUT equ 0E60Ch +BILIST equ 0E60Fh +BIPUNCH equ 0E612h +BIREADER equ 0E615h +BIHOME equ 0E618h +BISELDSK equ 0E61Bh +BISETTRK equ 0E61Eh +BISETSEC equ 0E621h +BISETDMA equ 0E624h +BIREAD equ 0E627h +BIWRITE equ 0E62Ah +BILISTST equ 0E62Dh +BISECTRN equ 0E630h + +; These are rel zero drive number for talking to the BIOS +; BDOS typically uses rel one drive codes + +BIDRVA equ 0 +BIDRVB equ 1 +BIDRVC equ 2 +BIDRVD equ 3 +BIDRVE equ 4 +BIDRVF equ 5 +BIDRVG equ 6 +BIDRVH equ 7 + +; On entry: c=drive number +get$spt macro + push psw + push b + push d + call BISELDSK + lxi d,DPB$OFS + dad d + mov e,m + inx h + mov d,m + xchg + lxi d,SPT$OFS + dad d + mov e,m + inx h + mov d,m + xchg + pop d + pop b + pop psw + endm + +; On entry: c=drive number +get$drm macro + push psw + push b + push d + call BISELDSK + lxi d,DPB$OFS + dad d + mov e,m + inx h + mov d,m + xchg + lxi d,DRM$OFS + dad d + mov e,m + inx h + mov d,m + xchg + pop d + pop b + pop psw + endm + +; On entry, c=drive number +get$off macro + push psw + push b + push d + call BISELDSK + lxi d,DPB$OFS + dad d + mov e,m + inx h + mov d,m + xchg + lxi d,OFF$OFS + dad d + mov e,m + inx h + mov d,m + xchg + pop d + pop b + pop psw + endm + + + +; eof - cpmbios.lib + \ No newline at end of file diff --git a/Apps/crossdev/CPMNAME.ASM b/Apps/crossdev/CPMNAME.ASM new file mode 100644 index 00000000..d4b2fd0c --- /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,0 + PUSH H + LXI H,0 + PUSH H + LXI H,3 + PUSH H + LXI H,2 + PUSH H + LXI H,2013 + PUSH H + LXI H,16 + PUSH H + LXI H,1 + 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.BAT b/Apps/crossdev/CPMNAME.BAT new file mode 100644 index 00000000..33a14847 --- /dev/null +++ b/Apps/crossdev/CPMNAME.BAT @@ -0,0 +1,57 @@ +rem cpmname.sub 9/5/2012 dwg - build cpmname from sources + +if not exist cpmname.asm erase cpmname.cpm +if not exist cpmname.asm erase cpmname.o +if not exist cpmname.asm z80mu cc cpmname +if not exist cpmname.o erase cpmname.cpm +if not exist cpmname.o z80mu as cpmname + +if not exist cnamept1.asm erase cpmname.cpm +if not exist cnamept1.asm erase cnamept1.o +if not exist cnamept1.asm z80mu cc cnamept1 +if not exist cnamept1.o erase cpmname.cpm +if not exist cnamept1.o z80mu as cnamept1 + +if not exist cnamept2.asm erase cpmname.cpm +if not exist cnamept2.asm erase cnamept2.o +if not exist cnamept2.asm z80mu cc cnamept2 +if not exist cnamept2.o erase cpmname.cpm +if not exist cnamept2.o z80mu as cnamept2 + +if not exist cnamept3.asm erase cpmname.cpm +if not exist cnamept3.asm erase cnamept3.o +if not exist cnamept3.asm z80mu cc cnamept3 +if not exist cnamept3.o erase cpmname.cpm +if not exist cnamept3.o z80mu as cnamept3 + +if not exist cnamept4.asm erase cpmname.cpm +if not exist cnamept4.asm erase cnamept4.o +if not exist cnamept4.asm z80mu cc cnamept4 +if not exist cnamept4.o erase cpmname.cpm +if not exist cnamept4.o z80mu as cnamept4 + +if not exist bdoscall.o erase cpmname.cpm +if not exist bdoscall.o z80mu as bdoscall + +if not exist bioscall.o erase cpmname.cpm +if not exist bioscall.o z80mu as bioscall + +if not exist cmemory.asm erase cpmname.cpm +if not exist cmemory.asm erase cmemory.o +if not exist cmemory.asm z80mu cc cmemory +if not exist cmemory.o erase cpmname.cpm +if not exist cmemory.o z80mu as cmemory + +if not exist ctermcap.asm erase cpmname.cpm +if not exist ctermcap.asm erase ctermcap.o +if not exist ctermcap.asm z80mu cc ctermcap +if not exist ctermcap.o erase cpmname.cpm +if not exist ctermcap.o z80mu as ctermcap + +if not exist diagnose.o erase cpmname.cpm +if not exist diagnose.o z80mu as diagnose + +if not exist cpmname.cpm z80mu ln cpmname.o ctermcap.o cnamept1.o cnamept2.o cnamept3.o cnamept4.o cmemory.o diagnose.o bioscall.o bdoscall.o c.lib +if not exist cpmanme.cpm rename cpmname.com cpmname.cpm + +dir cpmname.cpm diff --git a/Apps/crossdev/CPMNAME.C b/Apps/crossdev/CPMNAME.C index 72b9d023..4853815f 100644 --- a/Apps/crossdev/CPMNAME.C +++ b/Apps/crossdev/CPMNAME.C @@ -13,6 +13,10 @@ #include "diagnose.h" #include "std.h" +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ extern cnamept1(); @@ -20,7 +24,9 @@ extern cnamept2(); extern cnamept3(); extern cnamept4(); -struct SYSCFG * syscfg; + + +struct SYSCFG * pSYSCFG; int line; int main(argc,argv) @@ -36,8 +42,19 @@ int main(argc,argv) char * pC; line = 5; + + + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); - printf("CPMNAME.COM %d/%d/%d v%d.%d.%d.%d", + printf("CPMNAME.COM %d/%d/%d v%d.%d.%d (%d)", A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP,A_RTP); printf(" dwg - Display System Configuration"); pager(); @@ -54,16 +71,18 @@ int main(argc,argv) bdoscall(); pager(); - syscfg = 0x8000; hregbc = 0xf000; - hregde = syscfg; + hregde = HIGHSEG; diagnose(); - cnamept1(syscfg); - cnamept2(syscfg); - cnamept3(syscfg); - cnamept4(syscfg); + pSYSCFG = HIGHSEG; + + + cnamept1(pSYSCFG); + cnamept2(pSYSCFG); + cnamept3(pSYSCFG); + cnamept4(pSYSCFG); } @@ -83,4 +102,4 @@ pager() /* eof - ccpmname.c */ /********************/ - \ No newline at end of file +  \ No newline at end of file diff --git a/Apps/crossdev/CPMNAME.CPM b/Apps/crossdev/CPMNAME.CPM new file mode 100644 index 0000000000000000000000000000000000000000..665804f6806234bd9953eb77105e7f9ee635dc39 GIT binary patch literal 15744 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 literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CPMNAME.O b/Apps/crossdev/CPMNAME.O new file mode 100644 index 0000000000000000000000000000000000000000..0706855010c01724ea187a1068b8265b774639a7 GIT binary patch literal 1024 zcmcIiJ8#oa6h2Oh0!+37QDDH=jv_&%rchWAv;w6RMItRyDg;Y|AGgjGj_umctK}g9 zLw^A~|0HXXJa}M(F)UeFD+V|>c0#hSadjW(JKuNix#!p`S0Npr1a5rD{t`ZCVMUZ) zf*1vmSI&Vtzyp4&NBkJ6$4IuhAQj;^-|D6@W2c(L0dic!rcL zdNbE>`<@#sBAx;+MT48tIP!$T1buhUxMT1A)Pt8D3L>t&a{q_wqZtTd1y8jHBG*0t znCdD$D3nV3rDqd0MD+zwyQuD^!T)$W#`gs&#wySn%&pI^RV%#TH9@q zvMH~XO`N1xHmlPqlj~*k1`xAvkyWzA0@<^*A!!bSkakGTbq-`^b$u;lt^;0uXM6XF zTyO5JZt9xjg+AHX*d!82`n2O>WdKqMdyW+vX=^UWN)aYVh|#eielZhneOmmb7~7bZ zo9E^LA$diIBy@@4Iw5nq5(UVe=O4VPQ;RusWVCJWO}U^S{zXQh z^)M{u44*D=)sCBRCmB>ECDxm{1T|kYYuk@o39^|(Td2vL@S8gtb2v)!wS8*oMr#3? zs7*MNX_n&#G(m=sRj{x%M~3asl*rk5NgC(*%n1)#nC~9`;GSkt6s8=*d~JIcr!zM& zG}}(|A-9ly>1DdPs5Bg{L%r};`j!N(FQMB@=uU#F^pLjzga>E8u^*#vQ=5A-qb|NR KGYWD4&*Kled)}%5 literal 0 HcmV?d00001 diff --git a/Apps/crossdev/CPMNAME.SUB b/Apps/crossdev/CPMNAME.SUB new file mode 100644 index 00000000..adba240b --- /dev/null +++ b/Apps/crossdev/CPMNAME.SUB @@ -0,0 +1,20 @@ +e:rem cpmname.sub 9/5/2012 dwg - build cpmname from sources +cc cpmname +as cpmname +cc cnamept1 +as cnamept1 +cc cnamept2 +as cnamept2 +cc cnamept3 +as cnamept3 +cc cnamept4 +as cnamept4 +as bdoscall +as bioscall +cc cmemory +as cmemory +cc ctermcap +as ctermcap +as diagnose +ln cpmname.o ctermcap.o cnamept1.o cnamept2.o cnamept3.o cnamept4.o cmemory.o diagnose.o bioscall.o bdoscall.o c.lib + \ No newline at end of file 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.C b/Apps/crossdev/CTERMCAP.C index ca1ffaf6..04baf9c4 100644 --- a/Apps/crossdev/CTERMCAP.C +++ b/Apps/crossdev/CTERMCAP.C @@ -8,23 +8,38 @@ #include "syscfg.h" #include "diagnose.h" -int tt; +char termtype; -crtinit() + + +char wy50row[24] = { ' ', '!', '"', '#', '$', '%', '&', 39, + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7' }; + +char wy50col[80] = { ' ', '!', '"', '#', '$', '%', '&', 39, + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + 96, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o' }; + + + +crtinit(tt) + char tt; { - struct SYSCFG * pSYSCFG; - hregbc = 0x0f000; - hregde = 0x0C000; - diagnose(); - pSYSCFG = 0x0C000; - tt = pSYSCFG->cnfgdata.termtype; + termtype = tt; } crtclr() { int i; - switch(tt) { + switch(termtype) { case TERM_TTY: for(i=0;i<43;i++) { printf("%c%c",CR,LF); @@ -48,14 +63,14 @@ int col; { int i; - switch(tt) { + switch(termtype) { case TERM_TTY: break; case TERM_ANSI: printf("%c[%d;%d%c",ESC,line,col,0x66); break; case TERM_WYSE: - printf("%c+",ESC); + printf("%c=%c%c",ESC,wy50row[line-1],wy50col[col-1]); break; case TERM_VT52: printf("%cY%c%c",ESC,' '+line,' '+col); @@ -63,15 +78,8 @@ int col; }; } - - - /* -SINGLEQUOTE equ 0 -RIGHTQUOTE equ 0 -LEFTQUOTE equ 0 - wy50row db ' !"#$%&' db 39 db '()*+,-./01234567' @@ -82,9 +90,6 @@ wy50col db ' !"#$%&' db 96 db 'abcdefghijklmno' -templine db 0 -tempcol db 0 - */ diff --git a/Apps/crossdev/CTERMCAP.H b/Apps/crossdev/CTERMCAP.H index 8cb4ad4e..ed706792 100644 --- a/Apps/crossdev/CTERMCAP.H +++ b/Apps/crossdev/CTERMCAP.H @@ -1,6 +1,6 @@ /* ctermcap.h 3/11/2012 dwg - declarations for termal capability */ -extern crtinit(); -extern crtclr(); -extern crtlc(); - \ No newline at end of file +extern crtinit(); /* void crtinit(char termtype); */ +extern crtclr(); /* void crtclr(void); */ +extern crtlc(); /* void crtlc(char line,char column); */ + \ No newline at end of file diff --git a/Apps/crossdev/CTERMCAP.O b/Apps/crossdev/CTERMCAP.O new file mode 100644 index 0000000000000000000000000000000000000000..f6da96227fe95447620de7c7629d140567cecb99 GIT binary patch literal 1024 zcmbtS+fUPQ6h7@pBqk=SL#~?A&EjP`aXMrS1aE+N7ex_WxBk|xg>EHXW#TQ-#AN?~ zFa8($2bd*$5fdJGFebkFz|&sw!58)Pw1XKR{U!Z!&iT&mJ84@l`0p*Jqcs_L&3_C) z+Yhl{3P%pg1BVVDIT}57Ja(dM@MQed>BP{Pt$#VO$qgq*Qln#M$Hj?r=Pz8mG&wbW zdFIO1Yu9gxH*ejZy>oZ&-u?Lp3lATq6)}@lSx(CrbYpSJES9XTppb#!dKrRJcsK(c z$#mmIdpa`R;*Z$%p4F-noHWI8e@ zMPdCJ1V87YTiOkq(jNSz0t^b9>(3#yv9VFtAXwM2ZJ);^h}nxoOEA?E?50dVdwi#l zj+@#LYQsY^5I8VE;9(Jj04#wH;+o841~OZS&mcyjOJ*}Nn+C!BTVWB`v2dL{t`iPN0$Hv5V+x70Odmt5Hy4rQwx%4VEJvKQoBO3sn^F}csX!aQ9AcD1`d zU`*8tMhTi8(@i((bLEP&t+jBmqUCW_4l^9hE;_5rTA=DyS5^~)wpCFA z)o$NomZ|W>G21aphJ&7f9D2;OmF9Gl2Ke5xZIqn60(|w8muWHufSW)E@z-wvzV;4n vzSd7TMi?Vh2|p0NCv#o literal 0 HcmV?d00001 diff --git a/Apps/crossdev/DIAGNOSE.REL b/Apps/crossdev/DIAGNOSE.REL new file mode 100644 index 0000000000000000000000000000000000000000..eb1ff8115b4b64e4b64648d06518230f54d05976 GIT binary patch literal 256 zcmZRPVt@iIFg=OEhhY)}1Ea{-qgS756*369_-Yj~2!+II6*CA}6)*^%H!5HdP%35+ z%1%-ON@OM|6*7oCym;{ANe1=~MxYrPMXBkD@eDv76O@;f9FN3HNk!&m#o literal 0 HcmV?d00001 diff --git a/Apps/crossdev/DISKCOPY.C b/Apps/crossdev/DISKCOPY.C new file mode 100644 index 00000000..c0262268 --- /dev/null +++ b/Apps/crossdev/DISKCOPY.C @@ -0,0 +1,229 @@ +/* view.c 6/7/2012 dwg - */ + +#include "std.h" +/* #include "hbios.h" */ +#include "stdio.h" +#include "stdlib.h" +#include "memory.h" +#include "portab.h" +#define MAXDRIVE 8 +#include "cpm80.h" +#include "cpmappl.h" +#include "applvers.h" + +#include "trackio.h" + +#define DSM144 0x02C6 +#define DSM720 0x015E +#define DSM360 0x00AA +#define DSM120 0x024F +#define DSM111 0x0222 + +struct DPH * pDPH; +struct DPB * pDPB; + +unsigned char buffer[72*128]; +char gbFD[MAXDRIVE]; +char gFDNums[MAXDRIVE]; +char gNumFD; /* this value is set by the fdcount function */ + +/* the purpose of this function is to set the global variable + gNumFD to the number of floppy drives detected, and to set + a boolean in the vector gbFD indicating the drive is present + the drive number of each one in the vector +*/ + +diomed(devunit) + unsigned char devunit; +{ + hregbc = 0x1300 + devunit; + diagnose(); + return hrega; +} + +sensefd() +{ + char device; + char unit; + char devunit; + + /* init local variables */ + char drive; + char result; + drive = 0; + result = 0; + + /* init global variables */ + gNumFD = 0; + memset(&gbFD,FALSE,MAXDRIVE); + memset(&gFDNums,0,MAXDRIVE); + /* for all valid drive numbers */ + while(0 == result) { + ireghl = pGETLU; + iregbc = drive; + bioscall(); + result = irega; + /* return from GETLU goes to 1 if drive # invalid */ + + devunit = iregbc >> 8; + device = devunit & 0xf0; + unit = devunit & 0x0f; + if(DEV_FD == device) { + gFDNums[gNumFD] = drive; + gbFD[gNumFD++] = iregbc & 0xff; + } + drive++; + } +} + + +int main(argc,argv) + int argc; + char *argv[] ; +{ + char drive; + int fd0,fd1; + int i; + int spt; + int track; + int tracks; + int bValid; + + sensefd(); + + if(2 != gNumFD) { + printf("Sorry, this version of diskcopy only supports dual drives"); + exit(FAILURE); + } + printf("The copy will be from drive %c: to drive %c:\n", + gFDNums[0]+'A',gFDNums[1]+'A'); + + printf("The media in FD0 is "); + fd0 = diomed(DEV_FD); + switch(fd0) { + case MID_NONE: + printf("Drive is empty"); + break; + case MID_MDROM: + printf("a memory ROM drive"); + break; + case MID_MDRAM: + printf("a memory RAM drive"); + break; + case MID_HD: + printf("an HD drive"); + break; + case MID_FD720: + printf("a 720KB floppy disk"); + tracks = 80 * 2; + break; + case MID_FD144: + printf("a 1.44MB floppy disk"); + tracks = 80 * 2; + break; + case MID_FD360: + printf("a 360KB floppy disk"); + tracks = 40 * 2; + break; + case MID_FD120: + printf("a 120KB floppy disk"); + tracks = 80 * 2; + break; + case MID_FD111: + printf("a 111KB floppy disk"); + tracks = 74 * 2; + break; + default: + printf("an unknown media type"); + break; + } + printf("\n"); + + + + printf("The media in FD1 is "); + fd1 = diomed(DEV_FD+1); + switch(fd1) { + case MID_NONE: + printf("Drive is empty"); + break; + case MID_MDROM: + printf("a memory ROM drive"); + break; + case MID_MDRAM: + printf("a memory RAM drive"); + break; + case MID_HD: + printf("an HD drive"); + break; + case MID_FD720: + printf("a 720KB floppy disk"); + break; + case MID_FD144: + printf("a 1.44MB floppy disk"); + break; + case MID_FD360: + printf("a 360KB floppy disk"); + break; + case MID_FD120: + printf("a 120KB floppy disk"); + break; + case MID_FD111: + printf("a 111KB floppy disk"); + break; + default: + printf("an unknown media type"); + break; + } + printf("\n"); + + if(fd0 != fd1) { + printf("Sorry, media types don't match, as required for diskcopy"); + exit(1); + } + + for(track=0;trackdpb; + spt = pDPB->spt; + ireghl = pSETTRK; + iregbc = track; + bioscall(); + printf("%3d ",track); + rdtrack(0,spt,buffer); + printf("%c",0x0d); + + bValid = FALSE; + for(i=0;idpb; + spt = pDPB->spt; + ireghl = pSETTRK; + iregbc = track; /* Track 0 */ + bioscall(); + printf("%3d ",track); + wrtrack(0,spt,buffer); + printf("%c",0x0d); + + } + + } +} + \ No newline at end of file diff --git a/Apps/crossdev/DOIT.C b/Apps/crossdev/DOIT.C new file mode 100644 index 00000000..80af4737 --- /dev/null +++ b/Apps/crossdev/DOIT.C @@ -0,0 +1,12 @@ +#include "stdio.h" + +main() +{ + FILE * fd; + fd = fopen("$$$.SUB","w"); + fprintf(fd,"%ca:getcfg\n",9); + fprintf(fd,"%ca:dump syscfg.bin\n",18); + fprintf(fd,"%ctype a:sect0000.h\n",17); + fclose(fd); +} + \ No newline at end of file diff --git a/Apps/crossdev/DPHDPB.H b/Apps/crossdev/DPHDPB.H index 188427a9..01e69831 100644 --- a/Apps/crossdev/DPHDPB.H +++ b/Apps/crossdev/DPHDPB.H @@ -1,4 +1,19 @@ -/* dphdpb.h 6/10/2012 dwg - CP/M Disk Parameters */ + +struct DPH { + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + void * dpb; + void * csv; + void * alv; + /* extension */ + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +}; struct DPB { unsigned int spt; @@ -12,21 +27,4 @@ struct DPB { unsigned int cks; unsigned int off; }; - -struct DPH { - unsigned int xlt; - unsigned int rv1; - unsigned int rv2; - unsigned int rv3; - unsigned int dbf; - struct DPB * dpb; - void * csv; - void * alv; - /* extension */ - char sigl; - char sigu; - int current; - int number; -}; - - \ No newline at end of file + \ No newline at end of file diff --git a/Apps/crossdev/DPHMAP.H b/Apps/crossdev/DPHMAP.H index 89c9a90c..1fe765b4 100644 --- a/Apps/crossdev/DPHMAP.H +++ b/Apps/crossdev/DPHMAP.H @@ -1,3 +1,4 @@ +/* dphmap.h 9/4/2012 dwg - expand to include I through L */ /* dphmap.h 5/29/2012 dwg - declaration of DPH MAP structure */ struct DPHMAP { @@ -9,6 +10,11 @@ struct DPHMAP { struct DPH * drivef; struct DPH * driveg; struct DPH * driveh; + + struct DPH * drivei; + struct DPH * drivej; + struct DPH * drivek; + struct DPH * drivel; } * pDPHMAP; struct DPHMAP * pDPHVEC[MAXDRIVE]; @@ -16,4 +22,4 @@ struct DPHMAP * pDPHVEC[MAXDRIVE]; /******************/ /* eof - dphmap.h */ -/******************/ \ No newline at end of file +/******************/ \ No newline at end of file diff --git a/Apps/crossdev/DUMP.ASM b/Apps/crossdev/DUMP.ASM new file mode 100644 index 00000000..42fab378 --- /dev/null +++ b/Apps/crossdev/DUMP.ASM @@ -0,0 +1,1494 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + DSEG + public visible_ +visible_: + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 1 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + DB 0 + CSEG + PUBLIC cvt2h_ +cvt2h_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + LXI H,14-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fopen_ + POP D + POP D + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+2 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-36-.2 + DAD SP + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-30-.2 + DAD SP + MOV M,E + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-36-.2 + DAD SP + PUSH H + LXI H,.1+46 + PUSH H + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,0-.2 + 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 +.4: + LXI H,0-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .5 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+73 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,0-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + CALL .an + PUSH H + LXI H,7 + POP D + CALL .eq + JZ .6 + LXI H,.1+81 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,0-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-8 + CALL .an + XCHG + LXI H,-2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + DAD D + XCHG + LXI H,-4-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+86 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,-2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .8 +.7: + LXI H,-6-.2 + 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,-6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-4-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .9 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + LXI H,visible_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .10 + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.2 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+94 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + JMP .11 +.10: + LXI H,.1+98 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.11: + JMP .7 +.9: + LXI H,.1+101 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,.1+104 + PUSH H + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.6: + JMP .3 +.5: + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+107 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + RET +.2 EQU -42 +.1: + DB 119,0,47,42,32,37,115,32,112,114,111,100,117,99,101 + DB 100,32,97,117,116,111,109,97,116,105,99,97,108,108,121 + DB 32,98,121,32,99,118,116,50,104,46,104,32,42,47,10 + DB 0,117,110,115,105,103,110,101,100,32,99,104,97,114,32 + DB 37,115,91,37,100,93,32,61,32,123,10,9,0,48,120 + DB 37,48,50,120,44,0,32,47,42,32,0,32,37,48,52 + DB 120,58,32,0,37,99,32,0,46,32,0,42,47,0,10 + DB 9,0,125,59,10,47,42,32,101,111,102,32,45,32,37 + DB 115,32,42,47,10,0 + PUBLIC cvt2inc_ +cvt2inc_: lxi d,.13 + call csave + LXI H,.12+0 + PUSH H + LXI H,14-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fopen_ + POP D + POP D + XCHG + LXI H,2-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,12-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.12+2 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,12-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,-36-.13 + DAD SP + PUSH H + CALL strcpy_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-30-.13 + DAD SP + MOV M,E + LXI H,-38-.13 + DAD SP + PUSH H + LXI H,.12+45 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,.12+50 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,0-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.13 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .15 +.14: + LXI H,0-.13 + 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 +.15: + LXI H,0-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,10-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .16 + LXI H,8-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,0-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.12+58 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,0-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,7 + CALL .an + PUSH H + LXI H,7 + POP D + CALL .eq + JZ .17 + LXI H,.12+64 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,0-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-8 + CALL .an + XCHG + LXI H,-2-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + DAD D + XCHG + LXI H,-4-.13 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.12+69 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + LXI H,-2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.13 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .19 +.18: + LXI H,-6-.13 + 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 +.19: + LXI H,-6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-4-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .20 + LXI H,8-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + LXI H,visible_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .21 + LXI H,8-.13 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,-6-.13 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.12+77 + PUSH H + LXI H,6-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + POP D + JMP .22 +.21: + LXI H,.12+81 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.22: + JMP .18 +.20: + LXI H,10-.13 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DCX H + PUSH H + LXI H,2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + POP H + CALL .ne + JZ .23 + LXI H,.12+84 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.23: + JMP .24 +.17: + LXI H,.12+93 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D +.24: + JMP .14 +.16: + LXI H,.12+95 + PUSH H + LXI H,4-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fprintf_ + POP D + POP D + LXI H,2-.13 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + RET +.13 EQU -42 +.12: + DB 119,0,59,32,37,115,32,112,114,111,100,117,99,101,100 + DB 32,97,117,116,111,109,97,116,105,99,97,108,108,121,32 + DB 98,121,32,99,118,116,50,105,110,99,46,104,32,10,0 + DB 37,115,58,10,0,32,32,46,68,66,32,32,0,37,48 + DB 51,120,104,0,32,32,59,32,0,32,37,48,52,120,58 + DB 32,0,37,99,32,0,46,32,0,10,32,32,46,68,66 + DB 32,32,0,44,0,10,0 + PUBLIC main_ +main_: lxi d,.26 + call csave + LXI H,.25+0 + PUSH H + CALL banner_ + POP D + LXI H,1 + XCHG + LXI H,8-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .eq + JZ .27 + LXI H,.25+9 + PUSH H + CALL printf_ + POP D + LXI H,1 + PUSH H + CALL exit_ + POP D +.27: + LXI H,.25+40 + PUSH H + LXI H,12-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + CALL fopen_ + POP D + POP D + XCHG + LXI H,-167-.26 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-167-.26 + DAD SP + mov a,m + inx h + ora m + JNZ .28 + LXI H,.25+42 + PUSH H + CALL printf_ + POP D + LXI H,1 + PUSH H + CALL exit_ + POP D +.28: + LXI H,10-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + INX H + INX H + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+72 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-2-.26 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-167-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,1 + PUSH H + LXI H,128 + PUSH H + LXI H,-127-.26 + DAD SP + PUSH H + CALL fread_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,-4-.26 + DAD SP + MOV M,E + INX H + MOV M,D +.29: + LXI H,0 + XCHG + LXI H,-4-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .lt + JZ .30 + LXI H,-2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+85 + PUSH H + LXI H,-161-.26 + DAD SP + PUSH H + CALL sprintf_ + POP D + POP D + POP D + LXI H,-165-.26 + DAD SP + PUSH H + LXI H,128 + PUSH H + LXI H,-129-.26 + DAD SP + PUSH H + CALL cvt2h_ + POP D + POP D + POP D + LXI H,-2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+96 + PUSH H + LXI H,-161-.26 + DAD SP + PUSH H + CALL sprintf_ + POP D + POP D + POP D + LXI H,-165-.26 + DAD SP + PUSH H + LXI H,128 + PUSH H + LXI H,-129-.26 + DAD SP + PUSH H + CALL cvt2inc_ + POP D + POP D + POP D + LXI H,0 + XCHG + LXI H,2-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .32 +.31: + LXI H,2-.26 + 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 +.32: + LXI H,2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + CALL .lt + JZ .33 + LXI H,-2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.25+109 + PUSH H + CALL printf_ + POP D + POP D + LXI H,16 + XCHG + LXI H,-2-.26 + DAD SP + PUSH H + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + XCHG + POP H + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .35 +.34: + LXI H,0-.26 + 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 +.35: + LXI H,0-.26 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .36 + LXI H,2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + DAD H + XCHG + LXI H,0-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + XCHG + LXI H,-133-.26 + DAD SP + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.25+116 + PUSH H + CALL printf_ + POP D + POP D + JMP .34 +.36: + LXI H,.25+122 + PUSH H + CALL printf_ + POP D + LXI H,0 + XCHG + LXI H,0-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .38 +.37: + LXI H,0-.26 + 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 +.38: + LXI H,0-.26 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16 + CALL .lt + JZ .39 + LXI H,2-.26 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + DAD H + DAD H + DAD H + XCHG + LXI H,0-.26 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + DAD D + XCHG + LXI H,-133-.26 + DAD SP + DAD D + MOV E,M + LXI H,-5-.26 + DAD SP + MOV M,E + LXI H,-5-.26 + DAD SP + MOV E,M + MVI D,0 + LXI H,visible_ + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,1 + POP D + CALL .eq + JZ .40 + LXI H,-5-.26 + DAD SP + MOV E,M + MVI D,0 + PUSH D + LXI H,.25+125 + PUSH H + CALL printf_ + POP D + POP D + JMP .41 +.40: + LXI H,.25+128 + PUSH H + CALL printf_ + POP D +.41: + JMP .37 +.39: + LXI H,.25+130 + PUSH H + CALL printf_ + POP D + JMP .31 +.33: + LXI H,.25+132 + PUSH H + CALL printf_ + POP D + LXI H,-167-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,1 + PUSH H + LXI H,128 + PUSH H + LXI H,-127-.26 + DAD SP + PUSH H + CALL fread_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,-4-.26 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .29 +.30: + LXI H,-167-.26 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + LXI H,0 + PUSH H + CALL exit_ + POP D + RET +.26 EQU -171 +.25: + DB 68,85,77,80,46,67,79,77,0,83,111,114,114,121,44 + DB 32,110,111,32,105,110,112,117,116,32,102,105,108,101,32 + DB 115,112,101,99,105,102,105,101,100,0,114,0,83,111,114 + DB 114,121,44,32,99,97,110,110,111,116,32,111,112,101,110 + DB 32,105,110,112,117,116,32,102,105,108,101,0,68,117,109 + DB 112,105,110,103,32,37,115,10,10,0,115,101,99,116,37 + DB 48,52,120,46,104,0,115,101,99,116,37,48,52,120,46 + DB 105,110,99,0,37,48,52,120,58,32,0,37,48,50,120 + DB 32,0,32,32,0,37,99,0,46,0,10,0,10,0 + extrn sprintf_ + extrn fread_ + extrn exit_ + extrn printf_ + extrn banner_ + extrn fclose_ + extrn strcpy_ + extrn fprintf_ + extrn fopen_ + extrn .an + extrn .eq + extrn .ne + extrn .lt + END + \ No newline at end of file diff --git a/Apps/crossdev/DUMP.C b/Apps/crossdev/DUMP.C new file mode 100644 index 00000000..77655006 --- /dev/null +++ b/Apps/crossdev/DUMP.C @@ -0,0 +1,101 @@ +/* dump.c 7/11/2012 dwg - + + The purpose of this program is similar to the CP/M dump program + except that in addition to the normal hexadecimal bytes, a field + of ascii bytes to the right are displayed as well. + +*/ + +#include "stdio.h" + + +char visible[256] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 20 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 30 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 40 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 50 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 60 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, /* 70 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */ +}; + +#include "cvt2h.h" +#include "cvt2inc.h" + +main(argc,argv) + int argc; + char *argv[]; +{ + int i,j; + int offset; + int result; + unsigned char byte; + unsigned char sector[128]; + char name[32]; + + + FILE * fd; + + banner("DUMP.COM"); + +/* cvt2h(0x0100,12*1024,"dumpcomh.h"); */ + + + if(1 == argc) { + printf("Sorry, no input file specified"); + exit(1); + } + + fd = fopen(argv[1],"r"); + if(NULL == fd) { + printf("Sorry, cannot open input file"); + exit(1); + } + + printf("Dumping %s\n\n",argv[1]); + + offset = 0; + result = fread(sector,sizeof(sector),1,fd); + while(0 < result) { + + sprintf(name,"sect%04x.h",offset); + cvt2h(sector,sizeof(sector),name); + sprintf(name,"sect%04x.inc",offset); + cvt2inc(sector,sizeof(sector),name); + + for(i=0;i<8;i++) { + printf("%04x: ",offset); + + + offset += 16; + for(j=0;j<16;j++) { + printf("%02x ",sector[(i*8)+j]); + } + printf(" "); + for(j=0;j<16;j++) { + byte = sector[(i*8)+j]; + if(1 == visible[byte]) { + printf("%c",byte); + } else { + printf("."); + } + } + printf("\n"); + } + printf("\n"); + result = fread(sector,sizeof(sector),1,fd); + } + fclose(fd); + + exit(0); +} + \ No newline at end of file diff --git a/Apps/crossdev/DUMPCOM.H b/Apps/crossdev/DUMPCOM.H new file mode 100644 index 00000000..688a57ba --- /dev/null +++ b/Apps/crossdev/DUMPCOM.H @@ -0,0 +1,1542 @@ +/* dumpcom.h produced automatically by cvt2h.h Do Not Edit */ + +unsigned char dumpcom.[12288] = { + 0xc3, 0xe4, 0x12, 0x11, 0xdc, 0xff, 0xcd, 0xbe, + 0x26, 0x21, 0x1b, 0x02, 0xe5, 0x21, 0x32, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x40, 0x0d, + 0xd1, 0xd1, 0xeb, 0x21, 0x26, 0x00, 0x39, 0x73, + 0x23, 0x72, 0x21, 0x30, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x1d, 0x02, 0xe5, 0x21, 0x2a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0xe1, + 0x07, 0xd1, 0xd1, 0xd1, 0x21, 0x30, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x06, 0x00, 0x39, + 0xe5, 0xcd, 0xbc, 0x25, 0xd1, 0xd1, 0x21, 0x00, + 0x00, 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x73, 0x21, + 0x2e, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x06, 0x00, 0x39, 0xe5, 0x21, 0x56, 0x02, 0xe5, + 0x21, 0x2c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0xcd, 0xe1, 0x07, 0xeb, 0x21, 0x08, 0x00, 0x39, + 0xf9, 0x21, 0x00, 0x00, 0xeb, 0x21, 0x24, 0x00, + 0x39, 0x73, 0x23, 0x72, 0xc3, 0x96, 0x01, 0x21, + 0x24, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, 0x24, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x2e, 0x00, + 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0xc6, 0x27, + 0xca, 0xfd, 0x01, 0x21, 0x2c, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0x24, 0x00, 0x39, 0x7e, 0x23, + 0x66, 0x6f, 0x19, 0x5e, 0x16, 0x00, 0xd5, 0x21, + 0x71, 0x02, 0xe5, 0x21, 0x2a, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0xe1, 0x07, 0xd1, 0xd1, + 0xd1, 0x21, 0x24, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0x21, 0x07, 0x00, 0xcd, 0x64, 0x27, 0xe5, 0x21, + 0x07, 0x00, 0xd1, 0xcd, 0x8c, 0x27, 0xca, 0xfa, + 0x01, 0x21, 0x7a, 0x02, 0xe5, 0x21, 0x28, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0xe1, 0x07, + 0xd1, 0xd1, 0xc3, 0x87, 0x01, 0x21, 0x7d, 0x02, + 0xe5, 0x21, 0x28, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0xcd, 0xe1, 0x07, 0xd1, 0xd1, 0x21, 0x26, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x3a, + 0x10, 0xd1, 0xc9, 0x77, 0x00, 0x2f, 0x2a, 0x20, + 0x25, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x65, 0x64, 0x20, 0x61, 0x75, 0x74, 0x6f, + 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, + 0x79, 0x20, 0x62, 0x79, 0x20, 0x63, 0x76, 0x74, + 0x32, 0x68, 0x2e, 0x68, 0x20, 0x44, 0x6f, 0x20, + 0x4e, 0x6f, 0x74, 0x20, 0x45, 0x64, 0x69, 0x74, + 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x00, 0x75, 0x6e, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x63, + 0x68, 0x61, 0x72, 0x20, 0x25, 0x73, 0x5b, 0x25, + 0x64, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, + 0x00, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x2c, + 0x20, 0x00, 0x0a, 0x09, 0x00, 0x0a, 0x7d, 0x3b, + 0x0a, 0x00, 0x11, 0x55, 0xff, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x05, 0xe5, 0xcd, 0xd3, 0x06, 0xd1, + 0x21, 0x11, 0x05, 0xe5, 0x21, 0x00, 0x30, 0xe5, + 0x21, 0x00, 0x01, 0xe5, 0xcd, 0x03, 0x01, 0xd1, + 0xd1, 0xd1, 0x21, 0x01, 0x00, 0xeb, 0x21, 0xb3, + 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x8c, + 0x27, 0xca, 0xc4, 0x02, 0x21, 0x1b, 0x05, 0xe5, + 0xcd, 0xc3, 0x07, 0xd1, 0x21, 0x01, 0x00, 0xe5, + 0xcd, 0x22, 0x15, 0xd1, 0x21, 0x3a, 0x05, 0xe5, + 0x21, 0xb7, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x23, 0x23, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x40, + 0x0d, 0xd1, 0xd1, 0xeb, 0x21, 0x04, 0x00, 0x39, + 0x73, 0x23, 0x72, 0x21, 0x04, 0x00, 0x39, 0x7e, + 0x23, 0xb6, 0xc2, 0xfd, 0x02, 0x21, 0x3c, 0x05, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0x21, 0x01, 0x00, + 0xe5, 0xcd, 0x22, 0x15, 0xd1, 0x21, 0xb5, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x23, 0x23, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x5a, 0x05, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0x00, 0x00, 0xeb, + 0x21, 0xa9, 0x00, 0x39, 0x73, 0x23, 0x72, 0x21, + 0x04, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x01, 0x00, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0x21, + 0x2c, 0x00, 0x39, 0xe5, 0xcd, 0x01, 0x0e, 0xeb, + 0x21, 0x08, 0x00, 0x39, 0xf9, 0x21, 0xa7, 0x00, + 0x39, 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, 0xeb, + 0x21, 0xa7, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, + 0xcd, 0xc6, 0x27, 0xca, 0xf3, 0x04, 0x21, 0xa9, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x67, + 0x05, 0xe5, 0x21, 0x0a, 0x00, 0x39, 0xe5, 0xcd, + 0x22, 0x08, 0xd1, 0xd1, 0xd1, 0x21, 0x06, 0x00, + 0x39, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0x21, 0x2a, + 0x00, 0x39, 0xe5, 0xcd, 0x03, 0x01, 0xd1, 0xd1, + 0xd1, 0x21, 0x00, 0x00, 0xeb, 0x21, 0xad, 0x00, + 0x39, 0x73, 0x23, 0x72, 0xc3, 0x9e, 0x03, 0x21, + 0xad, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, 0xad, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x08, 0x00, + 0xcd, 0xc6, 0x27, 0xca, 0xc3, 0x04, 0x21, 0xa9, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x72, + 0x05, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x21, + 0x10, 0x00, 0xeb, 0x21, 0xa9, 0x00, 0x39, 0xe5, + 0x7e, 0x23, 0x66, 0x6f, 0x19, 0xeb, 0xe1, 0x73, + 0x23, 0x72, 0x21, 0x00, 0x00, 0xeb, 0x21, 0xab, + 0x00, 0x39, 0x73, 0x23, 0x72, 0xc3, 0xef, 0x03, + 0x21, 0xab, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, + 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, + 0xab, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x10, + 0x00, 0xcd, 0xc6, 0x27, 0xca, 0x2a, 0x04, 0x21, + 0xad, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x29, + 0x29, 0x29, 0xeb, 0x21, 0xab, 0x00, 0x39, 0x7e, + 0x23, 0x66, 0x6f, 0x19, 0xeb, 0x21, 0x26, 0x00, + 0x39, 0x19, 0x5e, 0x16, 0x00, 0xd5, 0x21, 0x79, + 0x05, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0xc3, + 0xe0, 0x03, 0x21, 0x7f, 0x05, 0xe5, 0xcd, 0xc3, + 0x07, 0xd1, 0x21, 0x00, 0x00, 0xeb, 0x21, 0xab, + 0x00, 0x39, 0x73, 0x23, 0x72, 0xc3, 0x4f, 0x04, + 0x21, 0xab, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, + 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, + 0xab, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x10, + 0x00, 0xcd, 0xc6, 0x27, 0xca, 0xb8, 0x04, 0x21, + 0xad, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x29, + 0x29, 0x29, 0xeb, 0x21, 0xab, 0x00, 0x39, 0x7e, + 0x23, 0x66, 0x6f, 0x19, 0xeb, 0x21, 0x26, 0x00, + 0x39, 0x19, 0x5e, 0x21, 0xa6, 0x00, 0x39, 0x73, + 0x21, 0xa6, 0x00, 0x39, 0x5e, 0x16, 0x00, 0x21, + 0x36, 0x28, 0x19, 0x5e, 0x16, 0x00, 0xd5, 0x21, + 0x01, 0x00, 0xd1, 0xcd, 0x8c, 0x27, 0xca, 0xad, + 0x04, 0x21, 0xa6, 0x00, 0x39, 0x5e, 0x16, 0x00, + 0xd5, 0x21, 0x82, 0x05, 0xe5, 0xcd, 0xc3, 0x07, + 0xd1, 0xd1, 0xc3, 0xb5, 0x04, 0x21, 0x85, 0x05, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xc3, 0x40, 0x04, + 0x21, 0x87, 0x05, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, + 0xc3, 0x8f, 0x03, 0x21, 0x89, 0x05, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0x21, 0x04, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x01, 0x00, 0xe5, 0x21, + 0x80, 0x00, 0xe5, 0x21, 0x2c, 0x00, 0x39, 0xe5, + 0xcd, 0x01, 0x0e, 0xeb, 0x21, 0x08, 0x00, 0x39, + 0xf9, 0x21, 0xa7, 0x00, 0x39, 0x73, 0x23, 0x72, + 0xc3, 0x44, 0x03, 0x21, 0x04, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x3a, 0x10, 0xd1, 0x21, + 0x00, 0x00, 0xe5, 0xcd, 0x22, 0x15, 0xd1, 0xc9, + 0x44, 0x55, 0x4d, 0x50, 0x2e, 0x43, 0x4f, 0x4d, + 0x00, 0x64, 0x75, 0x6d, 0x70, 0x63, 0x6f, 0x6d, + 0x2e, 0x68, 0x00, 0x53, 0x6f, 0x72, 0x72, 0x79, + 0x2c, 0x20, 0x6e, 0x6f, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x00, 0x72, 0x00, 0x53, 0x6f, 0x72, 0x72, + 0x79, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x69, 0x6e, + 0x67, 0x20, 0x25, 0x73, 0x0a, 0x0a, 0x00, 0x73, + 0x65, 0x63, 0x74, 0x25, 0x30, 0x34, 0x78, 0x2e, + 0x68, 0x00, 0x25, 0x30, 0x34, 0x78, 0x3a, 0x20, + 0x00, 0x25, 0x30, 0x32, 0x78, 0x20, 0x00, 0x20, + 0x20, 0x00, 0x25, 0x63, 0x00, 0x2e, 0x00, 0x0a, + 0x00, 0x0a, 0x00, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x00, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x2e, 0x31, 0x32, 0x33, + 0x20, 0x6d, 0x6d, 0x2f, 0x64, 0x64, 0x2f, 0x79, + 0x79, 0x79, 0x79, 0x20, 0x20, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x78, 0x2e, 0x78, + 0x2e, 0x78, 0x2e, 0x78, 0x00, 0x53, 0x2f, 0x4e, + 0x20, 0x43, 0x50, 0x4d, 0x38, 0x30, 0x2d, 0x44, + 0x57, 0x47, 0x2d, 0x36, 0x35, 0x34, 0x33, 0x32, + 0x31, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x47, 0x50, 0x4c, 0x33, 0x00, 0x43, 0x6f, + 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, + 0x28, 0x43, 0x29, 0x20, 0x32, 0x30, 0x31, 0x31, + 0x2d, 0x31, 0x32, 0x20, 0x44, 0x6f, 0x75, 0x67, + 0x6c, 0x61, 0x73, 0x20, 0x57, 0x2e, 0x20, 0x47, + 0x6f, 0x6f, 0x64, 0x61, 0x6c, 0x6c, 0x00, 0x11, + 0x80, 0xff, 0xcd, 0xbe, 0x26, 0x21, 0x88, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x85, 0x06, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0xdc, + 0x07, 0xe5, 0x21, 0x07, 0x00, 0xe5, 0x21, 0x07, + 0x00, 0xe5, 0x21, 0x89, 0x06, 0xe5, 0xcd, 0xc3, + 0x07, 0xeb, 0x21, 0x08, 0x00, 0x39, 0xf9, 0x21, + 0x00, 0x00, 0xe5, 0x21, 0x00, 0x00, 0xe5, 0x21, + 0x00, 0x00, 0xe5, 0x21, 0x02, 0x00, 0xe5, 0x21, + 0x97, 0x06, 0xe5, 0xcd, 0xc3, 0x07, 0xeb, 0x21, + 0x0a, 0x00, 0x39, 0xf9, 0x21, 0xac, 0x06, 0xe5, + 0xcd, 0xc3, 0x07, 0xd1, 0xc9, 0x25, 0x73, 0x20, + 0x00, 0x25, 0x32, 0x64, 0x2f, 0x25, 0x32, 0x64, + 0x2f, 0x25, 0x34, 0x64, 0x20, 0x20, 0x00, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x25, + 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, + 0x25, 0x64, 0x20, 0x00, 0x43, 0x4f, 0x50, 0x52, + 0x20, 0x44, 0x6f, 0x75, 0x67, 0x6c, 0x61, 0x73, + 0x20, 0x47, 0x6f, 0x6f, 0x64, 0x61, 0x6c, 0x6c, + 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x64, 0x20, 0x77, 0x2f, 0x47, 0x50, 0x4c, 0x76, + 0x33, 0x0a, 0x00, 0x11, 0x80, 0xff, 0xcd, 0xbe, + 0x26, 0x2a, 0x36, 0x29, 0xe5, 0x21, 0x8a, 0x07, + 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0x88, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x06, + 0x00, 0x39, 0xe5, 0xcd, 0xbc, 0x25, 0xd1, 0xd1, + 0x21, 0x04, 0x00, 0x39, 0xe5, 0xcd, 0x15, 0x26, + 0xd1, 0xe5, 0x21, 0x0c, 0x00, 0xd1, 0xeb, 0xcd, + 0xc7, 0x27, 0xca, 0x1e, 0x07, 0x21, 0x8e, 0x07, + 0xe5, 0x21, 0x06, 0x00, 0x39, 0xe5, 0xcd, 0xd8, + 0x25, 0xd1, 0xd1, 0xc3, 0xf8, 0x06, 0x21, 0x04, + 0x00, 0x39, 0xe5, 0x21, 0x90, 0x07, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0xd1, 0x21, 0xdc, 0x07, 0xe5, + 0x21, 0x07, 0x00, 0xe5, 0x21, 0x07, 0x00, 0xe5, + 0x21, 0x94, 0x07, 0xe5, 0xcd, 0xc3, 0x07, 0xeb, + 0x21, 0x08, 0x00, 0x39, 0xf9, 0x21, 0x00, 0x00, + 0xe5, 0x21, 0x00, 0x00, 0xe5, 0x21, 0x00, 0x00, + 0xe5, 0x21, 0x02, 0x00, 0xe5, 0x21, 0xa2, 0x07, + 0xe5, 0xcd, 0xc3, 0x07, 0xeb, 0x21, 0x0a, 0x00, + 0x39, 0xf9, 0x2a, 0x3a, 0x29, 0xe5, 0x21, 0xb7, + 0x07, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, 0xd1, 0x2a, + 0x3c, 0x29, 0xe5, 0x21, 0xbb, 0x07, 0xe5, 0xcd, + 0xc3, 0x07, 0xd1, 0xd1, 0x2a, 0x36, 0x29, 0xe5, + 0x21, 0xbf, 0x07, 0xe5, 0xcd, 0xc3, 0x07, 0xd1, + 0xd1, 0xc9, 0x25, 0x73, 0x0a, 0x00, 0x20, 0x00, + 0x25, 0x73, 0x20, 0x00, 0x25, 0x32, 0x64, 0x2f, + 0x25, 0x32, 0x64, 0x2f, 0x25, 0x34, 0x64, 0x20, + 0x20, 0x00, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x20, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x25, + 0x73, 0x0a, 0x00, 0x25, 0x73, 0x0a, 0x00, 0x25, + 0x73, 0x0a, 0x00, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x0a, 0x00, 0x39, 0xe5, 0x21, 0x0a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x59, + 0x0f, 0xe5, 0xcd, 0x79, 0x08, 0xd1, 0xd1, 0xd1, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x22, + 0x64, 0x2b, 0x21, 0x0c, 0x00, 0x39, 0xe5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x0a, 0x08, 0xe5, 0xcd, 0x79, 0x08, 0xd1, 0xd1, + 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x2a, 0x64, 0x2b, 0xe5, 0x21, 0x0a, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x71, 0x0f, 0xd1, + 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x22, 0x66, 0x2b, 0x21, 0x0c, 0x00, 0x39, 0xe5, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x58, 0x08, 0xe5, 0xcd, 0x79, 0x08, 0xd1, + 0xd1, 0xd1, 0x44, 0x4d, 0x21, 0x00, 0x00, 0xe5, + 0x2a, 0x66, 0x2b, 0xd1, 0x73, 0x60, 0x69, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0x66, + 0x2b, 0x23, 0x22, 0x66, 0x2b, 0x2b, 0xd1, 0x73, + 0x16, 0x00, 0x21, 0xff, 0x00, 0xcd, 0x64, 0x27, + 0xc9, 0x11, 0x38, 0xff, 0xcd, 0xbe, 0x26, 0x21, + 0xd0, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, 0x00, + 0x00, 0x22, 0x6c, 0x2b, 0x21, 0xd4, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0x6a, 0x2b, 0x21, + 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, + 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x7c, + 0xb5, 0xca, 0x88, 0x0c, 0x2a, 0x68, 0x2b, 0x11, + 0x25, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x67, 0x0c, + 0x21, 0x00, 0x00, 0xeb, 0x21, 0x12, 0x00, 0x39, + 0x73, 0x21, 0x01, 0x00, 0x22, 0x6e, 0x2b, 0x21, + 0x20, 0x00, 0x22, 0x70, 0x2b, 0x21, 0x10, 0x27, + 0x22, 0x72, 0x2b, 0x21, 0xd2, 0x00, 0x39, 0xe5, + 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, + 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, + 0x22, 0x68, 0x2b, 0x11, 0x2d, 0x00, 0xcd, 0x8c, + 0x27, 0xca, 0x1a, 0x09, 0x21, 0x00, 0x00, 0x22, + 0x6e, 0x2b, 0x21, 0xd2, 0x00, 0x39, 0xe5, 0x7e, + 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, + 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, 0x22, + 0x68, 0x2b, 0x2a, 0x68, 0x2b, 0x11, 0x30, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0x44, 0x09, 0x21, 0x30, + 0x00, 0x22, 0x70, 0x2b, 0x21, 0xd2, 0x00, 0x39, + 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, + 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, + 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, 0x2b, 0x11, + 0x2a, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x7c, 0x09, + 0x2a, 0x6a, 0x2b, 0x23, 0x23, 0x22, 0x6a, 0x2b, + 0x2b, 0x2b, 0x5e, 0x23, 0x56, 0xeb, 0x22, 0x74, + 0x2b, 0x21, 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, + 0x2b, 0xc3, 0xc9, 0x09, 0x21, 0x00, 0x00, 0x22, + 0x74, 0x2b, 0xc3, 0x9d, 0x09, 0x21, 0xd2, 0x00, + 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, + 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, + 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, 0x2b, + 0x11, 0xdc, 0x2a, 0x19, 0x23, 0x5e, 0x16, 0x00, + 0x21, 0x04, 0x00, 0xcd, 0x64, 0x27, 0xca, 0xc9, + 0x09, 0x2a, 0x74, 0x2b, 0x11, 0x0a, 0x00, 0xcd, + 0x0d, 0x27, 0xeb, 0x2a, 0x68, 0x2b, 0x19, 0x11, + 0xd0, 0xff, 0x19, 0x22, 0x74, 0x2b, 0xc3, 0x85, + 0x09, 0x2a, 0x68, 0x2b, 0x11, 0x2e, 0x00, 0xcd, + 0x8c, 0x27, 0xca, 0x6f, 0x0a, 0x21, 0xd2, 0x00, + 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, + 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, + 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x11, 0x2a, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0x22, 0x0a, 0x2a, 0x6a, + 0x2b, 0x23, 0x23, 0x22, 0x6a, 0x2b, 0x2b, 0x2b, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0x72, 0x2b, 0x21, + 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, + 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, 0x2b, 0xc3, + 0x6f, 0x0a, 0x21, 0x00, 0x00, 0x22, 0x72, 0x2b, + 0xc3, 0x43, 0x0a, 0x21, 0xd2, 0x00, 0x39, 0xe5, + 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, + 0x23, 0x72, 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, + 0x22, 0x68, 0x2b, 0x2a, 0x68, 0x2b, 0x11, 0xdc, + 0x2a, 0x19, 0x23, 0x5e, 0x16, 0x00, 0x21, 0x04, + 0x00, 0xcd, 0x64, 0x27, 0xca, 0x6f, 0x0a, 0x2a, + 0x72, 0x2b, 0x11, 0x0a, 0x00, 0xcd, 0x0d, 0x27, + 0xeb, 0x2a, 0x68, 0x2b, 0x19, 0x11, 0xd0, 0xff, + 0x19, 0x22, 0x72, 0x2b, 0xc3, 0x2b, 0x0a, 0x21, + 0x02, 0x00, 0x22, 0x76, 0x2b, 0x2a, 0x68, 0x2b, + 0x11, 0x6c, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xa2, + 0x0a, 0x21, 0xd2, 0x00, 0x39, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0xeb, 0x2b, 0x5e, 0x16, 0x00, 0xeb, 0x22, 0x68, + 0x2b, 0x21, 0x04, 0x00, 0x22, 0x76, 0x2b, 0xc3, + 0xc6, 0x0a, 0x2a, 0x68, 0x2b, 0x11, 0x68, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0xc6, 0x0a, 0x21, 0xd2, + 0x00, 0x39, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, + 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, + 0x16, 0x00, 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, + 0x2b, 0xc3, 0x56, 0x0b, 0x21, 0x08, 0x00, 0x22, + 0x78, 0x2b, 0xc3, 0xed, 0x0a, 0x21, 0x0a, 0x00, + 0x22, 0x78, 0x2b, 0xc3, 0xed, 0x0a, 0x21, 0x10, + 0x00, 0x22, 0x78, 0x2b, 0xc3, 0xed, 0x0a, 0x21, + 0xf6, 0xff, 0x22, 0x78, 0x2b, 0x2a, 0x76, 0x2b, + 0xe5, 0x21, 0x14, 0x00, 0x39, 0xe5, 0x2a, 0x78, + 0x2b, 0xe5, 0x2a, 0x6a, 0x2b, 0xe5, 0xcd, 0x8c, + 0x0c, 0xeb, 0x21, 0x08, 0x00, 0x39, 0xf9, 0xeb, + 0x22, 0x7a, 0x2b, 0x2a, 0x76, 0x2b, 0xeb, 0x2a, + 0x6a, 0x2b, 0x19, 0x22, 0x6a, 0x2b, 0xc3, 0x75, + 0x0b, 0x2a, 0x6a, 0x2b, 0x23, 0x23, 0x22, 0x6a, + 0x2b, 0x2b, 0x2b, 0x5e, 0x23, 0x56, 0xeb, 0x22, + 0x7a, 0x2b, 0xe5, 0xcd, 0x15, 0x26, 0xd1, 0x22, + 0x76, 0x2b, 0xc3, 0x83, 0x0b, 0x2a, 0x6a, 0x2b, + 0x23, 0x23, 0x22, 0x6a, 0x2b, 0x2b, 0x2b, 0x5e, + 0x23, 0x56, 0xeb, 0x22, 0x68, 0x2b, 0x2a, 0x68, + 0x2b, 0xe5, 0x21, 0x13, 0x00, 0x39, 0x22, 0x7a, + 0x2b, 0xd1, 0x73, 0xc3, 0x75, 0x0b, 0xcd, 0xf3, + 0x27, 0x06, 0x00, 0x63, 0x00, 0x35, 0x0b, 0x64, + 0x00, 0xe7, 0x0a, 0x6f, 0x00, 0xcc, 0x0a, 0x73, + 0x00, 0x19, 0x0b, 0x75, 0x00, 0xd5, 0x0a, 0x78, + 0x00, 0xde, 0x0a, 0x46, 0x0b, 0x21, 0x12, 0x00, + 0x39, 0xeb, 0x2a, 0x7a, 0x2b, 0xcd, 0xea, 0x27, + 0x22, 0x76, 0x2b, 0x2a, 0x76, 0x2b, 0xeb, 0x2a, + 0x72, 0x2b, 0xcd, 0xc7, 0x27, 0xca, 0x96, 0x0b, + 0x2a, 0x72, 0x2b, 0x22, 0x76, 0x2b, 0x2a, 0x6e, + 0x2b, 0x7c, 0xb5, 0xca, 0xd4, 0x0b, 0xc3, 0xa8, + 0x0b, 0x2a, 0x6c, 0x2b, 0x23, 0x22, 0x6c, 0x2b, + 0x2a, 0x74, 0x2b, 0x2b, 0x22, 0x74, 0x2b, 0x23, + 0xeb, 0x2a, 0x76, 0x2b, 0xcd, 0xc7, 0x27, 0xca, + 0xd4, 0x0b, 0x2a, 0x70, 0x2b, 0xe5, 0x60, 0x69, + 0xcd, 0x9c, 0x26, 0xd1, 0x11, 0xff, 0xff, 0xcd, + 0x8c, 0x27, 0xca, 0xd1, 0x0b, 0x21, 0xff, 0xff, + 0xc9, 0xc3, 0xa1, 0x0b, 0x21, 0x00, 0x00, 0x22, + 0x78, 0x2b, 0xc3, 0xe4, 0x0b, 0x2a, 0x78, 0x2b, + 0x23, 0x22, 0x78, 0x2b, 0x2a, 0x7a, 0x2b, 0x7e, + 0xb7, 0xca, 0x1b, 0x0c, 0x2a, 0x78, 0x2b, 0xeb, + 0x2a, 0x72, 0x2b, 0xcd, 0xc6, 0x27, 0xca, 0x1b, + 0x0c, 0x2a, 0x7a, 0x2b, 0x23, 0x22, 0x7a, 0x2b, + 0x2b, 0x5e, 0x16, 0x00, 0xd5, 0x60, 0x69, 0xcd, + 0x9c, 0x26, 0xd1, 0x11, 0xff, 0xff, 0xcd, 0x8c, + 0x27, 0xca, 0x18, 0x0c, 0x21, 0xff, 0xff, 0xc9, + 0xc3, 0xdd, 0x0b, 0x2a, 0x78, 0x2b, 0xeb, 0x2a, + 0x6c, 0x2b, 0x19, 0x22, 0x6c, 0x2b, 0x2a, 0x6e, + 0x2b, 0x7c, 0xb5, 0xc2, 0x64, 0x0c, 0xc3, 0x38, + 0x0c, 0x2a, 0x6c, 0x2b, 0x23, 0x22, 0x6c, 0x2b, + 0x2a, 0x74, 0x2b, 0x2b, 0x22, 0x74, 0x2b, 0x23, + 0xeb, 0x2a, 0x76, 0x2b, 0xcd, 0xc7, 0x27, 0xca, + 0x64, 0x0c, 0x21, 0x20, 0x00, 0xe5, 0x60, 0x69, + 0xcd, 0x9c, 0x26, 0xd1, 0x11, 0xff, 0xff, 0xcd, + 0x8c, 0x27, 0xca, 0x61, 0x0c, 0x21, 0xff, 0xff, + 0xc9, 0xc3, 0x31, 0x0c, 0xc3, 0x85, 0x0c, 0x2a, + 0x68, 0x2b, 0xe5, 0x60, 0x69, 0xcd, 0x9c, 0x26, + 0xd1, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, + 0x7e, 0x0c, 0x21, 0xff, 0xff, 0xc9, 0x2a, 0x6c, + 0x2b, 0x23, 0x22, 0x6c, 0x2b, 0xc3, 0x97, 0x08, + 0x2a, 0x6c, 0x2b, 0xc9, 0xc5, 0x21, 0x00, 0x00, + 0x22, 0x42, 0x29, 0x22, 0x44, 0x29, 0x21, 0x0a, + 0x00, 0x39, 0x7e, 0x32, 0x40, 0x29, 0x47, 0x2b, + 0x56, 0x2b, 0x5e, 0x2b, 0xeb, 0x36, 0x00, 0x22, + 0x3e, 0x29, 0xeb, 0x2b, 0x4e, 0x2b, 0x56, 0x2b, + 0x5e, 0x21, 0x42, 0x29, 0x1a, 0x77, 0x13, 0x23, + 0x05, 0xc2, 0xb4, 0x0c, 0x79, 0xb7, 0xf2, 0xe4, + 0x0c, 0x2f, 0x3c, 0x4f, 0x2a, 0x40, 0x29, 0x11, + 0x41, 0x29, 0x19, 0x7e, 0xb7, 0xf5, 0xf2, 0xe5, + 0x0c, 0x3a, 0x40, 0x29, 0x47, 0x21, 0x42, 0x29, + 0x3e, 0x00, 0x9e, 0x77, 0x23, 0x05, 0xc2, 0xd8, + 0x0c, 0xc3, 0xe5, 0x0c, 0xf5, 0x21, 0x45, 0x29, + 0x16, 0x00, 0x3e, 0x04, 0xf5, 0x5e, 0xeb, 0x06, + 0x08, 0x29, 0x7c, 0x91, 0xda, 0xf9, 0x0c, 0x67, + 0x2c, 0x05, 0xc2, 0xf1, 0x0c, 0xeb, 0x73, 0x2b, + 0xf1, 0x3d, 0xc2, 0xec, 0x0c, 0x5a, 0x16, 0x00, + 0x21, 0x30, 0x0d, 0x19, 0x7e, 0x2a, 0x3e, 0x29, + 0x2b, 0x22, 0x3e, 0x29, 0x77, 0x21, 0x42, 0x29, + 0x06, 0x04, 0xaf, 0xbe, 0xc2, 0xe5, 0x0c, 0x23, + 0x05, 0xc2, 0x1b, 0x0d, 0x2a, 0x3e, 0x29, 0xf1, + 0xf2, 0x2e, 0x0d, 0x2b, 0x36, 0x2d, 0xc1, 0xc9, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0xcd, 0x2b, + 0x12, 0x44, 0x4d, 0x7c, 0xb5, 0xc2, 0x54, 0x0d, + 0x21, 0x00, 0x00, 0xc9, 0xc5, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x6c, 0x0d, + 0xd1, 0xd1, 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, + 0xbe, 0x26, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0xcd, 0x3a, 0x10, 0xd1, 0x21, 0x46, + 0x29, 0x44, 0x4d, 0xc3, 0x8e, 0x0d, 0x60, 0x69, + 0x11, 0x05, 0x00, 0x19, 0x44, 0x4d, 0x78, 0xb1, + 0xc2, 0x9d, 0x0d, 0x21, 0xfa, 0xff, 0x22, 0xc8, + 0x2e, 0x21, 0x00, 0x00, 0xc9, 0x21, 0x0a, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xc5, 0xcd, 0x84, + 0x25, 0xd1, 0xd1, 0xca, 0xb1, 0x0d, 0xc3, 0x86, + 0x0d, 0x21, 0x03, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0xcd, 0xeb, 0x15, 0xd1, 0xd1, 0x22, 0x7c, + 0x2b, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, + 0xd6, 0x0d, 0x21, 0x00, 0x00, 0xc9, 0x2a, 0x7c, + 0x2b, 0xe5, 0x21, 0x0e, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x07, 0x00, 0x19, 0xd1, 0x73, 0x21, + 0x01, 0x00, 0xe5, 0x21, 0x0e, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0x06, 0x00, 0x19, 0xd1, 0x73, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, 0x00, + 0x00, 0x22, 0x7e, 0x2b, 0xc3, 0x1e, 0x0e, 0x2a, + 0x7e, 0x2b, 0x23, 0x22, 0x7e, 0x2b, 0x2a, 0x7e, + 0x2b, 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, + 0x66, 0x6f, 0xcd, 0xc6, 0x27, 0xca, 0x7b, 0x0e, + 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x22, 0x82, 0x2b, 0xc3, 0x45, 0x0e, 0x2a, 0x82, + 0x2b, 0x2b, 0x22, 0x82, 0x2b, 0x2a, 0x82, 0x2b, + 0x7c, 0xb5, 0xca, 0x78, 0x0e, 0x21, 0x0e, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x7f, 0x0e, + 0xd1, 0x22, 0x80, 0x2b, 0x11, 0xff, 0xff, 0xcd, + 0x8c, 0x27, 0xca, 0x69, 0x0e, 0x2a, 0x7e, 0x2b, + 0xc9, 0x2a, 0x80, 0x2b, 0xe5, 0x60, 0x69, 0x23, + 0x44, 0x4d, 0x2b, 0xd1, 0x73, 0xc3, 0x3e, 0x0e, + 0xc3, 0x17, 0x0e, 0x2a, 0x7e, 0x2b, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, + 0x39, 0x4e, 0x23, 0x46, 0x21, 0x02, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x23, + 0x56, 0xe1, 0xcd, 0x1a, 0x28, 0xca, 0x40, 0x0f, + 0x21, 0x06, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, + 0x18, 0x00, 0xcd, 0x64, 0x27, 0xca, 0xb4, 0x0e, + 0x21, 0xff, 0xff, 0xc9, 0x21, 0xfb, 0xff, 0xe5, + 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, + 0x6e, 0xcd, 0x64, 0x27, 0xeb, 0xe1, 0x73, 0x60, + 0x69, 0x11, 0x04, 0x00, 0x19, 0x7e, 0x23, 0xb6, + 0xc2, 0xd8, 0x0e, 0xc5, 0xcd, 0x74, 0x12, 0xd1, + 0x21, 0x09, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x07, 0x00, 0x09, 0x5e, 0x16, 0x00, 0xd5, + 0xcd, 0x93, 0x19, 0xd1, 0xd1, 0xd1, 0x22, 0x84, + 0x2b, 0x11, 0x00, 0x00, 0xeb, 0xcd, 0xac, 0x27, + 0xca, 0x28, 0x0f, 0x2a, 0x84, 0x2b, 0x7c, 0xb5, + 0xc2, 0x11, 0x0f, 0x21, 0x08, 0x00, 0xc3, 0x14, + 0x0f, 0x21, 0x10, 0x00, 0xe5, 0x60, 0x69, 0x11, + 0x06, 0x00, 0x19, 0xd1, 0xe5, 0x6e, 0xcd, 0x74, + 0x27, 0xeb, 0xe1, 0x73, 0x21, 0xff, 0xff, 0xc9, + 0x21, 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x60, + 0x69, 0x73, 0x23, 0x72, 0x2a, 0x84, 0x2b, 0x19, + 0xeb, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, 0x72, + 0x60, 0x69, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, + 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, 0x5e, + 0x16, 0x00, 0x21, 0xff, 0x00, 0xcd, 0x64, 0x27, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x7e, 0x29, 0xe5, 0x21, 0x0a, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x71, 0x0f, 0xd1, 0xd1, + 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x60, 0x69, + 0x11, 0x0a, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xa7, + 0x0f, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0x21, 0x0d, 0x00, 0xe5, 0xcd, 0xb6, 0x0f, + 0xd1, 0xd1, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, + 0xca, 0xa7, 0x0f, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xc5, + 0xcd, 0xb6, 0x0f, 0xd1, 0xd1, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x0a, 0x00, 0x39, + 0x4e, 0x23, 0x46, 0x21, 0x02, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x23, 0x56, + 0xe1, 0xcd, 0x1a, 0x28, 0xca, 0xec, 0x0f, 0x21, + 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0xff, + 0x00, 0xcd, 0x64, 0x27, 0xe5, 0xc5, 0xcd, 0xb4, + 0x10, 0xd1, 0xd1, 0xc9, 0x21, 0x08, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, 0xe5, 0x7e, + 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, + 0x72, 0xeb, 0x2b, 0xd1, 0x73, 0x16, 0x00, 0x21, + 0xff, 0x00, 0xcd, 0x64, 0x27, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x73, 0x29, 0x44, + 0x4d, 0x60, 0x69, 0x11, 0xec, 0x29, 0xeb, 0xcd, + 0x28, 0x28, 0xca, 0x39, 0x10, 0x60, 0x69, 0x11, + 0x0b, 0x00, 0x19, 0x44, 0x4d, 0x11, 0xf5, 0xff, + 0x19, 0xe5, 0xcd, 0x3a, 0x10, 0xd1, 0xc3, 0x19, + 0x10, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, + 0x00, 0x00, 0x22, 0x86, 0x2b, 0x60, 0x69, 0x11, + 0x06, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0xa7, 0x10, + 0x21, 0x06, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, + 0x04, 0x00, 0xcd, 0x64, 0x27, 0xca, 0x75, 0x10, + 0x21, 0xff, 0xff, 0xe5, 0xc5, 0xcd, 0xb4, 0x10, + 0xd1, 0xd1, 0x22, 0x86, 0x2b, 0x21, 0x07, 0x00, + 0x09, 0x5e, 0x16, 0x00, 0xd5, 0xcd, 0x68, 0x17, + 0xd1, 0xeb, 0x2a, 0x86, 0x2b, 0xcd, 0x74, 0x27, + 0x22, 0x86, 0x2b, 0x21, 0x06, 0x00, 0x09, 0x5e, + 0x16, 0x00, 0x21, 0x02, 0x00, 0xcd, 0x64, 0x27, + 0xca, 0xa7, 0x10, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x65, 0x23, 0xd1, 0x21, + 0x00, 0x00, 0xeb, 0x21, 0x06, 0x00, 0x09, 0x73, + 0x2a, 0x86, 0x2b, 0xc9, 0x11, 0x00, 0x00, 0xcd, + 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, + 0x46, 0x21, 0x0e, 0x10, 0x22, 0x6e, 0x2a, 0x21, + 0x06, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, 0x10, + 0x00, 0xcd, 0x64, 0x27, 0xca, 0xdb, 0x10, 0x21, + 0xff, 0xff, 0xc9, 0x21, 0x06, 0x00, 0x09, 0x5e, + 0x16, 0x00, 0x21, 0x04, 0x00, 0xcd, 0x64, 0x27, + 0xca, 0x4c, 0x11, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x23, 0x56, + 0xe1, 0xcd, 0xea, 0x27, 0x22, 0x88, 0x2b, 0x2a, + 0x88, 0x2b, 0xe5, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x07, 0x00, 0x09, 0x5e, + 0x16, 0x00, 0xd5, 0xcd, 0x88, 0x1c, 0xd1, 0xd1, + 0xd1, 0xeb, 0x2a, 0x88, 0x2b, 0xcd, 0x9b, 0x27, + 0xca, 0x4c, 0x11, 0x21, 0x10, 0x00, 0xe5, 0x60, + 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, 0x6e, + 0x26, 0x00, 0xcd, 0x74, 0x27, 0xeb, 0xe1, 0x73, + 0x21, 0x00, 0x00, 0xeb, 0x60, 0x69, 0x73, 0x23, + 0x72, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, 0x72, + 0x21, 0xff, 0xff, 0xc9, 0x21, 0x0a, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x21, 0xff, 0xff, 0xcd, 0x8c, + 0x27, 0xca, 0x85, 0x11, 0x21, 0xfb, 0xff, 0xe5, + 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, + 0x6e, 0x26, 0x00, 0xcd, 0x64, 0x27, 0xeb, 0xe1, + 0x73, 0x21, 0x00, 0x00, 0xeb, 0x60, 0x69, 0x73, + 0x23, 0x72, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, + 0x72, 0x21, 0x00, 0x00, 0xc9, 0x60, 0x69, 0x11, + 0x04, 0x00, 0x19, 0x7e, 0x23, 0xb6, 0xc2, 0x96, + 0x11, 0xc5, 0xcd, 0x74, 0x12, 0xd1, 0x21, 0x09, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0x21, 0x01, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0xcf, 0x11, 0x21, 0x01, + 0x00, 0xe5, 0x21, 0x0c, 0x00, 0x39, 0xe5, 0x21, + 0x07, 0x00, 0x09, 0x5e, 0x16, 0x00, 0xd5, 0xcd, + 0x88, 0x1c, 0xd1, 0xd1, 0xd1, 0x11, 0x01, 0x00, + 0xcd, 0x9b, 0x27, 0xc2, 0x23, 0x11, 0x21, 0x0a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x21, + 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x60, 0x69, + 0x73, 0x23, 0x72, 0x21, 0x09, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xd5, 0x21, 0x04, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xe1, 0x19, 0xeb, 0x21, 0x02, 0x00, + 0x09, 0x73, 0x23, 0x72, 0x21, 0x04, 0x00, 0xe5, + 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, 0xe5, + 0x6e, 0x26, 0x00, 0xcd, 0x74, 0x27, 0xeb, 0xe1, + 0x73, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0x60, 0x69, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0xeb, 0x2b, + 0xd1, 0x73, 0x16, 0x00, 0x21, 0xff, 0x00, 0xcd, + 0x64, 0x27, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x73, 0x29, 0x44, 0x4d, 0x60, 0x69, + 0x11, 0x06, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0x5a, + 0x12, 0x60, 0x69, 0x11, 0x0b, 0x00, 0x19, 0x44, + 0x4d, 0x11, 0xec, 0x29, 0xeb, 0xcd, 0x1a, 0x28, + 0xca, 0x57, 0x12, 0x21, 0x00, 0x00, 0xc9, 0xc3, + 0x36, 0x12, 0x21, 0x00, 0x00, 0xeb, 0x60, 0x69, + 0x73, 0x23, 0x72, 0x21, 0x02, 0x00, 0x09, 0x73, + 0x23, 0x72, 0x21, 0x04, 0x00, 0x09, 0x73, 0x23, + 0x72, 0x60, 0x69, 0xc9, 0x11, 0x00, 0x00, 0xcd, + 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, + 0x46, 0x21, 0x07, 0x00, 0x09, 0x5e, 0x16, 0x00, + 0xd5, 0xcd, 0x93, 0x20, 0xd1, 0xca, 0xaa, 0x12, + 0x21, 0x01, 0x00, 0xeb, 0x21, 0x09, 0x00, 0x09, + 0x73, 0x23, 0x72, 0x60, 0x69, 0x11, 0x08, 0x00, + 0x19, 0xeb, 0x21, 0x04, 0x00, 0x09, 0x73, 0x23, + 0x72, 0xc9, 0x21, 0x00, 0x04, 0xe5, 0xcd, 0xc0, + 0x21, 0xd1, 0x22, 0x8a, 0x2b, 0x7c, 0xb5, 0xca, + 0x90, 0x12, 0x21, 0x00, 0x04, 0xeb, 0x21, 0x09, + 0x00, 0x09, 0x73, 0x23, 0x72, 0x21, 0x02, 0x00, + 0xe5, 0x60, 0x69, 0x11, 0x06, 0x00, 0x19, 0xd1, + 0xe5, 0x6e, 0xcd, 0x74, 0x27, 0xeb, 0xe1, 0x73, + 0x2a, 0x8a, 0x2b, 0xeb, 0x21, 0x04, 0x00, 0x09, + 0x73, 0x23, 0x72, 0xc9, 0x21, 0x64, 0x2b, 0x01, + 0x6a, 0x03, 0x1e, 0x00, 0x73, 0x23, 0x0b, 0x79, + 0xb0, 0xc2, 0xec, 0x12, 0x2a, 0x06, 0x00, 0xf9, + 0x11, 0x00, 0xf8, 0x19, 0x22, 0xca, 0x2e, 0x2a, + 0xf4, 0x29, 0x22, 0xcc, 0x2e, 0xcd, 0x19, 0x13, + 0x0e, 0x11, 0x11, 0xf6, 0x29, 0xcd, 0x05, 0x00, + 0x01, 0x00, 0x00, 0xcd, 0x05, 0x00, 0xc3, 0x08, + 0x13, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, + 0x7f, 0x00, 0xe5, 0x21, 0xd4, 0x2b, 0xe5, 0x21, + 0x81, 0x00, 0xe5, 0xcd, 0x4a, 0x26, 0xd1, 0xd1, + 0xd1, 0x21, 0x00, 0x00, 0xe5, 0x3a, 0x80, 0x00, + 0x6f, 0x26, 0x00, 0x11, 0x7f, 0x00, 0xcd, 0x64, + 0x27, 0x11, 0xd4, 0x2b, 0x19, 0xd1, 0x73, 0x21, + 0xfd, 0x14, 0x22, 0x98, 0x2b, 0x21, 0xd4, 0x2b, + 0x44, 0x4d, 0x21, 0x01, 0x00, 0x22, 0x54, 0x2c, + 0x2a, 0x54, 0x2c, 0x11, 0x1e, 0x00, 0xeb, 0xcd, + 0xc6, 0x27, 0xca, 0xe7, 0x14, 0x60, 0x69, 0x5e, + 0x16, 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, 0x27, + 0xc2, 0x81, 0x13, 0x60, 0x69, 0x5e, 0x16, 0x00, + 0x21, 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x89, + 0x13, 0x60, 0x69, 0x23, 0x44, 0x4d, 0xc3, 0x65, + 0x13, 0x60, 0x69, 0x7e, 0xb7, 0xca, 0xe7, 0x14, + 0x60, 0x69, 0x5e, 0x16, 0x00, 0x21, 0x3e, 0x00, + 0xcd, 0x8c, 0x27, 0xca, 0xa7, 0x13, 0x21, 0x01, + 0x00, 0x22, 0x58, 0x2c, 0xc3, 0xbb, 0x13, 0x60, + 0x69, 0x5e, 0x16, 0x00, 0x21, 0x3c, 0x00, 0xcd, + 0x8c, 0x27, 0xca, 0x98, 0x14, 0x21, 0x00, 0x00, + 0x22, 0x58, 0x2c, 0x60, 0x69, 0x23, 0x44, 0x4d, + 0x5e, 0x16, 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, + 0x27, 0xc2, 0xda, 0x13, 0x60, 0x69, 0x5e, 0x16, + 0x00, 0x21, 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, + 0xdd, 0x13, 0xc3, 0xbb, 0x13, 0x60, 0x69, 0x22, + 0x56, 0x2c, 0x60, 0x69, 0x23, 0x44, 0x4d, 0x7e, + 0xb7, 0xca, 0x1a, 0x14, 0x60, 0x69, 0x5e, 0x16, + 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, 0x27, 0xc2, + 0x08, 0x14, 0x60, 0x69, 0x5e, 0x16, 0x00, 0x21, + 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x17, 0x14, + 0x21, 0x00, 0x00, 0xe5, 0x60, 0x69, 0x23, 0x44, + 0x4d, 0x2b, 0xd1, 0x73, 0xc3, 0x1a, 0x14, 0xc3, + 0xe2, 0x13, 0x2a, 0x58, 0x2c, 0xe5, 0xcd, 0x68, + 0x17, 0xd1, 0x2a, 0x58, 0x2c, 0x7c, 0xb5, 0xca, + 0x3d, 0x14, 0x21, 0xb6, 0x01, 0xe5, 0x2a, 0x56, + 0x2c, 0xe5, 0xcd, 0xca, 0x15, 0xd1, 0xd1, 0x22, + 0x58, 0x2c, 0xc3, 0x4d, 0x14, 0x21, 0x00, 0x00, + 0xe5, 0x2a, 0x56, 0x2c, 0xe5, 0xcd, 0xeb, 0x15, + 0xd1, 0xd1, 0x22, 0x58, 0x2c, 0x2a, 0x58, 0x2c, + 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, 0x95, + 0x14, 0x21, 0xfe, 0x14, 0xe5, 0x21, 0x80, 0x00, + 0xe5, 0xcd, 0xbc, 0x25, 0xd1, 0xd1, 0x2a, 0x56, + 0x2c, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0xcd, 0xd8, + 0x25, 0xd1, 0xd1, 0x21, 0x20, 0x15, 0xe5, 0x21, + 0x80, 0x00, 0xe5, 0xcd, 0xd8, 0x25, 0xd1, 0xd1, + 0x21, 0x80, 0x00, 0xe5, 0x21, 0x09, 0x00, 0xe5, + 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x21, 0x0a, 0x00, + 0xe5, 0xcd, 0x22, 0x15, 0xd1, 0xc3, 0xe4, 0x14, + 0x60, 0x69, 0xe5, 0x2a, 0x54, 0x2c, 0x23, 0x22, + 0x54, 0x2c, 0x2b, 0x29, 0x11, 0x98, 0x2b, 0x19, + 0xd1, 0x73, 0x23, 0x72, 0x60, 0x69, 0x23, 0x44, + 0x4d, 0x7e, 0xb7, 0xca, 0xe4, 0x14, 0x60, 0x69, + 0x5e, 0x16, 0x00, 0x21, 0x20, 0x00, 0xcd, 0x8c, + 0x27, 0xc2, 0xd2, 0x14, 0x60, 0x69, 0x5e, 0x16, + 0x00, 0x21, 0x09, 0x00, 0xcd, 0x8c, 0x27, 0xca, + 0xe1, 0x14, 0x21, 0x00, 0x00, 0xe5, 0x60, 0x69, + 0x23, 0x44, 0x4d, 0x2b, 0xd1, 0x73, 0xc3, 0xe4, + 0x14, 0xc3, 0xac, 0x14, 0xc3, 0x58, 0x13, 0x21, + 0x98, 0x2b, 0xe5, 0x2a, 0x54, 0x2c, 0xe5, 0xcd, + 0x82, 0x02, 0xd1, 0xd1, 0x21, 0x00, 0x00, 0xe5, + 0xcd, 0x22, 0x15, 0xd1, 0xc9, 0x00, 0x43, 0x61, + 0x6e, 0x27, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x6e, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x00, + 0x24, 0x00, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x2a, 0x6e, 0x2a, 0xcd, 0x9c, 0x26, 0x21, 0x00, + 0x00, 0x44, 0x4d, 0x60, 0x69, 0x11, 0x0b, 0x00, + 0xeb, 0xcd, 0xc6, 0x27, 0xca, 0x4d, 0x15, 0x60, + 0x69, 0x23, 0x44, 0x4d, 0x2b, 0xe5, 0xcd, 0x68, + 0x17, 0xd1, 0xc3, 0x33, 0x15, 0x21, 0x08, 0x00, + 0x39, 0x7e, 0x23, 0xb6, 0xca, 0x70, 0x15, 0x21, + 0x18, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0x11, + 0x01, 0x00, 0xcd, 0x64, 0x27, 0xca, 0x70, 0x15, + 0x21, 0x74, 0x15, 0xe5, 0xcd, 0x08, 0x21, 0xd1, + 0xcd, 0x08, 0x13, 0xc9, 0x41, 0x3a, 0x24, 0x24, + 0x24, 0x2e, 0x53, 0x55, 0x42, 0x00, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0xfd, 0xff, 0x22, + 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x00, 0x00, 0xc9, + 0x63, 0x6f, 0x6e, 0x3a, 0x00, 0x43, 0x4f, 0x4e, + 0x3a, 0x00, 0x6c, 0x73, 0x74, 0x3a, 0x00, 0x4c, + 0x53, 0x54, 0x3a, 0x00, 0x70, 0x72, 0x6e, 0x3a, + 0x00, 0x50, 0x52, 0x4e, 0x3a, 0x00, 0x70, 0x75, + 0x6e, 0x3a, 0x00, 0x50, 0x55, 0x4e, 0x3a, 0x00, + 0x72, 0x64, 0x72, 0x3a, 0x00, 0x52, 0x44, 0x52, + 0x3a, 0x00, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0x21, 0x01, 0x03, 0xe5, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0xeb, 0x15, 0xd1, + 0xd1, 0xd1, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x16, 0x2a, 0x22, 0x5a, 0x2c, 0x21, + 0x00, 0x00, 0x22, 0x5e, 0x2c, 0xc3, 0x11, 0x16, + 0x2a, 0x5a, 0x2c, 0x11, 0x08, 0x00, 0x19, 0x22, + 0x5a, 0x2c, 0x2a, 0x5e, 0x2c, 0x23, 0x22, 0x5e, + 0x2c, 0x2a, 0x5e, 0x2c, 0x11, 0x0b, 0x00, 0xeb, + 0xcd, 0xc6, 0x27, 0xca, 0x34, 0x16, 0x2a, 0x5a, + 0x2c, 0x11, 0x04, 0x00, 0x19, 0x5e, 0x23, 0x56, + 0x21, 0x7e, 0x15, 0xcd, 0x8c, 0x27, 0xc2, 0x3e, + 0x16, 0xc3, 0x00, 0x16, 0x21, 0xf8, 0xff, 0x22, + 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x21, 0x88, + 0x2a, 0x44, 0x4d, 0xc3, 0x4e, 0x16, 0x60, 0x69, + 0x11, 0x06, 0x00, 0x19, 0x44, 0x4d, 0x60, 0x69, + 0x7e, 0x23, 0xb6, 0xca, 0x6f, 0x16, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, + 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x84, 0x25, 0xd1, + 0xd1, 0xca, 0x6f, 0x16, 0xc3, 0x46, 0x16, 0x21, + 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xeb, 0x22, + 0x5c, 0x2c, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x03, 0x00, 0xcd, 0x64, 0x27, 0x23, + 0x22, 0x60, 0x2c, 0x2a, 0x60, 0x2c, 0x11, 0x01, + 0x00, 0xcd, 0x64, 0x27, 0xca, 0xb0, 0x16, 0x2a, + 0x5c, 0x2c, 0x5e, 0xd5, 0x2a, 0x5a, 0x2c, 0xd1, + 0x73, 0x7b, 0xb3, 0xc2, 0xb0, 0x16, 0x21, 0xf6, + 0xff, 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, + 0x2a, 0x60, 0x2c, 0x11, 0x02, 0x00, 0xcd, 0x64, + 0x27, 0xca, 0xd7, 0x16, 0x2a, 0x5c, 0x2c, 0x23, + 0x5e, 0xd5, 0x2a, 0x5a, 0x2c, 0x23, 0xd1, 0x73, + 0x7b, 0xb3, 0xc2, 0xd7, 0x16, 0x21, 0xf6, 0xff, + 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, + 0x5a, 0x2c, 0x11, 0x06, 0x00, 0x19, 0xd1, 0x73, + 0x23, 0x72, 0x2a, 0x5c, 0x2c, 0x23, 0x23, 0x5e, + 0xd5, 0x2a, 0x5a, 0x2c, 0x23, 0x23, 0xd1, 0x73, + 0x2a, 0x5c, 0x2c, 0x23, 0x23, 0x23, 0x5e, 0xd5, + 0x2a, 0x5a, 0x2c, 0x23, 0x23, 0x23, 0xd1, 0x73, + 0x21, 0x8e, 0x15, 0xe5, 0x2a, 0x5a, 0x2c, 0x11, + 0x04, 0x00, 0x19, 0xd1, 0x73, 0x23, 0x72, 0xc5, + 0x2a, 0x5a, 0x2c, 0xe5, 0x21, 0x10, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x10, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x21, 0x10, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0x5c, 0x2c, 0x11, + 0x04, 0x00, 0x19, 0x5e, 0x23, 0x56, 0xeb, 0xcd, + 0x9c, 0x26, 0xeb, 0x21, 0x0a, 0x00, 0x39, 0xf9, + 0x21, 0x00, 0x00, 0xcd, 0xc6, 0x27, 0xca, 0x64, + 0x17, 0x21, 0x7e, 0x15, 0xe5, 0x2a, 0x5a, 0x2c, + 0x11, 0x04, 0x00, 0x19, 0xd1, 0x73, 0x23, 0x72, + 0x21, 0xff, 0xff, 0xc9, 0x2a, 0x5e, 0x2c, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x00, 0x00, + 0xcd, 0xc6, 0x27, 0xc2, 0x8e, 0x17, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x0b, 0x00, + 0xcd, 0xc7, 0x27, 0xca, 0x98, 0x17, 0x21, 0xfd, + 0xff, 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, + 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0x29, 0x29, 0x29, 0x11, 0x16, 0x2a, 0x19, 0x44, + 0x4d, 0x21, 0x06, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x21, 0x04, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xeb, 0xcd, 0x9c, 0x26, 0xd1, 0xeb, 0x21, 0x08, + 0x00, 0x39, 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, + 0xeb, 0x21, 0x03, 0x00, 0x09, 0x73, 0x21, 0x02, + 0x00, 0x09, 0x73, 0x21, 0x01, 0x00, 0x09, 0x73, + 0x60, 0x69, 0x73, 0x21, 0x7e, 0x15, 0xeb, 0x21, + 0x04, 0x00, 0x09, 0x73, 0x23, 0x72, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x62, 0x2c, + 0x44, 0x4d, 0xc3, 0x05, 0x18, 0x60, 0x69, 0x11, + 0x27, 0x00, 0x19, 0x44, 0x4d, 0x60, 0x69, 0x11, + 0x9a, 0x2d, 0xeb, 0xcd, 0x28, 0x28, 0xca, 0x1f, + 0x18, 0x60, 0x69, 0x11, 0x25, 0x00, 0x19, 0x7e, + 0xb7, 0xca, 0x29, 0x18, 0xc3, 0xfd, 0x17, 0x21, + 0xf9, 0xff, 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, + 0xc9, 0xc5, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0xcd, 0x2d, 0x24, 0xd1, 0xd1, 0x22, + 0x9a, 0x2d, 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, + 0xca, 0x4d, 0x18, 0x21, 0xfa, 0xff, 0x22, 0xc8, + 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x2a, 0x9a, 0x2d, + 0x11, 0xff, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x5f, + 0x18, 0xcd, 0x50, 0x25, 0x22, 0x9a, 0x2d, 0x2a, + 0x9a, 0x2d, 0xe5, 0xcd, 0x5f, 0x25, 0xd1, 0x21, + 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x00, + 0x02, 0xcd, 0x64, 0x27, 0xca, 0x81, 0x18, 0xc5, + 0x21, 0x13, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, + 0xd1, 0xc5, 0x21, 0x0f, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0x11, 0xff, 0x00, 0xcd, 0x8c, + 0x27, 0xca, 0xc7, 0x18, 0x21, 0x0a, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x21, 0x00, 0x03, 0xcd, 0x64, + 0x27, 0xca, 0xb7, 0x18, 0xc5, 0x21, 0x16, 0x00, + 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x11, 0xff, + 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xc4, 0x18, 0x21, + 0xff, 0xff, 0x22, 0xc8, 0x2e, 0xcd, 0x78, 0x25, + 0x21, 0xff, 0xff, 0xc9, 0xc3, 0xea, 0x18, 0x21, + 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x21, 0x00, + 0x05, 0xcd, 0x64, 0x27, 0x11, 0x00, 0x05, 0xcd, + 0x8c, 0x27, 0xca, 0xea, 0x18, 0x21, 0xfb, 0xff, + 0x22, 0xc8, 0x2e, 0xcd, 0x78, 0x25, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x00, 0x00, 0xeb, 0x21, 0x21, + 0x00, 0x09, 0x73, 0x23, 0x72, 0x21, 0x23, 0x00, + 0x09, 0x73, 0x21, 0x24, 0x00, 0x09, 0x73, 0x2a, + 0x9a, 0x2d, 0xeb, 0x21, 0x26, 0x00, 0x09, 0x73, + 0x60, 0x69, 0xe5, 0x21, 0x10, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0x06, 0x00, 0x19, 0xd1, 0x73, + 0x23, 0x72, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x03, 0x00, 0xcd, 0x64, 0x27, 0x23, + 0xeb, 0x21, 0x25, 0x00, 0x09, 0x73, 0x21, 0x5d, + 0x19, 0xe5, 0x21, 0x10, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x21, 0x04, 0x00, 0x19, 0xd1, 0x73, 0x23, + 0x72, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0x21, 0x00, 0x08, 0xcd, 0x64, 0x27, 0xca, 0x56, + 0x19, 0xc5, 0xcd, 0x37, 0x1f, 0xd1, 0xcd, 0x78, + 0x25, 0x21, 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, + 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, + 0x23, 0x46, 0xcd, 0xed, 0x1f, 0x21, 0x26, 0x00, + 0x09, 0x5e, 0x16, 0x00, 0xd5, 0xcd, 0x5f, 0x25, + 0xd1, 0xc5, 0x21, 0x10, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0xcd, 0x78, 0x25, 0x21, 0x00, + 0x00, 0xeb, 0x21, 0x25, 0x00, 0x09, 0x73, 0x21, + 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xeb, 0x29, 0x29, 0x29, 0x11, 0x16, 0x2a, 0x19, + 0x44, 0x4d, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x06, 0x00, 0x09, 0x5e, 0x23, + 0x56, 0xd5, 0x60, 0x69, 0x5e, 0x16, 0x00, 0xeb, + 0x29, 0x11, 0xca, 0x2a, 0x19, 0x5e, 0x23, 0x56, + 0xeb, 0xcd, 0x9c, 0x26, 0xd1, 0xd1, 0xd1, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x00, + 0x00, 0x44, 0x4d, 0x21, 0x08, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xeb, 0x22, 0x9c, 0x2d, 0x2a, 0x9c, + 0x2d, 0x11, 0x26, 0x00, 0x19, 0x5e, 0x16, 0x00, + 0xd5, 0xcd, 0x5f, 0x25, 0xd1, 0x2a, 0x9c, 0x2d, + 0x11, 0x24, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0x53, + 0x1a, 0x2a, 0x9c, 0x2d, 0x11, 0x24, 0x00, 0x19, + 0x5e, 0x16, 0x00, 0xd5, 0x21, 0x80, 0x00, 0xd1, + 0xeb, 0xcd, 0xea, 0x27, 0x44, 0x4d, 0xeb, 0x21, + 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, + 0x29, 0x28, 0xca, 0x36, 0x1a, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x2a, + 0x9c, 0x2d, 0xe5, 0xcd, 0xfe, 0x1a, 0xd1, 0xd1, + 0xd1, 0xca, 0x53, 0x1a, 0xcd, 0x78, 0x25, 0x21, + 0x00, 0x00, 0xc9, 0x21, 0x0c, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x60, 0x69, 0xcd, 0xea, 0x27, 0x11, + 0x07, 0x00, 0xeb, 0xcd, 0x4f, 0x27, 0x22, 0x9e, + 0x2d, 0x7c, 0xb5, 0xca, 0xa7, 0x1a, 0x2a, 0x9e, + 0x2d, 0xe5, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x60, 0x69, 0x19, 0xe5, 0x2a, 0x9c, 0x2d, + 0xe5, 0xcd, 0xad, 0x20, 0xd1, 0xd1, 0xd1, 0x22, + 0xa0, 0x2d, 0x7c, 0xb5, 0xca, 0xa7, 0x1a, 0xcd, + 0x78, 0x25, 0x2a, 0x9e, 0x2d, 0xeb, 0x2a, 0xa0, + 0x2d, 0xcd, 0xea, 0x27, 0x11, 0x07, 0x00, 0xeb, + 0xcd, 0x3f, 0x27, 0x50, 0x59, 0x19, 0xc9, 0x2a, + 0x9e, 0x2d, 0x11, 0x07, 0x00, 0xeb, 0xcd, 0x3f, + 0x27, 0x50, 0x59, 0x19, 0x44, 0x4d, 0x60, 0x69, + 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, + 0x6f, 0xcd, 0x28, 0x28, 0xca, 0xf2, 0x1a, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x60, 0x69, + 0xcd, 0xea, 0x27, 0xe5, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x60, 0x69, 0x19, 0xe5, 0x2a, + 0x9c, 0x2d, 0xe5, 0xcd, 0xfe, 0x1a, 0xd1, 0xd1, + 0xd1, 0xca, 0xf2, 0x1a, 0xcd, 0x78, 0x25, 0x60, + 0x69, 0xc9, 0xcd, 0x78, 0x25, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, 0x00, + 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, + 0x4e, 0x23, 0x46, 0xc5, 0xcd, 0xfa, 0x1f, 0xd1, + 0xca, 0x17, 0x1b, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x24, 0x00, 0x09, 0x5e, 0x16, 0x00, 0x21, 0x80, + 0x00, 0x19, 0xe5, 0xcd, 0x4a, 0x26, 0xd1, 0xd1, + 0xd1, 0x21, 0x24, 0x00, 0x09, 0x5e, 0x16, 0x00, + 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, + 0x19, 0x11, 0x7f, 0x00, 0xcd, 0x64, 0x27, 0xeb, + 0x21, 0x24, 0x00, 0x09, 0x73, 0x7b, 0xb3, 0xc2, + 0x6b, 0x1b, 0x60, 0x69, 0x11, 0x21, 0x00, 0x19, + 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, 0xe1, + 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x3a, 0xa3, 0x2d, + 0xb7, 0xc2, 0xdf, 0x1b, 0x21, 0xff, 0x00, 0x7d, + 0x32, 0xa2, 0x2d, 0x21, 0x00, 0x00, 0x7d, 0x32, + 0xa4, 0x2d, 0x7d, 0x32, 0xa3, 0x2d, 0x21, 0xa2, + 0x2d, 0xe5, 0x21, 0x0a, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0x21, 0x0a, 0x00, 0xe5, 0x21, + 0x02, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, + 0x3a, 0xa4, 0x2d, 0x6f, 0x26, 0x00, 0x11, 0x1a, + 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xc2, 0x1b, 0x21, + 0x00, 0x00, 0x7d, 0x32, 0xa3, 0x2d, 0x21, 0x00, + 0x00, 0xc9, 0x3a, 0xd2, 0x2a, 0x6f, 0xe5, 0x3a, + 0xa3, 0x2d, 0x6f, 0x23, 0x7d, 0x32, 0xa3, 0x2d, + 0x26, 0x00, 0x11, 0xa2, 0x2d, 0x19, 0x23, 0xd1, + 0x73, 0x21, 0x02, 0x00, 0x22, 0xa4, 0x2e, 0x3a, + 0xa3, 0x2d, 0x6f, 0x26, 0x00, 0x44, 0x4d, 0xeb, + 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, + 0xcd, 0xc7, 0x27, 0xca, 0xff, 0x1b, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc5, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, + 0x2a, 0xa4, 0x2e, 0x11, 0xa2, 0x2d, 0x19, 0xe5, + 0xcd, 0x4a, 0x26, 0xd1, 0xd1, 0xd1, 0x60, 0x69, + 0xeb, 0x2a, 0xa4, 0x2e, 0x19, 0x22, 0xa4, 0x2e, + 0x60, 0x69, 0xeb, 0x3a, 0xa3, 0x2d, 0x6f, 0xeb, + 0xcd, 0xea, 0x27, 0x7d, 0x32, 0xa3, 0x2d, 0x60, + 0x69, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x0a, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, + 0x00, 0x00, 0x22, 0xa6, 0x2e, 0xc3, 0x4f, 0x1c, + 0x2a, 0xa6, 0x2e, 0x23, 0x22, 0xa6, 0x2e, 0x2a, + 0xa6, 0x2e, 0xeb, 0x21, 0x0c, 0x00, 0x39, 0x7e, + 0x23, 0x66, 0x6f, 0xcd, 0xc6, 0x27, 0xca, 0x84, + 0x1c, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xd5, 0xcd, 0x19, 0x24, 0xd1, 0xe5, 0x60, 0x69, + 0x23, 0x44, 0x4d, 0x2b, 0xd1, 0x73, 0x16, 0x00, + 0x21, 0x1a, 0x00, 0xcd, 0x8c, 0x27, 0xc2, 0x84, + 0x1c, 0xc3, 0x48, 0x1c, 0x2a, 0xa6, 0x2e, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x29, 0x29, + 0x29, 0x11, 0x16, 0x2a, 0x19, 0x44, 0x4d, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x06, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x21, + 0x01, 0x00, 0x09, 0x5e, 0x16, 0x00, 0xeb, 0x29, + 0x11, 0xd3, 0x2a, 0x19, 0x5e, 0x23, 0x56, 0xeb, + 0xcd, 0x9c, 0x26, 0xd1, 0xd1, 0xd1, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x00, 0x00, + 0x44, 0x4d, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xeb, 0x22, 0xa8, 0x2e, 0x2a, 0xa8, 0x2e, + 0x11, 0x26, 0x00, 0x19, 0x5e, 0x16, 0x00, 0xd5, + 0xcd, 0x5f, 0x25, 0xd1, 0x2a, 0xa8, 0x2e, 0x11, + 0x24, 0x00, 0x19, 0x7e, 0xb7, 0xca, 0x4a, 0x1d, + 0x2a, 0xa8, 0x2e, 0x11, 0x24, 0x00, 0x19, 0x5e, + 0x16, 0x00, 0xd5, 0x21, 0x80, 0x00, 0xd1, 0xeb, + 0xcd, 0xea, 0x27, 0x44, 0x4d, 0xeb, 0x21, 0x0c, + 0x00, 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x29, + 0x28, 0xca, 0x2d, 0x1d, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc5, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xa8, + 0x2e, 0xe5, 0xcd, 0x02, 0x1e, 0xd1, 0xd1, 0xd1, + 0xca, 0x4a, 0x1d, 0xcd, 0x78, 0x25, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x60, 0x69, 0xcd, 0xea, 0x27, 0x11, 0x07, + 0x00, 0xeb, 0xcd, 0x4f, 0x27, 0x22, 0xaa, 0x2e, + 0x7c, 0xb5, 0xca, 0xab, 0x1d, 0x2a, 0xaa, 0x2e, + 0xe5, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0x60, 0x69, 0x19, 0xe5, 0x2a, 0xa8, 0x2e, 0xe5, + 0xcd, 0xb5, 0x20, 0xd1, 0xd1, 0xd1, 0x22, 0xac, + 0x2e, 0x7c, 0xb5, 0xca, 0xab, 0x1d, 0xcd, 0x78, + 0x25, 0x2a, 0xaa, 0x2e, 0xeb, 0x2a, 0xac, 0x2e, + 0xcd, 0xea, 0x27, 0x11, 0x07, 0x00, 0xeb, 0xcd, + 0x3f, 0x27, 0x50, 0x59, 0x19, 0x44, 0x4d, 0x7c, + 0xb5, 0xc2, 0xa8, 0x1d, 0x21, 0xff, 0xff, 0xc9, + 0x60, 0x69, 0xc9, 0x2a, 0xaa, 0x2e, 0x11, 0x07, + 0x00, 0xeb, 0xcd, 0x3f, 0x27, 0x50, 0x59, 0x19, + 0x44, 0x4d, 0x60, 0x69, 0xeb, 0x21, 0x0c, 0x00, + 0x39, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x28, 0x28, + 0xca, 0xf6, 0x1d, 0x21, 0x0c, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x60, 0x69, 0xcd, 0xea, 0x27, 0xe5, + 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x60, + 0x69, 0x19, 0xe5, 0x2a, 0xa8, 0x2e, 0xe5, 0xcd, + 0x02, 0x1e, 0xd1, 0xd1, 0xd1, 0xca, 0xf6, 0x1d, + 0xcd, 0x78, 0x25, 0x60, 0x69, 0xc9, 0xcd, 0x78, + 0x25, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xeb, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0xc5, + 0xcd, 0xfa, 0x1f, 0xd1, 0x11, 0x00, 0x00, 0xeb, + 0xcd, 0xc6, 0x27, 0xca, 0x22, 0x1e, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x0c, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0xd5, 0x21, 0x24, 0x00, 0x09, 0x5e, 0x16, + 0x00, 0x21, 0x80, 0x00, 0x19, 0xe5, 0x21, 0x0e, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x4a, + 0x26, 0xd1, 0xd1, 0xd1, 0xc5, 0x21, 0x22, 0x00, + 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x22, 0xc8, + 0x2e, 0x7c, 0xb5, 0xca, 0x5a, 0x1e, 0x21, 0xff, + 0xff, 0xc9, 0x21, 0x24, 0x00, 0x09, 0x5e, 0x16, + 0x00, 0x21, 0x0c, 0x00, 0x39, 0x7e, 0x23, 0x66, + 0x6f, 0x19, 0x11, 0x7f, 0x00, 0xcd, 0x64, 0x27, + 0xeb, 0x21, 0x24, 0x00, 0x09, 0x73, 0x7b, 0xb3, + 0xc2, 0x8c, 0x1e, 0x60, 0x69, 0x11, 0x21, 0x00, + 0x19, 0xe5, 0x7e, 0x23, 0x66, 0x6f, 0x23, 0xeb, + 0xe1, 0x73, 0x23, 0x72, 0x21, 0x00, 0x00, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x0a, + 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, 0x0c, 0x00, + 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x22, 0xae, 0x2e, + 0x2a, 0xae, 0x2e, 0x2b, 0x22, 0xae, 0x2e, 0x23, + 0x7c, 0xb5, 0xca, 0xe6, 0x1e, 0x60, 0x69, 0x5e, + 0x16, 0x00, 0x21, 0x0a, 0x00, 0xcd, 0x8c, 0x27, + 0xca, 0xd0, 0x1e, 0x21, 0x0d, 0x00, 0xe5, 0x21, + 0x02, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, + 0x60, 0x69, 0x23, 0x44, 0x4d, 0x2b, 0x5e, 0x16, + 0x00, 0xd5, 0x21, 0x02, 0x00, 0xe5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0xc3, 0xa8, 0x1e, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x0a, 0x00, + 0x39, 0x4e, 0x23, 0x46, 0x21, 0x0c, 0x00, 0x39, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0xb0, 0x2e, 0x2a, + 0xb0, 0x2e, 0x2b, 0x22, 0xb0, 0x2e, 0x23, 0x7c, + 0xb5, 0xca, 0x2e, 0x1f, 0x60, 0x69, 0x23, 0x44, + 0x4d, 0x2b, 0x5e, 0x16, 0x00, 0xd5, 0x21, 0x0a, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xd5, 0xcd, 0x19, + 0x24, 0xd1, 0xd1, 0xc3, 0x07, 0x1f, 0x21, 0x0c, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0xc9, 0x11, + 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, + 0x39, 0x4e, 0x23, 0x46, 0xc5, 0x21, 0x23, 0x00, + 0xe5, 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x60, 0x69, + 0x11, 0x21, 0x00, 0x19, 0x7e, 0x23, 0xb6, 0xc2, + 0x67, 0x1f, 0x21, 0x00, 0x00, 0xeb, 0x21, 0x24, + 0x00, 0x09, 0x73, 0x21, 0x00, 0x00, 0xc9, 0x60, + 0x69, 0x11, 0x21, 0x00, 0x19, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x2b, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0xc5, 0xcd, 0xfa, 0x1f, 0xd1, 0xca, 0x84, 0x1f, + 0x21, 0xff, 0xff, 0xc9, 0x21, 0x00, 0x01, 0x22, + 0xb2, 0x2e, 0x2a, 0xb2, 0x2e, 0x11, 0x80, 0x00, + 0xeb, 0xcd, 0x29, 0x28, 0xca, 0xb7, 0x1f, 0x2a, + 0xb2, 0x2e, 0x2b, 0x22, 0xb2, 0x2e, 0x5e, 0x16, + 0x00, 0x21, 0x1a, 0x00, 0xcd, 0x9b, 0x27, 0xca, + 0xb4, 0x1f, 0x2a, 0xb2, 0x2e, 0x23, 0x22, 0xb2, + 0x2e, 0xc3, 0xb7, 0x1f, 0xc3, 0x8a, 0x1f, 0x2a, + 0xb2, 0x2e, 0x11, 0x80, 0xff, 0x19, 0xeb, 0x21, + 0x24, 0x00, 0x09, 0x73, 0x16, 0x00, 0x21, 0x80, + 0x00, 0xcd, 0x8c, 0x27, 0xca, 0xe9, 0x1f, 0x60, + 0x69, 0x11, 0x21, 0x00, 0x19, 0xe5, 0x7e, 0x23, + 0x66, 0x6f, 0x23, 0xeb, 0xe1, 0x73, 0x23, 0x72, + 0x21, 0x00, 0x00, 0xeb, 0x21, 0x24, 0x00, 0x09, + 0x73, 0x21, 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, + 0xcd, 0xbe, 0x26, 0x21, 0x00, 0x00, 0x22, 0xb4, + 0x2e, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, + 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, 0x21, + 0x80, 0x00, 0xe5, 0x21, 0x1a, 0x00, 0xe5, 0xcd, + 0x19, 0x24, 0xd1, 0xd1, 0x2a, 0xb4, 0x2e, 0x50, + 0x59, 0xcd, 0x9b, 0x27, 0xc2, 0x2f, 0x20, 0x21, + 0x21, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x2a, 0xb6, + 0x2e, 0xcd, 0x9b, 0x27, 0xca, 0x8f, 0x20, 0xc5, + 0x21, 0x21, 0x00, 0xe5, 0xcd, 0x19, 0x24, 0xd1, + 0xd1, 0x22, 0xc8, 0x2e, 0x11, 0x01, 0x00, 0xcd, + 0x8c, 0x27, 0xc2, 0x51, 0x20, 0x2a, 0xc8, 0x2e, + 0x11, 0x04, 0x00, 0xcd, 0x8c, 0x27, 0xca, 0x73, + 0x20, 0x21, 0x00, 0x00, 0x22, 0xc8, 0x2e, 0x21, + 0x1a, 0x00, 0xe5, 0x21, 0x80, 0x00, 0xe5, 0x21, + 0x80, 0x00, 0xe5, 0xcd, 0x2e, 0x26, 0xd1, 0xd1, + 0xd1, 0x21, 0x00, 0x00, 0x22, 0xb4, 0x2e, 0x21, + 0x01, 0x00, 0xc9, 0x2a, 0xc8, 0x2e, 0x7c, 0xb5, + 0xca, 0x7f, 0x20, 0x21, 0xff, 0xff, 0xc9, 0x60, + 0x69, 0x22, 0xb4, 0x2e, 0x21, 0x21, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xeb, 0x22, 0xb6, 0x2e, 0x21, + 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x08, 0x00, 0x39, 0x5e, 0x23, 0x56, + 0xeb, 0x29, 0x29, 0x29, 0x11, 0x18, 0x2a, 0x19, + 0x5e, 0x16, 0x00, 0xeb, 0xc9, 0xcd, 0xdc, 0x26, + 0x0e, 0x21, 0xc3, 0xba, 0x20, 0xcd, 0xdc, 0x26, + 0x0e, 0x22, 0xc5, 0x2a, 0x5f, 0x2b, 0xeb, 0x21, + 0x80, 0x00, 0x19, 0x22, 0x5f, 0x2b, 0x0e, 0x1a, + 0xcd, 0x05, 0x00, 0xc1, 0xc5, 0x2a, 0x5d, 0x2b, + 0xeb, 0xcd, 0x05, 0x00, 0xb7, 0xc2, 0xf3, 0x20, + 0x2a, 0x5d, 0x2b, 0x11, 0x21, 0x00, 0x19, 0x34, + 0xc2, 0xe5, 0x20, 0x23, 0x34, 0x2a, 0x61, 0x2b, + 0x2b, 0x22, 0x61, 0x2b, 0x7d, 0xb4, 0xc2, 0xbb, + 0x20, 0xc1, 0xc9, 0xfe, 0x01, 0xca, 0x03, 0x21, + 0xfe, 0x04, 0xca, 0x03, 0x21, 0x6f, 0x26, 0x00, + 0x22, 0xc8, 0x2e, 0xc1, 0x2a, 0x61, 0x2b, 0xc9, + 0x11, 0xd8, 0xff, 0xcd, 0xbe, 0x26, 0x21, 0x04, + 0x00, 0x39, 0xe5, 0x21, 0x32, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0x2d, 0x24, 0xd1, 0xd1, + 0x44, 0x4d, 0xc5, 0xcd, 0x5f, 0x25, 0xd1, 0x21, + 0x04, 0x00, 0x39, 0xe5, 0x21, 0x13, 0x00, 0xe5, + 0xcd, 0x19, 0x24, 0xd1, 0xd1, 0x44, 0x4d, 0xcd, + 0x78, 0x25, 0x60, 0x69, 0x11, 0xff, 0x00, 0xcd, + 0x8c, 0x27, 0xca, 0x4f, 0x21, 0x21, 0xff, 0xff, + 0x22, 0xc8, 0x2e, 0x21, 0xff, 0xff, 0xc9, 0x21, + 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xcd, 0xbe, + 0x26, 0x21, 0x08, 0x00, 0x39, 0x4e, 0x23, 0x46, + 0x21, 0xfc, 0xff, 0x09, 0x5e, 0x23, 0x56, 0xeb, + 0x2b, 0x29, 0x29, 0x22, 0xc0, 0x2e, 0xc5, 0xcd, + 0x65, 0x23, 0xd1, 0x21, 0x0a, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0xd5, 0xcd, 0xc0, 0x21, 0xd1, 0x22, + 0xbe, 0x2e, 0x7c, 0xb5, 0xca, 0xbc, 0x21, 0x2a, + 0xbe, 0x2e, 0x50, 0x59, 0xcd, 0x9b, 0x27, 0xca, + 0xbc, 0x21, 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, + 0x56, 0x2a, 0xc0, 0x2e, 0xcd, 0x29, 0x28, 0xca, + 0xa8, 0x21, 0x2a, 0xc0, 0x2e, 0xc3, 0xb0, 0x21, + 0x21, 0x0a, 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, + 0xe5, 0x2a, 0xbe, 0x2e, 0xe5, 0xc5, 0xcd, 0x4a, + 0x26, 0xd1, 0xd1, 0xd1, 0x2a, 0xbe, 0x2e, 0xc9, + 0x11, 0x00, 0x00, 0xcd, 0xbe, 0x26, 0x21, 0x08, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0xeb, 0x23, 0x23, + 0x23, 0x11, 0x02, 0x00, 0xeb, 0xcd, 0x4f, 0x27, + 0x23, 0x22, 0xc4, 0x2e, 0x2a, 0xbc, 0x2e, 0x22, + 0xc2, 0x2e, 0x7c, 0xb5, 0xc2, 0xf3, 0x21, 0x21, + 0xb8, 0x2e, 0x22, 0xc2, 0x2e, 0x22, 0xba, 0x2e, + 0x22, 0xbc, 0x2e, 0x2a, 0xc2, 0x2e, 0x23, 0x23, + 0x5e, 0x23, 0x56, 0x42, 0x4b, 0xc3, 0x0e, 0x22, + 0x60, 0x69, 0x22, 0xc2, 0x2e, 0x21, 0x02, 0x00, + 0x09, 0x5e, 0x23, 0x56, 0x42, 0x4b, 0x21, 0x02, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x60, 0x69, + 0xd1, 0xcd, 0x9b, 0x27, 0xca, 0x8d, 0x22, 0x21, + 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x60, + 0x69, 0x5e, 0x23, 0x56, 0xeb, 0x29, 0x29, 0x50, + 0x59, 0x19, 0xd1, 0xcd, 0x8c, 0x27, 0xca, 0x8d, + 0x22, 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x2a, 0xbc, 0x2e, 0xd1, 0xcd, 0x8c, 0x27, + 0xca, 0x5c, 0x22, 0x21, 0x02, 0x00, 0x09, 0x5e, + 0x23, 0x56, 0xeb, 0x23, 0x23, 0x5e, 0x23, 0x56, + 0xeb, 0x22, 0xbc, 0x2e, 0x21, 0x02, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xeb, 0x5e, 0x23, 0x56, 0xd5, + 0x60, 0x69, 0xd1, 0xe5, 0x7e, 0x23, 0x66, 0x6f, + 0x19, 0xeb, 0xe1, 0x73, 0x23, 0x72, 0x21, 0x02, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0xeb, 0x23, 0x23, + 0x5e, 0x23, 0x56, 0x21, 0x02, 0x00, 0x09, 0x73, + 0x23, 0x72, 0xc3, 0x0e, 0x22, 0x60, 0x69, 0x5e, + 0x23, 0x56, 0x2a, 0xc4, 0x2e, 0xcd, 0x1a, 0x28, + 0xca, 0x1a, 0x23, 0x60, 0x69, 0x5e, 0x23, 0x56, + 0x2a, 0xc4, 0x2e, 0xcd, 0x8c, 0x27, 0xca, 0xbd, + 0x22, 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, + 0xd5, 0x2a, 0xc2, 0x2e, 0x23, 0x23, 0xd1, 0x73, + 0x23, 0x72, 0xc3, 0x02, 0x23, 0x2a, 0xc4, 0x2e, + 0x29, 0x29, 0x50, 0x59, 0x19, 0x22, 0xbc, 0x2e, + 0x2a, 0xbc, 0x2e, 0xe5, 0x2a, 0xc2, 0x2e, 0x23, + 0x23, 0xd1, 0x73, 0x23, 0x72, 0x21, 0x02, 0x00, + 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xbc, 0x2e, + 0x23, 0x23, 0xd1, 0x73, 0x23, 0x72, 0x60, 0x69, + 0x5e, 0x23, 0x56, 0x2a, 0xc4, 0x2e, 0xcd, 0xea, + 0x27, 0xe5, 0x2a, 0xbc, 0x2e, 0xd1, 0x73, 0x23, + 0x72, 0x2a, 0xc4, 0x2e, 0xeb, 0x60, 0x69, 0x73, + 0x23, 0x72, 0x2a, 0xc2, 0x2e, 0x22, 0xbc, 0x2e, + 0x21, 0x00, 0x00, 0xeb, 0x21, 0x02, 0x00, 0x09, + 0x73, 0x23, 0x72, 0x60, 0x69, 0x11, 0x04, 0x00, + 0x19, 0xc9, 0x60, 0x69, 0xeb, 0x2a, 0xbc, 0x2e, + 0xcd, 0x8c, 0x27, 0xca, 0x61, 0x23, 0x21, 0x00, + 0x04, 0xe5, 0xcd, 0x16, 0x25, 0xd1, 0x44, 0x4d, + 0x11, 0xff, 0xff, 0xcd, 0x8c, 0x27, 0xca, 0x3d, + 0x23, 0x21, 0x00, 0x00, 0xc9, 0x21, 0x00, 0x01, + 0xeb, 0x60, 0x69, 0x73, 0x23, 0x72, 0x21, 0x00, + 0x00, 0xeb, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, + 0x72, 0x60, 0x69, 0x11, 0x04, 0x00, 0x19, 0xe5, + 0xcd, 0x65, 0x23, 0xd1, 0x2a, 0xbc, 0x2e, 0x44, + 0x4d, 0xc3, 0x00, 0x22, 0xc9, 0x11, 0x00, 0x00, + 0xcd, 0xbe, 0x26, 0x21, 0x08, 0x00, 0x39, 0x5e, + 0x23, 0x56, 0x21, 0xfc, 0xff, 0x19, 0x22, 0xc6, + 0x2e, 0x2a, 0xc6, 0x2e, 0x23, 0x23, 0x7e, 0x23, + 0xb6, 0xca, 0x88, 0x23, 0x21, 0xff, 0xff, 0xc9, + 0x2a, 0xbc, 0x2e, 0x44, 0x4d, 0xc3, 0x99, 0x23, + 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0x42, + 0x4b, 0x60, 0x69, 0xeb, 0x2a, 0xc6, 0x2e, 0xcd, + 0x29, 0x28, 0xc2, 0xb8, 0x23, 0x21, 0x02, 0x00, + 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xc6, 0x2e, + 0xd1, 0xeb, 0xcd, 0x29, 0x28, 0xca, 0xec, 0x23, + 0x21, 0x02, 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, + 0x60, 0x69, 0xd1, 0xeb, 0xcd, 0x1a, 0x28, 0xca, + 0xe9, 0x23, 0x2a, 0xc6, 0x2e, 0x50, 0x59, 0xeb, + 0xcd, 0x29, 0x28, 0xc2, 0xec, 0x23, 0x21, 0x02, + 0x00, 0x09, 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xc6, + 0x2e, 0xd1, 0xeb, 0xcd, 0x28, 0x28, 0xc2, 0xec, + 0x23, 0xc3, 0x90, 0x23, 0x21, 0x02, 0x00, 0x09, + 0x5e, 0x23, 0x56, 0xd5, 0x2a, 0xc6, 0x2e, 0x23, + 0x23, 0xd1, 0x73, 0x23, 0x72, 0x2a, 0xc6, 0x2e, + 0xeb, 0x21, 0x02, 0x00, 0x09, 0x73, 0x23, 0x72, + 0x60, 0x69, 0x22, 0xbc, 0x2e, 0x21, 0x00, 0x00, + 0xc9, 0xcd, 0xdc, 0x26, 0xcd, 0x1c, 0x24, 0xeb, + 0xc9, 0xcd, 0xdc, 0x26, 0x2a, 0x5d, 0x2b, 0x44, + 0x4d, 0x2a, 0x5f, 0x2b, 0xeb, 0xcd, 0x05, 0x00, + 0xeb, 0x6f, 0xaf, 0x67, 0xc9, 0xc5, 0x21, 0x04, + 0x00, 0x39, 0x4e, 0x23, 0x46, 0x23, 0x5e, 0x23, + 0x56, 0x6b, 0x62, 0x36, 0x00, 0x23, 0x3e, 0x0b, + 0x36, 0x20, 0x23, 0x3d, 0xc2, 0x40, 0x24, 0x3e, + 0x04, 0x36, 0x00, 0x23, 0x3d, 0xc2, 0x49, 0x24, + 0xeb, 0x79, 0xb0, 0xca, 0xf1, 0x24, 0x0a, 0xfe, + 0x20, 0xca, 0x61, 0x24, 0xfe, 0x09, 0xc2, 0x65, + 0x24, 0x03, 0xc3, 0x56, 0x24, 0xc5, 0x16, 0x00, + 0x0a, 0xcd, 0x0a, 0x25, 0xda, 0x7e, 0x24, 0xd6, + 0x30, 0x5f, 0x7a, 0x87, 0x87, 0x87, 0x82, 0x82, + 0x83, 0x57, 0x03, 0xc3, 0x68, 0x24, 0xfe, 0x2f, + 0xc2, 0x88, 0x24, 0x03, 0xf1, 0xc3, 0x8b, 0x24, + 0xc1, 0x16, 0xff, 0x03, 0x0a, 0xfe, 0x3a, 0x0b, + 0x3e, 0x00, 0xc2, 0xb6, 0x24, 0x0a, 0xe6, 0x7f, + 0xfe, 0x41, 0xda, 0xf1, 0x24, 0xfe, 0x5b, 0xd2, + 0xa7, 0x24, 0xd6, 0x40, 0xc3, 0xb3, 0x24, 0xfe, + 0x61, 0xda, 0xf1, 0x24, 0xfe, 0x7b, 0xd2, 0xf1, + 0x24, 0xd6, 0x60, 0x77, 0x03, 0x03, 0x23, 0x1e, + 0x08, 0x1c, 0x0a, 0x03, 0xfe, 0x2e, 0xca, 0xd1, + 0x24, 0xb7, 0xca, 0xea, 0x24, 0x1d, 0xca, 0xb9, + 0x24, 0xcd, 0xf8, 0x24, 0x77, 0x23, 0xc3, 0xba, + 0x24, 0x1d, 0x7b, 0x85, 0x6f, 0x7c, 0xce, 0x00, + 0x67, 0x1e, 0x03, 0x0a, 0x03, 0xb7, 0xca, 0xea, + 0x24, 0xcd, 0xf8, 0x24, 0x77, 0x23, 0x1d, 0xc2, + 0xdb, 0x24, 0x26, 0x00, 0x6a, 0x7a, 0xb7, 0xc1, + 0xc9, 0x21, 0xff, 0xff, 0x7c, 0xb7, 0xc1, 0xc9, + 0xfe, 0x2a, 0xc2, 0x01, 0x25, 0x0b, 0x3e, 0x3f, + 0xc9, 0xfe, 0x61, 0xd8, 0xfe, 0x7b, 0xd0, 0xd6, + 0x20, 0xc9, 0xfe, 0x30, 0xd8, 0xfe, 0x3a, 0xd2, + 0x14, 0x25, 0xb7, 0xc9, 0x37, 0xc9, 0x21, 0x02, + 0x00, 0x39, 0x5e, 0x23, 0x56, 0x2a, 0xf4, 0x29, + 0x19, 0xda, 0x3a, 0x25, 0xeb, 0x2a, 0xca, 0x2e, + 0x7d, 0x93, 0x7c, 0x9a, 0xda, 0x3a, 0x25, 0x2a, + 0xf4, 0x29, 0xeb, 0x22, 0xf4, 0x29, 0xeb, 0x7c, + 0xb5, 0xc9, 0x21, 0xff, 0xff, 0xaf, 0x3d, 0xc9, + 0x21, 0x02, 0x00, 0x39, 0x7d, 0x96, 0x5f, 0x7c, + 0x23, 0x9e, 0x57, 0xeb, 0x22, 0xca, 0x2e, 0xc9, + 0xcd, 0xdc, 0x26, 0x0e, 0x20, 0x1e, 0xff, 0xcd, + 0x05, 0x00, 0x6f, 0x26, 0x00, 0xb7, 0xc9, 0xcd, + 0xdc, 0x26, 0x0e, 0x20, 0x1e, 0xff, 0xcd, 0x05, + 0x00, 0x32, 0xdb, 0x2a, 0x3a, 0x5d, 0x2b, 0xfe, + 0xff, 0xc8, 0x0e, 0x20, 0x5f, 0xc3, 0x05, 0x00, + 0xcd, 0xdc, 0x26, 0x0e, 0x20, 0x3a, 0xdb, 0x2a, + 0x5f, 0xc3, 0x05, 0x00, 0x21, 0x05, 0x00, 0x39, + 0xc5, 0x01, 0xff, 0x7f, 0xc3, 0x98, 0x25, 0x21, + 0x07, 0x00, 0x39, 0xc5, 0x46, 0x2b, 0x4e, 0x2b, + 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x2b, 0x6e, 0x67, + 0xeb, 0x78, 0xb1, 0xca, 0xb6, 0x25, 0x1a, 0x96, + 0xc2, 0xb6, 0x25, 0x1a, 0xb7, 0xca, 0xb6, 0x25, + 0x13, 0x23, 0x0b, 0xc3, 0xa1, 0x25, 0xc1, 0x6f, + 0x9f, 0x67, 0xb5, 0xc9, 0x21, 0x05, 0x00, 0x39, + 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x2b, 0x6e, 0x67, + 0xe5, 0x1a, 0x77, 0xb7, 0xca, 0xd4, 0x25, 0x13, + 0x23, 0xc3, 0xc9, 0x25, 0xe1, 0x7c, 0xb5, 0xc9, + 0x21, 0x05, 0x00, 0x39, 0xc5, 0x01, 0xff, 0x7f, + 0xc3, 0xec, 0x25, 0x21, 0x07, 0x00, 0x39, 0xc5, + 0x46, 0x2b, 0x4e, 0x2b, 0x56, 0x2b, 0x5e, 0x2b, + 0x7e, 0x2b, 0x6e, 0x67, 0xe5, 0xaf, 0xbe, 0xca, + 0xfe, 0x25, 0x23, 0xc3, 0xf6, 0x25, 0x78, 0xb1, + 0xca, 0x0f, 0x26, 0x1a, 0x77, 0xb7, 0xca, 0x0f, + 0x26, 0x13, 0x23, 0x0b, 0xc3, 0xfe, 0x25, 0x77, + 0xe1, 0xc1, 0x7c, 0xb5, 0xc9, 0x21, 0x02, 0x00, + 0x39, 0x7e, 0x23, 0x66, 0x6f, 0x11, 0x00, 0x00, + 0xaf, 0xbe, 0xca, 0x2a, 0x26, 0x13, 0x23, 0xc3, + 0x21, 0x26, 0xeb, 0x7d, 0xb4, 0xc9, 0xc5, 0x21, + 0x04, 0x00, 0x39, 0x5e, 0x23, 0x56, 0x23, 0x4e, + 0x23, 0x46, 0x23, 0x6e, 0xeb, 0x78, 0xb1, 0xca, + 0x48, 0x26, 0x73, 0x23, 0x0b, 0xc3, 0x3d, 0x26, + 0xc1, 0xc9, 0xc5, 0x21, 0x09, 0x00, 0x39, 0x46, + 0x2b, 0x4e, 0x2b, 0x56, 0x2b, 0x5e, 0x2b, 0x7e, + 0x2b, 0x6e, 0x67, 0xba, 0xda, 0x86, 0x26, 0xc2, + 0x6a, 0x26, 0x7d, 0xbb, 0xda, 0x86, 0x26, 0xca, + 0x9a, 0x26, 0x09, 0xeb, 0x09, 0xaf, 0xc6, 0x03, + 0xea, 0x7a, 0x26, 0xeb, 0x1b, 0x2b, 0xed, 0xb8, + 0xc1, 0xc9, 0x1b, 0x2b, 0x1a, 0x77, 0x0b, 0x78, + 0xb1, 0xc2, 0x7a, 0x26, 0xc1, 0xc9, 0xaf, 0xc6, + 0x03, 0xea, 0x90, 0x26, 0xed, 0xb0, 0xc1, 0xc9, + 0x7e, 0x12, 0x13, 0x23, 0x0b, 0x78, 0xb1, 0xc2, + 0x90, 0x26, 0xc1, 0xc9, 0xe9, 0xe1, 0xc5, 0x44, + 0x4d, 0x21, 0x00, 0x00, 0x39, 0xeb, 0x39, 0xf9, + 0xd5, 0xdd, 0xe5, 0xfd, 0xe5, 0x60, 0x69, 0xcd, + 0x9c, 0x26, 0xfd, 0xe1, 0xdd, 0xe1, 0xeb, 0xe1, + 0xf9, 0xc1, 0xeb, 0x7c, 0xb5, 0xc9, 0xe1, 0xc5, + 0x44, 0x4d, 0x21, 0x00, 0x00, 0x39, 0xeb, 0x39, + 0xf9, 0xd5, 0x21, 0xb6, 0x26, 0xe5, 0x60, 0x69, + 0xe9, 0x7e, 0x12, 0x23, 0x13, 0x0b, 0x78, 0xb1, + 0xc2, 0xd1, 0x26, 0xc9, 0xd1, 0x21, 0x02, 0x00, + 0x39, 0xaf, 0xc6, 0x03, 0xea, 0xeb, 0x26, 0xdd, + 0xe5, 0xfd, 0xe5, 0xc5, 0xd5, 0x11, 0x5d, 0x2b, + 0x06, 0x06, 0x7e, 0x12, 0x23, 0x13, 0x05, 0xc2, + 0xf2, 0x26, 0x21, 0xff, 0x26, 0xe3, 0xe9, 0xc1, + 0xaf, 0xc6, 0x03, 0xea, 0x0a, 0x27, 0xfd, 0xe1, + 0xdd, 0xe1, 0x7c, 0xb5, 0xc9, 0xc5, 0x44, 0x4d, + 0x21, 0x00, 0x00, 0x3e, 0x10, 0x29, 0xeb, 0x29, + 0xeb, 0xd2, 0x1d, 0x27, 0x09, 0x3d, 0xc2, 0x15, + 0x27, 0xc1, 0x7d, 0xb4, 0xc9, 0xeb, 0x7b, 0xe6, + 0x1f, 0x5f, 0xca, 0x4c, 0x27, 0x7c, 0xb4, 0xf2, + 0x57, 0x27, 0x7c, 0x37, 0x1f, 0x67, 0x7d, 0x1f, + 0x6f, 0x1d, 0xc2, 0x32, 0x27, 0xb4, 0xc9, 0xeb, + 0x7b, 0xe6, 0x1f, 0x5f, 0xca, 0x4c, 0x27, 0x29, + 0x1d, 0xc2, 0x47, 0x27, 0x7d, 0xb4, 0xc9, 0xeb, + 0x7b, 0xe6, 0x1f, 0x5f, 0xca, 0x4c, 0x27, 0x7c, + 0xb7, 0x1f, 0x67, 0x7d, 0x1f, 0x6f, 0x1d, 0xc2, + 0x57, 0x27, 0xb4, 0xc9, 0x7c, 0xa2, 0x67, 0x7d, + 0xa3, 0x6f, 0xb4, 0xc9, 0x7c, 0x2f, 0x67, 0x7d, + 0x2f, 0x6f, 0xb4, 0xc9, 0x7c, 0xb2, 0x67, 0x7d, + 0xb3, 0x6f, 0xb4, 0xc9, 0x7c, 0xaa, 0x67, 0x7d, + 0xab, 0x6f, 0xb4, 0xc9, 0x7c, 0xb5, 0xca, 0xa5, + 0x27, 0xc3, 0x96, 0x27, 0x7d, 0x93, 0xc2, 0x96, + 0x27, 0x7c, 0x92, 0xca, 0xa5, 0x27, 0x21, 0x00, + 0x00, 0xaf, 0xc9, 0x7d, 0x93, 0xc2, 0xa5, 0x27, + 0x7c, 0x92, 0xca, 0x96, 0x27, 0x21, 0x01, 0x00, + 0x7d, 0xb4, 0xc9, 0xeb, 0x7c, 0xaa, 0xfa, 0xbe, + 0x27, 0x7d, 0x93, 0x7c, 0x9a, 0x3f, 0x3e, 0x00, + 0xce, 0x00, 0x6f, 0x26, 0x00, 0xc9, 0x7a, 0x07, + 0xe6, 0x01, 0x6f, 0x26, 0x00, 0xc9, 0xeb, 0x7c, + 0xaa, 0xfa, 0xd8, 0x27, 0x7d, 0x93, 0x7c, 0x9a, + 0x3e, 0x00, 0xce, 0x00, 0x6f, 0x26, 0x00, 0xc9, + 0x7c, 0x07, 0xe6, 0x01, 0x6f, 0x26, 0x00, 0xc9, + 0x7d, 0x2f, 0x6f, 0x7c, 0x2f, 0x67, 0x23, 0x7d, + 0xb4, 0xc9, 0xeb, 0x7d, 0x93, 0x6f, 0x7c, 0x9a, + 0x67, 0xb5, 0xc9, 0xeb, 0xe1, 0xc5, 0x42, 0x4b, + 0x5e, 0x23, 0x56, 0x1b, 0x7a, 0xb7, 0xfa, 0x13, + 0x28, 0x23, 0x79, 0xbe, 0xca, 0x0d, 0x28, 0x23, + 0x23, 0x23, 0xc3, 0xfb, 0x27, 0x23, 0x78, 0xbe, + 0xc2, 0x08, 0x28, 0x23, 0x7e, 0x23, 0x66, 0x6f, + 0xc1, 0xe9, 0xeb, 0x7d, 0x93, 0x7c, 0x9a, 0x3e, + 0x00, 0x3f, 0xce, 0x00, 0x6f, 0x26, 0x00, 0xc9, + 0xeb, 0x7d, 0x93, 0x7c, 0x9a, 0x3e, 0x00, 0xce, + 0x00, 0x6f, 0x26, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x05, + 0xb4, 0x05, 0xdd, 0x05, 0x06, 0x06, 0x42, 0xd6, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, + 0x00, 0x00, 0x00, 0x72, 0x2b, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x01, 0x03, 0x77, 0x2b, 0x00, + 0x02, 0x03, 0x61, 0x00, 0x00, 0x01, 0x09, 0x61, + 0x2b, 0x00, 0x02, 0x09, 0x78, 0x00, 0x00, 0x01, + 0x05, 0x78, 0x2b, 0x00, 0x02, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x29, 0x01, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x00, 0x01, 0x00, 0xe5, 0x31, 0xd2, 0x32, + 0xd2, 0x2e, 0x07, 0x03, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xce, 0x36, 0x00, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x8e, 0x15, 0x02, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x8e, 0x15, 0x02, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x8e, 0x15, 0x02, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x5d, 0x19, 0x62, 0x2c, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x15, 0x00, 0x00, 0x0e, 0x10, + 0x02, 0x02, 0x01, 0x00, 0x8e, 0x15, 0x00, 0x03, + 0x00, 0x00, 0x8e, 0x15, 0x03, 0x00, 0x00, 0x00, + 0x8e, 0x15, 0x01, 0x01, 0x00, 0x01, 0xef, 0x17, + 0x98, 0x15, 0x70, 0x2a, 0x02, 0x00, 0x9d, 0x15, + 0x70, 0x2a, 0x02, 0x00, 0xa2, 0x15, 0x76, 0x2a, + 0x05, 0x00, 0xa7, 0x15, 0x76, 0x2a, 0x05, 0x00, + 0xac, 0x15, 0x76, 0x2a, 0x05, 0x00, 0xb1, 0x15, + 0x76, 0x2a, 0x05, 0x00, 0xb6, 0x15, 0x76, 0x2a, + 0x04, 0x00, 0xbb, 0x15, 0x76, 0x2a, 0x04, 0x00, + 0xc0, 0x15, 0x7c, 0x2a, 0x03, 0x00, 0xc5, 0x15, + 0x7c, 0x2a, 0x03, 0x00, 0x00, 0x00, 0x82, 0x2a, + 0x00, 0x00, 0x7e, 0x15, 0xd8, 0x19, 0x6f, 0x1b, + 0x32, 0x1c, 0x0a, 0x7e, 0x15, 0xcf, 0x1c, 0xef, + 0x1e, 0xef, 0x1e, 0x00, 0x00, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x90, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x40, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x40, 0x40, 0x40, 0x40, 0x20, 0xb6, 0x26, 0xeb, + 0xd5, 0x2e, 0x2a, 0x00, 0x94, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x15, 0xd7, 0x06, 0x00, 0x01, 0x00, + 0x30, 0x00, 0x10, 0x27, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x43, 0xd6, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0xd2, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfd, 0x14, 0xd5, 0x2b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x53, 0x54, 0x44, + 0x4c, 0x49, 0x42, 0x2e, 0x48, 0x00, 0x4d, 0x01, + 0x00, 0x00, 0x34, 0x04, 0x00, 0x05, 0x00, 0x06, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4d, 0x59, 0x44, 0x55, + 0x4d, 0x50, 0x20, 0x20, 0x43, 0x4f, 0x4d, 0x00, + 0x00, 0x00, 0x3b, 0x0a, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x4c, 0x49, 0x42, 0x01, + 0x00, 0x00, 0x80, 0x10, 0x00, 0x11, 0x00, 0x12, + 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, + 0x00, 0x17, 0x00, 0x00, 0x43, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x4c, 0x49, 0x42, 0x02, + 0x00, 0x00, 0x15, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2e, 0x2a, 0x82, 0x2a, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x44, 0x55, 0x4d, 0x50, 0x43, + 0x4f, 0x4d, 0x20, 0x48, 0x20, 0x20, 0x04, 0x00, + 0x00, 0x28, 0x80, 0x02, 0x81, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x27, 0x28, 0x02, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0x2c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd2, 0x32, 0xb8, 0x2e, 0x00, 0x00, + 0x00, 0x00, 0xb8, 0x2e, 0x01, 0x01, 0xce, 0x32, + 0x00, 0x00, 0x06, 0xd0, 0xce, 0x2e, 0x01, 0x01, + 0x00, 0x00, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x30, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, + 0x78, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x30, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x62, 0x38, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x65, 0x2c, 0x20, 0x30, + 0x78, 0x30, 0x31, 0x2c, 0x20, 0x30, 0x78, 0x30, + 0x31, 0x2c, 0x20, 0x30, 0x78, 0x63, 0x65, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x32, 0x2c, 0x20, 0x0d, + 0x0a, 0x09, 0x30, 0x78, 0x30, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x36, 0x2c, 0x20, 0x30, 0x78, 0x64, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x63, 0x65, 0x2c, 0x20, + 0x30, 0x78, 0x32, 0x65, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x31, 0x2c, 0x20, 0x30, 0x78, 0x30, 0x31, + 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x30, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x32, + 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x37, 0x38, 0x2c, 0x20, 0x0d, 0x0a, 0x09, + 0x30, 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x32, + 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, + 0x32, 0x30, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, + 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x37, + 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x33, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x0d, + 0x0a, 0x09, 0x30, 0x78, 0x33, 0x37, 0x2c, 0x20, + 0x30, 0x78, 0x33, 0x38, 0x2c, 0x20, 0x30, 0x78, + 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x33, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x32, + 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x32, + 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, + 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, + 0x33, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, + 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x32, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x30, 0x64, 0x2c, 0x20, + 0x30, 0x78, 0x30, 0x61, 0x2c, 0x20, 0x30, 0x78, + 0x30, 0x39, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, + 0x2c, 0x20, 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, + 0x30, 0x78, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x30, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, + 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, 0x78, 0x32, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x30, 0x2c, + 0x20, 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, + 0x78, 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x36, + 0x34, 0x2c, 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x30, 0x2c, 0x20, 0x0d, + 0x0a, 0x09, 0x30, 0x78, 0x33, 0x30, 0x2c, 0x20, + 0x30, 0x78, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x36, 0x31, + 0x2c, 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, + 0x30, 0x78, 0x32, 0x30, 0x2c, 0x20, 0x30, 0x78, + 0x33, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x37, 0x38, + 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x30, 0x78, 0x33, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x39, 0x2c, + 0x20, 0x30, 0x78, 0x32, 0x63, 0x2c, 0x20, 0x30, + 0x78, 0x32, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x33, + 0x30, 0x2c, 0x20, 0x30, 0x78, 0x37, 0x38, 0x33, + 0x38, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x33, 0x2c, + +}; + \ No newline at end of file diff --git a/Apps/crossdev/DUMPMAC.ASM b/Apps/crossdev/DUMPMAC.ASM new file mode 100644 index 00000000..103e7c82 --- /dev/null +++ b/Apps/crossdev/DUMPMAC.ASM @@ -0,0 +1,108 @@ +; dumpmac.asm 2/1/2012 dwg - dump macro, declaration and implementation + + maclib portab + maclib globals + maclib hardware + maclib z80 + maclib cpmbdos + maclib printers + + cseg + +; e=char on entry + public x$pr$vis +x$pr$vis: + enter + lxi h,x$visibool + mvi d,0 + dad d + mov a,m + cpi 0 + jz do$dot + mvi c,2 + call BDOS + jmp x$pr$fini +do$dot: + conout '.' +x$pr$fini: + leave + ret + + public x$dump +x$dump: shld x$dump$tmp + call pr$h$word + conout ':' + conout ' ' + mvi b,16 +x$d$lp1: + mov a,m + inx h + xchg + mov l,a + call pr$h$byte + conout ' ' + xchg + dcr b + jnz x$d$lp1 + conout ' ' + conout ' ' + mvi b,16 + lhld x$dump$tmp +x$d$lp2: + mov a,m + inx h + mov e,a + call x$pr$vis + dcr b + jnz x$d$lp2 + conout CR + conout LF + lhld x$dump$tmp + ret + + +; display a number of lines of sixteen bytes in hex with leading address +; and ascii + public x$dump$multi +x$dump$multi: + push h ; save display address in case x$dump changes it + call x$dump ; call actual dump routine for 16 bytes + pop h ; restore display address + lxi d,16 ; get ready to increment it by 16 bytes + dad d ; here we go, HL = new load address + dcr c ; decrement line counter + jnz x$dump$multi ; do more as necessary + ret + + + dseg + +x$dump$tmp ds 2 + + public x$visibool +x$visibool: +; 0 1 2 3 4 5 6 7 8 9 A B C D E F +; - - - - - - - - - - - - - - - - +vb$00 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$10 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$20 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; "#$%&'()*+,-./ +vb$30 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;0123456789:;<=>? +vb$40 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;@ABCDEFGHIJKLMNO +vb$50 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;PQRSTUVWXYZ[\]^_ +vb$60 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ;`abcdefghijklmno +vb$70 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 ;pqrstuvwxyz{|}~ +vb$80 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$90 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$a0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$b0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$c0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$d0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$e0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +vb$f0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + +; eof - dumpmac.asm + + + + + \ No newline at end of file diff --git a/Apps/crossdev/EDITOR.ASM b/Apps/crossdev/EDITOR.ASM new file mode 100644 index 00000000..89cab224 --- /dev/null +++ b/Apps/crossdev/EDITOR.ASM @@ -0,0 +1,367 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC vdaini_ +vdaini_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16384 + CALL .or + SHLD hregbc_ + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hregde_ + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + RET +.2 EQU 0 + PUBLIC bitlook_ +bitlook_: lxi d,.3 + call csave + LXI H,-32768 + XCHG + LXI H,2-.3 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.3 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .5 +.4: + LXI H,0-.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 +.5: + LXI H,0-.3 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,256 + CALL .lt + JZ .6 + LXI H,0-.3 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + 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,8 + CALL .lt + JZ .9 + 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 + XCHG + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+16 + PUSH H + CALL printf_ + POP D + POP D + JMP .7 +.9: + LXI H,.1+24 + PUSH H + CALL printf_ + POP D + JMP .4 +.6: + RET +.3 EQU -6 +.1: + DB 97,115,99,105,105,32,61,32,48,120,37,48,50,120,32 + DB 0,48,120,37,48,50,120,32,0,10,0 + PUBLIC vdaqry_ +vdaqry_: lxi d,.11 + call csave + LXI H,8-.11 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16640 + CALL .or + SHLD hregbc_ + LXI H,10-.11 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + RET +.11 EQU 0 + PUBLIC flip_ +flip_: lxi d,.12 + call csave + LXI H,-32768 + PUSH H + LXI H,64 + PUSH H + CALL vdaqry_ + POP D + POP D + XCHG + LXI H,-3-.12 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-32768 + XCHG + LXI H,2-.12 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-1-.12 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .14 +.13: + LXI H,-1-.12 + 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 +.14: + LXI H,-1-.12 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2048 + CALL .lt + JZ .15 + LXI H,2-.12 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + MOV E,M + LXI H,1-.12 + DAD SP + MOV M,E + LXI H,1-.12 + DAD SP + MOV E,M + MVI D,0 + LXI H,255 + CALL .xr + XCHG + LXI H,1-.12 + DAD SP + MOV M,E + LXI H,1-.12 + DAD SP + MOV E,M + PUSH D + LXI H,4-.12 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + POP D + MOV M,E + LXI H,2-.12 + 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 + JMP .13 +.15: + LXI H,-32768 + PUSH H + LXI H,0 + PUSH H + LXI H,64 + PUSH H + CALL vdaini_ + POP D + POP D + POP D + RET +.12 EQU -7 + PUBLIC main_ +main_: lxi d,.16 + call csave + LXI H,1 + XCHG + LXI H,2-.16 + DAD SP + MOV M,E + INX H + MOV M,D +.17: + LXI H,1 + XCHG + LXI H,2-.16 + DAD SP + MOV A,M + INX H + MOV H,M + MOV L,A + CALL .eq + JZ .18 + LXI H,1 + SHLD dregbc_ + CALL bdoscall_ + LDA drega_ + MOV L,A + MVI H,0 + JMP .19 +.21: + CALL flip_ + JMP .20 +.22: + LXI H,0 + XCHG + LXI H,2-.16 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .20 +.23: + LXI H,7 + PUSH H + LXI H,.10+0 + PUSH H + CALL printf_ + POP D + POP D + JMP .20 +.19: + CALL .swt + DW 2 + DW 3,.22 + DW 102,.21 + DW .23 +.20: + JMP .17 +.18: + CALL flip_ + RET +.16 EQU -2 +.10: + DB 37,99,0 + extrn printf_ + extrn bdoscall_ + extrn dregbc_ + extrn drega_ + extrn diagnose_ + extrn hreghl_ + extrn hregde_ + extrn hregbc_ + extrn hrega_ + extrn .or + extrn .xr + extrn .eq + extrn .lt + END + \ No newline at end of file diff --git a/Apps/crossdev/EDITOR.C b/Apps/crossdev/EDITOR.C new file mode 100644 index 00000000..7f3d0d15 --- /dev/null +++ b/Apps/crossdev/EDITOR.C @@ -0,0 +1,103 @@ +/* editor.c 11/18/2012 dwg - */ + + +#include "std.h" +#include "applvers.h" +#include "diagnose.h" +#include "cpmbdos.h" +#include "cpmbios.h" +#include "bdoscall.h" + + +#define VDA_N8 4 +#define VDAINI 0x40 +#define VDAQRY 0x41 +#define VDARES 0x42 +#define VDASCS 0x43 + + +int vdaini(devunit,vidmode,bitmapp) + unsigned int devunit; + unsigned int vidmode; + unsigned int bitmapp; +{ + hregbc = (VDAINI << 8) | devunit; + hregde = vidmode; + hreghl = bitmapp; + diagnose(); + return hrega; +} + + +bitlook() +{ + unsigned char *p; + int ascii,row; + + p = 0x8000; + for(ascii=0;ascii<256;ascii++) { + printf("ascii = 0x%02x ",ascii); + for(row=0l;row<8;row++) { + printf("0x%02x ",*p++); + } + printf("\n"); + } +} + + +int vdaqry(devunit,bitmapp) + unsigned int devunit; + unsigned int bitmapp; +{ + hregbc = (VDAQRY << 8) | devunit; + hreghl = bitmapp; + diagnose(); + return hrega; +} + + +flip() +{ + unsigned char * p; + unsigned char byte; + int offs; + int retcode; + + retcode = vdaqry(VDA_N8 << 4,0x8000); + + p = 0x8000; + for(offs=0;offs<256*8;offs++) { + byte = *p; + byte = byte ^ 255; + *p = byte; + p++; + } + +/* bitlook(); */ + + vdaini(VDA_N8 << 4, 0, 0x8000); +} + + +int main(argc,argv) + int argc; + char *argv[]; +{ + int bRunning; + + bRunning = 1; + while(1 == bRunning) { + + crtlc ( + dregbc = 1; + bdoscall(); + switch(drega) { + case 'f': flip(); break; + case 3: bRunning = 0; break; + default: printf("%c",7); break; + } + } + + flip(); +} + \ No newline at end of file diff --git a/Apps/crossdev/EDITOR.SUB b/Apps/crossdev/EDITOR.SUB new file mode 100644 index 00000000..9b86c7f7 --- /dev/null +++ b/Apps/crossdev/EDITOR.SUB @@ -0,0 +1,6 @@ +cc editor +as editor +as bdoscall +as diagnose +ln editor.o bdoscall.o diagnose.o -lc + \ No newline at end of file diff --git a/Apps/crossdev/EXTRACT.SUB b/Apps/crossdev/EXTRACT.SUB new file mode 100644 index 00000000..f069ac44 --- /dev/null +++ b/Apps/crossdev/EXTRACT.SUB @@ -0,0 +1 @@ +nulu submits.lbr -e $1.sub -x \ No newline at end of file diff --git a/Apps/crossdev/FAST.SUB b/Apps/crossdev/FAST.SUB new file mode 100644 index 00000000..bc12d4ed --- /dev/null +++ b/Apps/crossdev/FAST.SUB @@ -0,0 +1,4 @@ +cc remote +as remote +ln remote.o bdoscall.o ctermcap.o n8chars.o tms9918.o diagnose.o -lc + \ No newline at end of file diff --git a/Apps/crossdev/FCNTL.H b/Apps/crossdev/FCNTL.H new file mode 100644 index 00000000..7918b125 --- /dev/null +++ b/Apps/crossdev/FCNTL.H @@ -0,0 +1,8 @@ +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 +#define O_CREAT 0x0100 +#define O_TRUNC 0x0200 +#define O_EXCL 0x0400 +#define O_APPEND 0x0800 + \ No newline at end of file diff --git a/Apps/crossdev/FFGETLU.LIB b/Apps/crossdev/FFGETLU.LIB new file mode 100644 index 00000000..24dad41d --- /dev/null +++ b/Apps/crossdev/FFGETLU.LIB @@ -0,0 +1,12 @@ +; 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 + \ No newline at end of file diff --git a/Apps/crossdev/FFHASLU.LIB b/Apps/crossdev/FFHASLU.LIB new file mode 100644 index 00000000..e9e84b31 --- /dev/null +++ b/Apps/crossdev/FFHASLU.LIB @@ -0,0 +1,25 @@ +; 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 + + \ No newline at end of file diff --git a/Apps/crossdev/FFNUMLU.LIB b/Apps/crossdev/FFNUMLU.LIB new file mode 100644 index 00000000..1f1048a5 --- /dev/null +++ b/Apps/crossdev/FFNUMLU.LIB @@ -0,0 +1,13 @@ +; 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 diff --git a/Apps/crossdev/FFSETLU.LIB b/Apps/crossdev/FFSETLU.LIB new file mode 100644 index 00000000..fe1db586 --- /dev/null +++ b/Apps/crossdev/FFSETLU.LIB @@ -0,0 +1,22 @@ +; 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 + \ No newline at end of file diff --git a/Apps/crossdev/FINDFILE.ASM b/Apps/crossdev/FINDFILE.ASM new file mode 100644 index 00000000..d8ceb21a --- /dev/null +++ b/Apps/crossdev/FINDFILE.ASM @@ -0,0 +1,1088 @@ +; 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 + + +BC EQU 0 +DE EQU 2 +HL EQU 4 +IX EQU 4 +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 + + + jmp around$bandata +argv dw prog,dat,prod,orig,ser,myname,0 +prog db 'FINDFILE.COM$' + date + serial + product + originator + oriname +uuid db '107CDD27-2E4D-4340-A324-BEB13054E67B$' +around$bandata: + + + crtinit + crtclr + crtlc 1,1 + sbanner argv +; version wrnmsg,errmsg + + lda 80h + cpi 0 + jnz no$usage + print crlf + printf 'usage - findfile ' + jmp all$done +no$usage: + + + memcpy work$fcb,PRIFCB,32 + + printf 'Finding: ' + memcpy PRIFCB,work$fcb,16 + + mvi a,'$' + sta PRIFCB+9 + print PRIFCB+1 + conout '.' + memcpy PRIFCB,work$fcb,16 + mvi a,'$' + sta PRIFCB+12 + print PRIFCB+9 + print crlf + + ffhaslu + cpi TRUE + jz do$lu + memcpy PRIFCB,work$fcb,32 + mvi c,FOPEN + lxi d,PRIFCB + call BDOS + cpi 255 + jnz single$true + jmp all$done +single$true: + printf 'Found' + jmp all$done + +do$lu: + ffgetlu + sta entry$lu + ; + ffnumlu + sta lu$cnt + ; + mov l,a + mvi h,0 + call pr$d$word + printf ' Logical Units Detected' + print crlf + + mvi a,0 + sta lu$num +loop: + printf 'Scanning Logical Unit ' + lda lu$num + mov l,a + mvi h,0 + call pr$d$word + conout ' ' + + ; set the Logical Unit + lda lu$num + ffsetlu + + ; test for the target file + memcpy PRIFCB,work$fcb,32 + mvi c,FOPEN + lxi d,PRIFCB + call BDOS + sta retcode + + lda retcode + cpi 255 + jz not$yet + conout CR + prfilnam PRIFCB + printf ' ' + printf 'Found on Logical Unit ' + lda lu$num + mov l,a + mvi h,0 + call pr$d$word + conout ',' + conout '(' + lda drv$num + mov c,a + call BISELDSK + lxi b,0 + call BISETTRK + lxi b,11 + call BISETSEC + lxi b,buffer + call BISETDMA + call BIREAD + + mvi a,'$' + sta buffer+128-8-1 + print buffer+128-8-1-16 + conout ')' + + mvi c,FCLOSE + lxi d,PRIFCB + call BDOS + conout LF +not$yet: + conout CR + + ; Check for key hit interrupt scan + mvi c,11 ; get console status + caLL BDOS + cpi 0 + jz nyok ; jump if no key hit + jmp abort ; gracefully exit loop +nyok: + + + lda lu$num + inr a + sta lu$num + ; + lda lu$cnt + dcr a + sta lu$cnt + cpi 0 + jnz loop + + printf ' ' + +abort: conout cr + printf 'Scan Completed ' + +all$done: + lda entry$lu + ffsetlu + + mvi c,RESET$DRIVE ; call to logout drive + lxi d,0ffh + call BDOS + + do$end + + +wrnmsg db 'By the way, this program is newer than the BIOS$' + +errmsg db 'Sorry, this program requires a newer BIOS$' + +crlf db CR,LF +term db '$' + +drv$num ds 1 ; drive code of current drive +lu$cnt ds 1 ; number of slices on drive +lu$num ds 1 ; slice index +entry$lu ds 1 +retcode ds 1 + +work$fcb ds 64 +buffer ds 80h + + + end start diff --git a/Apps/crossdev/FINDFILE.BAK b/Apps/crossdev/FINDFILE.BAK new file mode 100644 index 00000000..7d480a47 --- /dev/null +++ b/Apps/crossdev/FINDFILE.BAK @@ -0,0 +1,12 @@ +rem findfile.sub 9/5/2012 dwg - make findfile.com from sources +if not exist findfile.rel z80mu rmac findfile +if not exist printers.rel z80mu rmac printers +if not exist terminal.rel z80mu rmac terminal +if not exist memory.rel z80mu rmac memory +if not exist banner.rel z80mu rmac banner +if not exist identity.rel z80mu rmac identity +if not exist hbios.rel z80mu rmac hbios +if not exist findfile.cpm z80mu link findfile,hbios,identity,banner,memory,printers,terminal +if not exist findfile.cpm copy findfile.com findfile.cpm +dir findfile.cpm + diff --git a/Apps/crossdev/FINDFILE.BAT b/Apps/crossdev/FINDFILE.BAT new file mode 100644 index 00000000..7d480a47 --- /dev/null +++ b/Apps/crossdev/FINDFILE.BAT @@ -0,0 +1,12 @@ +rem findfile.sub 9/5/2012 dwg - make findfile.com from sources +if not exist findfile.rel z80mu rmac findfile +if not exist printers.rel z80mu rmac printers +if not exist terminal.rel z80mu rmac terminal +if not exist memory.rel z80mu rmac memory +if not exist banner.rel z80mu rmac banner +if not exist identity.rel z80mu rmac identity +if not exist hbios.rel z80mu rmac hbios +if not exist findfile.cpm z80mu link findfile,hbios,identity,banner,memory,printers,terminal +if not exist findfile.cpm copy findfile.com findfile.cpm +dir findfile.cpm + diff --git a/Apps/crossdev/FINDFILE.COM b/Apps/crossdev/FINDFILE.COM new file mode 100644 index 0000000000000000000000000000000000000000..44f2a4804bcd8e6e334de099473213d3fe50b444 GIT binary patch literal 4992 zcmeI0Uu;`f9mnszc8Fa!*S^7Qq|>}(=dMfBI`RGEe>bT|6DL_#r%o5rvNmaOlN-lv zVs}nLR@8LSw7rg}Nkb}9pLpQ`#xt9S%@B?-2ni-YnovN=OJ5d5CSb$id+mF#oz#VB z@HDv6@j2&rKfm8O=XZYRk8jaO2Lw@)gQ0LFdTwAaJ~TWUXBdiNoFBFZ=xvJfQdHDO zXyLt9s(7D{(dX%DdX~OKr)i2B9=#AB9!(7O3?|2TBK8WwUNIm@d?+YOqQDQ1k3|A} z{PGA-;>pR8#JLG_nT#Zp@pFj;;e|kWFdi4fesM^S`(;TE_|HkA>>n5!5Trm*9twpA z_`Uakvt53i+xpdycdJF8Sv*Pi(B-$QRd0YUf50jmRD~*hiP1RL&YiH8TPQ;h^^a-2 zUTkMpms4q#_{n@GJ2#(MR7t<~n@ugLF~0al3+Js5F=iNAnQU4i zJU2yoeKy*qfiYfGDV?6C8rx<(J$m&JzhLm{0luN{YzH)xP##y)C4(lSZ)dg-% z;IZXSQswU&K8RTKVHC$LB#}#JW>bq~GMiahCUJE|on2Aqs`J(8{1_!ZWz+lcvZ?YP}C&p+mYA>}= zD^6HV;k+qaw^lt)a@l_~+B3Qty}Mm{Re92;g#gxD*|S4CsIqs5zHTe?JLP9~5Ou#Z z{98H@@r>t`uFtw^A)%W+cCZ!0DXatX3bpxoOL43P{_e-bDIVKdL;;qSYN=}5xw9?0 zIw*4Rskx)>W?ds^YP`{+O*h2;!9A&|v2MLp z2)=Vr;L_i4R~@WoQQxHw?S}tC@&V4{xE@SLf%| zyx$-DT*Uu>Fo=G?zvhek6m|pOsOwtirOpSw^R5TA!kAG=8ik8SVZta(x*q83XYIJL zUhW_FAMr767?)kTZZ{gQFB3cWbJOTAj_X&C`mM>!n722^V}!8R*-ZFhs}aF=ju=;h zVrLr;Wxe|$Q~GS%B{jdC!F7f|(1LNxZ7#&^#k@(rYTA0ejdbz&i($O0-&*u$&5`T% zcTCkn+eGgL!gs^@b&oI}zu_s&MN>JZrY^U0ENe`Qi!}$^X$r$^A~UOImvLLctr_RZ z$aq3Bd~&#RS4_2A>|pNJ?R+M^utK^9PZ9hr68wV5cOxDeTR&{!o@wEI_J}d!f2cR5 z&m5|U!|SxuaE{;k-wLl+Oq;Jd>*4jLDZS^^!mH;q2iG4=OMh~bE|{rDm!136e7WyD zWlndyvAl{A*I;t|1rpD#rWaGoWF(iHOD!%EGX~arG5_CqH~^2b#1L{KZdCM!&>?K;*y*G z=(puxyXY@}s{P*E$1nS__Ol<`$J@T+MKmGcO8^=QIeds!^6gUwd=vIh|_$R%@l|ifVT@o$VE7^CvL3+23BeBWB#| z;thRRhg(0ZYbqJ{%wv?7c6Xev&46;FD(El;#lH6K?SsSIntF^XV~=1weVUnRqc)FP zX?weQUtiQ)+`98qGEV;3RMoI0>8tP68)^lfcQ~WN1#7zPhFp#Q|HqQnHx73m$JF)HRQxY&p!cMaK%ah literal 0 HcmV?d00001 diff --git a/Apps/crossdev/FINDFILE.CPM b/Apps/crossdev/FINDFILE.CPM new file mode 100644 index 0000000000000000000000000000000000000000..44f2a4804bcd8e6e334de099473213d3fe50b444 GIT binary patch literal 4992 zcmeI0Uu;`f9mnszc8Fa!*S^7Qq|>}(=dMfBI`RGEe>bT|6DL_#r%o5rvNmaOlN-lv zVs}nLR@8LSw7rg}Nkb}9pLpQ`#xt9S%@B?-2ni-YnovN=OJ5d5CSb$id+mF#oz#VB z@HDv6@j2&rKfm8O=XZYRk8jaO2Lw@)gQ0LFdTwAaJ~TWUXBdiNoFBFZ=xvJfQdHDO zXyLt9s(7D{(dX%DdX~OKr)i2B9=#AB9!(7O3?|2TBK8WwUNIm@d?+YOqQDQ1k3|A} z{PGA-;>pR8#JLG_nT#Zp@pFj;;e|kWFdi4fesM^S`(;TE_|HkA>>n5!5Trm*9twpA z_`Uakvt53i+xpdycdJF8Sv*Pi(B-$QRd0YUf50jmRD~*hiP1RL&YiH8TPQ;h^^a-2 zUTkMpms4q#_{n@GJ2#(MR7t<~n@ugLF~0al3+Js5F=iNAnQU4i zJU2yoeKy*qfiYfGDV?6C8rx<(J$m&JzhLm{0luN{YzH)xP##y)C4(lSZ)dg-% z;IZXSQswU&K8RTKVHC$LB#}#JW>bq~GMiahCUJE|on2Aqs`J(8{1_!ZWz+lcvZ?YP}C&p+mYA>}= zD^6HV;k+qaw^lt)a@l_~+B3Qty}Mm{Re92;g#gxD*|S4CsIqs5zHTe?JLP9~5Ou#Z z{98H@@r>t`uFtw^A)%W+cCZ!0DXatX3bpxoOL43P{_e-bDIVKdL;;qSYN=}5xw9?0 zIw*4Rskx)>W?ds^YP`{+O*h2;!9A&|v2MLp z2)=Vr;L_i4R~@WoQQxHw?S}tC@&V4{xE@SLf%| zyx$-DT*Uu>Fo=G?zvhek6m|pOsOwtirOpSw^R5TA!kAG=8ik8SVZta(x*q83XYIJL zUhW_FAMr767?)kTZZ{gQFB3cWbJOTAj_X&C`mM>!n722^V}!8R*-ZFhs}aF=ju=;h zVrLr;Wxe|$Q~GS%B{jdC!F7f|(1LNxZ7#&^#k@(rYTA0ejdbz&i($O0-&*u$&5`T% zcTCkn+eGgL!gs^@b&oI}zu_s&MN>JZrY^U0ENe`Qi!}$^X$r$^A~UOImvLLctr_RZ z$aq3Bd~&#RS4_2A>|pNJ?R+M^utK^9PZ9hr68wV5cOxDeTR&{!o@wEI_J}d!f2cR5 z&m5|U!|SxuaE{;k-wLl+Oq;Jd>*4jLDZS^^!mH;q2iG4=OMh~bE|{rDm!136e7WyD zWlndyvAl{A*I;t|1rpD#rWaGoWF(iHOD!%EGX~arG5_CqH~^2b#1L{KZdCM!&>?K;*y*G z=(puxyXY@}s{P*E$1nS__Ol<`$J@T+MKmGcO8^=QIeds!^6gUwd=vIh|_$R%@l|ifVT@o$VE7^CvL3+23BeBWB#| z;thRRhg(0ZYbqJ{%wv?7c6Xev&46;FD(El;#lH6K?SsSIntF^XV~=1weVUnRqc)FP zX?weQUtiQ)+`98qGEV;3RMoI0>8tP68)^lfcQ~WN1#7zPhFp#Q|HqQnHx73m$JF)HRQxY&p!cMaK%ah literal 0 HcmV?d00001 diff --git a/Apps/crossdev/FINDFILE.REL b/Apps/crossdev/FINDFILE.REL new file mode 100644 index 0000000000000000000000000000000000000000..cc901d12987cc7f666481f254b35a393a8b76f58 GIT binary patch literal 1920 zcmc&!`%@EF6h6BNWO>B|QH=7~JPZ$`HJBB}P@WR-QOkhF2#!kB*rM&U8xm<$ zlt6>U)JjCkOKf9nM|A8M0wPVt3053!85gZt2ZXF6M*}8H*g_x-{Hk*2t6QG-V<{ z0I*hEU~~X;Z50bl05RrnfFUmp=Dbg!t)O;H^FT`gbN0cYdw*{D zetoY85Z7q=#j@VgQ`TH08rIr@wy&+f##}|vBml8E%<$4e4-h}BIlVeDHIjW&I_XJ# zbtEPP`>i~-&rB~oBej2Ng~;t8?^LFzhD^g(7TG#(P(=eCb;j>YH(a_dT!!N~>M(gvcz zWaK9zk1lUHFLPS<>tO^XViwL0yF88HkI(y)m^1r;bsg7XQW)t5{#|_71AEV``?^pk z;B6xBwKKx9YM=NKzQS+O&MMI9Hjx=--ac_|ab_Zfx7Mj^V(tiEYm+zR zWt+MXETryPTKiDNQY^INezxZ!&g10Q6>~gpP2`II=%sWb&GC#t$z^cVU$SGehMhZ9 zv1}gM^HidxdWkJpJF}eV*)I8#j>^X38O!z);lC*8lwIszR*lr(^TFN9{yU^?njbO4 zzmwY04<$<q@@KI4}4?S zY}|8WT*I0-;zBDfUaJzfYCUos373l!*RxRRWMjC` zcB{KmQ%HItlb&B&c##lXmY~zUVxGhPgrKa^V}ZA1&YNVpKOXVYSPeYd3A-C#-crEp zM?9XYG&7UI-*arDVyQVIL5%ddKS()dVyu*z#_{yI;cX~eaJ)D&YUFo*n$ zQ_afIhtmYS-Xz{hWu`MZhiA*l(5un*wj|+K$}EBenzrcm>nR|)OQ`?~Xfx?GBp~eU zR4S+)ywI!qt*D?))U8xON^MiJt!=&DjGo|~Z0}T5z|-0$-i5u^a-bz93Amyj1yGyh z(~yXZcP8+Lc1lxRw#d+(daacv;&vwsIu+H<6xZCQwhb{_rw`(GPzPN(yyTtj8qo}q Xu&v`nmk-*Kyu~J(060GPe_a0nOdgvF literal 0 HcmV?d00001 diff --git a/Apps/crossdev/FINDFILE.SUB b/Apps/crossdev/FINDFILE.SUB new file mode 100644 index 00000000..f5e8e754 --- /dev/null +++ b/Apps/crossdev/FINDFILE.SUB @@ -0,0 +1,13 @@ +e:rem findfile.sub 9/5/2012 dwg - make findfile.com from sources +era *.bak +era *.prn +rasm80 findfile +rasm80 printers +rasm80 terminal +rasm80 memory +rasm80 banner +rasm80 identity +rasm80 hbios +link80 findfile,hbios,identity,banner,memory,printers,terminal + + \ No newline at end of file diff --git a/Apps/crossdev/FINDFILE.SYM b/Apps/crossdev/FINDFILE.SYM new file mode 100644 index 00000000..1fb9e6ac --- /dev/null +++ b/Apps/crossdev/FINDFILE.SYM @@ -0,0 +1,10 @@ +0103 HEXREF 0113 IDSIG 0115 IDRMJ 0116 IDRMN +0117 IDRUP 0118 IDRTP 0119 IDMON 011A IDDAY +011B IDYR 0120 PRESTK 0122 BEGIN 10A6 PRDWOR +107E PRHBYT 1093 PRHWOR 0C2B XBANNE 0ED6 XSBANN +1117 XCRTIN 11B1 XCRTLC 1122 XCRTCL 08EE XIDENT +105A XMEMCP 105B XMEMSE 08E2 XGETSC 1068 PRHNYB +10B2 PDEC 10D4 PDEC1 10D6 PDEC2 10F2 PDEC3 +146C PDEC4 146D PDEC5 1109 XPRDEC 1271 DR + + \ No newline at end of file diff --git a/Apps/crossdev/FLIP.ASM b/Apps/crossdev/FLIP.ASM new file mode 100644 index 00000000..bfd5cb5b --- /dev/null +++ b/Apps/crossdev/FLIP.ASM @@ -0,0 +1,428 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC vdaini_ +vdaini_: lxi d,.2 + call csave + LXI H,8-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16384 + CALL .or + SHLD hregbc_ + LHLD hregbc_ + PUSH H + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,10-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hregde_ + LHLD hregde_ + PUSH H + LXI H,.1+17 + PUSH H + CALL printf_ + POP D + POP D + LXI H,12-.2 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + LHLD hreghl_ + PUSH H + LXI H,.1+34 + PUSH H + CALL printf_ + POP D + POP D + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + PUSH H + LXI H,.1+51 + PUSH H + CALL printf_ + POP D + POP D + LDA hrega_ + MOV L,A + MVI H,0 + RET +.2 EQU 0 +.1: + DB 104,114,101,103,98,99,32,61,32,48,120,37,48,52,120 + DB 10,0,104,114,101,103,100,101,32,61,32,48,120,37,48 + DB 52,120,10,0,104,114,101,103,104,108,32,61,32,48,120 + DB 37,48,52,120,10,0,86,68,65,73,78,73,32,99,97 + DB 108,108,101,100,44,32,114,101,116,117,114,110,32,99,111 + DB 100,101,32,119,97,115,32,48,120,37,48,50,120,10,0 + PUBLIC bitlook_ +bitlook_: lxi d,.4 + call csave + LXI H,-32768 + XCHG + LXI H,2-.4 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,0-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .6 +.5: + LXI H,0-.4 + 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 +.6: + LXI H,0-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,256 + CALL .lt + JZ .7 + LXI H,0-.4 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,.3+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,0 + XCHG + LXI H,-2-.4 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .9 +.8: + LXI H,-2-.4 + 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 +.9: + LXI H,-2-.4 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,8 + CALL .lt + JZ .10 + LXI H,2-.4 + 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 + XCHG + DCX H + MOV E,M + MVI D,0 + PUSH D + LXI H,.3+16 + PUSH H + CALL printf_ + POP D + POP D + JMP .8 +.10: + LXI H,.3+24 + PUSH H + CALL printf_ + POP D + JMP .5 +.7: + RET +.4 EQU -6 +.3: + DB 97,115,99,105,105,32,61,32,48,120,37,48,50,120,32 + DB 0,48,120,37,48,50,120,32,0,10,0 + PUBLIC vdaqry_ +vdaqry_: lxi d,.12 + call csave + LXI H,8-.12 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,16640 + CALL .or + SHLD hregbc_ + LHLD hregbc_ + PUSH H + LXI H,.11+0 + PUSH H + CALL printf_ + POP D + POP D + LXI H,10-.12 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + SHLD hreghl_ + LHLD hreghl_ + LXI D,-32768 + CALL .ne + JZ .13 + LXI H,.11+17 + PUSH H + CALL printf_ + POP D +.13: + CALL diagnose_ + LDA hrega_ + MOV L,A + MVI H,0 + PUSH H + LXI H,.11+43 + PUSH H + CALL printf_ + POP D + POP D + LHLD hregbc_ + LXI D,255 + CALL .an + PUSH H + LXI H,.11+83 + PUSH H + CALL printf_ + POP D + POP D + LHLD hregde_ + LXI D,8 + XCHG + CALL .ur + PUSH H + LHLD hregde_ + LXI D,8 + XCHG + CALL .ur + PUSH H + LXI H,.11+123 + PUSH H + CALL printf_ + POP D + POP D + POP D + LHLD hregde_ + LXI D,255 + CALL .an + PUSH H + LHLD hregde_ + LXI D,255 + CALL .an + PUSH H + LXI H,.11+167 + PUSH H + CALL printf_ + POP D + POP D + POP D + LDA hrega_ + MOV L,A + MVI H,0 + RET +.12 EQU 0 +.11: + DB 104,114,101,103,98,99,32,61,32,48,120,37,48,52,120 + DB 10,0,118,100,97,113,114,121,32,115,97,121,115,32,104 + DB 108,32,33,61,32,48,120,56,48,48,48,10,0,86,68 + DB 65,81,82,89,32,99,97,108,108,101,100,44,32,115,116 + DB 97,116,117,115,32,32,32,32,32,32,32,119,97,115,32 + DB 48,120,37,48,50,120,10,0,32,32,32,32,32,32,32 + DB 32,32,32,32,32,32,32,32,118,105,100,101,111,32,109 + DB 111,100,101,32,32,32,119,97,115,32,48,120,37,48,50 + DB 120,10,0,32,32,32,32,32,32,32,32,32,32,32,32 + DB 32,32,32,114,111,119,32,99,111,117,110,116,32,32,32 + DB 32,119,97,115,32,48,120,37,48,50,120,40,37,100,41 + DB 10,0,32,32,32,32,32,32,32,32,32,32,32,32,32 + DB 32,32,99,111,108,117,109,110,32,99,111,117,110,116,32 + DB 119,97,115,32,48,120,37,48,50,120,40,37,100,41,10 + DB 0 + PUBLIC main_ +main_: lxi d,.15 + call csave + LXI H,.14+0 + PUSH H + CALL printf_ + POP D + LXI H,-32768 + PUSH H + LXI H,64 + PUSH H + CALL vdaqry_ + POP D + POP D + XCHG + LXI H,-3-.15 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,-32768 + XCHG + LXI H,2-.15 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,0 + XCHG + LXI H,-1-.15 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .17 +.16: + LXI H,-1-.15 + 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 +.17: + LXI H,-1-.15 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2048 + CALL .lt + JZ .18 + LXI H,2-.15 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + MOV E,M + LXI H,1-.15 + DAD SP + MOV M,E + LXI H,1-.15 + DAD SP + MOV E,M + MVI D,0 + LXI H,255 + CALL .xr + XCHG + LXI H,1-.15 + DAD SP + MOV M,E + LXI H,1-.15 + DAD SP + MOV E,M + PUSH D + LXI H,4-.15 + DAD SP + MOV E,M + INX H + MOV D,M + XCHG + POP D + MOV M,E + LXI H,2-.15 + 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 + JMP .16 +.18: + LXI H,-32768 + PUSH H + LXI H,0 + PUSH H + LXI H,64 + PUSH H + CALL vdaini_ + POP D + POP D + POP D + RET +.15 EQU -7 +.14: + DB 102,108,105,112,46,99,111,109,40,99,41,32,49,49,47 + DB 49,53,47,50,48,49,50,32,100,119,103,32,45,32,10 + DB 10,0 + extrn printf_ + extrn diagnose_ + extrn hreghl_ + extrn hregde_ + extrn hregbc_ + extrn hrega_ + extrn .or + extrn .xr + extrn .an + extrn .ne + extrn .lt + extrn .ur + END + \ No newline at end of file diff --git a/Apps/crossdev/FLIP.C b/Apps/crossdev/FLIP.C new file mode 100644 index 00000000..bb740907 --- /dev/null +++ b/Apps/crossdev/FLIP.C @@ -0,0 +1,98 @@ +/* flip.c 11/17/2012 dwg - reverse the contrast */ + +#include "std.h" +#include "applvers.h" +#include "diagnose.h" + +#define VDA_N8 4 +#define VDAINI 0x40 +#define VDAQRY 0x41 +#define VDARES 0x42 +#define VDASCS 0x43 + +int vdaini(devunit,vidmode,bitmapp) + unsigned int devunit; + unsigned int vidmode; + unsigned int bitmapp; +{ + hregbc = (VDAINI << 8) | devunit; + printf("hregbc = 0x%04x\n",hregbc); + hregde = vidmode; + printf("hregde = 0x%04x\n",hregde); + hreghl = bitmapp; + printf("hreghl = 0x%04x\n",hreghl); + diagnose(); + printf("VDAINI called, return code was 0x%02x\n",hrega); + return hrega; +} + +bitlook() +{ + unsigned char *p; + int ascii,row; + + p = 0x8000; + for(ascii=0;ascii<256;ascii++) { + printf("ascii = 0x%02x ",ascii); + for(row=0l;row<8;row++) { + printf("0x%02x ",*p++); + } + printf("\n"); + } +} + +int vdaqry(devunit,bitmapp) + unsigned int devunit; + unsigned int bitmapp; +{ + hregbc = (VDAQRY << 8) | devunit; + printf("hregbc = 0x%04x\n",hregbc); + hreghl = bitmapp; + + if(hreghl != 0x8000) printf("vdaqry says hl != 0x8000\n"); + + diagnose(); + printf("VDAQRY called, status was 0x%02x\n",hrega); + printf(" video mode was 0x%02x\n",hregbc & 255); + printf(" row count was 0x%02x(%d)\n", + (hregde >> 8),(hregde >> 8) ); + printf(" column count was 0x%02x(%d)\n", + hregde & 255, hregde & 255); + +/* if(0 != bitmapp) { + printf("vdaqry called with bitmap pointer\n"); + bitlook(); + } +*/ + + return hrega; +} + + +int main(argc,argv) + int argc; + char *argv[]; +{ + unsigned char * p; + unsigned char byte; + int offs; + int retcode; + + printf("flip.com(c) 11/15/2012 dwg - \n\n"); + + retcode = vdaqry(VDA_N8 << 4,0x8000); + + p = 0x8000; + for(offs=0;offs<256*8;offs++) { + byte = *p; + byte = byte ^ 255; + *p = byte; + p++; + } + +/* bitlook(); */ + + vdaini(VDA_N8 << 4, 0, 0x8000); +} + + \ No newline at end of file diff --git a/Apps/crossdev/FLIP.SUB b/Apps/crossdev/FLIP.SUB new file mode 100644 index 00000000..ab25bd36 --- /dev/null +++ b/Apps/crossdev/FLIP.SUB @@ -0,0 +1,5 @@ +cc flip +as flip +as diagnose +ln flip.o diagnose.o -lc + \ No newline at end of file diff --git a/Apps/crossdev/FORM.ASM b/Apps/crossdev/FORM.ASM new file mode 100644 index 00000000..e2f63568 --- /dev/null +++ b/Apps/crossdev/FORM.ASM @@ -0,0 +1,646 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + global pDPHMAP_,2 + global pDPHVEC_,16 + DSEG + public pSYSCFG_ +pSYSCFG_: + DW -16384 + CSEG + DSEG + public form_ +form_: + DW 6 + DW 3 + DW 6 + DB 102 + DB 105 + DB 101 + DB 108 + DB 100 + DB 49 + DB 0 + DW 6 + DW 13 + DB 100 + DB 101 + DB 102 + DB 97 + DB 117 + DB 108 + DB 116 + DB 49 + DB 0 + ds 24 + DW 7 + DW 3 + DW 6 + DB 102 + DB 105 + DB 101 + DB 108 + DB 100 + DB 50 + DB 0 + DW 7 + DW 13 + DB 100 + DB 101 + DB 102 + DB 97 + DB 117 + DB 108 + DB 116 + DB 50 + DB 0 + ds 24 + CSEG + PUBLIC main_ +main_: lxi d,.2 + call csave + 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+0 + PUSH H + CALL banner_ + POP D + LXI H,0 + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .4 +.3: + LXI H,2-.2 + 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 +.4: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2 + CALL .lt + JZ .5 + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+2 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_ + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+6 + DAD D + PUSH H + LXI H,.1+5 + PUSH H + CALL printf_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,0 + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .7 +.6: + LXI H,0-.2 + 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 +.7: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL strlen_ + POP D + PUSH H + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + POP H + CALL .lt + JZ .8 + LXI H,.1+8 + PUSH H + CALL printf_ + POP D + JMP .6 +.8: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + LXI H,.1+10 + PUSH H + CALL printf_ + POP D + POP D + JMP .3 +.5: + LXI H,0 + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .10 +.9: + LXI H,2-.2 + 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 +.10: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2 + CALL .lt + JZ .11 + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,34 + PUSH H + LXI H,0 + PUSH H + LXI H,-30-.2 + DAD SP + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,10 + SHLD dregbc_ + LXI H,-34-.2 + DAD SP + SHLD dregde_ + LXI H,31 + XCHG + LXI H,-34-.2 + DAD SP + MOV M,E + LXI H,0 + XCHG + LXI H,-33-.2 + DAD SP + MOV M,E + CALL bdoscall_ + LXI H,-33-.2 + DAD SP + MOV E,M + MVI D,0 + PUSH D + LXI H,0 + POP D + XCHG + CALL .lt + JZ .12 + LXI H,32 + PUSH H + LXI H,0 + PUSH H + LXI H,6-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL memset_ + POP D + POP D + POP D + LXI H,-32-.2 + DAD SP + MOV E,M + MVI D,0 + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL strcpy_ + POP D + POP D +.12: + JMP .9 +.11: + LXI H,0 + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .14 +.13: + LXI H,2-.2 + 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 +.14: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,2 + CALL .lt + JZ .15 + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+2 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_ + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+6 + DAD D + PUSH H + LXI H,.1+13 + PUSH H + CALL printf_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,0 + XCHG + LXI H,0-.2 + DAD SP + MOV M,E + INX H + MOV M,D + JMP .17 +.16: + LXI H,0-.2 + 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 +.17: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + CALL strlen_ + POP D + PUSH H + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + POP H + CALL .lt + JZ .18 + LXI H,.1+16 + PUSH H + CALL printf_ + POP D + JMP .16 +.18: + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+15 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,4-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+13 + DAD D + MOV E,M + INX H + MOV D,M + PUSH D + CALL crtlc_ + POP D + POP D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + LXI H,50 + CALL .ml + LXI D,form_+17 + DAD D + PUSH H + LXI H,.1+18 + PUSH H + CALL printf_ + POP D + POP D + JMP .13 +.15: + RET +.2 EQU -38 +.1: + DB 70,79,82,77,0,37,115,0,95,0,37,115,0,37,115 + DB 0,32,0,37,115,0 + extrn strcpy_ + extrn memset_ + extrn strlen_ + extrn printf_ + extrn banner_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn bdoscall_ + extrn dregde_ + extrn dregbc_ + extrn .lt + extrn .ml + END + \ No newline at end of file diff --git a/Apps/crossdev/FORM.C b/Apps/crossdev/FORM.C new file mode 100644 index 00000000..8bae233c --- /dev/null +++ b/Apps/crossdev/FORM.C @@ -0,0 +1,107 @@ +/* form.c 8/21/2012 dwg - */ + + +#define MAXDRIVE 8 +#include "cpm80.h" +#include "cpmbdos.h" +#include "bdoscall.h" +#include "cpmappl.h" +#include "applvers.h" +#include "cnfgdata.h" +#include "syscfg.h" + + +#define BDOS 5 /* memory address of BDOS invocation */ +#define HIGHSEG 0x0C000 /* memory address of system config */ +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + + +struct SYSCFG * pSYSCFG = HIGHSEG; + +#define FRMFLDS 2 +#define FRSTLIN 6 +#define VISCOL 3 +#define VISSIZ 6 +#define VALCOL (VISCOL+VISSIZ+4) +#define VALSIZ 32 + +struct FORM { + int visline; + int viscol; + int vissize; + char visible[VISSIZ+1]; + int valline; + int valcol; + char value[VALSIZ+1]; +} form[FRMFLDS] = { + { FRSTLIN, VISCOL, VISSIZ, "field1", FRSTLIN, VALCOL, "default1" }, + { FRSTLIN+1, VISCOL, VISSIZ, "field2", FRSTLIN+1, VALCOL, "default2" } +}; + + +int main(argc,argv) + int argc; + char *argv[]; +{ + int i,j; + char buffer[VALSIZ+2]; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + + banner("FORM"); + + for(i=0;i +#include "ascii.h" + +main() +{ + printf("%c",ASCII_FF); +} + \ No newline at end of file diff --git a/Apps/crossdev/FORMFEED.SUB b/Apps/crossdev/FORMFEED.SUB new file mode 100644 index 00000000..67b4bbec --- /dev/null +++ b/Apps/crossdev/FORMFEED.SUB @@ -0,0 +1,4 @@ +cc formfeed +as formfeed +ln formfeed.o -lc + \ No newline at end of file diff --git a/Apps/crossdev/GETCFG.ASM b/Apps/crossdev/GETCFG.ASM new file mode 100644 index 00000000..5d88ce09 --- /dev/null +++ b/Apps/crossdev/GETCFG.ASM @@ -0,0 +1,219 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + DSEG + public pPriFcb_ +pPriFcb_: + DW 92 + CSEG + DSEG + public pSecFcb_ +pSecFcb_: + DW 108 + CSEG + DSEG + public pDefBuf_ +pDefBuf_: + DW 128 + CSEG + DSEG + public pBIOS_ +pBIOS_: + DW -6656 + CSEG + global pDPB_,2 + global pDPH_,2 + global pINFOLIS_,2 + global pCNFGDAT_,2 + DSEG + public pSYSCFG_ +pSYSCFG_: + DW -16384 + CSEG + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,-4096 + SHLD hregbc_ + LXI H,-16384 + SHLD hregde_ + CALL diagnose_ + LHLD pSYSCFG_ + LXI D,68 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + POP D + 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 + LHLD pBIOS_ + LXI D,78 + DAD D + MOV E,M + MVI D,0 + PUSH D + LHLD pBIOS_ + LXI D,77 + DAD D + MOV E,M + MVI D,0 + PUSH D + LHLD pBIOS_ + LXI D,76 + DAD D + MOV E,M + MVI D,0 + PUSH D + LHLD pBIOS_ + LXI D,75 + DAD D + MOV E,M + MVI D,0 + PUSH D + LXI H,2012 + PUSH H + LXI H,23 + PUSH H + LXI H,7 + PUSH H + LXI H,.1+10 + PUSH H + CALL printf_ + XCHG + LXI H,16 + DAD SP + SPHL + LXI H,.1+93 + PUSH H + LXI H,.1+82 + PUSH H + CALL fopen_ + POP D + POP D + XCHG + LXI H,2-.2 + DAD SP + MOV M,E + INX H + MOV M,D + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + LXI H,256 + PUSH H + LXI H,1 + PUSH H + LXI H,-16384 + PUSH H + CALL fwrite_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,2-.2 + DAD SP + MOV E,M + INX H + MOV D,M + PUSH D + CALL fclose_ + POP D + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,-6596 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xreghl_ + SHLD pINFOLIS_ + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LXI H,25 + PUSH H + LXI H,5 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LXI H,0 + PUSH H + LXI H,0 + PUSH H + LDA xrega_ + MOV L,A + MVI H,0 + PUSH H + LXI H,-6629 + PUSH H + CALL asmif_ + XCHG + LXI H,8 + DAD SP + SPHL + LHLD xreghl_ + SHLD pDPH_ + LHLD pDPH_ + LXI D,10 + DAD D + MOV E,M + INX H + MOV D,M + XCHG + SHLD pDPB_ + RET +.2 EQU -2 +.1: + DB 84,84,32,105,115,32,37,100,10,0,71,69,84,67,70 + DB 71,46,67,79,77,32,37,100,47,37,100,47,37,100,32 + DB 37,100,46,37,100,46,37,100,46,37,100,32,100,119,103 + DB 32,45,32,69,108,101,103,97,110,116,108,121,32,69,120 + DB 112,114,101,115,115,101,100,32,67,80,47,77,32,80,114 + DB 111,103,114,97,109,10,0,115,121,115,99,102,103,46,98 + DB 105,110,0,119,0 + extrn fclose_ + extrn fwrite_ + extrn printf_ + extrn asmif_ + extrn xreghl_ + extrn xrega_ + extrn diagnose_ + extrn hregde_ + extrn hregbc_ + extrn crtlc_ + extrn crtclr_ + extrn crtinit_ + extrn fopen_ + END + \ No newline at end of file diff --git a/Apps/crossdev/GETCFG.C b/Apps/crossdev/GETCFG.C new file mode 100644 index 00000000..72fa186d --- /dev/null +++ b/Apps/crossdev/GETCFG.C @@ -0,0 +1,333 @@ +/* test.c 7/23/2012 dwg - */ + +#include "stdio.h" +#include "applvers.h" +#include "ctermcap.h" + +/* declarations for HBIOS access */ +extern char hrega; +extern unsigned int hregbc; +extern unsigned int hregde; +extern unsigned int hreghl; +extern diagnose(); + +/* declaration dir BIOS and BDOS and low level calls */ +extern char xrega; +extern unsigned int xregbc; +extern unsigned int xregde; +extern unsigned int xreghl; +extern asmif(); /* asmif(0x0E6**,bc,de,hl); */ + +#define BDOS 5 /* memory address of BDOS invocation */ +#define PRIFCB 0x5C /* memory address of primary FCB */ +#define SECFCB 0x6C /* memory address of secondary FCB */ +#define DEFBUF 0x80 /* memory address of default buffer */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +#define TERMCPM 0 /* BDOS function for System Reset */ +#define CONIN 1 /* BDOS function for Console Input */ +#define CWRITE 2 /* BDOS function for Console Output */ +#define DIRCONIO 6 /* BDOS function for Direct Console I/O */ +#define PRINTSTR 9 /* BDOS function for Print String */ +#define RDCONBUF 10 /* BDOS function for Buffered Console Read */ +#define GETCONST 11 /* BDOS function for Get Console Status */ +#define RETVERNUM 12 /* BDOS function for Return Version Number */ +#define RESDISKSYS 13 /* BDOS function for Reset Disk System */ +#define SELECTDISK 14 /* BDOS function for Select Disk */ +#define FOPEN 15 /* BDOS function for File Open */ +#define FCLOSE 16 /* BDOS function for File Close */ +#define SEARCHFIRST 17 /* BDOS function for Search First */ +#define SEARCHNEXT 18 /* BDOS function for Search Next */ +#define FDELETE 19 /* BDOS function for File Delete */ +#define FREADSEQ 20 /* BDOS function for File Read Sequential */ +#define FWRITESEQ 21 /* BDOS function for File Write Sequential */ +#define FMAKEFILE 22 /* BDOS function for File Make */ +#define FRENAME 23 /* BDOS function for File Rename */ +#define RETLOGINVEC 24 /* BDOS function for Return Login Vector */ +#define RETCURRDISK 25 /* BDOS function for Return Current Disk */ +#define SETDMAADDR 26 /* BDOS function for Set DMA Address */ +#define GETALLOCVEC 27 /* BDOS function for Get Allocation Vector */ +#define WRPROTDISK 28 /* BDOS function for Write Protect Disk */ +#define GETROVECTOR 29 /* BDOS function for Get Read Only Vector */ +#define FSETATTRIB 30 /* BDOS function for File Set Attribute */ +#define GETDPBADDR 31 /* BDOS function for Get DPB Address */ +#define SETGETUSER 32 /* BDOS function for Set & Get User Number */ +#define FREADRANDOM 33 /* BDOS function for File Read Random */ +#define FWRITERAND 34 /* BDOS function for File Write Random */ +#define FCOMPSIZE 35 /* BDOS function for File Compare Size */ +#define SETRANDREC 36 /* BDOS function for Set Random Record # */ +#define RESETDRIVE 37 /* BDOS function for Reset Drive */ +#define WRRANDFILL 38 /* BDOS function for Write Random w/ Fill */ + +#define BDOSDEFDR 0 /* BDOS Default (current) Drive Number */ +#define BDOSDRA 1 /* BDOS Drive A: number */ +#define BDOSDRB 2 /* BDOS Drive B: number */ +#define BDOSDRC 3 /* BDOS Drive C: number */ +#define BDOSDRD 4 /* BDOS Drive D: number */ +#define BDOSDRE 5 /* BDOS Drive E: number */ +#define BDOSDRF 6 /* BDOS Drive F: number */ +#define BDOSDRG 7 /* BDOS Drive G: number */ +#define BDOSDRH 8 /* BDOS Drive H: number */ + +#define BIOSDRA 0 /* BIOS Drive A: number */ +#define BIOSDRB 1 /* BIOS Drive B: number */ +#define BIOSDRC 2 /* BIOS Drive C: number */ +#define BIOSDRD 3 /* BIOS Drive D: number */ +#define BIOSDRE 4 /* BIOS Drive E: number */ +#define BIOSDRF 5 /* BIOS Drive F: number */ +#define BIOSDRG 6 /* BIOS Drive G: number */ +#define BIOSDRH 7 /* BIOS Drive H: number */ + +struct FCB { + char drive; /* BDOS Drive Code */ + char filename[8]; /* space padded file name */ + char filetype[3]; /* space padded file extension */ + char filler[24]; /* remainder of FCB */ +}; + +struct FCB * pPriFcb = PRIFCB; /* pointer to Primary FCB structure */ + +struct FCB * pSecFcb = SECFCB; /* pointer to secondary FCB structure */ + +struct { + char length; /* length of commad tail */ + char tail[127]; /* command tail */ +} * pDefBuf = DEFBUF; + + +#define CURDRV 0x00004 +#define BIOSAD 0x0e600 /* base address of BIOS jumps */ + +/* addresses of BIOS jumps */ +#define pBOOT 0x0E600 +#define pWBOOT 0x0E603 +#define pCONST 0x0E606 +#define pCONIN 0x0E609 +#define pCONOUT 0x0E60C +#define pLIST 0x0E60F +#define pPUNCH 0x0E612 +#define pREADER 0x0E615 +#define pHOME 0x0E618 +#define pSELDSK 0x0E61B +#define pSETTRK 0x0E61E +#define pSETSEC 0x0E621 +#define pSETDMA 0x0E624 +#define pREAD 0x0E627 +#define pWRITE 0x0E62A +#define pLISTST 0x0E62D +#define pSECTRN 0x0E630 +#define pBNKSEL 0x0E633 +#define pGETLU 0x0E636 +#define pSETLU 0x0E639 +#define pGETINFO 0x0E63C + +struct JMP { + unsigned char opcode; /* JMP opcode */ + unsigned int address; /* JMP address */ +}; + +struct BIOS { + struct JMP boot; + struct JMP wboot; + struct JMP const; + struct JMP conin; + struct JMP conout; + struct JMP list; + struct JMP punch; + struct JMP reader; + struct JMP home; + struct JMP seldsk; + struct JMP settrk; + struct JMP setsec; + struct JMP setdma; + struct JMP read; + struct JMP write; + struct JMP listst; + struct JMP sectrn; + struct JMP bnksel; + struct JMP getlu; + struct JMP setlu; + struct JMP getinfo; + struct JMP rsvd1; + struct JMP rsvd2; + struct JMP rsvd3; + struct JMP rsvd4; + + char rmj; + char rmn; + char rup; + char rtp; + +} * pBIOS = 0xe600; + +/* pointer based Disk Parameter Block structure */ +struct DPB { + unsigned int spt; + unsigned char bsh; + unsigned char blm; + unsigned char exm; + unsigned int dsm; + unsigned int drm; + unsigned char al0; + unsigned int cks; + unsigned int off; +} * pDPB; + +/* pointer based Disk Parameter Header structure */ +struct DPH { + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + struct DPB * pDpb; + unsigned int csv; + unsigned int alv; + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +} * pDPH; + +/* pointer based Information List structure */ +struct INFOLIST { + int version; + void * banptr; + void * varloc; + void * tstloc; + void * dpbmap; + void * dphmap; + void * ciomap; +} * pINFOLIST; + +/* pointer based Configuration Data structure */ +struct CNFGDATA { + unsigned char rmj; + unsigned char rmn; + unsigned char rup; + unsigned char rtp; + unsigned char diskboot; + unsigned char devunit; + unsigned int bootlu; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned char month; + unsigned char day; + unsigned char year; + unsigned char freq; + unsigned char platform; + unsigned char dioplat; + unsigned char vdumode; + unsigned int romsize; + unsigned int ramsize; + unsigned char clrramdk; + unsigned char dskyenable; + unsigned char uartenable; + unsigned char vduenable; + unsigned char fdenable; + unsigned char fdtrace; + unsigned char fdmedia; + unsigned char fdmediaalt; + unsigned char fdmauto; + unsigned char ideenable; + unsigned char idetrace; + unsigned char ide8bit; + unsigned int idecapacity; + unsigned char ppideenable; + unsigned char ppidetrace; + unsigned char ppide8bit; + unsigned int ppidecapacity; + unsigned char ppideslow; + unsigned char boottype; + unsigned char boottimeout; + unsigned char bootdefault; + unsigned int baudrate; + unsigned char ckdiv; + unsigned char memwait; + unsigned char iowait; + unsigned char cntlb0; + unsigned char cntlb1; + unsigned char sdenable; + unsigned char sdtrace; + unsigned int sdcapacity; + unsigned char sdcsio; + unsigned char sdcsiofast; + unsigned char defiobyte; + unsigned char termtype; + unsigned int revision; + unsigned char prpsdenable; + unsigned char prpsdtrace; + unsigned int prpsdcapacity; + unsigned char prpconenable; + unsigned int biossize; + unsigned char pppenable; + unsigned char pppsdenable; + unsigned char pppsdtrace; + unsigned int pppsdcapacity; + unsigned char pppconenable; + unsigned char prpenable; +} * pCNFGDATA; + + +struct JMP_TAG { + unsigned char opcode; + unsigned int address; +}; + + +/* pointer based System Configuration structure */ +struct SYSCFG { + struct JMP_TAG jmp; + void * cnfloc; + void * tstloc; + void * varloc; + struct CNFGDATA cnfgdata; + char filler[256-3-2-2-2-sizeof(struct CNFGDATA)]; +} * pSYSCFG = HIGHSEG; + + +main(argc,argv) + int argc; + char *argv[]; +{ + FILE * fd; + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + + printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + + printf( + "GETCFG.COM %d/%d/%d %d.%d.%d.%d dwg - Elegantly Expressed CP/M Program\n", + A_MONTH,A_DAY,A_YEAR, + pBIOS->rmj,pBIOS->rmn,pBIOS->rup,pBIOS->rtp); + + fd = fopen("syscfg.bin","w"); + fwrite(HIGHSEG,1,256,fd); + fclose(fd); + + + + asmif(pGETINFO,0,0,0); /* get addr of the information list */ + pINFOLIST = xreghl; /* set base pointer of the structure */ + + asmif(BDOS,RETCURRDISK,0,0); /* get current drive into xrega */ + asmif(pSELDSK,xrega,0,0); /* get DPH of current drive */ + pDPH = xreghl; /* establish addressability to DPH */ + pDPB = pDPH->pDpb; /* establish addressability to DPB */ + +/* printf("spt is %d\n",pDPB->spt); */ /* demonstrate DPB access */ + + + +} + + \ No newline at end of file diff --git a/Apps/crossdev/GLOBALS.H b/Apps/crossdev/GLOBALS.H index 672b4a07..58976394 100644 --- a/Apps/crossdev/GLOBALS.H +++ b/Apps/crossdev/GLOBALS.H @@ -1,4 +1,5 @@ /****************************************************************/ +/* globals.h 9/4/2012 dwg - increase MAXDRIVE to 12 */ /* globals.h 3/11/2012 dwg - add BIOS_ADDR */ /* globals.h 3/11/2012 dwg - declarations common to all modules */ /****************************************************************/ @@ -10,8 +11,8 @@ #define BIOSAD 0x0e600 #define INFLSTV 1 -#define MAXDRIVE 8 +#define MAXDRIVE 12 /*******************/ /* eof - globals.h */ -/*******************/ \ No newline at end of file +/*******************/ \ No newline at end of file diff --git a/Apps/crossdev/GLOBALS.LIB b/Apps/crossdev/GLOBALS.LIB new file mode 100644 index 00000000..152e55f4 --- /dev/null +++ b/Apps/crossdev/GLOBALS.LIB @@ -0,0 +1,18 @@ +; globals.lib 7/19/2012 dwg - update for 2.0.0.0 B22 +; globals.lib 1/18/2012 dwg - program globals + +ENGLISH equ TRUE +SPANISH equ FALSE + +MAX$LABEL equ 16 +STACK$SIZE equ 512 + +COLON equ ':' + +stack macro + ds STACK$SIZE +stack$top: + endm + +; eof - globals.lib + \ No newline at end of file diff --git a/Apps/crossdev/HARDWARE.LIB b/Apps/crossdev/HARDWARE.LIB new file mode 100644 index 00000000..3503e99e --- /dev/null +++ b/Apps/crossdev/HARDWARE.LIB @@ -0,0 +1,16 @@ +; hardware.lib 1/18/2012 dwg - hardware declarations +HASZ80 equ TRUE + +; I/O address of Zeta RTC +zeta$rtc equ 70h +; write bit definitions +z$rtc$ce equ 10h +z$rtc$we equ 20h +z$rtc$clk equ 40h +z$rtc$inp equ 80h +; read bit definitions +z$rtc$out equ 01h +z$rtc$cfg equ 40h + +; eof - hardware.lib + \ No newline at end of file diff --git a/Apps/crossdev/HBIOS.ASM b/Apps/crossdev/HBIOS.ASM new file mode 100644 index 00000000..50d43a0f --- /dev/null +++ b/Apps/crossdev/HBIOS.ASM @@ -0,0 +1,18 @@ +; hbios.asm 7/19/2012 dwg - + +CFGVERS equ 0 + + public xgetsc +xgetsc: + enter + mvi b,0F0h + mvi c,CFGVERS + lxi d,8000h + db 0cfh ; rst 8 + lxi h,8000h + leave + ret + + + END + \ No newline at end of file diff --git a/Apps/crossdev/HBIOS.H b/Apps/crossdev/HBIOS.H new file mode 100644 index 00000000..e56562c8 --- /dev/null +++ b/Apps/crossdev/HBIOS.H @@ -0,0 +1,48 @@ +/* hbios.h 7/4/2012 dgw - */ + +/* CIO */ + +/* Character Input (CIOIN) */ + +/* Character Output (CIOOUT) */ + +/* Character Input Status (CIOIST) */ + +/* Character Output Status (CIOOST) */ + +/* DIO */ + +/* Disk Read (DIORD) */ + +/* Disk Write (DIOWR) */ + +/* Disk Status (DIOST) */ + +/* Disk Media (DIOMED) */ + +/* Disk Idetify (DIOID) */ + +/* Disk Get Buffer Address (DIOGBA) */ + + + + +/* + extern char hrega; + extern unsigned int hregbc; + extern unsigned int hregde; + extern unsigned int hreghl; + extern diagnose(); +*/ + + + + + +/*****************/ +/* eof - hbios.h */ +/*****************/ + + + + \ No newline at end of file diff --git a/Apps/crossdev/HBIOS.LIB b/Apps/crossdev/HBIOS.LIB new file mode 100644 index 00000000..166327be --- /dev/null +++ b/Apps/crossdev/HBIOS.LIB @@ -0,0 +1,3 @@ +; hbios.lib 7/19/2012 dwg - + extrn xgetsc + \ No newline at end of file diff --git a/Apps/crossdev/HBIOS.REL b/Apps/crossdev/HBIOS.REL new file mode 100644 index 0000000000000000000000000000000000000000..b47b7c7d367e6ff51f474a8528aef8fd9f3eb36d GIT binary patch literal 128 zcmZn-5||WxeEEMbj literal 0 HcmV?d00001 diff --git a/Apps/crossdev/HBIOS.SYM b/Apps/crossdev/HBIOS.SYM new file mode 100644 index 00000000..4285f164 --- /dev/null +++ b/Apps/crossdev/HBIOS.SYM @@ -0,0 +1,2 @@ +0000 CFGVERS 0000 ENTER 000B LEAVE 0000 XGETSC + \ No newline at end of file diff --git a/Apps/crossdev/HELLO.C b/Apps/crossdev/HELLO.C new file mode 100644 index 00000000..daff6af1 --- /dev/null +++ b/Apps/crossdev/HELLO.C @@ -0,0 +1,333 @@ +/* test.c 7/21/2012 dwg - */ + +#include "stdio.h" +#include "applvers.h" + +/* declarations for HBIOS access */ +extern char hrega; +extern unsigned int hregbc; +extern unsigned int hregde; +extern unsigned int hreghl; +extern diagnose(); + +/* declaration dir BIOS and BDOS and low level calls */ +extern char xrega; +extern unsigned int xregbc; +extern unsigned int xregde; +extern unsigned int xreghl; +extern asmif(); /* asmif(0x0E6**,bc,de,hl); */ + +#define BDOS 5 /* memory address of BDOS invocation */ +#define PRIFCB 0x5C /* memory address of primary FCB */ +#define SECFCB 0x6C /* memory address of secondary FCB */ +#define DEFBUF 0x80 /* memory address of default buffer */ +#define HIGHSEG 0x0C000 /* memory address of system config */ + +#define GETSYSCFG 0x0F000 /* HBIOS function for Get System Configuration */ + +#define TERMCPM 0 /* BDOS function for System Reset */ +#define CONIN 1 /* BDOS function for Console Input */ +#define CWRITE 2 /* BDOS function for Console Output */ +#define DIRCONIO 6 /* BDOS function for Direct Console I/O */ +#define PRINTSTR 9 /* BDOS function for Print String */ +#define RDCONBUF 10 /* BDOS function for Buffered Console Read */ +#define GETCONST 11 /* BDOS function for Get Console Status */ +#define RETVERNUM 12 /* BDOS function for Return Version Number */ +#define RESDISKSYS 13 /* BDOS function for Reset Disk System */ +#define SELECTDISK 14 /* BDOS function for Select Disk */ +#define FOPEN 15 /* BDOS function for File Open */ +#define FCLOSE 16 /* BDOS function for File Close */ +#define SEARCHFIRST 17 /* BDOS function for Search First */ +#define SEARCHNEXT 18 /* BDOS function for Search Next */ +#define FDELETE 19 /* BDOS function for File Delete */ +#define FREADSEQ 20 /* BDOS function for File Read Sequential */ +#define FWRITESEQ 21 /* BDOS function for File Write Sequential */ +#define FMAKEFILE 22 /* BDOS function for File Make */ +#define FRENAME 23 /* BDOS function for File Rename */ +#define RETLOGINVEC 24 /* BDOS function for Return Login Vector */ +#define RETCURRDISK 25 /* BDOS function for Return Current Disk */ +#define SETDMAADDR 26 /* BDOS function for Set DMA Address */ +#define GETALLOCVEC 27 /* BDOS function for Get Allocation Vector */ +#define WRPROTDISK 28 /* BDOS function for Write Protect Disk */ +#define GETROVECTOR 29 /* BDOS function for Get Read Only Vector */ +#define FSETATTRIB 30 /* BDOS function for File Set Attribute */ +#define GETDPBADDR 31 /* BDOS function for Get DPB Address */ +#define SETGETUSER 32 /* BDOS function for Set & Get User Number */ +#define FREADRANDOM 33 /* BDOS function for File Read Random */ +#define FWRITERAND 34 /* BDOS function for File Write Random */ +#define FCOMPSIZE 35 /* BDOS function for File Compare Size */ +#define SETRANDREC 36 /* BDOS function for Set Random Record # */ +#define RESETDRIVE 37 /* BDOS function for Reset Drive */ +#define WRRANDFILL 38 /* BDOS function for Write Random w/ Fill */ + +#define BDOSDEFDR 0 /* BDOS Default (current) Drive Number */ +#define BDOSDRA 1 /* BDOS Drive A: number */ +#define BDOSDRB 2 /* BDOS Drive B: number */ +#define BDOSDRC 3 /* BDOS Drive C: number */ +#define BDOSDRD 4 /* BDOS Drive D: number */ +#define BDOSDRE 5 /* BDOS Drive E: number */ +#define BDOSDRF 6 /* BDOS Drive F: number */ +#define BDOSDRG 7 /* BDOS Drive G: number */ +#define BDOSDRH 8 /* BDOS Drive H: number */ + +#define BIOSDRA 0 /* BIOS Drive A: number */ +#define BIOSDRB 1 /* BIOS Drive B: number */ +#define BIOSDRC 2 /* BIOS Drive C: number */ +#define BIOSDRD 3 /* BIOS Drive D: number */ +#define BIOSDRE 4 /* BIOS Drive E: number */ +#define BIOSDRF 5 /* BIOS Drive F: number */ +#define BIOSDRG 6 /* BIOS Drive G: number */ +#define BIOSDRH 7 /* BIOS Drive H: number */ + +struct FCB { + char drive; /* BDOS Drive Code */ + char filename[8]; /* space padded file name */ + char filetype[3]; /* space padded file extension */ + char filler[24]; /* remainder of FCB */ +}; + +struct FCB * pPriFcb = PRIFCB; /* pointer to Primary FCB structure */ + +struct FCB * pSecFcb = SECFCB; /* pointer to secondary FCB structure */ + +struct { + char length; /* length of commad tail */ + char tail[127]; /* command tail */ +} * pDefBuf = DEFBUF; + + +#define CURDRV 0x00004 +#define BIOSAD 0x0e600 /* base address of BIOS jumps */ + +/* addresses of BIOS jumps */ +#define pBOOT 0x0E600 +#define pWBOOT 0x0E603 +#define pCONST 0x0E606 +#define pCONIN 0x0E609 +#define pCONOUT 0x0E60C +#define pLIST 0x0E60F +#define pPUNCH 0x0E612 +#define pREADER 0x0E615 +#define pHOME 0x0E618 +#define pSELDSK 0x0E61B +#define pSETTRK 0x0E61E +#define pSETSEC 0x0E621 +#define pSETDMA 0x0E624 +#define pREAD 0x0E627 +#define pWRITE 0x0E62A +#define pLISTST 0x0E62D +#define pSECTRN 0x0E630 +#define pBNKSEL 0x0E633 +#define pGETLU 0x0E636 +#define pSETLU 0x0E639 +#define pGETINFO 0x0E63C + +struct JMP { + unsigned char opcode; /* JMP opcode */ + unsigned int address; /* JMP address */ +}; + +struct BIOS { + struct JMP boot; + struct JMP wboot; + struct JMP const; + struct JMP conin; + struct JMP conout; + struct JMP list; + struct JMP punch; + struct JMP reader; + struct JMP home; + struct JMP seldsk; + struct JMP settrk; + struct JMP setsec; + struct JMP setdma; + struct JMP read; + struct JMP write; + struct JMP listst; + struct JMP sectrn; + struct JMP bnksel; + struct JMP getlu; + struct JMP setlu; + struct JMP getinfo; + struct JMP rsvd1; + struct JMP rsvd2; + struct JMP rsvd3; + struct JMP rsvd4; + + char rmj; + char rmn; + char rup; + char rtp; + +} * pBIOS = 0xe600; + +/* pointer based Disk Parameter Block structure */ +struct DPB { + unsigned int spt; + unsigned char bsh; + unsigned char blm; + unsigned char exm; + unsigned int dsm; + unsigned int drm; + unsigned char al0; + unsigned int cks; + unsigned int off; +} * pDPB; + +/* pointer based Disk Parameter Header structure */ +struct DPH { + unsigned int xlt; + unsigned int rv1; + unsigned int rv2; + unsigned int rv3; + unsigned int dbf; + struct DPB * pDpb; + unsigned int csv; + unsigned int alv; + unsigned char sigl; + unsigned char sigu; + unsigned int current; + unsigned int number; +} * pDPH; + +/* pointer based Information List structure */ +struct INFOLIST { + int version; + void * banptr; + void * varloc; + void * tstloc; + void * dpbmap; + void * dphmap; + void * ciomap; +} * pINFOLIST; + +/* pointer based Configuration Data structure */ +struct CNFGDATA { + unsigned char rmj; + unsigned char rmn; + unsigned char rup; + unsigned char rtp; + unsigned char diskboot; + unsigned char devunit; + unsigned int bootlu; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned char month; + unsigned char day; + unsigned char year; + unsigned char freq; + unsigned char platform; + unsigned char dioplat; + unsigned char vdumode; + unsigned int romsize; + unsigned int ramsize; + unsigned char clrramdk; + unsigned char dskyenable; + unsigned char uartenable; + unsigned char vduenable; + unsigned char fdenable; + unsigned char fdtrace; + unsigned char fdmedia; + unsigned char fdmediaalt; + unsigned char fdmauto; + unsigned char ideenable; + unsigned char idetrace; + unsigned char ide8bit; + unsigned int idecapacity; + unsigned char ppideenable; + unsigned char ppidetrace; + unsigned char ppide8bit; + unsigned int ppidecapacity; + unsigned char ppideslow; + unsigned char boottype; + unsigned char boottimeout; + unsigned char bootdefault; + unsigned int baudrate; + unsigned char ckdiv; + unsigned char memwait; + unsigned char iowait; + unsigned char cntlb0; + unsigned char cntlb1; + unsigned char sdenable; + unsigned char sdtrace; + unsigned int sdcapacity; + unsigned char sdcsio; + unsigned char sdcsiofast; + unsigned char defiobyte; + unsigned char termtype; + unsigned int revision; + unsigned char prpsdenable; + unsigned char prpsdtrace; + unsigned int prpsdcapacity; + unsigned char prpconenable; + unsigned int biossize; + unsigned char pppenable; + unsigned char pppsdenable; + unsigned char pppsdtrace; + unsigned int pppsdcapacity; + unsigned char pppconenable; + unsigned char prpenable; +} * pCNFGDATA; + + +struct JMP_TAG { + unsigned char opcode; + unsigned int address; +}; + + +/* pointer based System Configuration structure */ +struct SYSCFG { + struct JMP_TAG jmp; + void * cnfloc; + void * tstloc; + void * varloc; + struct CNFGDATA cnfgdata; + char filler[256-3-2-2-2-sizeof(struct CNFGDATA)]; +} * pSYSCFG = HIGHSEG; + + +main(argc,argv) + int argc; + char *argv[]; +{ + + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + pSYSCFG = HIGHSEG; + + crtinit(pSYSCFG->cnfgdata.termtype); + crtclr(); + crtlc(0,0); + +/* printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); */ + + + printf( + "TEST.COM %d/%d/%d %d.%d.%d.%d dwg - Elegantly Expressed CP/M Program\n", + A_MONTH,A_DAY,A_YEAR, + pBIOS->rmj,pBIOS->rmn,pBIOS->rup,pBIOS->rtp); + + asmif(pGETINFO,0,0,0); /* get addr of the information list */ + pINFOLIST = xreghl; /* set base pointer of the structure */ + + asmif(BDOS,RETCURRDISK,0,0); /* get current drive into xrega */ + asmif(pSELDSK,xrega,0,0); /* get DPH of current drive */ + pDPH = xreghl; /* establish addressability to DPH */ + pDPB = pDPH->pDpb; /* establish addressability to DPB */ + +/* printf("spt is %d\n",pDPB->spt); */ /* demonstrate DPB access */ + + hregbc = GETSYSCFG; /* function = Get System Config */ + hregde = HIGHSEG; /* addr of dest (must be high) */ + diagnose(); /* invoke the NBIOS function */ + +/* printf("TT is %d\n",pSYSCFG->cnfgdata.termtype); */ + + +} + + \ No newline at end of file diff --git a/Apps/crossdev/HELP.ASM b/Apps/crossdev/HELP.ASM new file mode 100644 index 00000000..00f63941 --- /dev/null +++ b/Apps/crossdev/HELP.ASM @@ -0,0 +1,17 @@ + extrn .begin,.chl,.swt + extrn csave,cret,.move + PUBLIC main_ +main_: lxi d,.2 + call csave + LXI H,.1+0 + PUSH H + CALL printf_ + POP D + LXI H,0 + RET +.2 EQU 0 +.1: + DB 72,101,108,112,32,87,111,114,108,100,33,33,10,0 + extrn printf_ + END + \ No newline at end of file diff --git a/Apps/crossdev/HELP.C b/Apps/crossdev/HELP.C new file mode 100644 index 00000000..0541cc1e --- /dev/null +++ b/Apps/crossdev/HELP.C @@ -0,0 +1,11 @@ +#include +#include + +int main(argc,argv) + int argc; + char * argv[]; +{ + printf("Help World!!\n"); + return 0; +} + \ No newline at end of file diff --git a/Apps/crossdev/IDENT.ASM b/Apps/crossdev/IDENT.ASM new file mode 100644 index 00000000..9840c850 --- /dev/null +++ b/Apps/crossdev/IDENT.ASM @@ -0,0 +1,64 @@ + title 'Ident - Display Program Identification' + +; ident.asm 2/21/2012 dwg - review for release 2.0.0.0 +; ident.asm 2/19.2012 dwg - review for release 1.5.1.0 +; ident.asm 2/19/2012 dwg - remove test* & analyse & ws-shim +; ident.asm 2/18/2012 dwg - drives,map and slice become map +; ident.asm 2/14/2012 dwg - superfmt becomes multifmt +; ident.asm 2/13/2012 dwg - add disk +; ident.asm 2/12/2012 dwg - add cleardir and superfmt +; ident.asm 2/11/2012 dwg - Display the Ident of a program 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 cpmappl + maclib applvers + maclib banner + maclib printers + maclib dumpmac + maclib memory + maclib identity + + do$start + + idata + + sbanner argv + + ify 'ACCESS COM',TRUE +; ify 'ASSIGN COM',TRUE +; ify 'CPMNAME COM',TRUE +; ify 'ERASE COM',TRUE + ify 'FINDFILECOM',TRUE +; ify 'HEADER COM',TRUE + ify 'IDENT COM',TRUE + ify 'SETLABELCOM',TRUE +; ify 'MAP COM',TRUE +; ify 'METAVIEWCOM',TRUE +; ify 'MULTIFMTCOM',TRUE + ify 'NOACCESSCOM',TRUE +; ify 'PAUSE COM',TRUE +; ify 'REM COM',TRUE +; ify 'REQ1PARMCOM',TRUE +; ify 'STOP COM',TRUE +; ify 'TERMTYPECOM',TRUE +; ify 'WRITESYSCOM',FALSE + + do$end + + end + \ No newline at end of file diff --git a/Apps/crossdev/IDENTITY.ASM b/Apps/crossdev/IDENTITY.ASM new file mode 100644 index 00000000..858d7727 --- /dev/null +++ b/Apps/crossdev/IDENTITY.ASM @@ -0,0 +1,196 @@ +; identity.asm 2/17/2012 dwg - Program Identity Declarations + + maclib portab + maclib globals + maclib stdlib + maclib cpmbios + maclib cpmbdos + maclib memory + maclib printers + + public x$ident +x$ident: + shld lfcbptr ; save pointer to fcb + + mvi c,FOPEN + lhld lfcbptr + xchg + call BDOS + cpi 255 + jnz openok + +;;; memcpy lname,file1fcb+1,8 + mvi c,8 + lxi d,lname + lhld lfcbptr + inx h + call x$memcpy + + mvi a,',' + sta ldot + +;;; memcpy lext,file1fcb+9,3 + mvi c,3 + lhld lfcbptr + lxi d,9 + dad d + lxi d,lext + call x$memcpy + + + mvi a,'$' + sta lterm + print lname + printf ' -- File Not Found' + mvi a,FAILURE + jmp fini +openok: + + mvi c,SETDMA + lxi d,buffer + call BDOS + + mvi c,READSEQ + lhld lfcbptr + xchg + call BDOS + + + mvi c,SETDMA + lxi d,buffer+128 + call BDOS + + mvi c,READSEQ + lhld lfcbptr + xchg + call BDOS + + mvi c,FCLOSE + lhld lfcbptr + xchg + call BDOS + + lxi d,d$prog + mvi c,9 + call BDOS + + conout ',' + conout ' ' + lda p$rmj + mov l,a + mvi h,0 + call pr$d$word + conout '.' + lda p$rmn + mov l,a + call pr$d$word + conout '.' + lda p$rup + mov l,a + call pr$d$word + conout '.' + lda p$rtp + mov l,a + call pr$d$word + conout ',' + conout ' ' + + lda p$mon + mov l,a + call pr$d$word + conout '/' + lda p$day + mov l,a + call pr$d$word + conout '/' + lhld p$year + call pr$d$word + conout ',' + conout ' ' + + lxi d,d$prod + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$orig + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lxi d,d$ser + mvi c,9 + call BDOS + conout ',' + conout ' ' + + lda d$term2 + cpi '$' + jnz do$name + conout ' ' + lxi d,d$uuid+19 + jmp do$any +do$name: + lxi d,d$name +do$any: + mvi c,9 + call BDOS + + mvi a,SUCCESS ; set return code +fini: + ret + +lfcbptr ds 2 +ldrive ds 1 +lcolon ds 1 +lname ds 8 +ldot ds 1 +lext ds 3 +lterm ds 1 + + db 'buffer-->' +buffer ds 1 +p$start ds 2 +p$hexrf ds 16 +p$sig ds 2 +p$rmj ds 1 +p$rmn ds 1 +p$rup ds 1 +p$rtp ds 1 +p$mon ds 1 +p$day ds 1 +p$year ds 2 +p$argv ds 2 +p$e5 ds 1 +p$pr$st ds 2 +p$code1 ds 3 ; begin: lxi h,0 +p$code2 ds 1 ; dad sp +p$code3 ds 3 ; shld pre$stk +p$code4 ds 3 ; lxi sp,stack$top +p$code5 ds 1 ; nop +p$code6 ds 3 ; jmp around$bandata +p$prog ds 2 ; dw prog +p$dat ds 2 ; dw dat +p$prod ds 2 ; dw prod +p$orig ds 2 ; dw orig +p$ser ds 2 ; dw ser +p$nam ds 2 ; dw nam +p$term ds 2 ; dw 0 +d$prog ds 8+1+3+1 ; db '12345678.123$' +d$date ds 2+1+2+1+4+1 ; db ' 2/11/2012$' +d$ser ds 6+1 ; db '654321$' +d$prod ds 5+1 ; db 'CPM80$' +d$orig ds 3+1 ; db 'DWG$' +d$name ds 1+7+1+1+1+1+7+1 ; db ' Douglas W. Goodall$' +d$uuid ds 36 ; unique user identification +d$term2 ds 1 ; can be set to zero or dollar sign +p$len equ $-buffer +p$rsvd ds 256-p$len + db '<--buffer' + dw p$len +crlf db CR,LF,'$' + +; eof - identity.asm + \ No newline at end of file diff --git a/Apps/crossdev/IDENTITY.LIB b/Apps/crossdev/IDENTITY.LIB new file mode 100644 index 00000000..b66e6c3e --- /dev/null +++ b/Apps/crossdev/IDENTITY.LIB @@ -0,0 +1,191 @@ +; 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 + \ No newline at end of file diff --git a/Apps/crossdev/IDENTITY.REL b/Apps/crossdev/IDENTITY.REL new file mode 100644 index 0000000000000000000000000000000000000000..b451b042361d460a5bf24228a7859428a7a2f1b9 GIT binary patch literal 896 zcmZpjA~Gp>s$fED%M_Q8r=AWBELXnpxVkzt9{3n4%2c}9VFCN+zpXJ2j0YNeC7DD6 z0~DoA7#QTa*+N=4WSD_`g$@-4NsdbjYPr%3@|SU2mV zuSr{D7Ci89Thm|+G>_Z0>0{!x1B?t?q7;;+eA@yUE$)>F2=+b?E}Y= zGc+GMmLbCMFk?fUewcRXDLzK_79OB?4_!>y<78&QA;Sp_4}PdjYY$W=ZcW(gDKbp_ z9FhwHm|GVetZ2!ZAYdVMmZ?DwD#Hzv*&DGoT*HDzP5>4|95(_K3RHn1V+)lLgUM8F zj9M2^z+s~Ri(adp2mBu@bG0(Ulp+kdeL+o@mx<$M0>mu-2A-K2J4Ci5a77uh>MAl# zo5<+x>9BOk0XOB9GtQ)1a=R{mnb{z+C1<&EAU4og=x1YHf#%sL>lHHRx|2di#8)3gnZ-Vq0uu2~Rttw1vysACOR z)Gb!sDyC_N8oiSlmTqzgx|yJv8z8dXf-8C+tFAt?9JlK-i0v8-3>N|>Surq96ABaz zo~o?+Kr+!()RfoB04O9J7#wmjSv$ef(Ni$i)(a>E%sB$nLX{a9Bpp2!fkFig4D+N& F1pw*zI~)K2 literal 0 HcmV?d00001 diff --git a/Apps/crossdev/IDENTITY.SYM b/Apps/crossdev/IDENTITY.SYM new file mode 100644 index 00000000..5ecad124 --- /dev/null +++ b/Apps/crossdev/IDENTITY.SYM @@ -0,0 +1,35 @@ +0009 AL0OFS 000A AL1OFS 000E ALVOFS 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 E60F BILIST E62D BILISTST E612 BIPUNCH +E627 BIREAD E615 BIREADER E630 BISECTRN E61B BISELDSK E624 BISETDMA +E621 BISETSEC E61E BISETTRK E603 BIWBOOT E62A BIWRITE 0003 BLMOFS +0002 BSHOFS 022F BUFFER 0001 BYTESIZE 000B CKSOFS 003A COLON +000D CR 0001 CREAD 033A CRLF 0020 CROFS 000C CSVOFS +0012 CUROFS 0002 CWRITE 0010 D0OFS 0008 DBFOFS 027A DDATE +0080 DEFBUF 0296 DNAME 020D DOANY 020A DONAME 0292 DORIG +000F DPBLEN 000A DPBOFS 0010 DPHLEN 028C DPROD 026D DPROG +0007 DRMOFS 0000 DROFS 0285 DSER 000D DSKRESET 0005 DSMOFS +02CE DTERM2 02AA DUUID 0001 ENGLISH 001B ESC 0004 EXMOFS +000C EXOFS 0001 F1OFS 0002 F2OFS 0003 F3OFS 0004 F4OFS +0005 F5OFS 0006 F6OFS 0007 F7OFS 0008 F8OFS 0001 FAILURE +0000 FALSE 0024 FCBLEN 0010 FCLOSE 0023 FCOMPSIZE 0013 FDELETE +0214 FINI 0016 FMAKE 000F FOPEN 0017 FRENAME 0218 LCOLON +0221 LDOT 0217 LDRIVE 0020 LENFCB 0222 LEXT 000A LF +0215 LFCBPTR 0219 LNAME 0225 LTERM 0010 LU1OFS 0011 LU2OFS +0010 MAXLABEL 0000 NEVER 0014 NLUOFS 00E5 OEMID 000D OFFOFS +0071 OPENOK 024C PARGV 0251 PCODE1 0254 PCODE2 0255 PCODE3 +0258 PCODE4 025B PCODE5 025C PCODE6 0261 PDAT 0249 PDAY +024E PE5 0232 PHEXRF 00A0 PLEN 0248 PMON 0269 PNAM +0265 PORIG 0263 PPROD 025F PPROG 024F PPRST 0000 PRDWORD +0000 PRHBYTE 0000 PRHWORD 005C PRIFCB 0009 PRINTSTR 0244 PRMJ +0245 PRMN 02CF PRSVD 0247 PRTP 0246 PRUP 0267 PSER +0242 PSIG 0230 PSTART 026B PTERM 024A PYEAR 0021 R0OFS +0022 R1OFS 0023 R2OFS 000F RCOFS 000A READCONBUF 0014 READSEQ +0025 RESETDRIVE 0019 RETCURR 000C RETVERNO 0002 RV1OFS 0004 RV2OFS +0006 RV3OFS 000D S1OFS 000E S2OFS 006C SECFCB 000E SELDSK +001A SETDMA 0024 SETRANDREC 0000 SPANISH 0000 SPTOFS 0200 STACKSIZE +0000 SUCCESS 0009 T1OFS 000A T2OFS 000B T3OFS 0000 TERMCPM +0001 TRUE 0002 WORDSIZE 0022 WRITERAND 0028 WRITERANDZF +0015 WRITESEQ 0000 XIDENT 0000 XLTOFS 0000 XMEMCPY 0000 XMEMSET + \ No newline at end of file diff --git a/Apps/crossdev/LABEL.DWG b/Apps/crossdev/LABEL.DWG new file mode 100644 index 00000000..cbf30794 --- /dev/null +++ b/Apps/crossdev/LABEL.DWG @@ -0,0 +1,3 @@ +RomWBW/branches/dwg/Apps/crossdev +1234567890123456789012345678901234 + 1 2 3 \ No newline at end of file diff --git a/Apps/crossdev/LABELIB.ASM b/Apps/crossdev/LABELIB.ASM new file mode 100644 index 00000000..85afc81e --- /dev/null +++ b/Apps/crossdev/LABELIB.ASM @@ -0,0 +1,217 @@ +; 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: + mov a,c + sta drive$num + + get$off + mov a,h + ora l + jnz off$ok + printf 'Sorry, you can only label drives with reserved tracks' + jmp main$exit +off$ok: + + lda drive$num + mov c,a + lxi h,buffer + call x$g$meta + + lda DEFBUF ! mov c,a + cpi 0 ! jnz x$lab2 + +; ; Interactive label functionality here... + +prompt: + ; signature exists so label should be displayable + + print old$lbl + +; print label + lxi h,buffer + lxi d,meta$label + dad d + push h + pop d + mvi c,PRINTSTR + call BDOS + + print crlf + print new$lbl + + mvi c,READ$CON$BUF + lxi d,rcbuff + call BDOS + lda rclen + cpi 0 + jnz length$ok + jmp main$exit +length$ok: + inr a + sta DEFBUF + mvi a,' ' + sta DEFBUF+1 + mov c,a + mvi b,0 + lxi h,rcdata + lxi d,DEFBUF+2 + ldir + + print crlf + + lda drive$num + 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. +; + mov a,c + sta drive$num + + + lxi h,buffer + lxi d,meta$label + dad d + mvi a,' ' + lxi b,meta$label$len ; max length of label + call x$memset + + lda DEFBUF ; pick up length of command tail + cpi 18 ; compare with max size of label + jc lenok ; jump if size is within limits + mvi a,17 ; specify maximum size + sta DEFBUF ; and poke into default buffer size byte + +lenok: lda DEFBUF ; pick up command tail size byte + dcr a ; decrement + + mov c,a ; move to c reg as counter + mvi b,0 + + lxi h,buffer + lxi d,meta$label + dad d + xchg + lxi h,DEFBUF+2 ; set source index for move + ldir + + lxi h,buffer + lxi d,meta$term + dad d + mvi a,'$' + mov m,a + + lda drive$num + mov c,a + + lxi h,buffer + call x$u$meta + cpi FAILURE + jz write$prot$err + + lxi h,buffer + call x$p$meta + + print suc$msg + + jmp main$exit + +write$prot$err: + print wr$prot$msg + jmp main$exit + +readerr: + print rd$err$msg + jmp main$exit + +writeerr: + print wr$err$msg + jmp main$exit + +dontboth: + print usage$msg + +main$exit: + ret + + dseg + +suc$msg db 'Label Written Successfully$' +rd$err$msg db 'Sorry, cannot read label sector$' +wr$err$msg db 'Sorry, cannot write label sector$' +wr$prot$msg db 'Sorry, metadata is write protected$' +usage$msg db 'usage - label