From 3ccb69b30f9739768fd4373fcb5cedbcc56ca493 Mon Sep 17 00:00:00 2001 From: davidly Date: Tue, 2 Jul 2024 07:07:59 -0700 Subject: [PATCH] Manx Aztec C86 v4.2b --- Manx Aztec C86 v42b/41DRELDOC.txt | 396 ++ Manx Aztec C86 v42b/ARC/BUILD.ARC | 890 +++ Manx Aztec C86 v42b/ARC/CPM86.ARC | 1438 ++++ Manx Aztec C86 v42b/ARC/DBG-README.txt | 13 + Manx Aztec C86 v42b/ARC/DBGMAP.C | 668 ++ Manx Aztec C86 v42b/ARC/DBGMAP.MAK | 12 + Manx Aztec C86 v42b/ARC/DOS20.ARC | 3922 +++++++++++ Manx Aztec C86 v42b/ARC/G.ARC | 876 +++ Manx Aztec C86 v42b/ARC/MATH.ARC | 5754 +++++++++++++++++ Manx Aztec C86 v42b/ARC/MCH86.ARC | 2227 +++++++ Manx Aztec C86 v42b/ARC/MISC.ARC | 1615 +++++ Manx Aztec C86 v42b/ARC/ROM.ASM | 117 + Manx Aztec C86 v42b/ARC/S.ARC | 424 ++ Manx Aztec C86 v42b/ARC/STDIO.ARC | 743 +++ Manx Aztec C86 v42b/ARC/TERM.ARC | 322 + Manx Aztec C86 v42b/AZTEC.BAT | 12 + .../Aztec C86 Command Prompt.lnk | Bin 0 -> 1765 bytes Manx Aztec C86 v42b/BIN/ARCV.COM | Bin 0 -> 4866 bytes Manx Aztec C86 v42b/BIN/AS.EXE | Bin 0 -> 51602 bytes Manx Aztec C86 v42b/BIN/AZ2OMF.EXE | Bin 0 -> 22834 bytes Manx Aztec C86 v42b/BIN/C.EXE | Bin 0 -> 10122 bytes Manx Aztec C86 v42b/BIN/CC.EXE | Bin 0 -> 57020 bytes Manx Aztec C86 v42b/BIN/CGEN.EXE | Bin 0 -> 97710 bytes Manx Aztec C86 v42b/BIN/CNM.EXE | Bin 0 -> 6526 bytes Manx Aztec C86 v42b/BIN/CPP.EXE | Bin 0 -> 20252 bytes Manx Aztec C86 v42b/BIN/CRC.EXE | Bin 0 -> 4394 bytes Manx Aztec C86 v42b/BIN/CTAGS.COM | Bin 0 -> 5198 bytes Manx Aztec C86 v42b/BIN/CTOENG.COM | Bin 0 -> 11422 bytes Manx Aztec C86 v42b/BIN/DB.EXE | Bin 0 -> 41746 bytes Manx Aztec C86 v42b/BIN/DBGMAP.EXE | Bin 0 -> 11996 bytes Manx Aztec C86 v42b/BIN/DIFF.EXE | Bin 0 -> 7102 bytes Manx Aztec C86 v42b/BIN/ENGTOC.COM | Bin 0 -> 5914 bytes Manx Aztec C86 v42b/BIN/GREP.EXE | Bin 0 -> 6706 bytes Manx Aztec C86 v42b/BIN/HD.COM | Bin 0 -> 2876 bytes Manx Aztec C86 v42b/BIN/HEX86.EXE | Bin 0 -> 10876 bytes Manx Aztec C86 v42b/BIN/INITSDB.COM | Bin 0 -> 12126 bytes Manx Aztec C86 v42b/BIN/INSTALL.COM | Bin 0 -> 16050 bytes Manx Aztec C86 v42b/BIN/LB.EXE | Bin 0 -> 12384 bytes Manx Aztec C86 v42b/BIN/LN.EXE | Bin 0 -> 37920 bytes Manx Aztec C86 v42b/BIN/LS.COM | Bin 0 -> 6574 bytes Manx Aztec C86 v42b/BIN/MAKE.EXE | Bin 0 -> 27174 bytes Manx Aztec C86 v42b/BIN/OBD.EXE | Bin 0 -> 8786 bytes Manx Aztec C86 v42b/BIN/OBJ.EXE | Bin 0 -> 15522 bytes Manx Aztec C86 v42b/BIN/OBJI.EXE | Bin 0 -> 18536 bytes Manx Aztec C86 v42b/BIN/OMFDMP.EXE | Bin 0 -> 19956 bytes Manx Aztec C86 v42b/BIN/ORD.EXE | Bin 0 -> 7194 bytes Manx Aztec C86 v42b/BIN/PROF.EXE | Bin 0 -> 12920 bytes Manx Aztec C86 v42b/BIN/PROTO.EXE | Bin 0 -> 41108 bytes Manx Aztec C86 v42b/BIN/RM.EXE | Bin 0 -> 1938 bytes Manx Aztec C86 v42b/BIN/SDB.EXE | Bin 0 -> 101948 bytes Manx Aztec C86 v42b/BIN/SQZ.EXE | Bin 0 -> 10280 bytes Manx Aztec C86 v42b/BIN/TERM.EXE | Bin 0 -> 4678 bytes Manx Aztec C86 v42b/BIN/Z.EXE | Bin 0 -> 45578 bytes Manx Aztec C86 v42b/BIN/rm.c | 13 + Manx Aztec C86 v42b/CRCLIST | 108 + Manx Aztec C86 v42b/EXMPL.C | 9 + Manx Aztec C86 v42b/INCLUDE/ASSERT.H | 10 + Manx Aztec C86 v42b/INCLUDE/COLOR.H | 13 + Manx Aztec C86 v42b/INCLUDE/CTYPE.H | 23 + Manx Aztec C86 v42b/INCLUDE/DIOCTL.H | 26 + Manx Aztec C86 v42b/INCLUDE/ERRNO.H | 29 + Manx Aztec C86 v42b/INCLUDE/FCNTL.H | 13 + Manx Aztec C86 v42b/INCLUDE/FLOAT.H | 32 + Manx Aztec C86 v42b/INCLUDE/IO.H | 82 + Manx Aztec C86 v42b/INCLUDE/LIBC.H | 49 + Manx Aztec C86 v42b/INCLUDE/LIMITS.H | 21 + Manx Aztec C86 v42b/INCLUDE/LMACROS.H | 210 + Manx Aztec C86 v42b/INCLUDE/LOCALE.H | 11 + Manx Aztec C86 v42b/INCLUDE/MATH.H | 24 + Manx Aztec C86 v42b/INCLUDE/MEMORY.H | 2 + Manx Aztec C86 v42b/INCLUDE/MODEL.H | 7 + Manx Aztec C86 v42b/INCLUDE/SETJMP.H | 9 + Manx Aztec C86 v42b/INCLUDE/SGTTY.H | 19 + Manx Aztec C86 v42b/INCLUDE/SIGNAL.H | 32 + Manx Aztec C86 v42b/INCLUDE/STAT.H | 29 + Manx Aztec C86 v42b/INCLUDE/STDARG.H | 6 + Manx Aztec C86 v42b/INCLUDE/STDDEF.H | 14 + Manx Aztec C86 v42b/INCLUDE/STDIO.H | 74 + Manx Aztec C86 v42b/INCLUDE/STDLIB.H | 57 + Manx Aztec C86 v42b/INCLUDE/STRING.H | 48 + Manx Aztec C86 v42b/INCLUDE/TIME.H | 34 + Manx Aztec C86 v42b/LIB/C.LIB | Bin 0 -> 38912 bytes Manx Aztec C86 v42b/LIB/C86.LIB | Bin 0 -> 29312 bytes Manx Aztec C86 v42b/LIB/CL.LIB | Bin 0 -> 42496 bytes Manx Aztec C86 v42b/LIB/CLC.LIB | Bin 0 -> 38656 bytes Manx Aztec C86 v42b/LIB/CLD.LIB | Bin 0 -> 42368 bytes Manx Aztec C86 v42b/LIB/CRT0.OBJ | Bin 0 -> 400 bytes Manx Aztec C86 v42b/LIB/EXMPL.C | 9 + Manx Aztec C86 v42b/LIB/G.LIB | Bin 0 -> 4992 bytes Manx Aztec C86 v42b/LIB/GL.LIB | Bin 0 -> 4992 bytes Manx Aztec C86 v42b/LIB/GLC.LIB | Bin 0 -> 4992 bytes Manx Aztec C86 v42b/LIB/GLD.LIB | Bin 0 -> 4992 bytes Manx Aztec C86 v42b/LIB/LCROM.O | Bin 0 -> 443 bytes Manx Aztec C86 v42b/LIB/LDROM.O | Bin 0 -> 443 bytes Manx Aztec C86 v42b/LIB/LROM.O | Bin 0 -> 443 bytes Manx Aztec C86 v42b/LIB/M.LIB | Bin 0 -> 24704 bytes Manx Aztec C86 v42b/LIB/M87.LIB | Bin 0 -> 17280 bytes Manx Aztec C86 v42b/LIB/M87L.LIB | Bin 0 -> 17664 bytes Manx Aztec C86 v42b/LIB/M87LC.LIB | Bin 0 -> 17408 bytes Manx Aztec C86 v42b/LIB/M87LD.LIB | Bin 0 -> 17536 bytes Manx Aztec C86 v42b/LIB/M87S.LIB | Bin 0 -> 26240 bytes Manx Aztec C86 v42b/LIB/M87SL.LIB | Bin 0 -> 26624 bytes Manx Aztec C86 v42b/LIB/M87SLC.LIB | Bin 0 -> 26624 bytes Manx Aztec C86 v42b/LIB/M87SLD.LIB | Bin 0 -> 26624 bytes Manx Aztec C86 v42b/LIB/ML.LIB | Bin 0 -> 25088 bytes Manx Aztec C86 v42b/LIB/MLC.LIB | Bin 0 -> 25088 bytes Manx Aztec C86 v42b/LIB/MLD.LIB | Bin 0 -> 25088 bytes Manx Aztec C86 v42b/LIB/OVBGN.O | Bin 0 -> 256 bytes Manx Aztec C86 v42b/LIB/OVLD.O | Bin 0 -> 674 bytes Manx Aztec C86 v42b/LIB/OVLDPATH.O | Bin 0 -> 809 bytes Manx Aztec C86 v42b/LIB/ROM.O | Bin 0 -> 443 bytes Manx Aztec C86 v42b/LIB/S.LIB | Bin 0 -> 5632 bytes Manx Aztec C86 v42b/LIB/SL.LIB | Bin 0 -> 5760 bytes Manx Aztec C86 v42b/LIB/SLC.LIB | Bin 0 -> 5760 bytes Manx Aztec C86 v42b/LIB/SLD.LIB | Bin 0 -> 5632 bytes Manx Aztec C86 v42b/LIB/STKSIZ.C | 21 + Manx Aztec C86 v42b/MAKEFILE | 11 + Manx Aztec C86 v42b/README.txt | 104 + Manx Aztec C86 v42b/SAMPLES/BATCH/BATCH.C | 451 ++ Manx Aztec C86 v42b/SAMPLES/BATCH/MAKEFILE | 11 + .../SAMPLES/BSAVEINC/BSAVEINC.C | 251 + .../SAMPLES/BSAVEINC/DINER.BSV | Bin 0 -> 4007 bytes Manx Aztec C86 v42b/SAMPLES/BSAVEINC/MAKEFILE | 11 + Manx Aztec C86 v42b/SAMPLES/BSV2TXT/BSV2TXT.C | 62 + Manx Aztec C86 v42b/SAMPLES/BSV2TXT/DOZY.BSV | Bin 0 -> 4008 bytes Manx Aztec C86 v42b/SAMPLES/BSV2TXT/MAKEFILE | 11 + Manx Aztec C86 v42b/SAMPLES/PTXMAKE/MAKEFILE | 11 + Manx Aztec C86 v42b/SAMPLES/PTXMAKE/PTXMAKE.C | 288 + .../SAMPLES/PTXMAKE/SPACEBAR.BSV | Bin 0 -> 4007 bytes Manx Aztec C86 v42b/SAMPLES/SAMPLES.TXT | 25 + Manx Aztec C86 v42b/SAMPLES/TEXTVU/MAKEFILE | 11 + .../SAMPLES/TEXTVU/PICTURES/DOORS1.PTX | Bin 0 -> 1058 bytes .../SAMPLES/TEXTVU/PICTURES/FAREWELL.PTX | Bin 0 -> 1144 bytes .../SAMPLES/TEXTVU/PICTURES/FRANK.PTX | Bin 0 -> 1251 bytes .../SAMPLES/TEXTVU/PICTURES/GEORGE.PTX | Bin 0 -> 959 bytes .../SAMPLES/TEXTVU/PICTURES/HAL.PTX | Bin 0 -> 918 bytes .../SAMPLES/TEXTVU/PICTURES/HAROLD.PTX | Bin 0 -> 1318 bytes .../SAMPLES/TEXTVU/PICTURES/KEYBORED.PTX | Bin 0 -> 1531 bytes .../SAMPLES/TEXTVU/PICTURES/MSW.PTX | Bin 0 -> 2037 bytes .../SAMPLES/TEXTVU/PICTURES/SDNLOGON.PTX | Bin 0 -> 1187 bytes .../SAMPLES/TEXTVU/PICTURES/SOUP.PTX | Bin 0 -> 668 bytes .../SAMPLES/TEXTVU/PICTURES/TREK.PTX | Bin 0 -> 1421 bytes Manx Aztec C86 v42b/SAMPLES/TEXTVU/TEXTVU.C | 136 + Manx Aztec C86 v42b/code/E.C | 35 + Manx Aztec C86 v42b/code/SIEVE.C | 35 + Manx Aztec C86 v42b/code/TM.C | 165 + Manx Aztec C86 v42b/code/TTT.C | 537 ++ Manx Aztec C86 v42b/code/m.bat | 4 + 148 files changed, 22622 insertions(+) create mode 100644 Manx Aztec C86 v42b/41DRELDOC.txt create mode 100644 Manx Aztec C86 v42b/ARC/BUILD.ARC create mode 100644 Manx Aztec C86 v42b/ARC/CPM86.ARC create mode 100644 Manx Aztec C86 v42b/ARC/DBG-README.txt create mode 100644 Manx Aztec C86 v42b/ARC/DBGMAP.C create mode 100644 Manx Aztec C86 v42b/ARC/DBGMAP.MAK create mode 100644 Manx Aztec C86 v42b/ARC/DOS20.ARC create mode 100644 Manx Aztec C86 v42b/ARC/G.ARC create mode 100644 Manx Aztec C86 v42b/ARC/MATH.ARC create mode 100644 Manx Aztec C86 v42b/ARC/MCH86.ARC create mode 100644 Manx Aztec C86 v42b/ARC/MISC.ARC create mode 100644 Manx Aztec C86 v42b/ARC/ROM.ASM create mode 100644 Manx Aztec C86 v42b/ARC/S.ARC create mode 100644 Manx Aztec C86 v42b/ARC/STDIO.ARC create mode 100644 Manx Aztec C86 v42b/ARC/TERM.ARC create mode 100644 Manx Aztec C86 v42b/AZTEC.BAT create mode 100644 Manx Aztec C86 v42b/Aztec C86 Command Prompt.lnk create mode 100644 Manx Aztec C86 v42b/BIN/ARCV.COM create mode 100644 Manx Aztec C86 v42b/BIN/AS.EXE create mode 100644 Manx Aztec C86 v42b/BIN/AZ2OMF.EXE create mode 100644 Manx Aztec C86 v42b/BIN/C.EXE create mode 100644 Manx Aztec C86 v42b/BIN/CC.EXE create mode 100644 Manx Aztec C86 v42b/BIN/CGEN.EXE create mode 100644 Manx Aztec C86 v42b/BIN/CNM.EXE create mode 100644 Manx Aztec C86 v42b/BIN/CPP.EXE create mode 100644 Manx Aztec C86 v42b/BIN/CRC.EXE create mode 100644 Manx Aztec C86 v42b/BIN/CTAGS.COM create mode 100644 Manx Aztec C86 v42b/BIN/CTOENG.COM create mode 100644 Manx Aztec C86 v42b/BIN/DB.EXE create mode 100644 Manx Aztec C86 v42b/BIN/DBGMAP.EXE create mode 100644 Manx Aztec C86 v42b/BIN/DIFF.EXE create mode 100644 Manx Aztec C86 v42b/BIN/ENGTOC.COM create mode 100644 Manx Aztec C86 v42b/BIN/GREP.EXE create mode 100644 Manx Aztec C86 v42b/BIN/HD.COM create mode 100644 Manx Aztec C86 v42b/BIN/HEX86.EXE create mode 100644 Manx Aztec C86 v42b/BIN/INITSDB.COM create mode 100644 Manx Aztec C86 v42b/BIN/INSTALL.COM create mode 100644 Manx Aztec C86 v42b/BIN/LB.EXE create mode 100644 Manx Aztec C86 v42b/BIN/LN.EXE create mode 100644 Manx Aztec C86 v42b/BIN/LS.COM create mode 100644 Manx Aztec C86 v42b/BIN/MAKE.EXE create mode 100644 Manx Aztec C86 v42b/BIN/OBD.EXE create mode 100644 Manx Aztec C86 v42b/BIN/OBJ.EXE create mode 100644 Manx Aztec C86 v42b/BIN/OBJI.EXE create mode 100644 Manx Aztec C86 v42b/BIN/OMFDMP.EXE create mode 100644 Manx Aztec C86 v42b/BIN/ORD.EXE create mode 100644 Manx Aztec C86 v42b/BIN/PROF.EXE create mode 100644 Manx Aztec C86 v42b/BIN/PROTO.EXE create mode 100644 Manx Aztec C86 v42b/BIN/RM.EXE create mode 100644 Manx Aztec C86 v42b/BIN/SDB.EXE create mode 100644 Manx Aztec C86 v42b/BIN/SQZ.EXE create mode 100644 Manx Aztec C86 v42b/BIN/TERM.EXE create mode 100644 Manx Aztec C86 v42b/BIN/Z.EXE create mode 100644 Manx Aztec C86 v42b/BIN/rm.c create mode 100644 Manx Aztec C86 v42b/CRCLIST create mode 100644 Manx Aztec C86 v42b/EXMPL.C create mode 100644 Manx Aztec C86 v42b/INCLUDE/ASSERT.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/COLOR.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/CTYPE.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/DIOCTL.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/ERRNO.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/FCNTL.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/FLOAT.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/IO.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/LIBC.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/LIMITS.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/LMACROS.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/LOCALE.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/MATH.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/MEMORY.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/MODEL.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/SETJMP.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/SGTTY.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/SIGNAL.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/STAT.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/STDARG.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/STDDEF.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/STDIO.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/STDLIB.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/STRING.H create mode 100644 Manx Aztec C86 v42b/INCLUDE/TIME.H create mode 100644 Manx Aztec C86 v42b/LIB/C.LIB create mode 100644 Manx Aztec C86 v42b/LIB/C86.LIB create mode 100644 Manx Aztec C86 v42b/LIB/CL.LIB create mode 100644 Manx Aztec C86 v42b/LIB/CLC.LIB create mode 100644 Manx Aztec C86 v42b/LIB/CLD.LIB create mode 100644 Manx Aztec C86 v42b/LIB/CRT0.OBJ create mode 100644 Manx Aztec C86 v42b/LIB/EXMPL.C create mode 100644 Manx Aztec C86 v42b/LIB/G.LIB create mode 100644 Manx Aztec C86 v42b/LIB/GL.LIB create mode 100644 Manx Aztec C86 v42b/LIB/GLC.LIB create mode 100644 Manx Aztec C86 v42b/LIB/GLD.LIB create mode 100644 Manx Aztec C86 v42b/LIB/LCROM.O create mode 100644 Manx Aztec C86 v42b/LIB/LDROM.O create mode 100644 Manx Aztec C86 v42b/LIB/LROM.O create mode 100644 Manx Aztec C86 v42b/LIB/M.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87L.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87LC.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87LD.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87S.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87SL.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87SLC.LIB create mode 100644 Manx Aztec C86 v42b/LIB/M87SLD.LIB create mode 100644 Manx Aztec C86 v42b/LIB/ML.LIB create mode 100644 Manx Aztec C86 v42b/LIB/MLC.LIB create mode 100644 Manx Aztec C86 v42b/LIB/MLD.LIB create mode 100644 Manx Aztec C86 v42b/LIB/OVBGN.O create mode 100644 Manx Aztec C86 v42b/LIB/OVLD.O create mode 100644 Manx Aztec C86 v42b/LIB/OVLDPATH.O create mode 100644 Manx Aztec C86 v42b/LIB/ROM.O create mode 100644 Manx Aztec C86 v42b/LIB/S.LIB create mode 100644 Manx Aztec C86 v42b/LIB/SL.LIB create mode 100644 Manx Aztec C86 v42b/LIB/SLC.LIB create mode 100644 Manx Aztec C86 v42b/LIB/SLD.LIB create mode 100644 Manx Aztec C86 v42b/LIB/STKSIZ.C create mode 100644 Manx Aztec C86 v42b/MAKEFILE create mode 100644 Manx Aztec C86 v42b/README.txt create mode 100644 Manx Aztec C86 v42b/SAMPLES/BATCH/BATCH.C create mode 100644 Manx Aztec C86 v42b/SAMPLES/BATCH/MAKEFILE create mode 100644 Manx Aztec C86 v42b/SAMPLES/BSAVEINC/BSAVEINC.C create mode 100644 Manx Aztec C86 v42b/SAMPLES/BSAVEINC/DINER.BSV create mode 100644 Manx Aztec C86 v42b/SAMPLES/BSAVEINC/MAKEFILE create mode 100644 Manx Aztec C86 v42b/SAMPLES/BSV2TXT/BSV2TXT.C create mode 100644 Manx Aztec C86 v42b/SAMPLES/BSV2TXT/DOZY.BSV create mode 100644 Manx Aztec C86 v42b/SAMPLES/BSV2TXT/MAKEFILE create mode 100644 Manx Aztec C86 v42b/SAMPLES/PTXMAKE/MAKEFILE create mode 100644 Manx Aztec C86 v42b/SAMPLES/PTXMAKE/PTXMAKE.C create mode 100644 Manx Aztec C86 v42b/SAMPLES/PTXMAKE/SPACEBAR.BSV create mode 100644 Manx Aztec C86 v42b/SAMPLES/SAMPLES.TXT create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/MAKEFILE create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/DOORS1.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/FAREWELL.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/FRANK.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/GEORGE.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/HAL.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/HAROLD.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/KEYBORED.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/MSW.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/SDNLOGON.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/SOUP.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/TREK.PTX create mode 100644 Manx Aztec C86 v42b/SAMPLES/TEXTVU/TEXTVU.C create mode 100644 Manx Aztec C86 v42b/code/E.C create mode 100644 Manx Aztec C86 v42b/code/SIEVE.C create mode 100644 Manx Aztec C86 v42b/code/TM.C create mode 100644 Manx Aztec C86 v42b/code/TTT.C create mode 100644 Manx Aztec C86 v42b/code/m.bat diff --git a/Manx Aztec C86 v42b/41DRELDOC.txt b/Manx Aztec C86 v42b/41DRELDOC.txt new file mode 100644 index 0000000..0ebbcfa --- /dev/null +++ b/Manx Aztec C86 v42b/41DRELDOC.txt @@ -0,0 +1,396 @@ + + + + + Aztec C86, version 4.10d + Release Document + 26 Oct 88 + + This "readme" file describes what's new version 4.10d of Aztec C86. For + more information on Aztec C86, see the printed release documents for + versions 4.10a and 4.10c. In particular, these printed documents contain + packaging information and describe features in Aztec C86 that have been + added since the manual was last printed. + + Version 4.10d of Aztec C86 differs from version 4.10c in the following + ways: (1) sdb has been enhanced; and (2) bugs have been fixed. + + The programs and functions that have had bugs fixed are: + + * cc + * cgen + * as + * z + * hex86 + * signal() and raise() + * all libraries + + The new versions of cc, cgen, and as must be used together; you can't, + for example, use v4.10c of cc with v4.10d of cgen. + + The following paragraphs describe the new features of sdb. + + + 1. SDB: New Features + + Version 4.10d of sdb has the following new features: + + * Separate virtual screens for sdb and the program being debugged are + now required. + * sdb's screen is now formatted, with different sections of the screen + being used for different purposes. + * The Microsoft mouse, and compatibles, are now supported by sdb. + * A new program, initsdb, is used to configure sdb. THIS PROGRAM MUST BE + RUN BEFORE SDB. + * A new environment variable, SDBOPT, can be used to pass options to + sdb. + * sdb's bm command (memory-change breakpoint) now works. + * The new be command sets an expression breakpoint. When the specified + expression is true, a breakpoint is taken. + * sdb now supports the 43-line mode of EGA display adaptors. + * The -w option has been changed. It now suppresses restoration of the + program screen when single-stepping, thus reducing screen flicker. The + old meaning of -w has been taken over by the new -p option. + * The w command has been changed. It now toggles screen restoration + mode. For example, if screen restoration was disabled, the w command + disables it. + * The new -p option, defines the display page that sdb is to use for its + screen. + * The new -m option defines the memory address at which the display + memory begins. + + + + Page 1 + + + + + Aztec C86, v4.10d Release Document + + The following paragraphs describe these features in detail. + + 1.1 Virtual screens + + Separate virtual screens for sdb and the program being debugged are now + required. sdb uses one virtual screen to display its information and to get + operator commands, and the program uses the other. + + As with previous versions of sdb, virtual screens can either be stored in + display adaptor pages or in sdb buffers: + + Virtual screens can be stored in a display adaptor page, if the + display adaptor has multiple pages. (The CGA is one such adaptor). + sdb's screen is stored in one page, and the program is free to use any + other page. Screen swapping is fast, since to switch the display from + one virtual screen to the other, sdb simply outputs a single command + to the display adaptor. + + Virtual screens can be stored in sdb buffers, if the display adaptor + has only one display page; it can also be used if you want sdb to + share display page 0 with the program that's being debugged. To switch + the display from one virtual screen to the other, sdb stores the + screen page in one of its buffers, and restores the virtual screen + that's in the other buffer. + + You define the display type when you run initsdb. If the display contains + only one page, then sdb will automatically store virtual pages in its own + buffers. If the display contains multiple pages you tell initsdb where + virtual screens are to be stored. If display pages are to be used, you tell + initsdb the page that sdb is to use; this can be overriden when sdb is + started, using the new -p option. + + The -p option has the form -px, where x is the number of the page that + sdb is to use. + + 1.2 Formatted Screen + + sdb's virtual screen is now formatted, with different sections of the + screen displaying different information, as follows: + + * The top line lists the name of the source file currently being + displayed, and specifies whether sdb is in source or assembly mode. + * The next few lines display lines in the current source file. These + lines act like a window into the source file, a window that can be + moved (as described below) to display different sections of the source + file. + * The next line is used to enter and display commands. sdb maintains a + log of commands, and this line acts like a window into that log. You + can move the window around within the log, and then easily rexecute a + previously-entered command. + * The remaining lines are used for sdb output. sdb remembers data that + it has previously displayed, and these lines act like a window onto + that data, a window that can be moved to recall different sections of + the displayed data. + * The rightmost column contains a scroll bar and other features that are + used with a mouse. + + + + + + Page 2 + + + + + Aztec C86, v4.10d Release Document + + 1.3 Keys used to manipulate sdb + + Function keys and cursor-motion keys have meaning to sdb, as follows: + + Key Meaning + F1 Scroll source window up one line + F2 Scroll source window down one line + F3 Move command line up one line (also makes source window + one line smaller and data window one line larger) + F4 Move command line down one line (also makes source + window one line larger and data window one line + smaller) + F5 Scroll data window up one line + F6 Scroll data window down one line + Alt-F1 Move source window to the top of the source file + Alt-F2 Move source window to the bottom of the source file + Alt-F3 Move the command line to the top of the screen + Alt-F4 Move the command line to the bottom of the screen + Alt-F5 Move the data window to the top of the data buffer + Alt-F6 Move the data window to the bottom of the data buffer + Shift-F1 Move the source window to the position at which it was + located before the previous Alt-F1 or Alt-F2 + Shift-F2 Same as Shift-F1 + Shift-F3 Move the command line to the position at which it was + located before the previous Alt-F3 or Alt-F4 + Shift-F4 Same as Shift-F3 + Shift-F5 Move the data window to the position at which it was + located before the previous Alt-F5 or Alt-F6 + Shift-F6 Same as Shift-F5 + F9 Scroll source window to current source line + F10 Toggle between Source and Assembly modes + PgUp Move the source window up one page + PgDn Move the source window down one page + Up arrow Move command window up one line in the command log + Dn arrow Move command window down one line in the command log + Left arrow + Move cursor left one character on the command line + Right arrow + Move cursor right one character on the command line + Delete Delete the character on the command line that's under + the cursor + Home Move the cursor to the beginning of the command line + End Move the cursor to the end of the command line + Escape Display the other virtual screen + Right single quote + Same as Escape + Control-L Redraw the screen + + 1.4 Using a mouse + + There are three sections of the sdb screen in which a mouse can be used: + the scroll bar at the right of the screen, the top line of the screen, and + the command line. These sections are described in the following paragraphs. + + + + + + + Page 3 + + + + + Aztec C86, v4.10d Release Document + + 1.4.1 The scroll bar + + The scroll bar has three sections. The box in the middle of the bar with + the up and down triangles positions the command line on the screen, and + hence indirectly controls the size of the source and data windows. The area + above the triangles positions the source window; the area below the + triangles positions the data window. + + 1.4.1.1 Moving the command line + + To move the command line with the mouse, move the mouse cursor to the box + that contains the triangles. Press and hold the left mouse button, drag the + cursor to the desired location, and release the mouse button. + + 1.4.1.2 Positioning the source window + + The area of the scroll bar that positions the source window contains a + solid rectangle; this indicates the current position of the window within + the source file. When the rectangle is at the top of the area, the window + is at the top of the file; when the rectangle is at the bottom of the area, + the window is at the bottom of the file; and so on. Using the mouse, you + can move the rectangle within the scroll bar; this causes the source window + to move the source window within the source file. To do this, put the mouse + cursor in the rectangle, press and hold the left mouse button, move the + mouse cursor to the desired position in the scroll bar, and release the + button. + + At the top of the source window's section of the scroll bar are two + upward-facing arrows. To scroll the source window up a line at a line, move + the mouse cursor to the arrows, press and hold the left mouse button. The + source window will begin scrolling upward. When it reaches the desired + location, release the button. + + At the bottom of the source window's section of the scroll bar are two + downward-facing arrows. They are used to scroll the source window down a + line at a time, in a manner analagous to the up arrows. + + To move the source window up a page, move the mouse cursor somewhere + below the up arrows and above the rectangle, and click the left mouse + button. + + To move the source window down a page, move the mouse cursor somewhere + above the down arrows and below the rectangle, and click the left mouse + button. + + To move the source window to the beginning or end of the source file, + move the mouse cursor to the up or down arrows, respectively, and click + both mouse buttons. + + 1.4.1.3 Positioning the data window + + The data window's section of the scroll bar looks just like the source + window's, and is used in the same way. For example, (1) the rectangle + indicates the position of the window in the data buffer and can be used to + move to the data window within the data buffer; (2) the up arrows scroll + the data window up in the data buffer one line; (3) the down arrows scroll + the data window down one line; (4) and so on. + + + Page 4 + + + + + Aztec C86, v4.10d Release Document + + 1.4.2 Using the mouse on the top line + + The top line of sdb's virtual screen has a section that specifies whether + sdb is in source or assembly mode, and a section that lists the file that's + currently displayed in the source window. To use the mouse to toggle + between source and assembly mode, move the mouse cursor to the top line's + source/assembly mode section and click the left mouse button. + + To move the source window back to the source line at which execution is + currently stopped, move the mouse cursor to the top line's source file + section and click the left mouse button. + + 1.4.3 Using the mouse on the command line + + The mouse can be used to position the text cursor on the command line. To + do this, just move the mouse cursor to the desired location and click the + left mouse button. + + 1.4.4 Switching screens with the mouse + + The mouse can be used to switch the display from one virtual screen to + another: just click the right mouse button. + + 1.5 The SDBOPT environment variable + + The SDBOPT environment variable can be used to pass frequently-used + options to sdb, without having to explicitly list them on the command line + when sdb is started. + + For example, if you always want the -p2 option to be specified when sdb + is started, you could set SDBOPT like this: + + set SDBOPT=-p2 + + 1.6 The initsdb utility + + The initsdb utility is used to define the attributes of your monitor to + sdb and the way you want the lines on sdb's virtual screen to appear. The + information you select is written to a file named sdb.ini. + + 1.6.1 Using initsdb + + initsdb's screen is organized into four sections. The top three sections + are used to set options, and the bottom section summarizes the keys that + you can use with initsdb. The three option-selecting sections are entitled + Basic Options, Advanced Options, and Color selection. Selections are + toggled using the key. + + In the Basic Options section you define the type of monitor you have, and + for CGA monitors, whether you want "snow" removed. This section also has + options that you select to write your choices to the sdb.ini file, to abort + without writing anything, and to quit after writing. + + In the Color Selection section you define the attributes of the various + lines that appear on sdb's screen; i.e. the foreground and background color + of each type of line. There are five lines in the Color Selection section, + each of which corresponds to one type of line on the sdb screen. To select + the attributes of a line, move the cursor to a line; then type 'f' or 'F' + + Page 5 + + + + + Aztec C86, v4.10d Release Document + + to advance or decrement the line's forground color. Type 'b' or 'B' to + advance or decrement the line's background color. + + The Advanced Options section contains several display-dependent options. + You are only allowed to change the ones that are relevant to your monitor. + For example, if you have an EGA monitor, you can select the option that + causes sdb to use a 43 line screen. If you have a CGA monitor, you can + select whether you want sdb and the program that's being debugged to share + the same display page or whether you want sdb and the program to each have + a separate display page. + + 1.6.2 The sdb.ini file + + Configuration options are stored in a file named sdb.ini. When sdb and + initsdb start, they look for this file first in the current drive's current + directory, and then in the directories specified in the PATH environment + variable. + + initsdb writes configuration options back to the same file; if it didn't + find an sdb.ini file, it writes the options to an sdb.ini file in the + current directory. + + 1.7 Summary of new and changed sdb options + + Here is a summary of the new sdb options: + + -px On a CGA monitor, have sdb use page x for its screen. + -mx Display memory begins at paragraph x, where x is a + hexadecimal number. If this option isn't used, sdb will use + the standard value for your type of display. + -w When single-stepping, don't restore the program's screen. + + 1.8 Summary of new and changed commands + + Here is a summary of the sdb commands that are new or have changed: + + w Toggle screen restoration mode. + be Set or remove a memory change breakpoint + + + + + + + + + + + + + + + + + + + + + + Page 6 + + diff --git a/Manx Aztec C86 v42b/ARC/BUILD.ARC b/Manx Aztec C86 v42b/ARC/BUILD.ARC new file mode 100644 index 0000000..5267db9 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/BUILD.ARC @@ -0,0 +1,890 @@ + build.bat +echo off +if NOT '%1'=='RESTART' goto makeall +shift +goto %RESTART% +:makeall +make clean +:SMALL +set RESTART=SMALL +make MODEL= AMODEL=0 %1 %2 %3 %4 %5 %6 +if ERRORLEVEL 1 goto quit +make clean +:COMPACT +set RESTART=COMPACT +make MODEL=lc AMODEL=1 %1 %2 %3 %4 %5 %6 +if ERRORLEVEL 1 goto quit +make clean +:MEDIUM +set RESTART=MEDIUM +make MODEL=ld AMODEL=2 %1 %2 %3 %4 %5 %6 +if ERRORLEVEL 1 goto quit +make clean +:LARGE +set RESTART=LARGE +make MODEL=l AMODEL=3 %1 %2 %3 %4 %5 %6 +if ERRORLEVEL 1 goto quit +make clean +set RESTART= +echo All models built OK. +goto done +:quit +echo Build failed making %RESTART% model libraries. +echo To restart build type "build RESTART [parameters]" +:done + c.bld +dos20/dosdir.o +dos20/monitor.o +dos20/profil.o +stdio/tmpfile.o +stdio/perror.o +stdio/fdopen.o +stdio/fgets.o +stdio/assert.o +stdio/fprintf.o +stdio/fputs.o +stdio/fread.o +stdio/fscanf.o +stdio/fseek.o +stdio/gets.o +stdio/getchar.o +stdio/getw.o +stdio/puterr.o +stdio/puts.o +stdio/putw.o +stdio/scanf.o +stdio/agetc.o +stdio/getc.o +stdio/setbuf.o +stdio/ungetc.o +stdio/tmpnam.o +stdio/mktemp.o +misc/atoi.o +misc/atol.o +misc/calloc.o +misc/lcalloc.o +misc/qsort.o +misc/sscanf.o +misc/scan.o +misc/rand.o +misc/abort.o +misc/raise.o +dos20/bdos.o +dos20/bdosx.o +dos20/chmod.o +dos20/csread.o +dos20/ctime.o +dos20/asctime.o +dos20/dostime.o +dos20/dup.o +dos20/execl.o +dos20/execlp.o +dos20/execvp.o +dos20/execv.o +dos20/exec.o +dos20/fexecl.o +dos20/fexecv.o +dos20/fcbinit.o +dos20/getcwd.o +dos20/ioctl.o +dos20/dioctl.o +dos20/localtim.o +dos20/mkdir.o +dos20/stat.o +dos20/system.o +misc/sprintf.o +dos20/fexec.o +dos20/getenv.o +dos20/utime.o +dos20/ftime.o +dos20/time.o +dos20/wait.o +dos20/access.o +mch86/cswt.o +mch86/cswit.o +mch86/clswit.o +mch86/farcall.o +mch86/fcall.o +mch86/index.o +mch86/olsubs.o +mch86/movblock.o +mch86/peek.o +mch86/port.o +mch86/rindex.o +mch86/segread.o +mch86/setjmp.o +mch86/setmem.o +mch86/strcat.o +mch86/strcpy.o +mch86/strncpy.o +mch86/strstr.o +mch86/stricmp.o +mch86/strlwr.o +mch86/strrev.o +mch86/swapmem.o +dos20/lmalloc.o +mch86/sysint.o +mch86/toupper.o +mch86/csav.o +dos20/dos.o +dos20/dosx.o +mch86/memccpy.o +mch86/memchr.o +mch86/memcmp.o +mch86/memcpy.o +mch86/memset.o +dos20/syserr.o +mch86/pointers.o +mch86/fptrs.o +mch86/ptradd.o +mch86/strchr.o +mch86/strrchr.o +dos20/clock.o +misc/signal.o +dos20/sighand.o +dos20/sigfix.o +misc/sigtable.o +dos20/mon.o +dos20/clk.o +stdio/fopen.o +stdio/fwrite.o +stdio/printf.o +stdio/putchar.o +stdio/aputc.o +stdio/putc.o +stdio/getbuff.o +misc/malloc.o +misc/format.o +misc/ctype.o +dos20/open.o +mch86/lsubs.o +mch86/strcmp.o +mch86/strlen.o +dos20/sys.o +mch86/ptrdiff.o +dos20/sbegin.o +dos20/croot.o +mch86/fltstub.o +dos20/stkover.o +dos20/stksiz.o +dos20/io.o +dos20/ttyio.o +mch86/movmem.o +dos20/isatty.o +dos20/ssbrk.o +dos20/filelock.o + c86.bld +stdio/tmpfile.o +stdio/perror.o +stdio/fdopen.o +stdio/fgets.o +stdio/fopen.o +stdio/assert.o +stdio/fprintf.o +stdio/fputs.o +stdio/fread.o +stdio/fscanf.o +stdio/fseek.o +stdio/fwrite.o +stdio/gets.o +stdio/getchar.o +stdio/getw.o +stdio/printf.o +stdio/puterr.o +stdio/puts.o +stdio/putchar.o +stdio/aputc.o +stdio/putw.o +stdio/putc.o +stdio/scanf.o +stdio/agetc.o +stdio/getc.o +stdio/getbuff.o +stdio/setbuf.o +stdio/ungetc.o +stdio/tmpnam.o +stdio/mktemp.o +misc/atoi.o +misc/atol.o +misc/calloc.o +misc/qsort.o +misc/sscanf.o +misc/scan.o +misc/rand.o +misc/abort.o +misc/raise.o +misc/signal.o +misc/sigtable.o +misc/malloc.o +misc/sprintf.o +misc/format.o +misc/ctype.o +mch86/cswt.o +mch86/cswit.o +mch86/clswit.o +mch86/farcall.o +mch86/fcall.o +mch86/index.o +mch86/lsubs.o +mch86/olsubs.o +mch86/peek.o +mch86/port.o +mch86/rindex.o +mch86/segread.o +mch86/setjmp.o +mch86/strlen.o +mch86/strncpy.o +mch86/swapmem.o +mch86/sysint.o +mch86/toupper.o +cpm86/sbrk.o +mch86/memccpy.o +mch86/memchr.o +mch86/memcmp.o +mch86/memcpy.o +mch86/memset.o +cpm86/access.o +cpm86/csread.o +mch86/movblock.o +cpm86/execl.o +cpm86/exec.o +cpm86/ioctl.o +cpm86/isatty.o +cpm86/lseek.o +cpm86/read.o +cpm86/rename.o +cpm86/write.o +cpm86/blkio.o +mch86/csav.o +mch86/pointers.o +mch86/fptrs.o +mch86/ptrdiff.o +mch86/ptradd.o +mch86/strchr.o +mch86/strrchr.o +cpm86/stkover.o +cpm86/begin.o +cpm86/croot.o +cpm86/close.o +cpm86/open.o +mch86/strcmp.o +cpm86/ceof.o +cpm86/find.o +mch86/setmem.o +mch86/strcat.o +mch86/strcpy.o +mch86/movmem.o +cpm86/unlink.o +mch86/fltstub.o +cpm86/bdos.o +cpm86/fcbinit.o +cpm86/user.o + cl.bld +dos20/monitor.o +dos20/profil.o +dos20/dosdir.o +stdio/tmpfile.o +stdio/perror.o +stdio/fdopen.o +stdio/fgets.o +stdio/assert.o +stdio/fprintf.o +stdio/fputs.o +stdio/fread.o +stdio/fscanf.o +stdio/fseek.o +stdio/gets.o +stdio/getchar.o +stdio/getw.o +stdio/puterr.o +stdio/puts.o +stdio/putw.o +stdio/scanf.o +stdio/agetc.o +stdio/getc.o +stdio/setbuf.o +stdio/ungetc.o +stdio/tmpnam.o +stdio/mktemp.o +misc/atoi.o +misc/atol.o +misc/calloc.o +misc/lcalloc.o +misc/qsort.o +misc/sscanf.o +misc/scan.o +misc/rand.o +misc/abort.o +misc/raise.o +dos20/bdos.o +dos20/bdosx.o +dos20/chmod.o +dos20/csread.o +dos20/ctime.o +dos20/asctime.o +dos20/dostime.o +dos20/dup.o +dos20/execl.o +dos20/execlp.o +dos20/execvp.o +dos20/execv.o +dos20/exec.o +dos20/fexecl.o +dos20/fexecv.o +dos20/fcbinit.o +dos20/getcwd.o +dos20/ioctl.o +dos20/dioctl.o +dos20/localtim.o +dos20/mkdir.o +dos20/stat.o +dos20/system.o +misc/sprintf.o +dos20/fexec.o +dos20/getenv.o +dos20/utime.o +dos20/ftime.o +dos20/time.o +dos20/wait.o +dos20/access.o +mch86/cswit.o +mch86/clswit.o +mch86/farcall.o +mch86/fcall.o +mch86/index.o +mch86/movblock.o +mch86/peek.o +mch86/port.o +mch86/rindex.o +mch86/segread.o +mch86/setjmp.o +mch86/setmem.o +mch86/strcat.o +mch86/strcpy.o +mch86/strncpy.o +mch86/strstr.o +mch86/stricmp.o +mch86/strlwr.o +mch86/strrev.o +mch86/swapmem.o +mch86/sysint.o +mch86/toupper.o +mch86/csav.o +dos20/dos.o +dos20/dosx.o +mch86/memccpy.o +mch86/memchr.o +mch86/memcmp.o +mch86/memcpy.o +mch86/memset.o +dos20/syserr.o +mch86/pointers.o +mch86/fptrs.o +mch86/strchr.o +mch86/strrchr.o +dos20/clock.o +misc/signal.o +dos20/sighand.o +dos20/sigfix.o +misc/sigtable.o +dos20/mon.o +dos20/clk.o +stdio/fopen.o +stdio/fwrite.o +stdio/printf.o +stdio/putchar.o +stdio/aputc.o +stdio/putc.o +stdio/getbuff.o +misc/ldlmallo.o +misc/ldmalloc.o +misc/format.o +misc/ctype.o +dos20/open.o +mch86/lsubs.o +mch86/strcmp.o +mch86/strlen.o +dos20/sys.o +mch86/ptrdiff.o +mch86/ptradd.o +dos20/lbegin.o +dos20/stksiz.o +dos20/croot.o +mch86/fltstub.o +dos20/stkover.o +dos20/io.o +dos20/ttyio.o +mch86/movmem.o +dos20/isatty.o +dos20/lsbrk.o +dos20/filelock.o + clc.bld +stdio/tmpfile.o +dos20/monitor.o +dos20/profil.o +dos20/dosdir.o +stdio/perror.o +stdio/fdopen.o +stdio/fgets.o +stdio/assert.o +stdio/fprintf.o +stdio/fputs.o +stdio/fread.o +stdio/fscanf.o +stdio/fseek.o +stdio/gets.o +stdio/getchar.o +stdio/getw.o +stdio/puterr.o +stdio/puts.o +stdio/putw.o +stdio/scanf.o +stdio/agetc.o +stdio/getc.o +stdio/setbuf.o +stdio/ungetc.o +stdio/tmpnam.o +stdio/mktemp.o +misc/atoi.o +misc/atol.o +misc/calloc.o +misc/lcalloc.o +misc/qsort.o +misc/sscanf.o +misc/scan.o +misc/rand.o +misc/abort.o +misc/raise.o +dos20/bdos.o +dos20/bdosx.o +dos20/chmod.o +dos20/csread.o +dos20/ctime.o +dos20/asctime.o +dos20/dostime.o +dos20/dup.o +dos20/execl.o +dos20/execlp.o +dos20/execvp.o +dos20/execv.o +dos20/exec.o +dos20/fexecl.o +dos20/fexecv.o +dos20/fcbinit.o +dos20/getcwd.o +dos20/ioctl.o +dos20/dioctl.o +dos20/localtim.o +dos20/mkdir.o +dos20/stat.o +dos20/system.o +misc/sprintf.o +dos20/fexec.o +dos20/getenv.o +dos20/utime.o +dos20/ftime.o +dos20/time.o +dos20/wait.o +dos20/access.o +mch86/cswit.o +mch86/clswit.o +mch86/farcall.o +mch86/fcall.o +mch86/index.o +mch86/movblock.o +mch86/peek.o +mch86/port.o +mch86/rindex.o +mch86/segread.o +mch86/setjmp.o +mch86/setmem.o +mch86/strcat.o +mch86/strcpy.o +mch86/strncpy.o +mch86/strstr.o +mch86/stricmp.o +mch86/strlwr.o +mch86/strrev.o +mch86/swapmem.o +dos20/lmalloc.o +mch86/sysint.o +mch86/toupper.o +mch86/csav.o +dos20/dos.o +dos20/dosx.o +mch86/memccpy.o +mch86/memchr.o +mch86/memcmp.o +mch86/memcpy.o +mch86/memset.o +dos20/syserr.o +mch86/pointers.o +mch86/fptrs.o +mch86/ptradd.o +mch86/strchr.o +mch86/strrchr.o +dos20/clock.o +misc/signal.o +dos20/sighand.o +dos20/sigfix.o +misc/sigtable.o +dos20/mon.o +dos20/clk.o +stdio/fopen.o +stdio/fwrite.o +stdio/printf.o +stdio/putchar.o +stdio/aputc.o +stdio/putc.o +stdio/getbuff.o +misc/malloc.o +misc/format.o +misc/ctype.o +dos20/open.o +mch86/lsubs.o +mch86/strcmp.o +mch86/strlen.o +dos20/sys.o +mch86/ptrdiff.o +dos20/sbegin.o +dos20/croot.o +mch86/fltstub.o +dos20/stkover.o +dos20/io.o +dos20/ttyio.o +mch86/movmem.o +dos20/isatty.o +dos20/ssbrk.o +dos20/stksiz.o +dos20/filelock.o + cld.bld +dos20/monitor.o +dos20/profil.o +dos20/dosdir.o +stdio/tmpfile.o +stdio/perror.o +stdio/fdopen.o +stdio/fgets.o +stdio/assert.o +stdio/fprintf.o +stdio/fputs.o +stdio/fread.o +stdio/fscanf.o +stdio/fseek.o +stdio/gets.o +stdio/getchar.o +stdio/getw.o +stdio/puterr.o +stdio/puts.o +stdio/putw.o +stdio/scanf.o +stdio/agetc.o +stdio/getc.o +stdio/setbuf.o +stdio/ungetc.o +stdio/tmpnam.o +stdio/mktemp.o +misc/atoi.o +misc/atol.o +misc/calloc.o +misc/lcalloc.o +misc/qsort.o +misc/sscanf.o +misc/scan.o +misc/rand.o +misc/abort.o +misc/raise.o +dos20/bdos.o +dos20/bdosx.o +dos20/chmod.o +dos20/csread.o +dos20/ctime.o +dos20/asctime.o +dos20/dostime.o +dos20/dup.o +dos20/execl.o +dos20/execlp.o +dos20/execvp.o +dos20/execv.o +dos20/exec.o +dos20/fexecl.o +dos20/fexecv.o +dos20/fcbinit.o +dos20/getcwd.o +dos20/ioctl.o +dos20/dioctl.o +dos20/localtim.o +dos20/mkdir.o +dos20/stat.o +dos20/system.o +misc/sprintf.o +dos20/fexec.o +dos20/getenv.o +dos20/utime.o +dos20/ftime.o +dos20/time.o +dos20/wait.o +dos20/access.o +mch86/cswit.o +mch86/clswit.o +mch86/farcall.o +mch86/fcall.o +mch86/index.o +mch86/movblock.o +mch86/peek.o +mch86/port.o +mch86/rindex.o +mch86/segread.o +mch86/setjmp.o +mch86/setmem.o +mch86/strcat.o +mch86/strcpy.o +mch86/strncpy.o +mch86/swapmem.o +mch86/sysint.o +mch86/csav.o +mch86/strstr.o +mch86/stricmp.o +mch86/strlwr.o +mch86/strrev.o +mch86/toupper.o +dos20/dos.o +dos20/dosx.o +mch86/memccpy.o +mch86/memchr.o +mch86/memcmp.o +mch86/memcpy.o +mch86/memset.o +dos20/syserr.o +mch86/pointers.o +mch86/fptrs.o +mch86/strchr.o +mch86/strrchr.o +dos20/clock.o +misc/signal.o +dos20/sighand.o +dos20/sigfix.o +misc/sigtable.o +dos20/mon.o +dos20/clk.o +stdio/fopen.o +stdio/fwrite.o +stdio/printf.o +stdio/putchar.o +stdio/aputc.o +stdio/putc.o +stdio/getbuff.o +misc/ldlmallo.o +misc/ldmalloc.o +misc/format.o +misc/ctype.o +dos20/open.o +mch86/lsubs.o +mch86/strcmp.o +mch86/strlen.o +dos20/sys.o +mch86/ptrdiff.o +mch86/ptradd.o +dos20/lbegin.o +dos20/stksiz.o +dos20/croot.o +mch86/fltstub.o +dos20/stkover.o +dos20/io.o +dos20/ttyio.o +mch86/movmem.o +dos20/isatty.o +dos20/lsbrk.o +dos20/filelock.o + m.bld +math/asin.o +math/atan.o +math/floor.o +math/pow.o +math/log.o +math/random.o +math/sin.o +math/sinh.o +math/sqrt.o +math/tan.o +math/tanh.o +math/exp.o +stdio/fprintf.o +stdio/printf.o +misc/sprintf.o +misc/fformat.o +stdio/fscanf.o +stdio/scanf.o +misc/sscanf.o +misc/fscan.o +math/atof.o +math/ftoa.o +math/frexp.o +math/fabs.o +math/fpst.o +math/fsubs.o + m87.bld +math/floor87.o +math/pow87.o +math/log87.o +math/random87.o +math/sin87.o +math/sinh87.o +math/tan87.o +math/tanh87.o +stdio/fprintf.o +stdio/printf.o +misc/sprintf.o +misc/fformat.o +stdio/fscanf.o +stdio/scanf.o +misc/sscanf.o +misc/fscan87.o +math/atof87.o +math/ftoa87.o +math/asin87.o +math/sqrt87.o +math/atan87.o +math/exp1087.o +math/exp87.o +math/fmod87.o +math/frexp87.o +math/fabs87.o +math/fpst.o +math/isnan.o +math/fsubs87.o +math/chk87.o + m87s.bld +math/asin.o +math/atan.o +math/floor.o +math/pow.o +math/log.o +math/random.o +math/sin.o +math/sinh.o +math/sqrt87s.o +math/tan.o +math/tanh.o +math/exp.o +stdio/fprintf.o +stdio/printf.o +misc/sprintf.o +misc/fformat.o +stdio/fscanf.o +stdio/scanf.o +misc/sscanf.o +misc/fscan.o +math/atof.o +math/ftoa.o +math/frexp87s.o +math/fabs.o +math/fpst.o +math/fsubs87s.o + makefile +MODEL= +AMODEL=0 + +all: dos math86 math87 maths graph scn rom + @echo all done + +math: math86 math87 maths + @echo math all done + +clean: + del dos20\*.o + del math\*.o + del mch86\*.o + del misc\*.o + del stdio\*.o + del cpm86\*.o + del graphics\*.o + del screen\*.o + +dos: mkdos20 mkmch86 mkmisc mkstdio + del libs\c$(MODEL).lib + lb libs/c$(MODEL).lib -f c$(MODEL).bld + +cpm: mkcpm mkmch86 mkmisc mkstdio + del libs\c86$(MODEL).lib + lb libs/c86$(MODEL).lib -f c86$(MODEL).bld + +math86: mkmath mathmisc mathstdio + del libs\m$(MODEL).lib + lb libs/m$(MODEL).lib -f m.bld + +maths: mkmath mathmisc mathstdio + del libs\m87s$(MODEL).lib + lb libs/m87s$(MODEL).lib -f m87s.bld + +math87: mkmath87 mathmisc mathstdio + del libs\m87$(MODEL).lib + lb libs/m87$(MODEL).lib -f m87.bld + +graph: + cd graphics + make MODEL=$(MODEL) AMODEL=$(AMODEL) DIR=..\libs\ ..\libs\g$(MODEL).lib + cd .. + +scn: + cd screen + make MODEL=$(MODEL) AMODEL=$(AMODEL) DIR=..\libs\ ..\libs\s$(MODEL).lib + cd .. + +rom: + cd mch86 + make MODEL=$(MODEL) AMODEL=$(AMODEL) DIR=..\libs\ ..\libs\\$(MODEL)rom.o + cd .. + +ovly: + cd mch86 + make MODEL=$(MODEL) AMODEL=$(AMODEL) DIR=..\libs\ ovly$(MODEL) + cd .. + +mkdos20: + cd dos20 + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld$(MODEL) + cd .. + +mkcpm: + cd cpm86 + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld$(MODEL) + cd .. + +mkmath: + cd math + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld$(MODEL) + cd .. + +mkmath87: + cd math + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld87$(MODEL) + cd .. + +mkmch86: + cd mch86 + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld$(MODEL) + cd .. + +mkmisc: + cd misc + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld$(MODEL) + cd .. + +mathmisc: + cd misc + make MODEL=$(MODEL) AMODEL=$(AMODEL) math + cd .. + +mkstdio: + cd stdio + make MODEL=$(MODEL) AMODEL=$(AMODEL) bld$(MODEL) + cd .. + +mathstdio: + cd stdio + make MODEL=$(MODEL) AMODEL=$(AMODEL) math + cd .. + +arc: + mkarcv build.arc fcb); + if (fp->fcb.f_record == 0) { + fp->offset = 0; + return 0; + } + --fp->fcb.f_record; /* backup to last record */ + if (_find(fp)) + return -1; + + for (cp = Wrkbuf+128 ; cp > Wrkbuf ; ) + if (*--cp != 0x1a) { + ++cp; + break; + } + if ((fp->offset = (char)((int)(cp-Wrkbuf))) == 128) { + ++fp->fcb.f_record; + fp->offset = 0; + } + return 0; +} + close.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include "errno.h" +#include "io.h" + +close(fd) +{ + register struct channel *chp; + extern int bdf_(); + + if (fd < 0 || fd > MAXCHAN) { + errno = EBADF; + return -1; + } + chp = &chantab[fd]; + fd = (*chp->c_close)(chp->c_arg); + chp->c_read = chp->c_write = chp->c_ioctl = chp->c_seek = 0; + chp->c_close = bdf_; + return fd; +} + croot.c +/* Copyright (C) 1981,1982,1984 by Manx Software Systems */ +#include "errno.h" +#include "fcntl.h" +#include "io.h" + +int bdf_(), ret_(); + +/* + * channel table: relates fd's to devices + */ +struct channel chantab[] = { + { 2, 0, 1, 0, ret_, (_arg)2 }, + { 0, 2, 1, 0, ret_, (_arg)2 }, + { 0, 2, 1, 0, ret_, (_arg)2 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, + { 0, 0, 0, 0, bdf_, (_arg)0 }, +}; + +#define MAXARGS 30 +static char *Argv[MAXARGS]; +static char Argbuf[128]; +static int Argc; +int (*cls_)() = ret_; + +Croot() +{ + register char *cp, *fname; + register int k; + + movmem((char *)0x81, Argbuf, 127); + Argbuf[*(char *)0x80 & 0x7f] = 0; + Argv[0] = ""; + cp = Argbuf; + Argc = 1; + while (Argc < MAXARGS) { + while (*cp == ' ' || *cp == '\t') + ++cp; + if (*cp == 0) + break; +#ifndef NOREDIR + if (*cp == '>') { /* redirect output */ + k = 1; + goto redirect; + } else if (*cp == '<') { /* redirect input */ + k = 0; +redirect: + while (*++cp == ' ' || *cp == '\t') + ; + fname = cp; + while (*++cp) + if (*cp == ' ' || *cp == '\t') { + *cp++ = 0; + break; + } + close(k); + if (k) + k = creat(fname, 0666); + else + k = open(fname, O_RDONLY); + if (k == -1) { + strcpy(0x80, "Can't open file for redirection: "); + strcat(0x80, fname); + strcat(0x80, "$"); + bdos(9,0x80); + exit(10); + } + } else +#endif + { + Argv[Argc++] = cp; + while (*++cp) + if (*cp == ' ' || *cp == '\t') { + *cp++ = 0; + break; + } + } + } + main(Argc,Argv); + exit(0); +} + +exit(code) +{ + register int fd; + + (*cls_)(); + for (fd = 0 ; fd < MAXCHAN ; ) + close(fd++); + if (code && (bdos(24)&1) != 0) + unlink("A:$$$.SUB"); + _exit(); +} + +bdf_() +{ + errno = EBADF; + return -1; +} + +ret_() +{ + return 0; +} + + csread.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ +#include "io.h" +#include "errno.h" + +extern int errno; +extern unsigned _dsval, _csval; + +_csread(fd, buffer, len) +char *buffer; +{ + register unsigned l = 0; + register struct fcbtab *fp; + register struct channel *chp; + unsigned k,j; + + chp = &chantab[fd]; + if (chp->c_read != 1) { /* only valid for disk files */ + errno = EINVAL; + return -1; + } + + fp = (struct fcbtab *)chp->c_arg; + setusr(fp->user); + + if (fp->offset) { + if ((l = 128 - fp->offset) > len) + l = len; + if (getsect(fp, buffer, l)) { + l = 0; + goto done; + } + } + if (k = (len-l)/128) { + bdos(51, _csval); /* set dma segment to CS */ + j = blkrd(&fp->fcb, buffer+l, k); + bdos(51, _dsval); /* set dma segment back to DS */ + if (j != 0) { + l += (k-j)*128; + goto done; + } + } + l += k*128; + if (l < len) + if (getsect(fp, buffer+l, len-l)) + goto done; + l = len; + +done: + rstusr(); + return l; +} + +static +getsect(fp, buf, len) +register struct fcbtab *fp; char *buf; unsigned len; +{ + if (_find(fp)) + return -1; + movblock(Wrkbuf+fp->offset,_dsval, buf,_csval, len); + if ((fp->offset = (fp->offset + len) & 127) == 0) + ++fp->fcb.f_record; + return 0; +} + + exec.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +execlp(path, args) +char *path, *args; +{ + return execvp(path, &args); +} + +execvp(path, argv) +char *path, **argv; +{ + char buffer[130]; + register char *cp, *xp; + + cp = buffer; + for (xp = path ; *xp && cp < buffer+128 ; ) + *cp++ = *xp++; + if (*argv) { + ++argv; /* skip arg0, used for unix (tm) compatibility */ + while (*argv) { + *cp++ = ' '; + for (xp = *argv++ ; *xp && cp < buffer+128 ; ) + *cp++ = *xp++; + } + } + *cp = 0; + bdos(26, buffer); + bdos(47, 0); +} + + execl.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +execl(path, args) +char *path, *args; +{ + return execvp(path, &args); +} + +execv(path, argv) +char *path, **argv; +{ + return execvp(path, argv); +} + fcbinit.asm +; :ts=8 +; Copyright (C) 1983, 1984 by Manx Software Systems +codeseg segment para public 'code' +; + include lmacros.h + public fcbinit_ +fcbinit_ proc near + mov bx,sp + push di + push si + cld +ifndef LONGPTR + mov di,ds + mov es,di +endif + mov si,word ptr 2[bx] ;si contains name + mov di,word ptr 4[bx] ;di contains fcb address +; clear name to blanks + mov dx,di ;save fcb address in dx + inc di + mov cx,11 ;clear name and ext to blanks + mov al,' ' +rep stosb + mov cx,4 + sub al,al +rep stosb + mov di,dx ;restore fcb address +; + sub dx,dx ;init user # + mov cl,10 ;multiplier inside loop +userloop: ;loop packing leading digits into DL + lodsb + cmp al,'0' + jb userdone + cmp al,'9' + ja userdone + sub al,'0' + xchg ax,dx ;get accumlated value into AL for multiply + mul cl ;value *= 10 + add al,dl ;add in new digit + xchg ax,dx ;put result back into DL + jmp userloop +; +userdone: + cmp al,'/' ;check if user # prefix + je haveuser + mov dl,255 ;set user # to default indicator + mov si,word ptr 2[bx] ;reset filename pointer +haveuser: +; + sub al,al ;default drive # + cmp byte ptr 1[si],':' + jnz setdrive +; + lodsb + inc si ;skip over colon + and al,127 + cmp al,'A' + jl badname + cmp al,'Z' + jg lowerc + sub al,'A'-1 + jmp short setdrive +; +lowerc: + cmp al,'a' + jl badname + cmp al,'z' + jg badname + sub al,'a'-1 +setdrive: + stosb +; move name in mapping to upper case + mov cx,8 +nameskp: + inc cx +namelp: + lodsb + cmp al,'.' + jz namedn + test al,al + jz alldone + loop store + jmp short nameskp +store: + call toupper + stosb + jmp short namelp +; +namedn: + dec cx + add di,cx +; move extension mapping to upper case + mov cx,3 +extlp: + lodsb + test al,al + jz alldone + call toupper + stosb + loop extlp +; +alldone: + xchg ax,dx + and ax,255 +retn: + pop si + pop di + ret +; +badname: + sub ax,ax + dec ax + jmp short retn +; +toupper: + cmp al,'*' + jne nostar + dec si ;backup so we see star again + mov al,'?' ;and map into question mark + ret +nostar: + cmp al,'a' + jl notrans + cmp al,'z' + jg notrans + sub al,'a'-'A' +notrans: + ret +fcbinit_ endp +codeseg ends + end + find.c +/* Copyright (C) 1984 by Manx Software Systems */ +#include "io.h" + +static struct fcbtab *Wfp; +static unsigned Wsct; + +_zap() /* invalidate work buffer */ +{ + Wfp = 0; +} + +_find(fp) +register struct fcbtab *fp; +{ + extern int errno; + + bdos(SETDMA, Wrkbuf); + if (Wfp != fp || fp->fcb.f_record != Wsct) { + if ((errno = bdos(READRN, &fp->fcb)) == 1 || errno == 4) { + errno = 0; + setmem(Wrkbuf, 128, 0x1a); + Wfp = 0; + return 1; + } else if (errno) + return -1; + Wfp = fp; + Wsct = fp->fcb.f_record; + } + return 0; +} + + ioctl.c +/* Copyright (C) 1984 by Manx Software Systems */ +#include "io.h" +#include "errno.h" +#include "sgtty.h" + +#define TIME 10 /* number of iterations of raw_rd loop */ +#define MIN 1 /* minimum number of chars returned from read */ + +extern int (*Rd_tab[])(); +extern int (*Wrt_tab[])(); + +struct sgttyb Tty_ctl; +extern char _Eol; +extern int tty_rd(); +static int raw_rd(), raw_wr(); +static int rd_func, wrt_func; + +ioctl(fd, cmd, arg) +struct sgttyb *arg; +{ + register struct channel *chp; + + chp = &chantab[fd]; + if (chp->c_ioctl == 0) { + errno = ENOTTY; + return -1; + } + switch (cmd) { + case TIOCGETP: + *arg = Tty_ctl; + break; + case TIOCSETP: + Tty_ctl = *arg; + Wrt_tab[2] = raw_wr; + Rd_tab[2] = raw_rd; + if (Tty_ctl.sg_flags&RAW) { + rd_func = + wrt_func = 6; + _Eol = '\r'; + break; + } else if (Tty_ctl.sg_flags&CBREAK) { + rd_func = (Tty_ctl.sg_flags&ECHO) ? 1 : 6; + wrt_func = 2; + } else { + Rd_tab[2] = tty_rd; + wrt_func = 2; + } + if (Tty_ctl.sg_flags&CRMOD) + _Eol = '\n'; + else + _Eol = '\r'; + } + return 0; +} + +raw_rd(x, buff, len) +register char *buff; +{ + int c, i; + register int count; + + for (count = 0 ; count < len ; ) { + for (i = TIME ; i-- ; ) + if ((c = bdos(rd_func,0xff)) != 0) + goto have_char; + if (count < MIN) + continue; + break; +have_char: + if (c == '\r') + c = _Eol; + *buff++ = c; + ++count; + } + return count; +} + +raw_wr(kind, buff, len) +register char *buff; +{ + register int count; + + for (count = len ; count-- ; ) { + if (*buff == '\n' && (Tty_ctl.sg_flags&CRMOD)) + bdos(wrt_func,'\r'); + bdos(wrt_func,*buff++); + } + return len; +} + isatty.c +/* Copyright (C) 1983 by Manx Software Systems */ +#include "io.h" +#include "errno.h" + +isatty(fd) +{ + return chantab[fd].c_ioctl; +} + + lseek.c +/* Copyright (C) 1982, 1984 by Manx Software Systems */ +#include "io.h" +#include "errno.h" + +long lseek(fd, pos, how) +long pos; +{ + register struct fcbtab *fp; + + if (chantab[fd].c_seek == 0) { +Badf: + errno = EBADF; + return -1L; + } + fp = (struct fcbtab *)chantab[fd].c_arg; + + switch (how) { + case 2: + /* + * Close the file because CP/M doesn't know how big an open file is. + * However, the fcb is still valid. + */ + setusr(fp->user); + fp->fcb.f_name[4] |= 0x80; /* set parital close flag for MP/M */ + bdos(CLSFIL, &fp->fcb); + fp->fcb.f_name[4] &= 0x7f; /* clear parital close flag */ + _Ceof(fp); + rstusr(); + case 1: + pos += fp->offset + ((long)fp->fcb.f_record << 7); + case 0: + break; + + default: + errno = EINVAL; + return -1L; + } + + fp->fcb.f_overfl = 0; + if (pos < 0) { + fp->offset = fp->fcb.f_record = 0; + errno = EINVAL; + return -1L; + } + fp->offset = (unsigned)pos & 127; + fp->fcb.f_record = pos >> 7; + return pos; +} + + open.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include "errno.h" +#include "fcntl.h" +#include "io.h" + +#define MAXFILE 8 /* maximum number of open DISK files */ +int bdf_(), ret_(), fileop(); +/* + * note: The ioctl function knows that the condev read/write numbers are + * 2. It uses this information to patch the read/write tables. + */ +static struct device condev = { 2, 2, 1, 0, ret_ }; +static struct device bdosout= { 0, 3, 0, 0, ret_ }; +static struct device bdosin = { 3, 0, 0, 0, ret_ }; +static struct device filedev= { 1, 1, 0, 1, fileop }; + +/* + * device table, contains names and pointers to device entries + */ +static struct devtabl devtabl[] = { + { "con:", &condev, (_arg)2 }, + { "CON:", &condev, (_arg)2 }, + { "lst:", &bdosout,(_arg)5 }, + { "LST:", &bdosout,(_arg)5 }, + { "prn:", &bdosout,(_arg)5 }, + { "PRN:", &bdosout,(_arg)5 }, + { "pun:", &bdosout,(_arg)4 }, + { "PUN:", &bdosout,(_arg)4 }, + { "rdr:", &bdosin, (_arg)3 }, + { "RDR:", &bdosin, (_arg)3 }, + { 0, &filedev, (_arg)0 } /* this must be the last slot in the table! */ +}; + + +creat(name, mode) +char *name; +{ + return open(name, O_WRONLY|O_TRUNC|O_CREAT, mode); +} + +open(name, flag, mode) +char *name; +{ + register struct devtabl *dp; + register struct channel *chp; + register struct device *dev; + int fd, mdmask; + + for (chp = chantab, fd = 0 ; fd < MAXCHAN ; ++chp, ++fd) + if (chp->c_close == bdf_) + goto fndchan; + errno = EMFILE; + return -1; + +fndchan: + for (dp = devtabl ; dp->d_name ; ++dp) + if (strcmp(dp->d_name, name) == 0) + break; + dev = dp->d_dev; + mdmask = (flag&3) + 1; + if (mdmask&1) { + if ((chp->c_read = dev->d_read) == 0) { + errno = EACCES; + return -1; + } + } + if (mdmask&2) { + if ((chp->c_write = dev->d_write) == 0) { + errno = EACCES; + return -1; + } + } + chp->c_arg = dp->d_arg; + chp->c_ioctl = dev->d_ioctl; + chp->c_seek = dev->d_seek; + chp->c_close = ret_; + if ((*dev->d_open)(name, flag, mode, chp, dp) < 0) { + chp->c_close = bdf_; + return -1; + } + return fd; +} + +static struct fcbtab fcbtab[MAXFILE]; + +static +fileop(name,flag,mode,chp,dp) +char *name; struct channel *chp; struct devtabl *dp; +{ + register struct fcbtab *fp; + int filecl(); + int user; + + for ( fp = fcbtab ; fp < fcbtab+MAXFILE ; ++fp ) + if ( fp->flags == 0 ) + goto havefcb; + errno = EMFILE; + return -1; + +havefcb: + if ((user = fcbinit(name,&fp->fcb)) == -1) { + errno = EINVAL; + return -1; + } + if (user == 255) + user = getusr(); + setusr(user); + if (flag & O_TRUNC) + bdos(DELFIL, &fp->fcb); + if (bdos(OPNFIL,&fp->fcb) == 0xff) { + if ((flag&(O_TRUNC|O_CREAT)) == 0 || bdos(MAKFIL,&fp->fcb) == 0xff) { + errno = ENOENT; + rstusr(); + return -1; + } + } else if ((flag&(O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL)) { + errno = EEXIST; + goto punt; + } else if ((flag&3) > 0 && fp->fcb.f_type[0]&0x80) { + errno = EACCES; +punt: + bdos(CLSFIL, &fp->fcb); + rstusr(); + return -1; + } + + fp->offset = fp->fcb.f_overfl = fp->fcb.f_record = 0; + fp->user = user; + chp->c_arg = (_arg)fp; + fp->flags = (flag&3)+1; + chp->c_close = filecl; + if (flag&O_APPEND) + _Ceof(fp); + rstusr(); + return 0; +} + +static +filecl(fp) +register struct fcbtab *fp; +{ + _zap(); /* zap work buffer, so data is not reused */ + setusr(fp->user); + bdos(CLSFIL,&fp->fcb); + rstusr(); + fp->flags = 0; + return 0; +} + + read.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ +#include "io.h" +#include "errno.h" +#include "fcntl.h" + +int bdf_(), filerd(), tty_rd(), bdosrd(); + +int (*Rd_tab[])() = { + bdf_, filerd, tty_rd, bdosrd, +}; +extern int errno; + +read(fd, buff, len) +char *buff; +{ + register struct channel *chp; + + chp = &chantab[fd]; + return (*Rd_tab[chp->c_read])((struct fcbtab *)chp->c_arg, buff, len); +} + +static +filerd(afp,buffer,len) +struct fcbtab *afp; +char *buffer; unsigned len; +{ + register unsigned l = 0; + register struct fcbtab *fp; + unsigned k,j; + + fp = afp; + setusr(fp->user); + if (fp->offset) { + if ((l = 128 - fp->offset) > len) + l = len; + if (getsect(fp, buffer, l)) { + rstusr(); + return 0; + } + } + if (k = (len-l)/128) + if ((j = blkrd(&fp->fcb, buffer+l, k)) != 0) { + rstusr(); + return (k-j)*128 + l; + } + l += k*128; + if (l < len) + if (getsect(fp, buffer+l, len-l)) { + rstusr(); + return l; + } + rstusr(); + return len; +} + +static +getsect(fp, buf, len) +register struct fcbtab *fp; char *buf; unsigned len; +{ + if (_find(fp)) + return -1; + movmem(Wrkbuf+fp->offset, buf, len); + if ((fp->offset = (fp->offset + len) & 127) == 0) + ++fp->fcb.f_record; + return 0; +} + +char _Eol = '\n'; + +tty_rd(x,buff,len) +char *buff; +{ + static char buffer[258]; + static int used; + register int l; + + if (buffer[1] == 0) { + buffer[0] = 255; + buffer[1] = buffer[2] = 0; + bdos(10,buffer); + bdos(2,'\n'); + if (buffer[2] == 0x1a) { + buffer[1] = 0; + return 0; + } + buffer[++buffer[1] + 1] = _Eol; + used = 2; + } + if ((l = buffer[1]) > len) + l = len; + movmem(buffer+used, buff, l); + used += l; + buffer[1] -= l; + return l; +} + +static +bdosrd(kind, buff, len) +register char *buff; +{ + register int count; + + for (count = 0 ; count < len ; ++count) { + if ((*buff++ = bdos(kind)) == 0x1a) + break; + } + return count; +} + rename.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ +#include "errno.h" + +rename(old, new) +char *old, *new; +{ + auto char buff[60]; + register int user; + + user = fcbinit(old,buff); + fcbinit(new,buff+16); + setusr(user); + user = 0; + if (bdos(15,buff+16) != 0xff) { + bdos(16,buff+16); + errno = EEXIST; + user = -1; + } else if (bdos(23,buff) == 0xff) { + errno = ENOENT; + user = -1; + } + rstusr(); + return user; +} + sbrk.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h +dataseg segment word public 'data' + extrn $MEMRY:word + extrn _mbot_:word, _sbot_:word + extrn errno_:word +stkred dw 512 +dataseg ends + assume ds:dataseg +; +; sbrk(size): return address of current top & bump by size bytes +; + procdef sbrk,<> + push di + mov ax,siz + mov di,$MEMRY + add ax,di + push ax + call brk_ + pop cx + jnz brk_error + mov ax,di ;return original value of the break +ifdef LONGPTR + mov dx,ds + pop di + pret +endif +brk_error: + pop di +ifdef LONGPTR + mov dx,ax +endif + test ax,ax ;set flags for C + pret + pend sbrk +; +; brk(addr): set current top address to addr +; returns 0 if ok, -1 if error +; + procdef brk,<> + mov ax,addr + inc ax + and al,-2 + mov bx,sp + sub bx,stkred + cmp ax,bx ;double check with sp for saftey + jae brk_ov + cmp ax,_mbot_ + jb brk_ov + mov $MEMRY,ax ;new value is good so save it away + add ax,stkred + mov _sbot_,ax + sub ax,ax + pret +; invalid request +brk_ov: + mov errno_,-4 + mov ax,-1 + test ax,ax + pret + pend brk +; +; rsvstk(size): set saftey margin for stack +; this will make sure that at least size +; bytes of stack below the current level remain. +; + procdef rsvstk,<> + mov ax,stksize + mov stkred,ax + add ax,$MEMRY + mov _sbot_,ax + pret + pend rsvstk + finish + end + stkover.c +_stkover() +{ + bdos(9, "STACK OVERFLOW, INCREASE STACK SIZE\r\n$"); + _exit(200); +} + unlink.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ +#include "errno.h" + +unlink(name) +char *name; +{ + auto char delfcb[40]; + register int user; + + user = fcbinit(name,delfcb); + setusr(user); + user = bdos(19,delfcb); + rstusr(); + if (user == 0xff) { + errno = ENOENT; + return -1; + } + return 0; +} + + user.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + +codeseg segment para public 'code' +dataseg segment para public 'data' +olduser db 0 +dataseg ends + assume cs:codeseg,ds:dataseg + public getusr_ +getusr_ proc near + push bp + push si + push di + mov cl,32 + mov dl,255 + int 224 + and ax,255 + pop di + pop si + pop bp + ret +getusr_ endp +; + public setusr_ +setusr_ proc near + push bp + mov bp,sp + push si + push di + mov cl,32 + mov dl,255 + int 224 + mov olduser,al +; + mov dl,4[bp] + cmp dl,255 + je skipset + mov cl,32 + int 224 +skipset: + pop di + pop si + pop bp + ret +setusr_ endp +; + public rstusr_ +rstusr_ proc near + push bp + push si + push di + mov cl,32 + mov dl,olduser + int 224 + pop di + pop si + pop bp + ret +rstusr_ endp +codeseg ends + end + write.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ +#include "io.h" +#include "errno.h" + +int tty_wr(), bdoswr(), filewr(), bdf_(); + +int (*Wrt_tab[])() = { + bdf_, filewr, bdoswr, bdoswr +}; + +write(fd, buff, len) +char *buff; +{ + register struct channel *chp; + + chp = &chantab[fd]; + return (*Wrt_tab[chp->c_write])((struct fcbtab *)chp->c_arg, buff, len); +} + +static +filewr(afp,buffer,len) +struct fcbtab *afp; +char *buffer; unsigned len; +{ + register unsigned l = 0; + register struct fcbtab *fp; + unsigned k,j; + + fp = afp; + setusr(fp->user); + if (fp->offset) { + if ((l = 128 - fp->offset) > len) + l = len; + if (putsect(fp, buffer, l)) { + rstusr(); + return -1; + } + } + if (k = (len-l)/128) + if ((j = blkwr(&fp->fcb, buffer+l, k)) != 0) { + rstusr(); + if ((l += (k-j)*128) == 0) + return -1; + else + return l; + } + l += k*128; + if (l < len) + if (putsect(fp, buffer+l, len-l)) { + rstusr(); + return l; + } + rstusr(); + return len; +} + +static +putsect(fp, buf, len) +register struct fcbtab *fp; char *buf; unsigned len; +{ + if (_find(fp) < 0) + return -1; + movmem(buf, Wrkbuf+fp->offset, len); + if ((errno = bdos(WRITRN, &fp->fcb)) != 0) + return -1; + if ((fp->offset = (fp->offset + len) & 127) == 0) + ++fp->fcb.f_record; + return 0; +} + +tty_wr(kind, buff, len) +register char *buff; +{ + register int count; + + for (count = len ; count-- ; ) { + if (*buff == '\n') + bdos(2,'\r'); + bdos(2,*buff++); + } + return len; +} + +static +bdoswr(kind, buff, len) +register char *buff; +{ + register int count; + + for (count = len ; count-- ; ) + bdos(kind,*buff++); + return len; +} + + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/DBG-README.txt b/Manx Aztec C86 v42b/ARC/DBG-README.txt new file mode 100644 index 0000000..1e4630c --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/DBG-README.txt @@ -0,0 +1,13 @@ + +August 24, 1987 + +The DBGMAP program converts an Aztec .DBG file to an Microsoft .MAP file. +It currently converts global data and source line data. The usage is: + + dbgmap filename + +Let me know if there are any questions. + +Paul McClintock +Computer Dymamics +(803) 877-8700 diff --git a/Manx Aztec C86 v42b/ARC/DBGMAP.C b/Manx Aztec C86 v42b/ARC/DBGMAP.C new file mode 100644 index 0000000..9744804 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/DBGMAP.C @@ -0,0 +1,668 @@ +/******************************************** + + dbgmap - conversion utily for + Aztec C + + This utility converts an Aztec C + symbol table file (.DBG) into a + RDSD compatible symbol file (.MAP). + + Paul McClintock April 21, 1987 + + Last Edit April 21, 1987 + + (c) Lines Unlimited April 1987 + +*******************************************/ + + +/****************************************** + +The following definition of the Aztec .DBG +file is the results of a phone coversation with +Tom Ferwick of Aztec. The .DBG file is a +complex binary symbol file containing substancially +more data then the Microsoft .MAP file is able +to contain. + +The .DBG file format is based on 64 byte records. +Each record type has a unique structure. + + + +HEADER RECORD : + type_def dw 13678 ; 0356Eh + num_struct dw ; number of structure records + start_struct dw ; starting record # for struct + + num_strings dw ; total # of strings + total_string_lnth dw ; total string table length + start_string dw ; starting record for strings + + num_src_line_rec dw ; number of src line records + num_block_rec dw ; number of block records + num_sym_rec dw ; number of symbol records + + ; offsets into symbol data + s_abs_symbol dw ; 1st aboslute symbol + s_code_symbol dw ; 1st code symbol + s_data_symbol dw ; 1st data symbol + + +SYMBOL RECORD : + type_def dw 15431 ; 03C47h + + name_idx dw ; name string subscript + type_idx dw ; type string subscript + struct_idx dw ; index into struct table + add_offset dw ; + add_segment dw ; also used as a flag word + + -2 = Auto variable BP.[add_offset] + -3 = Register variable + add_offset == 5 for SI + add_offset == 6 for DI + -4 = argument BP.[add_offset] + -5 = argument, Register variable + -6 = TYPE DEF name + + + + + Type Strings Modifers + * = 16 Bit Pointer + # = 32 Bit Pointer + [size = size of array + ( = Near Function + { = Far Function + + + Base Type Characters + c = char + C = unsigned char + i = int + I = unsigned int + l = long + L = unsigned int + f = float + D = double + V = void + : = struct + + + +SOURCE LINE RECORD : + type_def dw 12345 ; 3039h + + add_offset dw ; starting address offset + add_segment dw ; starting address segment + file_name dw ; file name string subscript + line_number dw ; starting source line number + object_displacement db ; obj code displacement / line + + Special flag bit + 0FFH == end of obj offsets array + 00h to 07Fh == 8 bit object code displacement + 080h to 0FEh == 15 bit object code displacement + + + + +SYMBOL SCOPE DEF RECORD : + type_def dw 15432 ; 03C48h (BLOCK) + + Unknown record format + + + + + +STRUCT DEF RECORD : + ; no type_def + ; + name_idx dw ; name string subscript + type_idx dw ; type string subscript + struct_idx dw ; index into struct table + add_segment dw ; also used as a flag word + + + +*******************************************/ + +#include + +#include +#include +#include +#include +#include + +#include +#include + + +/* .DBG Header record */ + +struct HEADER +{ + unsigned int type_def, /* 13678 */ + num_struct, /* nuber of struct records */ + start_struct, /* starting record for struct */ + + num_strings, /* total num of strings */ + tot_str_lnth, /* total strings length */ + start_string, /* starting record for string */ + + num_src_rec, /* total src records */ + num_block_rec, /* total block records */ + num_sym_rec, /* total symbol records */ + + s_abs_sym, /* starting abs symbol */ + s_code_sym, /* starting code symbol */ + s_data_sym; /* starting data symbol */ + + unsigned int fill[20]; /* total size of 64 bytes */ + +}; + + +/* Public Symbols */ + +struct SYMBOL +{ + unsigned int name_idx, /* symbol name index */ + type_idx, /* symbol type index */ + struct_idx, /* index into struct table */ + add_offset, /* address offset value */ + add_segment; /* address segment value */ +}; + +struct SYM_RECORD +{ + unsigned int type_def; /* 15431 */ + struct SYMBOL sym_data[6]; + unsigned int fill[1]; /* total size of 64 bytes */ +}; + + +/* Internal Format */ + +struct SYM_DATA +{ + struct SYM_DATA *next; /* linked list */ + + unsigned int name_idx, /* symbol name index */ + type_idx, /* symbol type index */ + add_offset, /* address offset value */ + add_segment, /* address segment value */ + struct_idx; /* index into struct table */ +}; + + + + +#define RECORDSIZE 64 +#define LINEENTRY (RECORDSIZE - 5*sizeof(short)) + + +/* Source Line numbers */ + +struct SRC_RECORD +{ + unsigned short type_def, /* 12345 */ + add_offset, /* address offset value */ + add_segment, /* address segment value */ + file_idx, /* function's src file index */ + line_num; /* starting line number */ + + unsigned char obj_displ[LINEENTRY]; /* object code displacement */ + +}; + + + +/* internal format */ +struct SRC_DATA +{ + struct SRC_DATA *next; /* linked list */ + + unsigned int file_idx, /* src file index */ + line_num, /* specified line number */ + add_offset, + add_segment; +}; + + + +/* Global DATA */ + +struct HEADER dbg_header; + +struct SYM_DATA *sym_list = NULL; /* header for linked list */ +int sym_count = 0; /* number of entries */ +unsigned short max_symbol ; /* max valid symbol index */ + +struct SRC_DATA *src_list = NULL; /* header for linked list */ +int src_count = 0; /* number of entries */ + +char **str_idx, *str_buff; /* string buffer pointers */ +char *dbg_file, *map_file; /* file paths */ + +char *filename() ; + + + + +main (argc, argv) +int argc; /* number of paramiters */ +char **argv; /* array of paramiters */ +{ + int count ; /* loop counter */ + unsigned int *buff ; /* input buffer */ + + int dbg ; /* input file handle */ + int error ; /* file operations return value */ + + FILE *map ; /* output map file */ + + + printf("\nAztec .DBG to Microsoft compatible .MAP symbol file converter"); + printf("\n(c) Lines Unlimited 8-24-87 \n"); + + if (argc != 2) + { + printf("\n\nusage: dbgmap filename"); + exit(1); + } + + ++argv; /* skip command name */ + dbg_file = filename( *argv, ".dbg"); + map_file = filename( *argv, ".map"); + + dbg = open( dbg_file, O_RDONLY | O_BINARY); + if (dbg == -1) + err_abort(dbg_file); /* abort on error */ + + /* Read header record */ + error = read( dbg, &dbg_header, sizeof(struct HEADER) ); + if (error == -1) + err_abort(dbg_file); /* abort on read error */ + + buff = (int *) malloc(64); /* block buffer */ + if (buff == NULL) + err_abort("buff - out of memory "); + + max_symbol = 0xffff ; /* initialize */ + + + /* build data structures from the .DBG file */ + + for (count = dbg_header.start_struct - 1 ; count ; --count) + { + error = read( dbg, buff, 64); + if (error == -1) + err_abort( dbg_file); + + switch (*buff) /* type_def */ + { + case 15431 : /* SYMBOL RECORD */ + save_symbols( buff); + break; + + case 12345 : /* SOURCE LINE RECORD */ + save_src_line( buff); + break; + + } + + } + + free(buff); + read_strings( dbg); /* read in strings */ + + + /* Time to generate the .MAP file */ + + map = fopen ( map_file, "w"); + if (map == NULL) + err_abort ( map_file); + + + print_symbols ( map); + print_src_data ( map); + + if ( fclose ( map) ) + err_abort( map_file); + + exit (0); + + +} + + +save_symbols ( buff) +struct SYM_RECORD *buff; +{ + int count; + struct SYMBOL *c_symbol; + struct SYM_DATA *tmp; + + + c_symbol = buff->sym_data; + + for (count = 0 ; count < 6 ; ++count, ++c_symbol) + { + if ( c_symbol->name_idx < dbg_header.num_strings ) + { + tmp = (struct SYM_DATA *) malloc(sizeof(struct SYM_DATA) ); + if (tmp == NULL) + err_abort( "save_symbols - out of memory "); + + tmp->name_idx = c_symbol->name_idx; + tmp->type_idx = c_symbol->type_idx; + tmp->add_offset = c_symbol->add_offset; + tmp->add_segment = c_symbol->add_segment; + tmp->struct_idx = c_symbol->struct_idx; + + if ((tmp->type_idx < max_symbol) && (tmp->type_idx != 0 ) ) + max_symbol = tmp->type_idx ; /* type strings follow global + symbols strings */ + + /* add to linked list in memory */ + tmp->next = sym_list; + sym_list = tmp; /* update linked list */ + ++sym_count; + + } + } +} + +print_symbols( map) +FILE *map; /* output file descriptor */ +{ + struct SYM_DATA **idx, **tmp, *cur; + int count, tot_sym ; + int sym_by_name(), sym_by_value(); + + tmp = idx = (struct SYM_DATA **) + malloc( sizeof(struct SYM_DATA) * (sym_count + 1) ) ; + if (idx == NULL) + err_abort("print_symbols - out of memory "); + + + /* generate index for quick sort */ + for ( tot_sym = 0 , cur = sym_list; cur != NULL ; cur = cur->next ) + { + if ( ( cur->add_segment < (unsigned) -6 ) && + (cur->name_idx < max_symbol ) ) + { + *tmp++ = cur ; + ++tot_sym ; + } + } + *tmp = NULL ; + + fprintf ( map, "\n\n Address Publics by Name\n"); + qsort ( idx, tot_sym, sizeof(struct SYM_DATA *), sym_by_name ); + for ( tmp = idx; *tmp ; ++tmp) + { + fprintf( map, "\n %04X:%04X %s", (*tmp)->add_segment, + (*tmp)->add_offset, str_idx[ (*tmp)->name_idx] ); + + } + + + fprintf ( map, "\n\n Address Publics by Value\n"); + qsort ( idx, tot_sym, sizeof(struct SYM_DATA *), sym_by_value ); + for ( tmp = idx; (*tmp) ; ++tmp) + { + fprintf( map, "\n %04x:%04x %s", (*tmp)->add_segment, + (*tmp)->add_offset, str_idx[ (*tmp)->name_idx] ); + + } + + free(idx); /* return to free memory */ +} + + +sym_by_name(a, b) +struct SYM_DATA **a, **b; +{ + return ( strcmp( str_idx[ (*a)->name_idx], str_idx[ (*b)->name_idx]) ); +} + +sym_by_value ( a, b) +struct SYM_DATA **a, **b; +{ + long a_add, b_add, add_to_long() ; + int ret_value; + + a_add = add_to_long( (*a)->add_segment, (*a)->add_offset); + b_add = add_to_long( (*b)->add_segment, (*b)->add_offset); + + (a_add == b_add) ? ( ret_value = 0) : + ((a_add < b_add) ? (ret_value = -1) : (ret_value = 1) ) ; + + return (ret_value); + +} + +long add_to_long ( segment, offset) +unsigned int segment, offset; +{ + long ret_value ; + + ret_value = (long) segment << 4 ; + ret_value += (long) offset ; + + return (ret_value); +} + + + + +save_src_line ( src) +struct SRC_RECORD *src; +{ + unsigned char *obj_offset; + int cnt ; + + + store_src ( src); /* save start of function */ + + /* Process the source lines for this function */ + /* each offset byte represents a source line */ + + for ( obj_offset = src->obj_displ , cnt = 0 ; cnt < LINEENTRY ; + ++obj_offset, ++src->line_num, ++cnt ) + { + if ( *obj_offset) + { + if (*obj_offset == 0xff) + break ; /* end of table */ + + store_src ( src); + + if ( *obj_offset < 0x80 ) + src->add_offset += *obj_offset ; /* additional offset */ + else + { + /* 15 bit object code offset */ + + *obj_offset &= 0x7f ; /* mask off flag bit */ + src->add_offset += ( *obj_offset++ << 8) ;/* high 7 bits */ + src->add_offset += *obj_offset ; /* low 8 bits */ + } + } + } +} + + +store_src ( src) +struct SRC_RECORD *src; +{ + struct SRC_DATA *tmp; + + tmp = (struct SRC_DATA *) malloc( sizeof(struct SRC_DATA)) ; + if (tmp == NULL) + err_abort( "store_src - out of memory "); + + /* copy to memory storage */ + + tmp->add_offset = src->add_offset ; + tmp->add_segment = src->add_segment ; + tmp->line_num = src->line_num ; + tmp->file_idx = src->file_idx ; + + if (tmp->file_idx < max_symbol) + max_symbol = tmp->file_idx; /* global symbols proceed + file names in the string + table */ + + /* add to linked list */ + tmp->next = src_list ; + src_list = tmp ; + ++src_count ; + +} + +print_src_data( map) +FILE *map; +{ + struct SRC_DATA **tmp, **idx, *cur; + int src_data_cmp(); + char *src_file, *obj_file; + int count ; + + /* generate source line data index */ + tmp = idx = (struct SRC_DATA **) + malloc( sizeof(struct SRC_DATA *) * (src_count + 1) ) ; + if (idx == NULL) + err_abort("print_src_data - out of memory "); + + for ( cur = src_list ; cur != NULL ; cur = cur->next) + { + *tmp++ = cur ; + *tmp = NULL ; + } + + qsort( idx, src_count, sizeof(struct SRC_DATA *), src_data_cmp); + + for ( tmp = idx; *tmp != NULL ; ) + { + src_file = str_idx[ (*tmp)->file_idx ] ; + obj_file = filename( src_file, ".obj"); + + fprintf( map,"\n\nLine numbers for %s(%s)\n\n", + obj_file, src_file); + + free( obj_file); /* release free memory */ + + /* print line data for this source module */ + for ( count = 1 ; (*tmp != NULL) && + (strcmp( src_file, str_idx[ (*tmp)->file_idx]) == 0 ) ; + ++tmp ) + { + if (( *(tmp + 1) == NULL) || + ( (*tmp)->add_segment != (*(tmp + 1))->add_segment) || + ( (*tmp)->add_offset != (*(tmp + 1))->add_offset) ) + { + fprintf (map, "%6d %04X:%04X%s", (*tmp)->line_num, + (*tmp)->add_segment, (*tmp)->add_offset, + (count % 4) ? "" : "\n" ); + + ++count; + } + } + + } + + fprintf (map, "\n\n"); + free(idx); +} + +src_data_cmp ( a, b) +struct SRC_DATA **a, **b; +{ + int ret_value; + + ret_value = strcmp( str_idx[ (*a)->file_idx], str_idx[ (*b)->file_idx] ); + + if ( ret_value == 0) + ( (*a)->line_num < (*b)->line_num) ? + ( ret_value = -1) : (ret_value = 1) ; + + return (ret_value); + +} + + +char *filename( path, ext) +char *path, *ext; +{ + char *f_path, *bf; + + f_path = malloc( strlen(path) + 5); /* get buffer space */ + if (f_path == NULL) + err_abort("filename - out of memory "); + + strcpy( f_path, path); + if ((bf = strchr( f_path, '.')) != NULL ) + *bf = '\0'; /* truncate extension */ + + strcat( f_path, ext); /* add the extension */ + + return( f_path); + +} + +read_strings( dbg) +int dbg ; /* input file handle */ +{ + char **idx_ptr; /* string index pointer */ + char *s_ptr; + int count ; + long position ; /* return value for lseek() */ + int error ; /* return value for file operations */ + + /* Read in strings (symbol names ) */ + + position = lseek( dbg, (long) dbg_header.start_string * 64, SEEK_SET); + if (position == -1L) + err_abort( dbg_file); + + s_ptr = str_buff = malloc( dbg_header.tot_str_lnth); /* get string buffer */ + if (str_buff == NULL) + err_abort ("read_strings - out of memory "); + + error = read( dbg, str_buff, dbg_header.tot_str_lnth); + if (error == -1) + err_abort (dbg_file); + + /* string index buffer */ + idx_ptr = str_idx = + (char **) malloc( sizeof(char *) * (dbg_header.num_strings + 2) ); + if (str_idx == NULL) + err_abort ("read_strings - out of memory "); + + *idx_ptr++ = NULL; /* string indexes are base 1 */ + for( count = dbg_header.num_strings ; count ; --count) + { + *idx_ptr++ = s_ptr ; /* current string starting address */ + s_ptr += strlen( s_ptr) + 1 ; /* advance to the next string */ + } + *idx_ptr = NULL; + +} + + +err_abort(msg) +char *msg; +{ + perror(msg); /* display error message */ + exit (1); /* abort */ +} + +/* */ + + diff --git a/Manx Aztec C86 v42b/ARC/DBGMAP.MAK b/Manx Aztec C86 v42b/ARC/DBGMAP.MAK new file mode 100644 index 0000000..37597d1 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/DBGMAP.MAK @@ -0,0 +1,12 @@ +# +# convert a .DBG file to a .MAP file +# Paul McClintock April 22, 1987 +# + +dbgmap.obj : dbgmap.c + msc dbgmap /Od /Zd; + +dbgmap.exe : dbgmap.obj + link dbgmap /line /m; + + diff --git a/Manx Aztec C86 v42b/ARC/DOS20.ARC b/Manx Aztec C86 v42b/ARC/DOS20.ARC new file mode 100644 index 0000000..817d2bc --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/DOS20.ARC @@ -0,0 +1,3922 @@ + makefile +OBJ=access.o asctime.o bdos.o bdosx.o chmod.o clk.o clock.o croot.o csread.o\ + ctime.o dioctl.o dos.o dosdir.o dostime.o dosx.o dup.o exec.o execl.o\ + execlp.o execv.o execvp.o fcbinit.o fexec.o fexecl.o fexecv.o filelock.o\ + ftime.o getcwd.o getenv.o io.o ioctl.o isatty.o localtim.o mkdir.o mon.o\ + monitor.o open.o profil.o sigfix.o sighand.o stat.o stkover.o\ + sys.o syserr.o system.o time.o ttyio.o utime.o wait.o stksiz.o + +CC=cc +AS=as +MODEL= +AMODEL=0 + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +bld bldlc: $(OBJ) sbegin.o ssbrk.o lmalloc.o + @echo dos20 done + +bldld bldl: $(OBJ) lbegin.o lsbrk.o + @echo dos20 done + access.c +#include +#include + +access(path, amode) +char *path; +{ + struct { + char rsvd[21]; + char attr; + long time; + long size; + char name[13]; + } sbuf; + register char *cp; + + _sys(0x1a,&sbuf); + if (_sys(0x4e,path,~ST_VLABEL) == -1) { + if (errno == ENOMORE) + errno = ENOENT; + return -1; + } + if (amode & 02 && sbuf.attr & ST_RDONLY) { + errno = EACCES; + return -1; + } + if (amode & 01) { /* execute or search */ + if ((sbuf.attr & ST_DIRECT) == 0) { + for (cp = sbuf.name ; *cp ;) + if (*cp++ == '.') + break; + if (strcmp(cp,"EXE") != 0 && strcmp(cp,"COM") != 0 + && strcmp(cp,"BAT") != 0) { + errno = EACCES; + return -1; + } + } + } + return 0; +} + + asctime.c +/* Copyright (C) 1984 by Manx Software Systems */ +#include + +char * +asctime(tm) +struct tm *tm; +{ + static char days[7][4] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + }; + static char months[12][4] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + }; + static char buffer[26]; + + sprintf(buffer, "%s %s %2d %02d:%02d:%02d %4d\n", + days[tm->tm_wday], months[tm->tm_mon], tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_year+1900); + return buffer; +} + bdos.asm +;Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef bdos,<,,> + push es + mov ax,func + test ah,ah + jnz valok + xchg ah,al +valok: + mov dx,dxval + mov cx,cxval + int 21H + mov dx,es + pop es + and ax,0ffH + pret + pend bdos + finish + end + bdosx.asm +;Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef bdosx,<,,,> + push es + push ds + mov ax,func + test ah,ah + jnz valok + xchg ah,al +valok: + mov dx,dxval + mov cx,cxval + push dsval + pop ds + int 21H + mov dx,es + pop ds + pop es + and ax,0ffH + pret + pend bdosx + finish + end + chmod.asm +; :ts=8 +;Copyright (C) 1984 by Manx Software Systems + include lmacros.h +dataseg segment word public 'data' + extrn errno_:word +dataseg ends + procdef chmod, <,> + pushds + mov ax,4301h + ldptr dx,filnam,ds + mov cx,attr + int 21h + popds + jnc retok + mov ds:errno_,ax + mov ax,-1 + pret +retok: + sub ax,ax + pret + pend chmod + finish + end + clk.asm +;:ts=8 +;Copyright (C) 1985 by Manx Software Systems, Inc. +; +; IBM PC Clock Support routines +; + include lmacros.h +; +; divsor for 121 Hz clock is 9861 dec. +; hex value 0x4DE0 will give exactly 60 inters. per second + codemacro killtime + db 0EBH + db 0 + endm + +INTVEC equ 20h ;location of interrupt vector for clock +TIMER equ 40h +CNTRL equ 43h +EXITVEC equ 88h +TIME_LOW equ 61 +TIME_HIGH equ 98 +TIMES equ 6 + +dataseg segment para public 'data' + +reset_ct db TIMES +scale dw 0 +ifdef LONGPTR +buff_add dd 0 +else +buff_add dw 0 +endif +buf_size dw 0 +ifdef FARPROC +ofset dd 0 +else +ofset dw 0 +endif + extrn _mon_off_:word + extrn _speed_:word + extrn _ticks_:word + extrn _PSP_:word + +dataseg ends + +data_add dw ? ;codesegment variable for location of dataseg in 'C' +clk_ipvec dw ? ;memory location of the stored clock int vector's ip +clk_csvec dw ? ;memory location of the stored clock int vector's cs + +;memory location of all the int vectors on how to exit a program +int22_ip dw ? ;memory location of the stored int 22 vector's ip +int22_cs dw ? ;memory location of the stored int 22 vector's cs + +;memory location of all the int vectors in the PSP +PSP_ip dw ? ;memory location of the stored PSP int 22 vector's ip +PSP_cs dw ? ;memory location of the stored PSP int 22 vector's cs + + assume cs:codeseg, ds:dataseg + + procdef _clkinit,<,,,> + push es ;get args. off stack for later use + mov ax,word ptr ibufad + mov word ptr buff_add,ax +ifdef LONGPTR + mov ax,word ptr ibufad+2 + mov word ptr buff_add+2,ax +endif + mov ax,ibufsz + mov buf_size,ax +ifndef FARPROC + mov ax,word ptr iofset + mov ofset,ax +else + push cx + mov cx,4 + mov ax,word ptr iofset + mov dx,word ptr 2+iofset ;convert to physical address + rol dx,cl + mov bx,dx + and dx,0fh + and bx,0fff0h + add ax,bx + adc dx,0 + mov word ptr ofset,ax + mov word ptr ofset+2,dx + pop cx +endif + mov ax,iscl + mov scale,ax + + sub ax,ax + mov es,ax + mov ax, es:[INTVEC] ;save contents of interupt table + mov cs:clk_ipvec, ax + mov ax,es:[INTVEC+2] ;ditto + mov cs:clk_csvec,ax + mov ax, es:[EXITVEC] ;save contents of interupt table + mov cs:int22_ip, ax + mov ax,es:[EXITVEC+2] ;ditto + mov cs:int22_cs,ax + mov es,_PSP_ ;save contents of the PSP + mov ax,es:[0ah] + mov cs:PSP_ip,ax + mov ax,es:[0ch] + mov cs:PSP_cs,ax + cli + xor ax,ax + mov es,ax + mov es:[INTVEC],offset intsr ;insert the address of int. handler + mov es:[INTVEC+2],cs + mov cs:data_add,ds ;mov 'C' dataseg address to var. + mov es:[EXITVEC],offset int_22 ;insert the address of int. handler + mov es:[EXITVEC+2],cs + mov es,_PSP_ + mov es:[0ah], offset int_22 ;move handler into PSP + mov es:[0ch], cs + sti + xor ax,ax + mov al,36h ;use mode 3 for timer 0 + cli + out CNTRL,al + killtime + mov ax,word ptr _speed_ + out TIMER,al ; + killtime + mov al,ah + out TIMER,al + killtime + sti + sub ax,ax + mov _speed_,ax + pop es + pret + pend _clkinit + + + procdef _clkrest + push es + sub ax,ax + + cli + mov al,36h ;use mode 3 for timer 0 + out CNTRL,al + killtime + mov al,0h ;load low byte + out TIMER,al ;restore to 18.2 intrs. per second + killtime + out TIMER,al + + sub ax,ax + mov es,ax + mov ax, cs:clk_ipvec ;restore interupt vec. table + mov es:[INTVEC], ax + mov ax, cs:clk_csvec ;restore interupt vec. table + mov es:[INTVEC+2],ax + mov ax, cs:int22_ip ;restore interupt vec. table + mov es:[EXITVEC], ax + mov ax, cs:int22_cs ;restore interupt vec. table + mov es:[EXITVEC+2],ax + mov es,_PSP_ ;restore the PSP + mov ax,cs:PSP_ip + mov es:[0ah],ax + mov ax,cs:PSP_cs + mov es:[0ch],ax + + sti + pop es + pret + pend _clkrest + +int_22: + sti + push ax + push dx + push es + push ds + call _clkrest_ + pop ds + pop es + pop dx + mov al,020h ;send EOI to 8259 + out 020h,al + pop ax + jmp dword ptr cs:int22_ip + +intsr: + sti + push bp + mov bp,sp + push ds + push si + push ax + push bx + push dx + mov ds,cs:data_add + + add word ptr _ticks_,1 ;get total number of interupts + adc word ptr _ticks_+2,0 +ifndef FARPROC + mov ax,word ptr 4[bp] ;get cs value in interrupted code + mov dx,cs + cmp ax,dx ;compare with current cs + jne quit ;if not = punt + mov ax,word ptr 2[bp] ;get ip value in interrupted code + sub ax,ofset ;sub ofset (lowpc) from ip + jb quit ;if negative punt + cmp scale,1 + jz nodiv + xor dx,dx + div scale ;div. by scale factor done in monitor +else + mov ax,ss:word ptr 2[bp] ;get ip value in interrupted code + mov dx,ss:word ptr 4[bp] ;get cs value in interrupted code + rol dx,1 + rol dx,1 + rol dx,1 + rol dx,1 + mov bx,dx + and dx,0fh + and bx,0fff0h + add ax,bx + adc dx,0 ;convert to physical address + sub ax,word ptr ofset + sbb dx,word ptr ofset+2 + jb quit ;if beyond bottom of range,punt + cmp dx,word ptr scale + jge quit ;if divide will overflow,punt + cmp word ptr scale,1 + jz nodiv ;skip divide if index is good as is + div word ptr scale +endif +nodiv: + cmp ax,buf_size ;check to see if out of buff + ja quit ;if out of range punt + shl ax,1 ;shift to get on a word boundary + mov si,ax + ldptr bx,buff_add,ds + add ds:word ptr [bx][si],1 ;else increment word + jnc quit ;check to see if we overflowed a bucket + sub ds:word ptr 0[bx][si],1 +ifdef LONGPTR + mov ds,cs:data_add +endif + call _clkrest_ + sub ax,ax + mov ax,si + mov _mon_off_,ax +quit: +ifdef LONGPTR + mov ds,cs:data_add +endif + dec reset_ct + jz time_out + pop dx + pop bx + pop ax + pop si + pop ds + pop bp + push ax + mov al,020h ;send EOI to 8259 + out 020h,al + pop ax + iret +time_out: + mov reset_ct,TIMES + pop dx + pop bx + pop ax + pop si + pop ds + pop bp + jmp dword ptr cs:clk_ipvec + finish + end + clock.asm +; Copyright (C) 1985, 1986 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h +dataseg segment word public 'data' +last dw 0,0 +dataseg ends + assume ds:dataseg + + procdef clock + mov ah,2ch + int 21h ; get time + mov al,100 + mul dh ;get seconds as hundredths into ax + sub dh,dh + add ax,dx ;add in hundredths + mov bx,ax ;save total hundredths + mov al,60 + mul ch ; get hours as mins into ax + sub ch,ch + add ax,cx ; add minutes to converted hours + mov cx,6000 + mul cx ; convert to hundredths of seconds + add ax,bx ; add in seconds+hundredths + adc dx,0 ; axdx now contains value in hunredths + cmp dx,word ptr last+2 + ja valok + jne clktrn + cmp ax,word ptr last + jae valok +clktrn: ; clock turned over since last call + add ax,0d600h + adc dx,083h ; add in 24 hours +valok: + mov word ptr last+2,dx + mov word ptr last,ax + pret + pend clock + finish + end + croot.asm + largecode + name croot_ +codeseg segment para public 'code' +dataseg segment para public 'data' +dataseg ends + assume cs:codeseg,ds:dataseg,es:dataseg,ss:dataseg + extrn $begin:far +;/* Copyright (C) 1981,1982, 1983 by Manx Software Systems */ +;#include "errno.h" +;#include "fcntl.h" +; +;static char **Argv; +;static int Argc; +; +;noper() +;{ +# 8 'croot.c' +^| $3 + public noper_ +noper_ proc far +ifdef $20004 + push bp + mov bp,sp +endif +ifdef $20001 + add sp,$20001 +endif +ifdef $20002 + push di +endif +ifdef $20003 + push si +endif +; return 0; +^ mov ax,00H +$20005: +ifdef $20003 + pop si +endif +ifdef $20002 + pop di +endif +ifdef $20004 + mov sp,bp + pop bp +endif + ret +;} +^noper_ endp +$3: +; +;int (*cls_)() = noper; +dataseg segment word public 'data' + public cls__ +cls__ equ this word + dd noper_ +dataseg ends +;extern char _ioflg[]; +; +;Croot(cp, first) +;register char *cp; +# 16 +^| $5 + public Croot_ +Croot_ proc far +ifdef $20009 + push bp + mov bp,sp +endif +ifdef $20006 + add sp,$20006 +endif +ifdef $20007 + push di +endif +ifdef $20008 + push si +endif +;{ +; register char **cpp; +; char *sbrk(); +;#ifdef REDIR +; +; _ioflg[0] = isatty(0); /* set flag for i/o routines */ +~ cpp -4 "##c" +~~ cp 6 "#c" +~~ first 10 "i" +^^^^^^^^^ mov ax,00H + push ax + call far ptr isatty_ + pop cx + mov byte ptr _ioflg_,al +; _ioflg[1] = isatty(1); /* set flag for i/o routines */ +^ mov ax,01H + push ax + call far ptr isatty_ + pop cx + mov byte ptr _ioflg_+1,al +; _ioflg[2] = isatty(2); /* set flag for i/o routines */ +^ mov ax,02H + push ax + call far ptr isatty_ + pop cx + mov byte ptr _ioflg_+2,al +; +; Argv = (char **)sbrk((first+1)*sizeof(char *)); +^^ mov ax,word ptr 10[bp] + shl ax,1 + shl ax,1 + add ax,04H + push ax + call far ptr sbrk_ + pop cx + mov word ptr Argv_+2,dx + mov word ptr Argv_,ax +; Argv[0] = ""; +^ mov ax, offset $20000+0 + mov dx,ds + les bx, dword ptr Argv_ + mov es:word ptr 2[bx],dx + mov es:word ptr [bx],ax +; cpp = &Argv[Argc = first]; +^ mov cx,word ptr 10[bp] + mov word ptr Argc_,cx + shl cx,1 + shl cx,1 + mov ax, word ptr Argv_ + mov dx, word ptr Argv_+2 + add ax,cx + + mov word ptr -2[bp],dx + mov word ptr -4[bp],ax +; for (;;) { +^$8: +; while (*cp == ' ' || *cp == '\t') +^$9: + les bx,dword ptr 6[bp] + cmp es:byte ptr [bx],020H + beq $20010 + cmp es:byte ptr [bx],09H + bne $10 +$20010: +; ++cp; +^ inc word ptr 6[bp] + jmp $9 +$10: +; if (*cp == 0) +^; break; + les bx,dword ptr 6[bp] + cmp es:byte ptr [bx],0 + beq $7 +;#ifdef REDIR +; { +^^^^^^^^^^^^^^^^^^^^^ +^^^^^; *cpp++ = cp; +^ mov ax,word ptr 6[bp] + mov dx,word ptr 8[bp] + les bx,dword ptr -4[bp] + mov es:word ptr 2[bx],dx + mov es:word ptr [bx],ax + add word ptr -4[bp],4 +; Argc++; +^ inc word ptr Argc_ +; if (sbrk(sizeof(char *)) == (char *)-1) { +^ mov ax,04H + push ax + call far ptr sbrk_ + pop cx + cmp dx,0ffffH + jne $20011 + cmp ax,0ffffH +$20011: + bne $11 +; write(2, "Too many args.", 14); +^ mov ax,0eH + push ax + push ds + mov ax, offset $20000+1 + push ax + mov ax,02H + push ax + call far ptr write_ + add sp,8 +; _exit(200); +^ mov ax,0c8H + push ax + call far ptr _exit_ + pop cx +; } +^; while (*++cp) +$11: +^$12: + inc word ptr 6[bp] + les bx,dword ptr 6[bp] + cmp es:byte ptr [bx],0 + beq $13 +; if (*cp == ' ' || *cp == '\t') { +^ mov al,es:byte ptr [bx] + cmp al,020H + beq $20012 + cmp al,09H + bne $14 +$20012: +; *cp++ = 0; +^ mov es:byte ptr [bx],00H + inc word ptr 6[bp] +; break; +^ jmp $13 +; } +^; } +$14: + jmp $12 +$13: +^; } +^$6: + jmp $8 +$7: +; *cpp = 0; +^ les bx,dword ptr -4[bp] + mov es:word ptr 2[bx],00H + mov es:word ptr [bx],00H +; main(Argc,Argv); +^ push word ptr Argv_+2 + push word ptr Argv_ + push word ptr Argc_ + call far ptr main_ + add sp,6 +; exit(0); +^ mov ax,00H + push ax + call far ptr exit_ + pop cx +;} +^$20013: +ifdef $20008 + pop si +endif +ifdef $20007 + pop di +endif +ifdef $20009 + mov sp,bp + pop bp +endif + ret +$20006 = -4 +$20009 equ 1 +Croot_ endp +$5: +dataseg segment word public 'data' +$20000 db 0,84,111,111,32,109 + db 97,110,121,32,97,114 + db 103,115,46,0 +dataseg ends +; +;#ifdef REDIR +; +;exit(code) +;{ +# 95 +^| $16 + public exit_ +exit_ proc far +ifdef $20018 + push bp + mov bp,sp +endif +ifdef $20015 + add sp,$20015 +endif +ifdef $20016 + push di +endif +ifdef $20017 + push si +endif +; (*cls_)(); +~~ code 6 "i" +^ call dword ptr cls__ +; _exit(code); +^ push word ptr 6[bp] + call far ptr _exit_ + pop cx +;} +^$20019: +ifdef $20017 + pop si +endif +ifdef $20016 + pop di +endif +ifdef $20018 + mov sp,bp + pop bp +endif + ret +$20018 equ 1 +exit_ endp +$16: +; +| +~ exit_ . "{i" +~ main_ . "{i" +~ _exit_ . "{i" +~ write_ . "{i" +~ isatty_ . "{i" +~ sbrk_ . "{#c" +~ Croot_ . "{i" +~ _ioflg_ . "[0c" +~ cls__ . "#{i" +~ noper_ . "{i" + bss Argc_:word,2 +~ Argc Argc_ "i" + bss Argv_:word,4 +~ Argv Argv_ "##c" + extrn main_:far + extrn _exit_:far + extrn write_:far + extrn sbrk_:far + extrn isatty_:far +codeseg ends +dataseg segment word public 'data' + extrn _ioflg_:word +dataseg ends + end + croot.c +/* Copyright (C) 1981,1982, 1983 by Manx Software Systems */ +#include "errno.h" +#include "fcntl.h" + +static char **Argv; +static int Argc; + +noper() +{ + return 0; +} + +int (*cls_)() = noper; +extern char _ioflg[]; + +Croot(cp, first) +register char *cp; +{ + register char **cpp; + char *sbrk(); +#ifdef REDIR + register int k; + register char *fname; +#endif + + _ioflg[0] = isatty(0); /* set flag for i/o routines */ + _ioflg[1] = isatty(1); /* set flag for i/o routines */ + _ioflg[2] = isatty(2); /* set flag for i/o routines */ + + Argv = (char **)sbrk((first+1)*sizeof(char *)); + Argv[0] = ""; + cpp = &Argv[Argc = first]; + for (;;) { + while (*cp == ' ' || *cp == '\t') + ++cp; + if (*cp == 0) + break; +#ifdef REDIR + if (*cp == '>') { /* redirect output */ + k = 1; + goto redirect; + } else if (*cp == '<') { /* redirect input */ + k = 0; +redirect: + while (*++cp == ' ' || *cp == '\t') + ; + fname = cp; + while (*++cp) + if (*cp == ' ' || *cp == '\t') { + *cp++ = 0; + break; + } + close(k); + if (k) + k = creat(fname, 0666); + else + k = open(fname, O_RDONLY); + if (k == -1) + redir_err(fname); + } else +#endif + { + *cpp++ = cp; + Argc++; + if (sbrk(sizeof(char *)) == (char *)-1) { + write(2, "Too many args.", 14); + _exit(200); + } + while (*++cp) + if (*cp == ' ' || *cp == '\t') { + *cp++ = 0; + break; + } + } + } + *cpp = 0; + main(Argc,Argv); + exit(0); +} + +#ifdef REDIR +static redir_err(name) +char *name; +{ + char buff[200]; + + strcpy(buff, "Can't open file for redirection: "); + strcat(buff, name); + strcat(buff, "\n"); + write(2, buff, strlen(buff)); + exit(10); +} +#endif + +exit(code) +{ + (*cls_)(); + _exit(code); +} + + crt0.asm +; Copyright (C) 1983 1984 by Manx Software Systems +; :ts=8 +_TEXT segment byte public 'CODE' + public __Corg + assume cs:_TEXT +__Corg label byte + + public __chkstk +__chkstk proc near + ret +__chkstk endp + + public __acrtused +__acrtused proc near + ret +__acrtused endp +_TEXT ends +PROG segment byte public 'CODE' +PROG ends + + +@DATAB segment para public 'DATAB' +@DATAB ends + +_DATA segment word public 'DATA' + db 'Aztec C86 version 4.10a',0 + even + public __Dorg +__Dorg label byte +_DATA ends + +@DATAC segment word public 'DATAC' +@DATAC ends +@DATAI segment word public 'DATAI' +@DATAI ends + +@DATAT segment word public 'DATAT' + public __Dend +__Dend label byte + public __Uorg +__Uorg label byte +@DATAT ends + +@DATAU segment word public 'DATAU' +@DATAU ends + +@DATAV segment word public 'DATAV' + public __Uend +__Uend label byte +@DATAV ends + +_STACK segment para stack 'STACK' +First db 2048 dup (?) +_STACK ends + end +DGROUP group @DATAB,_DATA,@DATAC,@DATAT,_BSS,@DATAV,_STACK + csread.asm +; Copyright (C) 1983, 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment word public 'data' + extrn errno_:word +dataseg ends + procdef _csread,<,,> +; _csread(fd, char *addr, len) +; read data into code segment + mov bx,fd + push ds +ifdef FARPROC + lds dx,addr +else + mov dx,addr +endif + mov cx,len +ifndef FARPROC + mov ax,cs + mov ds,ax +endif + mov ah,3fH + int 21H + pop ds + jnc ret_ok + mov ds:errno_,ax + mov ax,-1 +ret_ok: + pret + pend _csread + finish + end + ctime.c +/* Copyright (C) 1984 by Manx Software Systems */ +#include + +char * +ctime(clock) +long *clock; +{ + struct tm *tm; + + tm = localtime(clock); + return asctime(tm); +} + dioctl.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment word public 'data' + extrn errno_:word +dataseg ends + procdef _ioctl, <,,,> +; _ioctl(fd, req, arg[, len]) + mov bx,fd + mov ah,44H + mov al,req + cmp al,0 + je getinfo + cmp al,1 + je setinfo + cmp al,6 + jge getstat + pushds + ldptr dx,arg,ds + mov cx,len + int 21H + popds + jnc xret_ok + mov ds:errno_,ax + mov ax,-1 +xret_ok: + pret +; +doint proc near + int 21H + jnc ret_ok + mov ds:errno_,ax + mov ax,-1 +ret_ok: + ret +doint endp +; +getstat: + call doint + pret +; +getinfo: + call doint + jc err + ldptr bx,arg,es +ifdef LONGPTR + mov es:[bx],dx +else + mov ds:[bx],dx +endif + sub ax,ax +err: + pret +; +setinfo: + ldptr bx,arg,es +ifdef LONGPTR + mov dl,es:[bx] +else + mov dl,ds:[bx] +endif + sub dh,dh + mov bx,fd + call doint + jc err + sub ax,ax + pret + pend _ioctl + finish + end + dos.asm +; Copyright (C) 1983, 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment para public 'data' + extrn errno_:word +dataseg ends + assume ds:dataseg + procdef dos,<,,,,,> +; dos(ax,bx,cx,dx,di,si) + push di + push si +ifndef LONGPTR + mov ax,ds + mov es,ax +endif + mov ax,func + test ah,ah + jnz skip + xchg ah,al +skip: + mov bx,bxval + mov cx,cxval + mov dx,dxval + mov di,dival + mov si,sival + int 21H + jnc ret_ok + mov errno_,ax + mov ax,-1 +ret_ok: + pop si + pop di + pret + pend dos + finish + end + dosdir.c +#include "model.h" + +#define SETDMA 26 +#define SRCHFIR 0x4e +#define SRCHNXT 0x4f + +char * +scdir(pat) +char *pat; +{ + register char *cp, *np; + char *index(); + static int code = SRCHFIR; + static char nambuf[64], *tail; + static struct { + char reserve[21]; + char attr; + long mtime; + long fsize; + char name[13]; + } srchbuf; + + if (code == SRCHFIR) { + if (index(pat, '*') == 0 && index(pat, '?') == 0) { + +/* This code was taken out and new code put in to handle the case of + scdir("hello.c") where hello.c does not exist. 3/10/88 +*/ +#if 0 + code = 0; + return pat; +#endif + if (access(pat, 0) == -1) { + code = SRCHFIR; + return (char *)0; + } else { + code = 0; + return pat; + } + } + strncpy(nambuf, pat, 64); + for (cp = tail = nambuf ; cp < &nambuf[64] && *cp ; ++cp) + if ((tail == nambuf && *cp == ':') || *cp == '/' || *cp == '\\') + tail = cp+1; + } + +#ifdef _LARGEDATA + bdosx(SETDMA, &srchbuf); + if (code == 0 || dosx(code, 0, -1, pat) == -1) { +#else + bdos(SETDMA, &srchbuf); + if (code == 0 || dos(code, 0, -1, pat) == -1) { +#endif + code = SRCHFIR; + return (char *)0; + } + code = SRCHNXT; + + np = tail; + cp = srchbuf.name; + while (*np++ = tolower(*cp++)) + ; + return nambuf; +} + + + + dostime.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +codeseg segment byte public "code" +days dw -1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333 +codeseg ends + procdef dostime, <> + push es + push si +; + mov ah,2aH + int 21h + ldptr bx,arg,es + sub cx,1900 +ifndef LONGPTR + mov ds:word ptr 10[bx],cx ;year - 1900 +else + mov es:word ptr 10[bx],cx ;year - 1900 +endif + sub ah,ah + mov al,dh + dec al +ifndef LONGPTR + mov ds:word ptr 8[bx],ax ;month +else + mov es:word ptr 8[bx],ax ;month +endif + mov al,dl +ifndef LONGPTR + mov ds:word ptr 6[bx],ax ;day of month +else + mov es:word ptr 6[bx],ax ;day of month +endif +; + mov ah,2cH + int 21H + ldptr bx,arg,es + sub ah,ah + mov al,ch +ifndef LONGPTR + mov ds:word ptr 4[bx],ax ;hour + mov al,cl + mov ds:word ptr 2[bx],ax ;minute + mov al,dh + mov ds:word ptr [bx],ax ;seconds + mov al,dl + mov ds:word ptr 18[bx],ax ;1/100 seconds +; + sub ax,ax + mov si,ds:word ptr 8[bx] + cmp si,2 + jb noleap + test ds:byte ptr 10[bx],3 + jnz noleap + inc ax +noleap: + shl si,1 + add ax,cs:days[si] + add ax,ds:word ptr 6[bx] + mov ds:word ptr 14[bx],ax ;day of year +; + mov si,ds:word ptr 10[bx] +else + mov es:word ptr 4[bx],ax ;hour + mov al,cl + mov es:word ptr 2[bx],ax ;minute + mov al,dh + mov es:word ptr [bx],ax ;seconds + mov al,dl + mov es:word ptr 18[bx],ax ;1/100 seconds +; + sub ax,ax + mov si,es:word ptr 8[bx] + cmp si,2 + jb noleap + test es:byte ptr 10[bx],3 + jnz noleap + inc ax +noleap: + shl si,1 + add ax,cs:days[si] + add ax,es:word ptr 6[bx] + mov es:word ptr 14[bx],ax ;day of year +; + mov si,es:word ptr 10[bx] +endif + add ax,si + dec si + shr si,1 + shr si,1 + add ax,si + inc ax + sub dx,dx + mov cx,7 + div cx +ifndef LONGPTR + mov ds:word ptr 12[bx],dx ;day of week +; + mov ds:word ptr 16[bx],0 ;say no D.S.T. for now +else + mov es:word ptr 12[bx],dx ;day of week +; + mov es:word ptr 16[bx],0 ;say no D.S.T. for now +endif + pop si + pop es + pret + pend dostime + finish + end + dosx.asm +; Copyright (C) 1983, 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment para public 'data' + extrn errno_:word +dataseg ends + assume ds:dataseg + procdef dosx,<,,,,,,> +; dosx(ax,bx,cx,dx,es,di,si) + push di + push si +ifndef LONGPTR + mov ax,ds + mov es,ax +endif + push ds + mov ax,func + test ah,ah + jnz skip + xchg ah,al +skip: + mov bx,bxval + mov cx,cxval + mov dx,dxval + mov di,dival + mov si,sival + push dsval + pop ds + int 21H + pop ds + jnc ret_ok + mov errno_,ax + mov ax,-1 +ret_ok: + pop si + pop di + pret + pend dosx + finish + end + dup.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment word public 'data' + extrn errno_:word +dataseg ends + assume ds:dataseg + procdef dup,<> +; dup(ofd) : duplicate file descriptor +; if ok, returns new fd. if error, returns -1. + mov ah,45h +dupx: + mov bx,ofd + int 21H + jnc ret_ok + mov errno_,ax + mov ax,-1 +ret_ok: + pret + pend dup +; + procdef fdup,<,> +; fdup(ofd, nfd): force dup of ofd into nfd +; If nfd is open it will be closed. +; if ok, returns nfd; if error, returns -1 + mov cx,nfd + mov ah,46h + jmp dupx + pend fdup + finish + end + exec.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h + +ifdef FARPROC + extrn _sigfix_:far +else + extrn _sigfix_:near +endif +; +e_magic equ 0 +e_used equ 2 ;number of bytes used in final sector of file +e_pages equ 4 ;size of file in 512-byte pages +e_nreloc equ 6 ;number relocation table items +e_hsize equ 8 ;size of header in 16-byte paragraphs +e_min equ 10 ;minimum # of para required above program +e_max equ 12 ;maximum # of para " " " +e_ss equ 14 ;offset of stack segment in load module +e_sp equ 16 ;initial SP value +e_csum equ 18 ;negative sum of all words in the file +e_ip equ 20 ;starting IP for program +e_cs equ 22 ; " CS " +e_freloc equ 24 ;offset of first relocation item +e_ovly equ 26 ;overlay number + +; +ldrsize equ 1024 +header equ ldrsize-30 +reloc equ 26 +startad equ 0 +; +dataseg segment word public 'data' + extrn _PSP_:word +dataseg ends +; +;exec(fd,cline,fcb1,fcb2,header) +; NOTE: This function never returns, even if the exec +; fails. +; + procdef exec,<,,,,> +; +; copy cmd line and fcb's into PSP +; +load proc far ;so returns are far + push ds + call _sigfix_ ;restore int 22,23 vectors + mov es,ds:_PSP_ ;fetch segment of PSP + ldptr si,cline,ds + mov di,80h + mov cx,64 +rep movsw ;copy command line + ldptr si,fcb1,ds + mov di,5ch + mov cx,8 +rep movsw ;copy fcb1 + ldptr si,fcb2,ds + mov cx,8 +rep movsw ;copy fcb2 +; + mov bx,0ffffh ;ask for all of memory + mov ah,4ah + int 21h + mov ah,4ah ;then ask for what we can get + int 21h +; + mov dx,fd ;file handle + ldptr si,head,ds ;exe header from file + cmp ds:word ptr [si+e_magic],5a4dh ;check magic # + je exefile + + mov bp,bx ;compute new SP + cmp bp,4096 ;check size of segment + jbe smallstk + mov bp,4096 +smallstk: + mov cx,4 + shl bp,cl ;new SP +; + mov cx,es + add bx,cx ;end of our segment + sub bx,8 ;get 128 bytes for loader and stack + mov es,bx + pop si ; get old ds value back + mov ss,bx + mov sp,128 + push si ; push old ds on stack for later use +; + mov cx,cs + mov ds,cx + mov si,offset com_loader + sub di,di + mov cx,offset com_ldend + sub cx,si +rep movsb +; + mov bx,dx ;handle into bx for io calls + sub cx,cx + sub dx,dx + mov ax,4200H + int 21H ;rewind file +; + mov dx,100H ;address to read data into + lea cx,[bp-256] ;byte count to read in + pop ds + mov ax,ds:_PSP_ ;segment of PSP + mov ds,ax + mov es,ax + push ss + sub ax,ax + push ax + mov ah,3fH + ret +; +; this block of code is moved to the top of available memory +; and jumped to with the registers for a read call setup +; +com_loader: + int 21h + jnc ok + mov ax,4cfeh + int 21h +ok: + mov ah,3eH + int 21h ;close the file + mov ax,ds + mov ss,ax + mov sp,bp + push ax ;push new cs + mov ax,100h + push ax ;push new ip + ret +com_ldend: +; +; +exefile: + mov cx,es + add bx,cx ;end of our segment + sub bx,ldrsize/16 ;get mem for loader, header, and stack + mov es,bx + mov di,header + mov cx,13 +rep movsw ;copy 26 byte file header +; + pop si ; get old ds value + mov ss,bx + mov sp,header + push si ; push old ds value on new stack for later use +; + mov cx,cs + mov ds,cx + mov si,offset exe_loader + sub di,di + mov cx,offset exe_ldend + sub cx,si +rep movsb +; + pop ds + mov ax,ds:_PSP_ ;segment of PSP + push ax ;ES, DS value for program + add ax,10h + mov ds,ax ;place to load program + mov bp,ax + mov bx,dx ;get handle into bx for int 21h +; + mov di,header + mov dx,ss:e_hsize[di] ;compute offset of program + sub ax,ax + mov cl,4 +lshift: + shl dx,1 + rcl ax,1 + loop lshift + mov cx,ax + mov ax,4200H + int 21h ;lseek to load module + jc punt +; + mov si,ss:e_pages[di] + mov cl,5 + shl si,cl ;# paragraphs in file + sub si,ss:e_hsize[di] ;now, # para in program +; + push ss ;CS for loader + sub ax,ax + push ax ;IP for loader + ret ;far return to code at top of mem +; +; this code is moved to the top of our segment and jumped to +; with the following registers setup: +; bx - file handle of program +; ds, bp - where to load the program +; di - points to the exe header +; si - # para to read in +; PSP address pushed onto stack +; +exe_loader: + mov ah,3fH + mov cx,0fff0h ;read as much as possible at once + cmp si,0fffh ;check how much is left to read + ja cx_ok + mov cl,4 ;if less, then compute remaining + shl si,cl + mov cx,si + mov si,0fffh +cx_ok: + sub dx,dx + int 21h + jnc read_ok +punt: + mov ax,4cfeh + int 21h +read_ok: + test ax,ax + jz load_done + mov ax,ds + add ax,0fffh + mov ds,ax + sub si,0fffh + ja exe_loader +; +load_done: + mov ax,cs + mov ds,ax + cmp word ptr e_nreloc[di],0 + jz reloc_done + mov dx,e_freloc[di] + sub cx,cx + mov ax,4200H + int 21H ;lseek to relocation info + jc punt +relocate: + lea dx,reloc[di] + mov cx,4 + mov ah,3fH + int 21H + jc punt + cmp ax,4 + jne punt + mov si,reloc[di] + mov ax,reloc+2[di] + add ax,bp + mov es,ax + add es:[si],bp + dec word ptr e_nreloc[di] + jnz relocate +reloc_done: + mov ah,3eH + int 21h ;close file + add e_ss[di],bp ;relocate stack segment + add e_cs[di],bp ;relocate starting CS + pop ax ;get PSP address before changing stack + mov ss,e_ss[di] + mov sp,e_sp[di] + mov ds,ax + mov es,ax + jmp cs:dword ptr e_ip[di] +exe_ldend: +load endp + pend exec + finish + end + execl.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +execl(path, args) +char *path, *args; +{ + return execv(path, &args); +} + execlp.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +execlp(name, args) +char *name, *args; +{ + return execvp(name, &args); +} + + execv.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +#define EXEMAGIC 0x5a4d + +struct exehead { /* MS-dos .exe file header */ + int e_magic; + int e_used; /* number of bytes used in final sector of file */ + int e_pages; /* size of file in 512-byte pages */ + int e_nreloc; /* number relocation table items */ + int e_hsize; /* size of header in 16-byte paragraphs */ + int e_min; /* minimum # of para required above program */ + int e_max; /* maximum # of para " " " */ + unsigned e_ss; /* offset of stack segment in load module */ + unsigned e_sp; /* initial SP value */ + unsigned e_csum; /* negative sum of all words in the file */ + unsigned e_ip; /* starting IP for program */ + unsigned e_cs; /* " CS " */ + int e_freloc; /* offset of first relocation item */ + int e_ovly; /* overlay number */ +}; + +execv(path, argv) +char *path, **argv; +{ + register char *cp, *xp; + int i, fd; + char buffer[130]; + char fcb1[16], fcb2[16]; + struct exehead header; + + if ((fd = open(path,0)) == -1) + return -1; + if (read(fd, &header, sizeof header) != sizeof header) + header.e_magic = 0; + + cp = buffer+1; + i = 1; + if (*argv) { + ++argv; /* skip arg0, used for unix (tm) compatibility */ + while (xp = *argv++) { + if (i == 1) + fcbinit(xp, fcb1); + else if (i == 2) + fcbinit(xp, fcb2); + *cp++ = ' '; + while (*xp) { + if (cp >= buffer+128) + goto done; + *cp++ = *xp++; + } + ++i; + } + } +done: + buffer[0] = cp - (buffer+1); + return exec(fd, buffer, fcb1, fcb2, &header); +} + + execvp.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +execvp(name, argv) +char *name, **argv; +{ + register char *cp, *xp; + char *getenv(), path[64]; + + tryexec("", name, argv); + if ((cp = getenv("PATH")) != 0) { + while (*cp) { + xp = path; + while (*cp) { + if (*cp == ';') { + ++cp; + break; + } + *xp++ = *cp++; + } + *xp = 0; + if (path[0] != 0) + tryexec(path, name, argv); + } + } + return -1; +} + +static +tryexec(dir, name, argv) +char *dir, *name, **argv; +{ + char newname[64]; + register char *cp; + char *strchr(), *strrchr(); + + strcpy(newname, dir); + if (((cp = strchr(newname, '/')) || (cp = strchr(newname, '\\'))) + && *(cp+1) != 0) + strcat(newname, "/"); + strcat(newname, name); + if (strchr(name, '.') == 0) { + strcat(newname, ".com"); + execv(newname, argv); + strcpy(strrchr(newname,'.'), ".exe"); + } + execv(newname, argv); +} + fcbinit.asm +;Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef fcbinit, <,> + pushds + push di + push si +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr si,jname + ldptr di,fcb + mov ax,2900H ; issue parse filename call + int 21H + and ax,0ffH + cmp es:byte ptr 1[di],' ' + jne nameok + mov ax,-1 +nameok: + pop si + pop di + popds + pret + pend fcbinit + finish + end + fexec.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment para public 'data' +param equ this word +env dw ? +cline dw ?,? +fcb1 dw ?,? +fcb2 dw ?,? + extrn errno_:word +dataseg ends + assume ds:dataseg +save_ss dw 0 +save_sp dw 0 + procdef fexec,<,,,,> +; char *fexec(name,env,cline,fcb1,fcb2) +; + push si + push di + pushf + push [030H] + push [02EH] + push ds + push es + mov cs:save_ss,ss + mov cs:save_sp,sp +; +; set up parameter block for exec call +; + mov ax,enva + mov env,ax +ifndef LONGPTR + mov ax,ds + mov es,ax +endif + ldptr ax,clinea,es + mov cline,ax + mov cline+2,es + ldptr ax,fcb1a,es + mov fcb1,ax + mov fcb1+2,es + ldptr ax,fcb2a,es + mov fcb2,ax + mov fcb2+2,es +; + mov ax,ds + mov es,ax + mov bx,offset param + ldptr dx,filname,ds ;name of file to exec + mov ax,04b00H + int 21h + mov ss,cs:save_ss + mov sp,cs:save_sp + pop es + pop ds + jnc noerror + mov errno_,ax + mov ax,-1 + jmp short done +noerror: + sub ax,ax +done: + pop [02EH] + pop [030H] + popf + pop di + pop si + pret + pend fexec + finish + end + fexecl.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +fexecl(path, args) +char *path, *args; +{ + return fexecv(path, &args); +} + fexecv.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ + +fexecv(path, argv) +char *path, **argv; +{ + register char *cp, *xp; + int i; + char buffer[130]; + char fcb1[16], fcb2[16]; + + cp = buffer+1; + i = 1; + fcbinit(".", fcb1); /* initialize fcb's, in case no args */ + fcbinit(".", fcb2); + if (*argv) { + ++argv; /* skip arg0, used for unix (tm) compatibility */ + while (xp = *argv++) { + if (i == 1) + fcbinit(xp, fcb1); + else if (i == 2) + fcbinit(xp, fcb2); + *cp++ = ' '; + while (*xp) { + if (cp >= buffer+127) + goto done; + *cp++ = *xp++; + } + ++i; + } + } +done: + buffer[0] = cp - (buffer+1); + *cp = '\r'; /* add CR to make some dos commands happy */ + return fexec(path, 0, buffer, fcb1, fcb2); +} + + filelock.asm +; :ts=8 +;Copyright (C) 1984 by Manx Software Systems + include lmacros.h +dataseg segment word public 'data' + extrn errno_:word +dataseg ends + procdef filelock, <,,,> + push si + push di + mov ah,5ch + mov al,byte ptr flag + mov bx,fd + mov cx,word ptr pos+2 + mov dx,word ptr pos + mov si,word ptr len+2 + mov di,word ptr len + int 21h + pop di + pop si + jnc retok + mov ds:errno_,ax + mov ax,-1 + pret +retok: + sub ax,ax + pret + pend filelock + finish + end + foo +makefile +access.c +asctime.c +bdos.asm +bdosx.asm +chmod.asm +clk.asm +clock.asm +croot.asm +croot.c +crt0.asm +csread.asm +ctime.c +dioctl.asm +dos.asm +dosdir.c +dostime.asm +dosx.asm +dup.asm +exec.asm +execl.c +execlp.c +execv.c +execvp.c +fcbinit.asm +fexec.asm +fexecl.c +fexecv.c +filelock.asm +foo +ftime.asm +getcwd.c +getenv.asm +io.asm +ioctl.c +isatty.asm +lbegin.asm +lbrk.asm +lmalloc.asm +localtim.c +lsbrk.asm +mkdir.asm +mon.c +monitor.c +open.c +profil.c +sbegin.asm +sigfix.asm +sighand.asm +ssbrk.asm +stat.c +stkover.c +stksiz.c +sys.asm +syserr.c +system.c +time.asm +ttyio.c +utime.c +wait.asm + ftime.asm +; :ts=8 +;Copyright (C) 1984 by Manx Software Systems + include lmacros.h +dataseg segment para public 'data' + extrn errno_:word +dataseg ends + assume ds:dataseg + procdef ftime,<,,,> +; +;long ftime(get/set, fd, [long newtime]) +; + mov ah,57h + mov al,get + mov bx,fd + mov cx,newt1 + mov dx,newt2 + int 21h + jnc retok + mov errno_,ax + mov ax,-1 + mov dx,ax + pret +retok: + test get,1 + jz gettime + sub dx,dx + mov cx,dx +gettime: + mov ax,cx + pret + pend ftime + finish + end + getcwd.c +/* Copyright (C) 1984 by Manx Software Systems */ + +char * +getcwd(buf, size) +char *buf; +{ + char *malloc(); + int allflag = 0; + + if (buf == 0) { + if ((buf = malloc(size)) == 0) + return 0; + allflag = 1; + } + if (_sys(0x47,buf,0) == -1) { + if (allflag) + free(buf); + return 0; + } + return buf; +} + getenv.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment para public 'data' + ifndef LONGPTR +retbuf db 256 dup (?) + endif + extrn _PSP_:word +dataseg ends + assume ds:dataseg + procdef getenv, <> +; char *getenv(name) +; char *name; +; + push ds + push si + push di +ifndef LONGPTR + mov bx,ds + mov es,bx +endif + cld + ldptr bx,jname,es + mov ds,ds:_PSP_ ;fetch segment of PSP + mov ds,ds:[2cH] ;get environment segment + sub si,si +envloop: + lodsb + test al,al + jz nostring + sub di,di +cmploop: + cmp al,'=' + jne notaneq + sub al,al +notaneq: + cmp al,es:[bx][di] + jne next + test al,al + je foundit + inc di + lodsb + test al,al + jne cmploop + jmp envloop +next: + lodsb + test al,al + jne next + jmp envloop +; +foundit: +ifndef LONGPTR +; +; copy string to local buffer, so we can return a 16-bit pointer to it. +; + mov di,offset retbuf + mov cx,255 +cpyloop: + lodsb + stosb + test al,al + loopnz cpyloop + sub al,al + stosb ;guarantee null termination + mov ax,offset retbuf + test ax,ax + jmp short done +; +nostring: + sub ax,ax +done: +else + mov dx,ds + mov ax,si + jmp short done + +nostring: + sub ax,ax + sub dx,dx + +done: +endif + pop di + pop si + pop ds + pret + pend getenv + finish + end + io.asm +; Copyright (C) 1983 1984 by Manx Software Systems +; :ts=8 + include lmacros.h + +ifdef FARPROC + extrn __tty_rd_:far,__tty_wr_:far +else + extrn __tty_rd_:near,__tty_wr_:near +endif + +dataseg segment para public 'data' + extrn errno_:word + public _ioflg_ +_ioflg_ db 20 dup (0) + public _ttrd_, _ttwr_ + +ifdef FARPROC +_ttrd_ dd __tty_rd_ +else +_ttrd_ dw offset __tty_rd_ +endif + +ifdef FARPROC +_ttwr_ dd __tty_wr_ +else +_ttwr_ dw offset __tty_wr_ +endif +dataseg ends + + assume ds:dataseg +; + procdef _read, <,,> + mov ah,3fH + mov bx,rdfd + jmp short use_dos + pend _read +; + procdef _write, <,,> + mov ah,40H + mov bx,wrfd + jmp short use_dos + pend _write +; + procdef read, <,,> + ;read_(fd, buffer, length) + ;char *buffer; int length; + + mov ah,3fH + jmp short iocommon + pend read +; + procdef write, <,,> + ;write(fd, buffer, length) + ;char *buffer; int length; + mov ah,40H +iocommon: + mov bx,fd + cmp _ioflg_[bx],0 + jz use_dos + pop bp + cmp ah,03fH + je readit + jmp _ttwr_ +readit: + jmp _ttrd_ +; +use_dos: + pushds + ldptr dx,buffer,ds + mov cx,len + int 21H + popds + jnc io_ok + mov errno_,ax + mov ax,-1 +io_ok: + pret + pend write +; + procdef close, <> + ;close(fd) + mov ah,3eH + mov bx,ffd + int 21H + jnc cls_ok + mov errno_,ax + mov ax,-1 + pret +cls_ok: + sub ax,ax + pret + pend close +; + procdef lseek, <,,,> + ;long lseek(fd, pos, how) + ;long pos; + mov ah,42H + mov al,how + mov dx,pos1 + mov cx,pos2 + mov bx,fffd + int 21H + jnc lsk_ok + mov errno_,ax + mov ax,-1 + mov dx,ax +lsk_ok: + pret + pend lseek +; + procdef unlink,<> + ;unlink(name) + pushds + mov ah,41H + ldptr dx,namea,ds + int 21H + popds + jnc unl_ok + mov errno_,ax + mov ax,-1 + pret +unl_ok: + sub ax,ax + pret + pend unlink +; + procdef rename, <,> + ;rename(old, new) + push di + pushds + mov ah,56H + ldptr dx,old,ds +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,new,es + int 21H + popds + pop di + jnc rnm_ok + mov errno_,ax + mov ax,-1 + pret +rnm_ok: + sub ax,ax + pret + pend rename + finish + end + ioctl.c +/* Copyright (C) 1984, 1985 by Manx Software Systems */ +#include "errno.h" +#include "sgtty.h" + +#define TIME 10 /* number of iterations of raw_rd loop */ +#define MIN 1 /* minimum number of chars returned from read */ + +extern char _ioflg[]; +extern int (*_ttrd)(); +extern int (*_ttwr)(); +extern char _Eol; +extern int _TTrem; +extern int __tty_rd(), __tty_wr(), _write(); + +static struct sgttyb Tty_ctl = { '\b', '\x18', CRMOD|ECHO }; +static int raw_rd(), cr_wr(); +static int ioflags, myflags, ttyfd; + +ioctl(fd, cmd, arg) +struct sgttyb *arg; +{ + int flags; + + if (_ioflg[fd] == 0) { + errno = ENOTTY; + return -1; + } + switch (cmd) { + case TIOCGETP: + *arg = Tty_ctl; + break; + case TIOCSETP: + if (ttyfd == 0) { + if (_ioflg[2]) + ttyfd = 2; + else if ((ttyfd = _sys(0x3d02,"/dev/con",0)) == -1) + return -1; + } + if (ioflags == 0) { + _ioctl(ttyfd, 0, &ioflags); + ioflags &= 0xff; + } + Tty_ctl = *arg; + if ((myflags = Tty_ctl.sg_flags) & RAW) + myflags = RAW; + _ttwr = _write; + _Eol = '\r'; + if (myflags&CRMOD) { + _Eol = '\n'; + _ttwr = __tty_wr; + } + if (myflags&(RAW|CBREAK)) { + _TTrem = 0; /* clear out input buffer */ + _ttrd = raw_rd; + ioflags |= 0x20; /* turn on dos's raw flag */ + _ioctl(ttyfd, 1, &ioflags); + } else { + ioflags &= ~0x20; /* turn off dos's raw flag */ + _ioctl(ttyfd, 1, &ioflags); + _ttrd = __tty_rd; + } + break; + } + return 0; +} + +raw_rd(fd, buff, len) +register char *buff; +{ + int i; + register int count; + + for (count = 0 ; count < len ; ) { + for (i = TIME ; i-- ; ) + if (_ioctl(ttyfd, 6) != 0) + goto have_char; + if (count < MIN) + continue; + break; +have_char: + _read(ttyfd, buff, 1); + if (*buff == '\r') + *buff = _Eol; + if (myflags&ECHO) + (*_ttwr)(ttyfd, buff, 1); + ++buff; + ++count; + } + return count; +} + isatty.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef isatty, <> +; isatty(fd) + mov bx,fd + mov ax,4400H + int 21H + jc not_tty ;error, then not a tty + test dl,80h ;is the channel a device? + jz not_tty ;no, ... + test dl,3 ;is it console input or output + jz not_tty ;no, ... + mov ax,1 ;yes, the channel is a tty + pret +not_tty: + sub ax,ax + pret + pend isatty + finish + end + lbegin.asm +; Copyright (C) 1983 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +codeseg segment para public 'code' + public $MEMRY + public _mbot_, _sbot_, _mtop_,_lowwater_ +dataseg segment para public 'data' +$MEMRY dw -1 + dw -1 + public errno_ +errno_ dw 0 + public _dsval_,_csval_ +_dsval_ dw 0 +_csval_ dw 0 +_mbot_ dw 0,0 +_sbot_ dw 0,0 +_mtop_ dw 0,0 +_lowwater_ dw -1 + public _PSP_ +_PSP_ dw 0 + extrn _HEAPSIZ_:word,_STKSIZ_:word + extrn _STKLOW_:word,_STKRED_:word + extrn _Uorg_:byte,_Uend_:byte +bad8087 db "8087/80287 is required!",13,10,'$' +dataseg ends + +exitad dw 0 +exitcs dw 0 + + assume cs:codeseg,ds:dataseg,es:dataseg,ss:dataseg +ifdef FARPROC + extrn Croot_:far, $fltinit:far +else + extrn Croot_:near, $fltinit:near +endif + public $begin + public _exit_ +$begin proc far + mov bp,dataseg + test bp,bp + jnz notcom + mov al,253 ; This CAN'T be a com file + jmp exits +notcom: + mov exitcs,ds + mov es,bp + mov es:_PSP_,ds + mov bp,offset _Uend_ ; stack starts at Uend + add bp,15 ; round up to next paragraph + rcr bp,1 + mov cl,3 ; and convert to paragraph form + shr bp,cl + and bp,01fffh + mov dx,es ; add in datasegment base paragraph + add bp,dx + mov bx,es:_STKRED_ + shr bx,cl ;compute (2*STKRED)/16 note: cl==3 + cmp bx,es:_STKSIZ_ ;allocate either 2*STKRED or STKSIZ + jae ok1 + mov bx,es:_STKSIZ_ ;whichever is bigger +ok1: + cmp bx,1000h ; stack can't be bigger than 64K + jb ok2 + mov bx,1000h +ok2: + mov dx,bx + mov cl,4 + shl bx,cl + cli + mov ss,bp + mov sp,bx + sti +; + add dx,bp + inc dx + mov es:$MEMRY+2,dx ; and save as bottom of heap + mov es:$MEMRY,0 + mov es:_mbot_+2,dx ; and save as bottom of heap + mov es:_mbot_,0 +; now adjust heap size if necessary + mov bx,es:_HEAPSIZ_ + add bx,es:$MEMRY+2 ; add in base paragraph of heap + mov es:_mtop_+2,bx ; and save as top of heap + mov es:_mtop_,0 + mov si,ds + sub bx,si ; get size of total program in paragraphs + mov bp,es + mov es,si ; point es at PSP + mov ah,4ah + int 21h ; SETBLOCK to raise or lower allocation + jnc didheap + mov al,254 + jmp exits +didheap: + mov es,bp ; restore es to point at dataseg +; + cld +; clear uninitialized data + mov di,offset _Uorg_ + mov cx,offset _Uend_ + sub cx,di + inc cx + shr cx,1 + jcxz noclear + sub ax,ax +rep stosw +noclear: +; + mov es,[2cH] ;get enviroment segment + sub di,di + mov cx,7fffH +arglook: + mov ah,es:byte ptr [di] + cmp ah,'=' ;look for null named env. string + je found_args + test ah,ah + jz no_args +repne scasb ;look for null byte + jz arglook +no_args: + mov si,ds + mov es,si + mov si,081h + mov di,080h + mov cl,[80h] + sub ch,ch + jcxz nomov +rep movsb +nomov: + sub al,al + stosb + mov ax,1 + mov di,080h + jmp short mov_args +; +found_args: + sub ax,ax + stosb ;zap and skip over '=' +mov_args: + push ax ; first arg # for Croot + push es + push di ; argp argument for Croot + mov es,bp + mov ds,bp ;set DS, now DS, SS, ES are equal + mov _dsval_,ds + mov _csval_,cs + mov ax,_STKRED_ + mov _sbot_,ax + call $fltinit + jc no_8087 + call Croot_ ;Croot(argp, first) + jmp short exits +; +no_8087: + mov ah,9 ;dos print message + mov dx,offset bad8087 + int 21h ;tell the user about it + mov al,253 + jmp short exits + +_exit_: + pop ax + pop ax ;fetch return code +ifdef FARPROC + pop ax +endif +exits: + mov ah,4cH + int 21H + jmp dword ptr exitad +$begin endp + +retip dw 0 +retcs dw 0 + + public $dbgentry +$dbgentry proc far + pop cs:retip + pop cs:retcs ; save return address into debugger + pop ds ;set DS + call caller + jmp dword ptr cs:retip ; return to debugger +$dbgentry endp + +caller proc + push di ;CS value of local function + push si ;IP value call local function + db 0cbH ;far return instruction +caller endp + +codeseg ends + end $begin + lbrk.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + largecode + include lmacros.h +dataseg segment word public 'data' + extrn $MEMRY:word + extrn _mbot_:word, _sbot_:word + extrn _mtop_:word + extrn errno_:word + extrn _PSP_:word +dataseg ends + assume ds:dataseg +; +; lsbrk(size): bump by size paragraphs +; + procdef lsbrk,<> + + mov es,_PSP_ + mov ah,4ah ; set block + int 21h + mov bx,word ptr size_in_para + jc bad_status + mov ax,bx + jmp return +bad_status: + mov ax,0 +return: + pret + pend lsbrk +; + lmalloc.asm +; Copyright 1987 Manx Software Systems, Inc. All rights reserved. +;:ts=8 + include lmacros.h + + procdef lmalloc,<> + mov ax,word ptr asize + mov dx,word ptr asize+2 + test dx,dx + js badalloc + add ax,15 + adc dx,0 + mov cx,4 +rshift: + shr dx,1 + rcr ax,1 + loop rshift + test dx,dx + jnz badalloc + mov bx,ax + mov ah,48H + int 21h + jc badalloc + mov dx,ax + mov ax,0 + jmp short lmret +; +badalloc: + mov ax,0 + mov dx,ax +lmret: + pret + pend lmalloc + + procdef lfree,<> + push es + mov es,word ptr areaptr+2 + mov ah,49h + int 21h + jnc other_return + mov ax,-1 + jmp exit +other_return: + xor ax,ax +exit: + pop es + pret + pend lfree + + procdef lrealloc,<,> + + mov ax,word ptr count + mov dx,word ptr count+2 + mov cx,4 + +right_shift: + shr dx,1 + rcr ax,1 + loop right_shift + mov bx,ax + mov ah,4ah + mov es,word ptr area_ptr+2 + int 21h + jc failure + mov ax,word ptr area_ptr + mov dx,word ptr area_ptr+2 +return: + pret +failure: + xor ax,ax + xor dx,dx + jmp return + pend lrealloc + + finish + end + localtim.c +/* Copyright (C) 1984 by Manx Software Systems */ +#include + +struct tm * +gmtime(clock) +long *clock; +{ + struct tm *localtime(); + + return localtime(clock); +} + +struct tm * +localtime(clock) +long *clock; +{ + union { + long l; + unsigned u[2]; + } un; + static struct tm tm; + static int days[12] = { + -1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333 + }; + + un.l = *clock; + tm.tm_sec = (un.u[0]&31) * 2; + tm.tm_min = (un.u[0]>>5) & 63; + tm.tm_hour = (un.u[0]>>11) & 31; + tm.tm_mday = un.u[1] & 31; + tm.tm_mon = ((un.u[1]>>5) & 15) - 1; + tm.tm_year = ((un.u[1]>>9) & 127) + 80; + tm.tm_yday = days[tm.tm_mon] + tm.tm_mday + + (tm.tm_mon > 1 && (tm.tm_year&3) == 0); + tm.tm_wday = (tm.tm_yday + tm.tm_year + ((tm.tm_year-1)>>2) + 1) % 7; + return &tm; +} + lsbrk.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h +dataseg segment word public 'data' + extrn $MEMRY:word + extrn _mbot_:word, _sbot_:word + extrn _mtop_:word + extrn errno_:word + extrn _PSP_:word +dataseg ends + assume ds:dataseg +; +; sbrk(size): return address of current top & bump by size bytes +; + procdef sbrk,<> + push di + push si + mov ax,$MEMRY ; convert $MEMRY to 20-bit physical address + mov dx,$MEMRY+2 + mov si,ax + mov di,dx + mov cx,4 + rol dx,cl + mov bx,dx + and bx,0fff0h + and dx,0fh + add ax,bx + adc dx,0 + mov bx,siz ; load and check sign of size + cmp bx,0 + jge notneg + sub ax,bx + sbb dx,0 + js brk_error ; mustn't go negative + jmp canon +notneg: + add ax,bx + adc dx,0 + test dx,0fff0h + jnz brk_error ; mustn't overflow 20-bits +canon: + ror dx,cl + mov bx,ax + and ax,0fh + shr bx,cl + and bx,0fffh + or dx,bx + push dx + push ax + call brk_ + add sp,4 + test ax,ax + jnz brk_error + mov ax,si ;return original value of the break + mov dx,di + pop si + pop di + pret +brk_error: + pop si + pop di + mov dx,ax + pret + pend sbrk +; +; brk(addr): set current top address to addr +; returns 0 if ok, -1 if error +; + procdef brk,<,> + push di + push si + mov ax,addr + inc ax + and al,-2 + mov dx,aseg + mov bx,ax ; convert to canonical pointer + mov cx,4 + shr bx,cl + and bx,0fffh + and ax,0fh + add dx,bx + cmp dx,_mtop_+2 + ja getstore + jne brk_ok2 + cmp ax,_mtop_ + jnb getstore +brk_ok2: + cmp dx,$MEMRY+2 + ja brk_ok3 + jne chkunder + cmp ax,$MEMRY + jnb brk_ok3 +chkunder: + cmp dx,_mbot_+2 + jb brk_ov + jne getstore + cmp ax,_mbot_ + jb brk_ov +getstore: +; going to do a SETBLOCK call + push ax + mov bx,dx + test ax,ax + jz nobump + inc bx +nobump: + add bx,63 ;bump to nearest 1k increment + and bx,0ffc0h ;and round + push es + push bx + mov cx,_PSP_ + mov es,cx ;set segment for SETBLOCK call + sub bx,cx ;and adjust length appropriately + mov ah,04ah + int 21h ;SETBLOCK + pop bx + pop es + pop ax + jc brk_ov ; couldn't do it, so punt + mov _mtop_+2,bx + mov _mtop_,0 +brk_ok3: + mov $MEMRY,ax + mov $MEMRY+2,dx + sub ax,ax + pop si + pop di + pret +; invalid request +brk_ov: + mov errno_,-4 + mov ax,-1 + test ax,ax + pop si + pop di + pret + pend brk + finish + end + mkdir.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment para public 'data' + extrn errno_:word +dataseg ends + assume ds:dataseg + procdef mkdir,<> +; char *mkdir(name) +; char *name; +; + mov ah,39h +dircommon: + pushds + ldptr dx,namea,ds + int 21h + popds + mov ax,0 + jnc ok + mov errno_,ax + mov ax,-1 +ok: + pret + pend mkdir +; + procdef rmdir,<> + mov ah,3aH + jmp dircommon + pend rmdir +; + procdef chdir,<> + mov ah,3bH + jmp dircommon + pend chdir + finish + end + mon.c + +#include + +short _mon_off; +unsigned _speed = 0; +long _ticks=0; +extern int errno; +extern int _Corg(), _Cend(); + +#define high(x) ((unsigned long)(x)) +#define low(x) ((unsigned long)(x) & 0x0000ffffl) +#define canon(x) (int (*)())(((high(x) >> 12)&0x000fffffl) + low(x)) + +long _ptrdiff(); + +static struct { + short pockets; + short byte_pock; + long lowpc; + long highpc; + int speed; + long time; +} mon_head; + +void _profil(); + +short _monitor (lowpc, highpc, buffer, pockets, nfunc) +int (*lowpc)(), (*highpc)(); +unsigned int *buffer; +int pockets, nfunc; +{ + register int i; + static short pro_flag; + static unsigned int *buff_add, oldsig; + unsigned long tot_bytes, left_over, org; + unsigned int bytes, scale; + int exit(); + FILE *fopen(), *fp; + int (*slowpc)(); + +/* + * offset = lowpc; + * tot_bytes = highpc - lowpc + * range mod pockets = bytes left over + * if (bytes left over) + * pockets * (bytes in range +1) > range + */ + + if (pro_flag) + { + + /*check to see if profiling was turned off by overflow*/ + + if (_mon_off) { + printf ("Bucket number %d overflowed\n", _mon_off); + _mon_off = 0; + } + else + _clkrest(); + + pro_flag = 0; + mon_head.time = _ticks; + if ((fp = fopen ("mon.out", "w")) == NULL) + return (errno); + if ((fwrite (&mon_head, sizeof(mon_head), 1, fp)) != 1) { + printf("\nfunction monitor: error trying to write header data\n"); + fclose (fp); + return(errno); + } + for (i=0; i 121) { + _speed = 9861; + mon_head.speed = 121; + } else if (sp <= 0) { + _speed = 0; + mon_head.speed = 18; + } else { + _speed = DIVSOR / sp; + mon_head.speed = sp; + } +} + monitor.c +short monitor (lowpc, highpc, buffer, pockets, nfunc) +int (*lowpc)(), (*highpc)(); +unsigned int *buffer; +int pockets, nfunc; +{ + return _monitor(lowpc,highpc,buffer,pockets,nfunc); +} + open.c +/* Copyright (C) 1982 1983 1984 by Manx Software Systems */ +#include "errno.h" +#include "fcntl.h" + +extern int errno; +extern char _ioflg[]; + +creat(name, mode) +char *name; +{ + return open(name, O_WRONLY|O_TRUNC|O_CREAT, mode); +} + +open(name, flag, mode) +char *name; +{ + register int fd, m; + + m = 0x3d00 | (flag&0x00f3); + if ((flag&O_TRUNC) != 0) + m = 0x3c00; + + if ((fd = _sys(m,name,0)) == -1) { + if ((flag&O_CREAT) != 0) + fd = _sys(0x3c,name,0); + } else if ((flag&O_EXCL) != 0) { + close(fd); + errno = EEXIST; + return -1; + } + if (fd >= 0) { + if (flag&O_APPEND) + (void)lseek(fd, 0L, 2); + _ioflg[fd] = isatty(fd); /* set flag for i/o routines */ + } + return fd; +} + profil.c +void profil (buff, bufsiz, offset, scale) +char *buff; +int bufsiz; +int (*offset)(); +int scale; +{ + + _profil(buff, bufsiz, offset, scale); + + return; +} + sbegin.asm +; Copyright (C) 1983 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +codeseg segment word public 'code' + public $MEMRY + public _mbot_, _sbot_, _mtop_,_lowwater_ +dataseg segment word public 'data' + extrn _Uorg_:byte,_Uend_:byte +$MEMRY dw offset _Uend_ + public errno_ +errno_ dw 0 + public _dsval_,_csval_ +_dsval_ dw 0 +_csval_ dw 0 +_mbot_ dw 0 +_sbot_ dw 0 +_mtop_ dw 0 +_lowwater_ dw -1 + public _PSP_ +_PSP_ dw 0 + extrn _STKSIZ_:word,_HEAPSIZ_:word + extrn _STKLOW_:word,_STKRED_:word +bad8087 db "8087/80287 is required!",13,10,'$' +dataseg ends + +exitad dw 0 +exitcs dw 0 + + assume cs:codeseg,ds:dataseg,es:dataseg,ss:dataseg +ifdef FARPROC + extrn Croot_:far, $fltinit:far +else + extrn Croot_:near, $fltinit:near +endif + public $begin + public _exit_ +$begin proc far + mov bp,dataseg + test bp,bp + jnz notcom + mov bp,ds +notcom: + mov exitcs,ds + mov bx,[2] ;get top segment + sub bx,bp ;compute size of Data seg + cmp bx,4096 ;check if greater than 64K + jbe smallseg + lea bx,[bp+4096] ;end address of segment (paragraphs) + mov ax,es + sub bx,ax ;compute length of segment + mov ah,4aH ;SETBLOCK system call + int 21H + mov bx,4096 +smallseg: + mov es,bp + mov es:_PSP_,ds + mov cl,4 + shl bx,cl + cmp es:_STKLOW_,0 + je setstk ;stack goes above heap + mov ax,es:_STKRED_ ;stack goes below heap + shl ax,1 ;allow at least twice the RED zone size + mov bx,es:_STKSIZ_ + shl bx,cl ;compute requested stack size + cmp bx,ax ;but don't allow too little + ja sizeok + mov bx,ax +sizeok: + add bx, offset _Uend_ +setstk: + cli + mov ss,bp + mov sp,bx + sti +; + test bx,bx + jnz oksav + mov bx,0ffffh +oksav: + mov es:_mtop_,bx +; now adjust heap size if necessary + cmp es:_STKLOW_,0 ; can't do it unless heap above stack + je heapdone + mov si,es:_HEAPSIZ_ + mov ax,bx + inc ax + mov es:$MEMRY,ax ; start of heap for later + shl si,cl + add bx,si + jnc heapok + mov bx,0ffffh +heapok: + mov es:_mtop_,bx ; and save as _mtop_ + add bx,15 + shr bx,cl ; convert to paragraph form + mov ax,es + add bx,ax ; calculate paragraph address of last byte + mov ax,ds ; now take the paragrph form and + sub bx,ax ;compute length of segment + mov bp,es ;save ES + mov es,ax + mov ah,4aH ;SETBLOCK system call + int 21H + jnc heapdone + mov al,254 + jmp exits +heapdone: + mov es,bp ;restore ES + cld +; clear uninitialized data + mov di,offset _Uorg_ + mov cx,offset _Uend_ + sub cx,di + inc cx + shr cx,1 + jcxz noclear + sub ax,ax +rep stosw +noclear: +; + mov es,[2cH] ;get enviroment segment + sub di,di + mov cx,7fffH +arglook: + mov ah,es:byte ptr [di] + cmp ah,'=' ;look for null named env. string + je found_args + test ah,ah + jz no_args +repne scasb ;look for null byte + jz arglook +no_args: + mov cl,[80H] + sub ch,ch + mov si,81H + mov ax,1 + jmp short mov_args +; +found_args: + sub ax,ax + stosb ;zap and skip over '=' + mov si,di + mov di,es + mov ds,di +mov_args: + push ax ;first arg # for Croot + mov es,bp ;reload ES with our real dataseg + mov di,es:$MEMRY + push di ;argp for Croot + jcxz cpy_done +cpy_args: ;copy argument string to work buffer + lodsb + test al,al + jz cpy_done + stosb + loop cpy_args +cpy_done: + sub al,al + stosb ;null terminate string + mov ds,bp ;set DS, now DS, SS, ES are equal + inc di + and di,0fffeH ;adjust to word boundary + mov $MEMRY,di ;save memory allocation info for sbrk() + mov _mbot_,di + mov _sbot_,offset _Uend_ + cmp _STKLOW_,0 + jnz nostk + mov _sbot_,di +nostk: + mov ax,_sbot_ + add ax,_STKRED_ + mov _sbot_,ax + mov _dsval_,ds + mov _csval_,cs + call $fltinit + jc no_8087 + call Croot_ ;Croot(argp, first) + jmp short exits +; +no_8087: + mov ah,9 ;dos print message + mov dx,offset bad8087 + int 21h ;tell the user about it + mov al,253 + jmp short exits + +_exit_: + pop ax + pop ax ;fetch return code +ifdef FARPROC + pop ax +endif +exits: + mov ah,4cH + int 21H + jmp dword ptr exitad +$begin endp + +retip dw 0 +retcs dw 0 + + public $dbgentry +$dbgentry proc far + pop cs:retip + pop cs:retcs ; save return address into debugger + pop ds ;set DS + call caller + jmp dword ptr cs:retip ; return to debugger +$dbgentry endp + +caller proc + push di ;CS value of local function + push si ;IP value call local function + db 0cbH ;far return instruction +caller endp + +codeseg ends + end $begin + sigfix.asm +; Copyright (C) 1985 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + +dataseg segment word public 'data' + public _brkvec_ +_brkvec_ dw 0,0 +dataseg ends + + assume ds:dataseg +; +; This routine is used by exec (used by execl, execv, etc.) +; to reset any signal handlers which have been setup. +; + procdef _sigfix + cmp _brkvec_+2,0 + je brk_ok + push ds + lds dx,dword ptr _brkvec_ + mov ax,2523H ;restore old cntl-break handler + int 21H + pop ds +brk_ok: + pret + pend _sigfix + + finish + end + sighand.asm +; Copyright (C) 1985 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + +dataseg segment word public 'data' + extrn _PSP_:word + extrn _brkvec_:word + extrn _sigfuns_:word +ifdef FARPROC + bss temp:word,4 ;used for far call to handler +endif +saveds dw 0 +dataseg ends + +ourds dw 0 + + assume ds:dataseg +; + procdef _sig_setup + mov ourds,ds + cmp _brkvec_+2,0 + jne have_brk + push ds + mov ax,3523H ;get cntl-break (cntl-c) handler + int 21H + mov _brkvec_,bx + mov _brkvec_+2,es + mov dx,offset brk_handler + mov ax,cs + mov ds,ax + mov ax,2523H ;set new cntl-break handler + int 21H + pop ds +have_brk: + pret + pend _sig_setup + +brk_handler proc far + push ds + mov ds,ourds +ifdef FARPROC + cmp _sigfuns_+2,0 + jne chk_ignore + cmp _sigfuns_,0 + jne chk_ignore +else + cmp _sigfuns_,0 + jne chk_ignore +endif + + pop saveds ;get ds from the stack + push _brkvec_+2 + push _brkvec_ + mov ds,saveds + ret + +chk_ignore: +ifdef FARPROC + cmp _sigfuns_,1 + jne not_ignore + cmp _sigfuns_+2,0 + je ignore +not_ignore: +else + cmp _sigfuns_,1 + je ignore +endif + cld + push es + push ax + push bx + mov ax,sp + mov bx,ss + mov es,_PSP_ + mov ss,es:[30h] ;get our last ss:sp from place + mov sp,es:[2eh] ;where DOS saves it + push ax + push bx + push cx + push dx + push si + push di + mov ax,1 ;signal #1 + push ax +ifdef FARPROC + mov ax,_sigfuns_+2 + mov temp+2,ax + mov ax,_sigfuns_ + mov temp,ax + mov _sigfuns_,0 ;set SIG_DFL + mov _sigfuns_+2,0 + sti + call dword ptr temp +else + mov ax,_sigfuns_ + mov _sigfuns_,0 ;set SIG_DFL + sti + call ax +endif + pop ax ;throw away argument + pop di + pop si + pop dx + pop cx + pop bx + pop ax + mov ss,bx ;restore to system stack + mov sp,ax + pop bx + pop ax + pop es + +ignore: + pop ds + iret +brk_handler endp + finish + end + ssbrk.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h +dataseg segment word public 'data' + extrn $MEMRY:word + extrn _mbot_:word, _sbot_:word + extrn _mtop_:word + extrn errno_:word + extrn _STKLOW_:word + extrn _STKRED_:word + extrn _PSP_:word +dataseg ends + assume ds:dataseg +; +; sbrk(size): return address of current top & bump by size bytes +; + procdef sbrk,<> + push di + mov ax,siz + mov di,$MEMRY + test ax,ax + jge addok + sub di,ax + jc invalid + jmp short dobrk +addok: + add ax,di + jc invalid +dobrk: + push ax + call brk_ + pop cx + test ax,ax + jnz brk_error + mov ax,di ;return original value of the break +brk_error: + pop di + test ax,ax ;set flags for C + pret +invalid: + mov errno_,-8 + mov ax,-1 + jmp brk_error + pend sbrk +; +; brk(addr): set current top address to addr +; returns 0 if ok, -1 if error +; + procdef brk,<> + mov ax,addr + inc ax + and al,-2 + cmp ax,_mbot_ + jb brk_ov + cmp _STKLOW_,0 + jne abovestk + mov bx,sp + sub bx,_STKRED_ + cmp ax,bx + jae brk_ov + mov $MEMRY,ax ;new value is good so save it away + add ax,_STKRED_ + mov _sbot_,ax ;save as new value for safety check +brk_ok2: + sub ax,ax + pret +;heap is above stack +abovestk: + cmp ax,_mtop_ + ja getstore + cmp ax,$MEMRY + jb getstore + mov $MEMRY,ax ;new value is good so save it away + jmp brk_ok2 +; going to do a SETBLOCK call +getstore: + push ax + mov bx,ax + mov cx,4 + shr bx,cl + and bx,0fffh + add bx,65 ;bump to nearest 1k increment + and bx,0ffc0h ;and round + push bx + push es + mov cx,ds + add bx,cx ;get actual paragraph address + mov es,_PSP_ + sub bx,_PSP_ + mov ah,04ah + int 21h ;SETBLOCK + pop es + pop bx + pop ax + jc brk_ov ; couldn't do it, so punt + mov $MEMRY,ax + test bx,0e000h + jnz brk_ov + mov cx,4 + shl bx,cl + mov _mtop_,bx + sub ax,ax + pret +; invalid request +brk_ov: + mov errno_,-8 + mov ax,-1 + test ax,ax + pret + pend brk +; +; rsvstk(size): set safety margin for stack +; this will make sure that at least size +; bytes of stack below the current level remain. +; + procdef rsvstk,<> + mov ax,sp + sub ax,stksize + mov _STKRED_,ax + pret + pend rsvstk + finish + end + stat.c +#include + +stat(path, buf) +char *path; register struct stat *buf; +{ + struct { + char rsvd[21]; + char attr; + long time; + long size; + char name[13]; + } sbuf; + + _sys(0x1a,&sbuf); + if (_sys(0x4e,path,~ST_VLABEL) == -1) + return -1; + buf->st_attr = sbuf.attr; + buf->st_mtime = sbuf.time; + buf->st_size = sbuf.size; + return 0; +} + + stkover.c + +_stkover() +{ + write(2, "STACK OVERFLOW, INCREASE STACK SIZE\n", 36); + _exit(100); +} + stksiz.c +#if sizeof(char *) == 4 +int _STKSIZ = 8192/16; /* (in paragraphs) (large data model) */ +int _STKRED = 1024; /* size of RED zone (in bytes) */ +#else +int _STKSIZ = 4096/16; /* (in paragraphs) */ +int _STKRED = 2048; /* size of RED zone (in bytes) */ +#endif + +int _HEAPSIZ = 4096/16; /* (in paragraphs) */ +int _STKLOW = 0; /* default is stack above heap (small only) */ + +/* +NOTE: The RED zone is used for stack saftey checking. With stack above heap, +the heap will not be allowed to get within STKRED bytes of the current value +of the SP, if limit checking is enabled (see the cc +b option), SP isn't +allowed any closer than STKRED bytes to the top of the heap. If stack below +heap and limit checking is enabled, SP isn't allowed any closer than STKRED +bytes to _Utop. Minimum stack size = 2*_STKRED. Minimum value for STKRED +should be about 256 bytes. This allows some margin to issue DOS calls and +allow interrupt handlers to execute. (Some people think that this should +be > 1k.) */ + sys.asm +;Copyright (C) 1985 by Manx Software Systems +; :ts=8 + include lmacros.h + +dataseg segment para public 'data' + extrn errno_:word +dataseg ends + assume ds:dataseg + + procdef _sys,<,,> + mov ax,func + test ah,ah + jnz valok + xchg ah,al +valok: + cmp ah,10 + jb simple +; + push si + pushds + push es + cmp ah,47H ;check for getcwd call + jne not_cwd + mov dx,arg2 ;load drive # into DX + ldptr si,arg,ds + jmp short issue +not_cwd: + mov cx,arg2 + ldptr dx,arg,ds +issue: + int 21H + mov dx,es + pop es + popds + jnc noerror + mov errno_,ax + mov ax,-1 + mov dx,ax +noerror: + pop si + pret +; +simple: + mov dx,word ptr arg + int 21H + and ax,0ffH + pret + pend _sys + finish + end + syserr.c +/* Copyright (C) 1984 by Manx Software Systems */ + +char *sys_errlist[] = { + /* MsDos error codes */ + "No error", + "Invalid function number", + "File not found", + "Path not found", + "Too many open files", + "Access denied", + "Bad file handle", + "Memory control blocks destroyed", + "Insufficient memory", + "Invalid memory block address", + "Invalid environment", + "Invalid format", + "Invalid access code", + "Invalid data", + "", + "Invalid drive", + "Attempt to remove the current directory", + "Not same device", + "No more files", + + /* additional codes for Aztec C */ + "File exists", + "Not a console device", + /* math library */ + "Result too large", + "Argument out of domain" +}; + +int sys_nerr = sizeof (sys_errlist) / sizeof (char *); + system.c +/* Copyright (C) 1984 by Manx Software Systems */ + +static int swt_char; + +system(cmd) +char *cmd; +{ + register char *prog; + char *getenv(); + char buffer[130]; + +#asm + mov ax,3700h ;ask dos for current switch character + int 21h + sub dh,dh + mov swt_char_,dx +#endasm + if ((prog = getenv("COMSPEC")) == 0) + prog = "/command.com"; + sprintf(buffer+1, "%cC %.123s\r", swt_char, cmd); + buffer[0] = strlen(buffer+1) - 1; + if (fexec(prog,0,buffer,(char *)0,(char *)0) == -1) + return -1; + return wait(); +} + time.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef time,<> ;time_t time(time_t *tloc) +; if tloc!=0 then time is also stored there +; + mov ah,2aH + int 21h + sub cx,1980 + mov ax,cx + mov cl,9 + shl ax,cl + and dh,15 + and dl,31 + mov cl,3 + shl dl,cl + shr dx,cl + or ax,dx + push ax ;save across system call +; + mov ah,2cH + int 21H + mov ax,cx + and ah,31 + and al,63 + and dh,63 + shr dh,1 ;divide seconds by two + shl al,1 ;move minutes over 2 bits + shl al,1 + mov cl,3 ;now move minutes & hours over 3 bits + shl ax,cl + or al,dh ;or the seconds/2 into the bottom 5 bits +; + pop dx ;restore the date info as the high word + ldptr bx,tloc,es ;get tloc +ifdef LONGPTR + mov cx,es + or cx,bx +else + test bx,bx +endif + jz done +ifdef LONGPTR + mov es:[bx],ax + mov es:2[bx],dx +else + mov ds:[bx],ax + mov ds:2[bx],dx +endif +done: + pret + pend time + finish + end + ttyio.c +/* Copyright (C) 1983, 1984 by Manx Software Systems */ +#include "errno.h" + +extern int errno; + +char _Eol = '\n'; +int _TTrem; /* # of bytes remaining in tty buffer */ + +__tty_rd(fd,buff,len) +char *buff; +{ + static char buffer[260], *bp; + register int l; + + if ((l = _TTrem) == 0) { + if ((l = _read(fd, buffer, 260)) != 0 && buffer[l-1]=='\n') { + --l; + buffer[l-1] = _Eol; + } + bp = buffer; + _TTrem = l; + } + if (l > len) + l = len; + if (l) + movmem(bp, buff, l); + bp += l; + _TTrem -= l; + return l; +} + +__tty_wr(fd, buff, len) +char *buff; +{ + register int count; + register char *cp; + static char crbuf = '\r'; + + cp = buff; + for (count = len ; count-- ; ) { + if (*cp++ == '\n') { + _write(fd, buff, cp-buff); + _write(fd, &crbuf, 1); + buff = cp; + } + } + if (cp != buff) + _write(fd, buff, cp-buff); + return len; +} + utime.c +/* Copyright (C) 1984 by Manx Software Systems */ + +struct utimbuf { + long actime; /* access time (not used on Msdos) */ + long modtime; /* modification time */ +}; + +utime(path, times) +char *path; register struct utimbuf *times; +{ + long time(), ftime(); + register int fd, r; + + if ((fd = open(path, 0)) == -1) + return -1; + r = ftime(1, fd, times ? times->modtime : time(0)); + close(fd); + return r; +} + wait.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef wait + mov ah,4dh + int 21h + jnc noerr + neg ax +noerr: + pret + pend wait + finish + end + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/G.ARC b/Manx Aztec C86 v42b/ARC/G.ARC new file mode 100644 index 0000000..de6bbee --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/G.ARC @@ -0,0 +1,876 @@ + makefile +# Copyright (C) Manx Software Systems, Inc. 1987. All rights reserved. + +# Note: the object files below are in the correct order for linking, +# thus the OBJ macro should be changed with caution. If you are in doubt, +# use the ORD utility to build a correctly ordered list. + +OBJ=mode.o circ.o lin.o point.o address.o scr_call.o + +CC=cc +AS=as +MODEL= +AMODEL=0 + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +$(DIR)g$(MODEL).lib: $(OBJ) + del $(DIR)g$(MODEL).lib + lb $(DIR)g$(MODEL).lib $(OBJ) + @echo graphics done + address.asm +; Copyright (C) 1984 by Manx Software Systems, Inc. +; :ts=8 +dataseg segment word public 'data' + + public $address + +$address equ this word ;/* vertical address table */ + dw 7920+8192 + dw 7920 + dw 7840+8192 + dw 7840 + dw 7760+8192 + dw 7760 + dw 7680+8192 + dw 7680 + dw 7600+8192 + dw 7600 + dw 7520+8192 + dw 7520 + dw 7440+8192 + dw 7440 + dw 7360+8192 + dw 7360 + dw 7280+8192 + dw 7280 + dw 7200+8192 + dw 7200 + dw 7120+8192 + dw 7120 + dw 7040+8192 + dw 7040 + dw 6960+8192 + dw 6960 + dw 6880+8192 + dw 6880 + dw 6800+8192 + dw 6800 + dw 6720+8192 + dw 6720 + dw 6640+8192 + dw 6640 + dw 6560+8192 + dw 6560 + dw 6480+8192 + dw 6480 + dw 6400+8192 + dw 6400 + dw 6320+8192 + dw 6320 + dw 6240+8192 + dw 6240 + dw 6160+8192 + dw 6160 + dw 6080+8192 + dw 6080 + dw 6000+8192 + dw 6000 + dw 5920+8192 + dw 5920 + dw 5840+8192 + dw 5840 + dw 5760+8192 + dw 5760 + dw 5680+8192 + dw 5680 + dw 5600+8192 + dw 5600 + dw 5520+8192 + dw 5520 + dw 5440+8192 + dw 5440 + dw 5360+8192 + dw 5360 + dw 5280+8192 + dw 5280 + dw 5200+8192 + dw 5200 + dw 5120+8192 + dw 5120 + dw 5040+8192 + dw 5040 + dw 4960+8192 + dw 4960 + dw 4880+8192 + dw 4880 + dw 4800+8192 + dw 4800 + dw 4720+8192 + dw 4720 + dw 4640+8192 + dw 4640 + dw 4560+8192 + dw 4560 + dw 4480+8192 + dw 4480 + dw 4400+8192 + dw 4400 + dw 4320+8192 + dw 4320 + dw 4240+8192 + dw 4240 + dw 4160+8192 + dw 4160 + dw 4080+8192 + dw 4080 + dw 4000+8192 + dw 4000 + dw 3920+8192 + dw 3920 + dw 3840+8192 + dw 3840 + dw 3760+8192 + dw 3760 + dw 3680+8192 + dw 3680 + dw 3600+8192 + dw 3600 + dw 3520+8192 + dw 3520 + dw 3440+8192 + dw 3440 + dw 3360+8192 + dw 3360 + dw 3280+8192 + dw 3280 + dw 3200+8192 + dw 3200 + dw 3120+8192 + dw 3120 + dw 3040+8192 + dw 3040 + dw 2960+8192 + dw 2960 + dw 2880+8192 + dw 2880 + dw 2800+8192 + dw 2800 + dw 2720+8192 + dw 2720 + dw 2640+8192 + dw 2640 + dw 2560+8192 + dw 2560 + dw 2480+8192 + dw 2480 + dw 2400+8192 + dw 2400 + dw 2320+8192 + dw 2320 + dw 2240+8192 + dw 2240 + dw 2160+8192 + dw 2160 + dw 2080+8192 + dw 2080 + dw 2000+8192 + dw 2000 + dw 1920+8192 + dw 1920 + dw 1840+8192 + dw 1840 + dw 1760+8192 + dw 1760 + dw 1680+8192 + dw 1680 + dw 1600+8192 + dw 1600 + dw 1520+8192 + dw 1520 + dw 1440+8192 + dw 1440 + dw 1360+8192 + dw 1360 + dw 1280+8192 + dw 1280 + dw 1200+8192 + dw 1200 + dw 1120+8192 + dw 1120 + dw 1040+8192 + dw 1040 + dw 960+8192 + dw 960 + dw 880+8192 + dw 880 + dw 800+8192 + dw 800 + dw 720+8192 + dw 720 + dw 640+8192 + dw 640 + dw 560+8192 + dw 560 + dw 480+8192 + dw 480 + dw 400+8192 + dw 400 + dw 320+8192 + dw 320 + dw 240+8192 + dw 240 + dw 160+8192 + dw 160 + dw 80+8192 + dw 80 + dw 0+8192 + dw 0 + +dataseg ends + end + circ.asm +; Copyright (C) 1984 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h +dataseg segment word public 'data' + +aldx dw 0 +aldy dw 0 + + public _yaspect_,_xaspect_ +_yaspect_ dw 5 +_xaspect_ dw 6 + +scale dw 1024 +scale2 dw 512 + + +aspect dw 0 ;function computed aspect (scaled) +invasp dw 0 ;reciprocal of aspect (scaled too) + +xorg dw 0 +yorg dw 0 +radius dw 0 + +dataseg ends + + assume ds:dataseg +;-------------------------------------------------------- +;procedure circle(x,y,radius) +; +;draws a circle at center (x,y) with aspect ratio +;yaspect/xaspect; radius in column units +; +;Dan Lee 7/1/1982 SourceWare +;Modified from DDJ May '83 for CI C-86 by Davin 6/22/1983 +;remodified for Aztec C86, 6/84 +; +;-------------------------------------------------------- +ifdef FARPROC + extrn $inline:far,$pnt:far +else + extrn $inline:near,$pnt:near +endif + procdef set_asp,<,> + ;set_asp (x_aspect, y_aspect); + mov ax, x_asp + mov [_xaspect_],ax + mov ax, y_asp + mov [_yaspect_],ax + pret + pend set_asp + + procdef circle,<<_xorg,word>,<_yorg,word>,> + + mov cx,_xorg + mov [xorg],cx + mov dx,_yorg + mov [yorg],dx + mov ax,irad + pop bp + push es + push si + push di ;save register variables + or ax,ax + jnz okrad + jmp single +okrad: mov [radius],ax + mov ax,_yaspect_ ;get yaspect + mul [scale] ;ax=yaspect*scale + shl ax,1 + div _xaspect_ ;ax=(yaspect*scale)/xaspect + inc ax + shr ax,1 + mov [aspect],ax ;store aspect*scale + mov ax,_xaspect_ ;get xaspect in ax + mul [scale] ;ax=xaspect*scale + shl ax,1 + div _yaspect_ ;ax=(xaspect*scale)/yaspect + inc ax + shr ax,1 + mov [invasp],ax ;store inv aspect*scale +; +; Plot 0 to 45 degrees. +; Increase y by one unit and +; decrease x by TAN units*inv aspect ratio. +; + mov ax,[radius] ;get radius for initial x + mul [scale] ;ax=radius*scale + xor di,di ;zero initial y value + +nlp1: push ax ;save lo word x*scale + push dx ;save hi word x*scale + add ax,[scale2] + adc dx,0 + div [scale] + mov [aldx],ax ; aldx,aldy are old relative coord's + mov [aldy],di + pop dx + pop ax + +lp1: push ax ;save lo word x*scale + push dx ;save hi word x*scale + add ax,[scale2] + adc dx,0 + div [scale] + mov bx,ax ;bx=1st quad x + add ax,[xorg] ;add x origin + + push bp + push di ;relative y-coord + push bx ;relative x-coord + mov bp,sp + mov bx,[yorg] ;get y origin + sub bx,di ;and sub y to plot + call pnt1 + pop cx ;1st quad x val + pop di + mov [aldx],cx + mov [aldy],di + pop bp + +;cx = 1st quad x, di = 1st quad y + inc di ;get new y + mov ax,di ;ax=y + mul [invasp] ;ax=y*inv aspect*scale + div cx ;ax=TAN*inv aspect*scale + xor dx,dx ;zero remainder + mov si,ax ;si=TAN*inv aspect*scale + div [invasp] ;ax=TAN + cmp ax,1 ;TAN=1? + pop dx ;dx=hi word x*scale + pop ax ;ax=lo word x*scale + jae part2 ;yes, go to next sector + neg si ;to decrement x + add ax,si ;new x value + adc dx,-1 ;hi word carry + jmp short lp1 ;plot new point +; +; Plot 45 to 90 degrees. +; Decrease x by one unit and +; increase y by COT units*aspect ratio. +; +part2: mov ax,di ;get next y to plot + mul [scale] ;dx:ax=y*scale + mov di,cx ;di=last x value + dec di ;next x to plot +lp2: push ax ;save lo word y*scale + push dx ;save hi word y*scale + add ax,[scale2] ;'one-half' + adc dx,0 + div [scale] ;ax=y + mov bx,ax ;bx=1st quad y co-ord + + add ax,[yorg] ;add y origin + mov cx,[xorg] ;cx=x origin + add cx,di ;x to plot + + push bp + push bx + push di + mov bp,sp + mov bx,ax + mov ax,cx + call pnt2 + pop di + pop bx + mov [aldx],di + mov [aldy],bx + pop bp + + or di,di ;90 degrees? + js exit ;yes, exit + dec di ;get new x + mov ax,di ;ax=x + imul [aspect] ;ax=x*aspect*scale + idiv bx ;ax=COT*aspect*scale + mov si,ax ;si=change in y + pop dx ;dx=hi word y*scale + pop ax ;ax=lo word y*scale + xor bx,bx + or si,si ;for sign check + jns skp ;positive + mov bx,-1 ;negative carry +skp: add ax,si ;ax=new x value + adc dx,bx + jmp short lp2 ;plot next point + +exit: add sp,4 ;release parms + jmp alldone + +pnt1 proc near +;bp points to rel x coord and bp+2 points to rel y coord +;abs coords of point are in ax,bx + + mov si,[aldx] + add si,[xorg] ;si is old abs x + mov di,[yorg] + mov cx,[aldy] + sub di,cx ;di is old abs y + + call $goinline ;write 1st quad point + sub ax,word ptr [bp] ;get 2nd quad x+origin + sub ax,word ptr [bp] + sub si,[aldx] + sub si,[aldx] + call $goinline ;write 2nd quad point + add bx,word ptr 2[bp] ;get 3rd quad y+origin + add bx,word ptr 2[bp] + add di,[aldy] + add di,[aldy] + call $goinline ;write 3rd quad point + add ax,word ptr [bp] + add ax,word ptr [bp] ;get 4th quad x+origin + add si,[aldx] + add si,[aldx] + call $goinline ;plot 4th quad point + ret +pnt1 endp + +pnt2 proc near + mov si,[aldx] + add si,[xorg] + mov di,[yorg] + add di,[aldy] + + call $goinline ;write 1st quad point + sub ax,word ptr [bp] ;get 2nd quad x+origin + sub ax,word ptr [bp] + sub si,[aldx] + sub si,[aldx] + call $goinline ;write 2nd quad point + sub bx,word ptr 2[bp] ;get 3rd quad y+origin + sub bx,word ptr 2[bp] + sub di,[aldy] + sub di,[aldy] + call $goinline ;write 3rd quad point + add ax,word ptr [bp] + add ax,word ptr [bp] ;get 4th quad x+origin + add si,[aldx] + add si,[aldx] + call $goinline ;plot 4th quad point + ret +pnt2 endp + +single: + mov si,cx + mov di,dx + call $pnt +alldone: + pop di + pop si + pop es + ret + +$goinline proc near + push ax + push bx + push si + push di + call $inline ;pops es,di,si + pop di + pop si + pop bx + pop ax + ret +$goinline endp + + pend circle + finish + end + lin.asm +; Copyright (C) 1984 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h +dataseg segment word public 'data' + + extrn _oldx_:word, _oldy_:word + +deltax dw 0 +deltay dw 0 +yincr dw 0 + +dataseg ends + assume ds:dataseg +ifdef FARPROC + extrn $pnt:far +else + extrn $pnt:near +endif + + public $inline +$inline proc + cmp si,ax + jbe noxchg + xchg si,ax + xchg di,bx +noxchg: + jne novert + jmp vertical +novert: + sub ax,si + mov [deltax],ax + sub bx,di + jnz nohoriz + jmp horizontal +nohoriz: + mov cx,1 + jns notneg + neg cx + neg bx +notneg: mov [yincr],cx + mov [deltay],bx + cmp ax,bx + jg case2 + + mov dx,[deltax] + shl dx,1 + mov bx,dx + mov ax,[deltay] + shl ax,1 + sub bx,ax + mov ax,dx + sub ax,[deltax] + + mov cx,[deltay] +lp1: dec cx + js done + call $pnt + add di,[yincr] + cmp ax,0 + jl incr1 + inc si + add ax,bx + jmp short lp1 +incr1: + add ax,dx + jmp short lp1 + +case2: + + mov dx,[deltay] + shl dx,1 ;dx <- 2 * deltay + mov bx,dx + mov ax,[deltax] + shl ax,1 + sub bx,ax ;bx <- 2*deltay - 2 * deltax + mov ax,dx + sub ax,[deltax] ;ax <- 2*deltay - deltax + + mov cx,[deltax] +lp2: dec cx + js done + call $pnt + inc si + cmp ax,0 + jl incr2 + add di,[yincr] + add ax,bx + jmp short lp2 +incr2: + add ax,dx + jmp short lp2 + +vertical: ;si = xval, di,bx = yvals + cmp di,bx + jle yorder + xchg bx,di +yorder: + sub bx,di +vplot: + call $pnt + inc di + dec bx + jns vplot + jmp short done + +horizontal: ;ax=deltax, si,di = start point + call $pnt + inc si + dec ax + jns horizontal + ;jmp short done + +done: + ret +$inline endp + + procdef lineto,<,> + + ; lineto (dest_x, dest_y); + push si + push di + push es + mov si,[_oldx_] + mov di,[_oldy_] + mov ax,xdest + mov bx,ydest + mov [_oldx_],ax + mov [_oldy_],bx + call $inline ;pops si,di,es before returning + pop es + pop di + pop si + pret + pend lineto + + procdef line,<,,,> + ; line (src_x, src_y, dest_x, dest_y); + push si + push di + push es + mov si,srcx + mov di,srcy + mov ax,ddstx + mov bx,ddsty + mov [_oldx_],ax + mov [_oldy_],bx + call $inline + pop es + pop di + pop si + pret + pend line + finish + end + mode.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ + +extern int _maxx; +extern int _xaspect, _yaspect; +extern char _color; +extern int _plotf,_plottbl[]; + +mode (val) +{ + switch (val) { + case 'l': case 'L': case 3: + scr_call (3); + break; + case 'm': case 'M': case 4: + _plotf = _plottbl[0]; + _xaspect = 6; + _yaspect = 5; + _maxx = 319; + scr_call (4); + break; + case 'h': case 'H': case 6: + _plotf = _plottbl[1]; + _xaspect = 4; + _yaspect = 1; + _maxx = 639; + scr_call (6); + break; + default: + if (val < 0 || val > 6) + return; + scr_call (val); + break; + } +} + +color (c) +{ + switch (c) { + case 'w': case 'W': case 'y': case 'Y': case 3: + _color = 3; + break; + case 'm': case 'M': case 'r': case 'R': case 2: + _color = 2; + break; + case 'c': case 'C': case 'g': case 'G': case 1: + _color = 1; + break; + default: + _color = 0; + break; + } +} + +palette (c) +{ + if (c) + scr_call (11 << 8,1<<8 | 1,0,0); + else + scr_call (11 << 8,1<<8 | 0,0,0); +} + +ground (c) +{ + scr_call (11 << 8, 0 << 8 | c,0,0); +} + point.asm +; Copyright (C) 1984 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h +dataseg segment para public 'data' + + extrn $address:word + public _oldx_,_oldy_,_color_,_maxx_ + _oldx_ dw 0 + _oldy_ dw 0 + _color_ db 1 + _maxx_ dw 320 + public _plotf_, _plottbl_ + public mid,ultra + public clrmsk,colmsk + +clrmsk db 00111111b,11001111b,11110011b,11111100b + ;/* clrmsk for point mode 0 */ + +onmask db 10000000b,1000000b,100000b,10000b,1000b,100b,10b,1b +offmask db 01111111b,10111111b,11011111b,11101111b + db 11110111b,11111011b,11111101b,11111110b + +colmsk db 0,0,0,0 ;/* color_ masks */ + db 1000000b,10000b,100b,1 + db 10000000b,100000b,1000b,10b + db 11000000b,110000b,1100b,11b + +_plottbl_ dw offset mid ;medium res + dw offset ultra ;high res + +_plotf_ dw offset ptquit + +dataseg ends + assume ds:dataseg,cs:codeseg + + public $pnt +$pnt proc + cmp si,[_maxx_] ;si=x,di=y does not set oldx & oldy + ja quit + cmp si,0 + jb quit + cmp di,199 + ja quit + cmp di,0 + jnb $pnt3 + jmp quit +$pnt3: + push ax + push bx + mov bl,[_color_] ;entry #3 si=x,di=y no clipping ! +$pnt4: + mov bh,0 +;entry #5 si=x,di=y,bx=color_ +; +$pnt5: mov ax,0b800h ; set es to point to hires segment + mov es,ax + push di + shl di,1 ;mult y*2 (addr table is 2 bytes wide) + jmp [_plotf_] ;jmp to ptquit, mid or ultra + +mid: push si + + mov di,$address[di] ;get vert address from table + + mov ax,si ;save x in si + + and si,3 + shr ax,1 ;divide by 4 (4 dots per byte) + shr ax,1 + + add di,ax ;get addr of byte on screen + + sal bl,1 ; color_ table is 4 by 4 so mult color_ * 4 + sal bl,1 + mov bl,colmsk[si+bx] + mov al,clrmsk[si] + and es:[di],al + or es:[di],bl + pop si +ptquit: pop di + pop bx + pop ax +quit: + ret + +ultra: mov di,$address[di] + mov ax,si + push si + and si,7 + shr ax,1 + shr ax,1 + shr ax,1 + add di,ax + or bl,bl + jz black + mov al,onmask[si] + or es:[di],al + pop si + jmp short ptquit +black: mov al,offmask[si] + and es:[di],al + pop si + jmp short ptquit + + + procdef point,<,> + + push si + push di + push es + mov si,xcoord + mov di,ycoord + + mov [_oldx_],si ;si=x,di=y sets oldx and oldy + mov [_oldy_],di + call $pnt + + pop es + pop di + pop si + pret + pend point + finish + end + scr_call.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +; +; scr_call(ax,bx,cx,dx) - issue int 10 with ax,... set to args +; +; + procdef scr_call,<,,,> + push si + push di + mov ax,aax + mov bx,bbx + mov cx,ccx + mov dx,ddx + int 10h + pop di + pop si + pret + pend scr_call + finish + end + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/MATH.ARC b/Manx Aztec C86 v42b/ARC/MATH.ARC new file mode 100644 index 0000000..4ee0306 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/MATH.ARC @@ -0,0 +1,5754 @@ + makefile +OBJ=asin.o atan.o exp.o fabs.o floor.o log.o pow.o random.o\ + sin.o sinh.o sqrt.o tan.o tanh.o atof.o ftoa.o\ + fpst.o frexp.o fsubs.o sqrt87s.o frexp87s.o fsubs87s.o + +OBJ87=asin87.o atan87.o exp87.o fabs87.o floor87.o log87.o pow87.o random87.o\ + exp1087.o sin87.o sinh87.o sqrt87.o tan87.o tanh87.o atof87.o ftoa87.o\ + fmod87.o chk87.o frexp87.o isnan.o fpst.o fsubs87.o + +CC=cc +AS=as +MODEL= +AMODEL=0 + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +bld bldlc bldld bldl: $(OBJ) + @echo math done + +bld87 bld87lc bld87ld bld87l: $(OBJ87) + @echo math87 done + +atof87.o: atof.asm + $(AS) -dMODEL=$(AMODEL) -dINLINE atof.asm -o $@ + sqz $@ + +ftoa87.o: ftoa.asm + $(AS) -dMODEL=$(AMODEL) -dINLINE ftoa.asm -o $@ + sqz $@ + +asin87.o: asin.c + $(CC) +$(MODEL) -n +e asin.c -o $@ + sqz $@ +fabs87.o: fabs.c + $(CC) +$(MODEL) -n +e fabs.c -o $@ + sqz $@ +floor87.o: floor.c + $(CC) +$(MODEL) -n +e floor.c -o $@ + sqz $@ +pow87.o: pow.c + $(CC) +$(MODEL) -n +e pow.c -o $@ + sqz $@ +random87.o: random.c + $(CC) +$(MODEL) -n +e random.c -o $@ + sqz $@ +sinh87.o: sinh.c + $(CC) +$(MODEL) -n +e sinh.c -o $@ + sqz $@ +sqrt87.o: sqrt.c + $(CC) +$(MODEL) -n +e sqrt.c -o $@ + sqz $@ +tanh87.o: tanh.c + $(CC) +$(MODEL) -n +e tanh.c -o $@ + sqz $@ + + asin.c +#include "math.h" +#include "errno.h" + +static double arcsine(); + +double asin(x) +double x; +{ + return arcsine(x,0); +} + +double acos(x) +double x; +{ + return arcsine(x,1); +} + +#define P1 -0.27368494524164255994e+2 +#define P2 +0.57208227877891731407e+2 +#define P3 -0.39688862997504877339e+2 +#define P4 +0.10152522233806463645e+2 +#define P5 -0.69674573447350646411 +#define Q0 -0.16421096714498560795e+3 +#define Q1 +0.41714430248260412556e+3 +#define Q2 -0.38186303361750149284e+3 +#define Q3 +0.15095270841030604719e+3 +#define Q4 -0.23823859153670238830e+2 + +#define P(g) ((((P5*g P4)*g P3)*g P2)*g P1) +#define Q(g) (((((g Q4)*g Q3)*g Q2)*g Q1)*g Q0) + +static double arcsine(x,flg) +double x; +{ + double y, g, r; + register int i; + extern int errno; + static double a[2] = { 0.0, 0.78539816339744830962 }; + static double b[2] = { 1.57079632679489661923, 0.78539816339744830962 }; + + y = fabs(x); + i = flg; + if (y < 2.3e-10) + r = y; + else { + if (y > 0.5) { + i = 1-i; + if (y > 1.0) { + errno = EDOM; + return 0.0; + } + g = (0.5-y)+0.5; + g = ldexp(g,-1); + y = sqrt(g); + y = -(y+y); + } else + g = y*y; + r = y + y* + ((P(g)*g) + /Q(g)); + } + if (flg) { + if (x < 0.0) + r = (b[i] + r) + b[i]; + else + r = (a[i] - r) + a[i]; + } else { + r = (a[i] + r) + a[i]; + if (x < 0.0) + r = -r; + } + return r; +} + atan.c +#include "math.h" +#include "errno.h" + +#ifdef MPU8086 +#define MAXEXP 1024 +#define MINEXP -1023 +#else +#define MAXEXP 504 +#define MINEXP -512 +#endif + +#define PI 3.14159265358979323846 +#define PIov2 1.57079632679489661923 + +double atan2(v,u) +double u,v; +{ + double f, frexp(); + int vexp, uexp; + extern int flterr; + extern int errno; + + if (u == 0.0) { + if (v == 0.0) { + errno = EDOM; + return 0.0; + } else if (v > 0.0 ) + return PIov2; + return -PIov2; + } + + frexp(v, &vexp); + frexp(u, &uexp); + if (vexp-uexp > MAXEXP-3) /* overflow */ + f = PIov2; + else { + if (vexp-uexp < MINEXP+3) /* underflow */ + f = 0.0; + else + f = atan(fabs(v/u)); + if (u < 0.0) + f = PI - f; + } + if (v < 0.0) + f = -f; + return f; +} + +#define P0 -0.13688768894191926929e+2 +#define P1 -0.20505855195861651981e+2 +#define P2 -0.84946240351320683534e+1 +#define P3 -0.83758299368150059274e+0 +#define Q0 +0.41066306682575781263e+2 +#define Q1 +0.86157349597130242515e+2 +#define Q2 +0.59578436142597344465e+2 +#define Q3 +0.15024001160028576121e+2 + +#define P(g) (((P3*g P2)*g P1)*g P0) +#define Q(g) ((((g Q3)*g Q2)*g Q1)*g Q0) + +double atan(x) +double x; +{ + double f, r, g; + int n; + static double Avals[4] = { + 0.0, + 0.52359877559829887308, + 1.57079632679489661923, + 1.04719755119659774615 + }; + + n = 0; + f = fabs(x); + if (f > 1.0) { + f = 1.0/f; + n = 2; + } + if (f > 0.26794919243112270647) { + f = (((0.73205080756887729353*f - 0.5) - 0.5) + f) / + (1.73205080756887729353 + f); + ++n; + } + if (fabs(f) < 2.3e-10) + r = f; + else { + g = f*f; + r = f + f * + ((P(g)*g) + /Q(g)); + } + if (n > 1) + r = -r; + r += Avals[n]; + if (x < 0.0) + r = -r; + return r; +} + atan87.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + +EDOM equ 22 + +dataseg segment public byte 'data' + extrn errno_:word +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + + assume cs:codeseg,ds:dataseg + +;double atan(x) +;double x; + + procdef atan,<> + sub sp,2 + fld qword ptr xx ;load x + ftst ; see if x is negative + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + xor bx,bx + sahf + ja skip3 + fchs ; make it positive + mov bx,1 ; but remember the sign +skip3: + fld1 ; load a one + fcomp ; x should be < 1.0 + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + xor cx,cx + sahf + ja skip4 + mov cx,1 + fld1 ;load a one + fdivr ; x = 1.0 / x +skip4: + fld1 + fpatan ; compute the arctan + test cx,1 + jz skip1 + mov word ptr -2[bp],-1 + fild word ptr -2[bp] + fldpi ; load pi + fscale ;compute pi / 2 + fxch ;get scale factor back on top + fstp st(0) ;and discard + fsubr ; x = pi/2 - x +skip1: + test bx,1 + jz nosign + fchs +nosign: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + fwait + add sp,2 + pret + pend atan + + + procdef atan2,<,> + sub sp,2 + fld qword ptr y ;load y + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnz ok1 +; +; y is zero, if x is zero also, error +; + fld qword ptr x ;load x + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnz okx + mov errno_,EDOM +zerores: + fstp st(0) ;clear stack + fstp st(0) + fldz ;answer is zero + jmp exit +okx: + mov bx,0 + ja notneg ; x < 0 + mov bx,1 +notneg: + fstp st(0) + fstp st(0) ; answer is +/- pi/2 + mov word ptr -2[bp],-1 + fild word ptr -2[bp] + fldpi + fscale + fxch + fstp st(0) + test bx,1 + jz oksign + fchs +oksign: + jmp exit +ok1: +; +; x and y are both non zero, but x must be < y +; + mov bx,word ptr x+6 + xor bx,word ptr y+6 + fabs ; y = fabs(y) + fld qword ptr x + fabs ; x = fabs(x) + fxch + fcom st(1) + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + xor cx,cx + sahf + jz zerores + ja nodiv + fxch + mov cx,1 +nodiv: + fpatan ; compute the arctangent + test cx,cx + jz noadjust + mov word ptr -2[bp],-1 + fild word ptr -2[bp] + fldpi + fscale + fxch + fstp st(0) + fsubr ; res = pi/2 - res +noadjust: + test bx,8000h ; should result be negative + jz notnegr + fchs +notnegr: + test word ptr y+6,8000h ; y < 0 ? + jz exit + test word ptr x+6,8000h ; x < 0 too? + jz addpi + fldpi + fsub ; x -= pi + jmp exit +addpi: + fldpi + fadd +exit: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + fwait + add sp,2 + pret + pend atan2 + finish + end + atof.asm +; Copyright Manx Software Systems, Inc. 1983-1987. All rights reserved. +; +;double +;atof(cp) +;register char *cp; + include lmacros.h + +IFDEF LONGPTR +cp equ es:byte ptr [di] +getes macro + mov es,ss:word ptr acp[2] + endm + +ELSE + +cp equ byte ptr [di] +getes macro +; + endm +ENDIF + +zero dw 0,0,0,0 +ten dw 0,0,0,4024h + +ifdef STATRES +dataseg segment public word 'data' +result db 8 dup (?) +dataseg ends + + assume ds:dataseg +endif + + procdef atof,<> + sub sp,4 + push di + push si +;{ +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,acp,es +; double acc; +; int msign, esign, dpflg; +; int i, dexp; +msign equ byte ptr -1[bp] +esign equ byte ptr -2[bp] ;these two aren't active at the same time +dpflg equ byte ptr -2[bp] +temp equ word ptr -4[bp] + +; while (*cp == ' ' || *cp == '\t') +; ++cp; +skiploop: + mov al,cp + cmp al,' ' + je skipbl + cmp al,9 + jne skipdone +skipbl: + inc di + jmp skiploop +skipdone: +; if (*cp == '-') { + cmp al,45 + jne $3 +; ++cp; + inc di +; msign = 1; + mov msign,1 + jmp short $4 +; } else { +$3: +; msign = 0; + mov msign,0 +; if (*cp == '+') +; ++cp; + cmp al,43 + jne $4 + inc di +; } +$4: +; dpflg = dexp = 0; + mov si,0 + mov dpflg,0 +; for (acc = zero ; ; ++cp) { +ifdef INLINE + fldz +else + mov bx, offset zero + call $dldpcs +endif +$6: +; if (isdigit(*cp)) { + getes + mov al,cp + cmp al,'0' + jb $9 + cmp al,'9' + ja $9 +; acc *= ten; +ifdef INLINE + fmul cs:qword ptr ten +else + mov bx, offset ten + call $dldscs + call $dml +endif +; acc += *cp - '0'; +ifndef INLINE + call $dswap +endif + getes + mov al,cp + cbw + add ax,-48 +ifdef INLINE + mov temp,ax + fild temp + fadd +else + call $itod + call $dad +endif +; if (dpflg) +; --dexp; + cmp dpflg,0 + je $11 + dec si + jmp short $11 +; } else if (*cp == '.') { +$9: + cmp al,'.' + jne $8 +; if (dpflg) +; break; + cmp dpflg,0 + jne $8 +; dpflg = 1; + mov dpflg,1 +; } else +; break; +$11: +; } + inc di + jmp $6 +$8: +; if (*cp == 'e' || *cp == 'E') { + cmp al,101 + je $15 + cmp al,69 + jne $14 +$15: +; ++cp; + inc di +; if (*cp == '-') { + cmp cp,45 + jne $16 +; ++cp; + inc di +; esign = 1; + mov esign,1 + jmp short $17 +; } else { +$16: +; esign = 0; + mov esign,0 +; if (*cp == '+') +; ++cp; + cmp cp,43 + jne $17 + inc di +; } +$17: +; for ( i = 0 ; isdigit(*cp) ; i = i*10 + *cp++ - '0' ) + sub ax,ax + mov cx,10 + jmp short $20 +$19: + mul cx + mov dx,ax + mov al,cp + inc di + cbw + add ax,dx + add ax,-48 +$20: + mov bl,cp + cmp bl,'0' + jb $21 + cmp bl,'9' + jbe $19 +; ; +$21: +; if (esign) +; i = -i; + cmp esign,0 + je $22 + neg ax +$22: +; dexp += i; + add si,ax +; } +; if (dexp < 0) { +$14: +ifndef INLINE + mov bx, offset ten + call $dldscs +endif + test si,si + jns $23 +; while (dexp++) +$24: +; acc /= ten; +ifdef INLINE + fdiv cs:qword ptr ten +else + call $ddv +endif + inc si + jnz $24 + jmp short $26 +; } else if (dexp > 0) { +$23: + jz $26 +; while (dexp--) +$28: +; acc *= ten; +ifdef INLINE + fmul cs:qword ptr ten +else + call $dml +endif + dec si + jnz $28 +; } +$26: +; if (msign) +; acc = -acc; + cmp msign,0 + je $30 +ifdef INLINE + fchs +else + call $dng +endif +; return acc; +$30: +ifdef STATRES +ifdef INLINE + fstp qword ptr result +else + mov bx,offset result + call $dstds +endif + mov ax,offset result + mov dx,ds +endif + pop si + pop di + mov sp,bp + pret +;} + pend atof +ifndef INLINE +ifdef FARPROC + extrn $dad:far,$dml:far,$ddv:far + extrn $dng:far,$dswap:far,$itod:far + extrn $dldpcs:far,$dldscs:far,$dstds:far +else + extrn $dad:near,$dml:near,$ddv:near + extrn $dng:near,$dswap:near,$itod:near + extrn $dldpcs:near,$dldscs:near,$dstds:near +endif +endif + finish + end + chk87.asm +;Copyright (C) Manx Software Systems, Inc. 1987. All rights reserved. +; :ts=8 + include lmacros.h + +dataseg segment word public 'data' + public chop_ctl, round_ctl, rdown_ctl +chop_ctl dw 0fbfH ;control word for Chop mode +round_ctl dw 03bfH ;control word for Round nearest mode +rdown_ctl dw 07bfh ;control word for Round Down mode +mess db "8087/80287 is absent or not functional!" + db 10 ; newline +MESSLEN equ 40 +dataseg ends + + public $maxdigit ; this must be in CODESEG +$maxdigit dw 16 ;maximum # of digits for ftoa() to produce. + + assume ds:dataseg + public _chk87_, $fltinit +$fltinit proc +_chk87_: + push bp + mov bp,sp + sub sp,2 + fninit + fnstcw word ptr -2[bp] + mov cx,50 +w1loop: loop w1loop ; wait for a while + and word ptr -2[bp],01f3fh ; clear unused bits + cmp word ptr -2[bp],0033fh ; is 8087 there? + jnz notthere ; no, return error to caller + fstsw word ptr -2[bp] + mov cx,50 +w2loop: loop w2loop ; wait for a while + test word ptr -2[bp],0b8bfh ; all status bits should be off + jz ok_8087 ; 8087 is there!! +notthere: + stc ;bad status, no 8087 present + jmp short exit +ok_8087: + ;note: the carry is cleared by the test instr. above + fldcw word ptr round_ctl ;set initial control +exit: + mov sp,bp + pop bp + ret +$fltinit endp + + finish + end + exp.c +#include "math.h" +#include "errno.h" + +#define P0 0.25000000000000000000e+0 +#define P1 0.75753180159422776666e-2 +#define P2 0.31555192765684646356e-4 +#define Q0 0.50000000000000000000e+0 +#define Q1 0.56817302698551221787e-1 +#define Q2 0.63121894374398503557e-3 +#define Q3 0.75104028399870046114e-6 + +#define P(z) ((P2*z + P1)*z + P0) +#define Q(z) (((Q3*z + Q2)*z + Q1)*z + Q0) + +#define EPS 2.710505e-20 + +double +exp(x) +double x; +{ + int n; + double xn, g, r, z; + extern int errno; + + if (x > LOGHUGE) { + errno = ERANGE; + return HUGE_VAL; + } + if (x < LOGTINY) { + errno = ERANGE; + return 0.0; + } + if (fabs(x) < EPS) + return 1.0; + n = z = x * 1.4426950408889634074; + if (n < 0) + --n; + if (z-n >= 0.5) + ++n; + xn = n; + g = ((x - xn*0.693359375)) + xn*2.1219444005469058277e-4; + z = g*g; + r = P(z)*g; + r = 0.5 + r/(Q(z)-r); + return ldexp(r,n+1); +} + exp1087.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + +log10e db 016h,055h,0b5h,0bbh,0b1h,06bh,02h,040h + +ifdef FARPROC + extrn exp_:far +else + extrn exp_:near +endif + + assume cs:codeseg,ds:dataseg + +;double exp10 (x) +;double x; + + procdef exp10,<> + fld qword ptr x + fmul cs:qword ptr log10e + sub sp,8 + mov bx,sp + fstp ss:qword ptr [bx] + fwait + call exp_ + add sp,8 + pret + pend exp10 + finish + end + exp87.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + +ERANGE equ 21 + +dataseg segment para public 'data' + extrn errno_:word,chop_ctl:word,round_ctl:word +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + + assume cs:codeseg,ds:dataseg + +huge db 020H,062H,010H,058H,039H,02EH,086H,040H +tiny db 080H,049H,0CH,02H,02BH,023H,086H,0C0H +plus5 db 00H,00H,00H,00H,00H,00H,0E0H,03FH ; +0.5 +minus5 db 00H,00H,00H,00H,00H,00H,0E0H,0BFH ; -0.5 + +;double exp(x) +;double x; + + procdef exp,<> + sub sp,6 + fld qword ptr x ; load input value + fcom cs:qword ptr huge ; must be less than or equal to LOGHUGE + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + ja badval + fcom cs:qword ptr tiny ; must be >= LOGTINY + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jae goodval +badval: + mov errno_,ERANGE ; range error + fstp st(0) ; get rid of original number + fldz ; result is zero + jmp exit +goodval: + fldln2 ; load log(e) 2 + fdiv ; x = x / (log(e) 2) + fld st(0) ; make a copy of x/(log(e) 2 + ftst ; check for number < 0 + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + mov bx,offset plus5 ;default rounding is +0.5 + jnc roundup + mov bx,offset minus5 ;otherwise -0.5 +roundup: + fadd cs:qword ptr [bx] ;add round + fldcw word ptr chop_ctl + fistp word ptr -6[bp] ; n = x + (x < 0)?-0.5:0.5 + fldcw word ptr round_ctl + fild word ptr -6[bp] ; reload n + fsub ; x = x - n + mov word ptr -4[bp],0 ; flag = 0 + ftst ; x < 0 + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnc notneg + fchs ; x = -x + mov word ptr -4[bp],1 ;flag = 1; +notneg: + f2xm1 ; x = 2**x - 1 + fld1 ; load one + fadd ; x = x + 1 (i.e. 2**x) + cmp word ptr -4[bp],0 ; if (flag) + je noinvert + fld1 ; load one + fdivr ; x = 1.0/x +noinvert: + fild word ptr -6[bp] ; reload n + fxch ; get x back on top + fscale ; x = x * 2**n + fxch ; get n back on top + fstp st(0) ; and discard it (this keeps stack clean) +exit: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,6 + pret + pend exp + finish + end + fabs.c +#ifdef MPU68K +#define SIGN 0 +#else +#define SIGN 7 +#endif + +double +fabs(dou) +double dou; +{ + register char *cp; + + cp = (char *)&dou; + cp[SIGN] &= 0x7f; + return dou; +} + floor.c +#include "math.h" + +double floor(d) +double d; +{ + if (d < 0.0) + return -ceil(-d); + modf(d, &d); + return d; +} + +double ceil(d) +double d; +{ + if (d < 0.0) + return -floor(-d); + if (modf(d, &d) > 0.0) + ++d; + return d; +} + fmod87.asm +; Copyright Manx Software Systems, Inc. 1983, 1987 +; :ts=8 + include lmacros.h + +dataseg segment word public 'data' +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + assume ds:dataseg + + procdef fmod, <,> +; +; double fmod(doud,denom) +; + sub sp,2 + fld qword ptr denom + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnz divok + fstp st(0) + fld qword ptr doub + jmp exit +divok: + fabs + fld qword ptr doub + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + xor bx,bx + sahf + jnc notneg + mov bx,1 + fabs +notneg: + fprem + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jz done + fcom st(1) + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + ja notneg +done: + fxch + fstp st(0) + test bx,bx + jz exit + fchs +exit: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,2 + pret + pend fmod + finish + end + fpst.asm +; Copyright (C) 1983 by Manx Software Systems + include lmacros.h + + internal $FPSTI + + intrdef $fprds ;preinc or predec a single float using ds:bx + mov cx,ds + mov es,cx + jmp short fpr + + intrdef $fprss ;preinc or predec a single float using ss:bx + mov cx,ss + mov es,cx + jmp short fpr + + intrdef $fpres ;preinc or predec a single float using es:bx +fpr: + push bx + push es + call $itod + pop es + pop bx + push bx + push es + call $fldses + call $dad + pop es + pop bx + call $fstes + ret + + intrdef $fpsds ;postinc or postdec a single float using ds:bx + mov cx,ds + mov es,cx + jmp short fps + + intrdef $fpsss ;postinc or postdec a single float using ss:bx + mov cx,ss + mov es,cx + jmp short fps + + intrdef $fpses ;postinc or postdec a single float using es:bx +fps: + push bx + push es + call $itod + pop es + pop bx + push bx + push es + call $fldses + call $dswap + call $dpsh + call $dad + call $dpop + pop es + pop bx + call $fstes + call $dswap + ret + + intrdef $dprds ;preinc or predec a double float using ds:bx + mov cx,ds + mov es,cx + jmp short dpr + + intrdef $dprss ;preinc or predec a double float using ss:bx + mov cx,ss + mov es,cx + jmp short dpr + + intrdef $dpres ;preinc or predec a double float using es:bx +dpr: + push bx + push es + call $itod + pop es + pop bx + push bx + push es + call $dldses + call $dad + pop es + pop bx + call $dstes + ret + + intrdef $dpsds ;postinc or postdec a double float using ds:bx + mov cx,ds + mov es,cx + jmp short dps + + intrdef $dpsss ;postinc or postdec a double float using ss:bx + mov cx,ss + mov es,cx + jmp short dps + + intrdef $dpses ;postinc or postdec a double float using es:bx +dps: + push bx + push es + call $itod + pop es + pop bx + push bx + push es + call $dldses + call $dswap + call $dpsh + call $dad + call $dpop + pop es + pop bx + call $dstes + call $dswap + ret + +; +ifdef FARPROC + extrn $itod:far,$dad:far,$dpsh:far,$dpop:far,$dswap:far + extrn $fldses:far,$fstes:far,$dldses:far,$dstes:far +else + extrn $itod:near,$dad:near,$dpsh:near,$dpop:near,$dswap:near + extrn $fldses:near,$fstes:near,$dldses:near,$dstes:near +endif +$FPSTI endp + finish + end + frexp.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 +; the psuedo accumlators are formated as follows: +; -10 -8 -6 -4 -2 0 +; |grd + LS ----- fraction ---- MS | exp | sign +; +; floating point system error codes: +UNDER_FLOW equ 1 +OVER_FLOW equ 2 +DIV_BY_ZERO equ 3 +; + include lmacros.h +dataseg segment word public 'data' + dw 5 dup (?) +temp dw ? + extrn flprm:word,flsec:word + extrn flterr_:word +dataseg ends + assume ds:dataseg + +ifdef FARPROC + extrn $dldpss:far, $dst:far, $itod:far + extrn $dad:far, $dsb:far, $isnan:far +else + extrn $dldpss:near, $dst:near, $itod:near + extrn $dad:near, $dsb:near, $isnan:near +endif + + procdef _isnan,<> + lea bx,word ptr ddd ;compute address of first argument + call $dldpss ;load it into the float primary + call $isnan + pret + pend _isnan + + procdef frexp, <,> +; +; frexp(d, &i) +; returns 0 <= x < 1 +; such that: d = x * 2^i + lea bx,word ptr d ;compute address of first argument + call $dldpss ;load it into the float primary + mov bx,flprm + mov ax,word ptr -2[bx] ;fetch current exponent value + test ax,ax + jnz fr_nzero + ldptr bx,i,es ;get pointer +ifndef LONGPTR + mov ds:word ptr [bx],0 +else + mov es:word ptr [bx],0 +endif + pret +fr_nzero: + sub ax,1022 + mov word ptr -2[bx],1022 + ldptr bx,i,es ;get pointer +ifndef LONGPTR + mov ds:word ptr [bx],ax +else + mov es:word ptr [bx],ax +endif + pret + pend frexp +; +; ldexp(d, i) +; returns x = d * 2^i + procdef ldexp, <,> + lea bx,word ptr dou ;compute address of first argument + call $dldpss ;load it into the float primary + mov bx,flprm + mov ax,word ptr -2[bx] ;fetch current exponent value + test ax,ax + jz ld_zero + add ax,ii ;add i to exponent + js ld_underflow + cmp ax,2048 + jl ld_ret + mov flterr_,UNDER_FLOW + mov ax,2047 +ld_ret: + mov word ptr -2[bx],ax +ld_zero: + pret +; +ld_underflow: + mov flterr_,UNDER_FLOW + sub ax,ax + jmp ld_ret + pend ldexp +; +; modf(d, dptr) +; returns fractional part of d, and +; stores integral part into *dptr + procdef modf,<,> + push di + push si + push ds + lea bx,word ptr doubl ;compute address of first argument + call $dldpss ;load it into the float primary + std + mov bx,flprm + mov ax,word ptr -2[bx] ;fetch current exponent value + test ax,ax + jnz mf_nzero + ldptr bx,dptr,es ;get pointer + call $dst +mf_return: + cld + pop ds + pop si + pop di + pret +mf_nzero: + mov di,ds + mov es,di + mov si,bx + mov di,offset temp + mov cx,6 ;save value for fraction part later +rep movsw + sub ax,1023 + jns int_notzero + mov ax,0 + call $itod + jmp get_fraction +int_notzero: + cmp ax,52 + jna mf_frac + ;fraction is zero + ldptr bx,dptr,es ;get pointer + call $dst ;store integer part away + sub ax,ax + call $itod + jmp mf_return +mf_frac: + sub di,di + mov cx,ax + mov ax,4 +mf_count: + sub cx,ax + jbe mf_cdone + dec di + mov ax,8 + jmp mf_count +mf_cdone: + jcxz no_shift + neg cx + mov al,byte ptr -3[bx][di] + shr al,cl + shl al,cl + mov byte ptr -3[bx][di],al +no_shift: + dec di +zap_loop: + cmp di,-8 + jle get_fraction + mov byte ptr -3[bx][di],0 + dec di + jmp zap_loop +get_fraction: + ldptr bx,dptr,es ;get pointer + call $dst ;store integer part away + std + pop ds + push ds + mov di,flprm + xchg di,flsec + mov flprm,di + mov si,ds + mov es,si + mov si,offset temp + mov cx,6 ;restore original value +rep movsw + call $dsb ;compute fractional part + jmp mf_return + pend modf + finish + end + frexp87.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 +; +; floating point system error codes: +UNDER_FLOW equ 1 +OVER_FLOW equ 2 +DIV_BY_ZERO equ 3 +; + include lmacros.h + +dataseg segment word public 'data' +status dw ? +result db 8 dup (?) + extrn chop_ctl:word, round_ctl:word +dataseg ends + assume ds:dataseg + + procdef frexp,<,> +; +; frexp(d, &i) +; returns 0 <= x < 1 +; such that: d = x * 2^i + fld1 + fchs + fld qword ptr d + ftst + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + jz zero + fxtract + fxch + fsub st,st(2) + ldptr bx,i,es +ifdef LONGPTR + fistp es:word ptr [bx] +else + fistp word ptr [bx] +endif + fscale + fxch + fstp st(0) +ifdef STATRES + jmp exit +else + pret +endif +zero: + ldptr bx,i,es +ifdef LONGPTR + mov es:word ptr [bx],0 +else + mov word ptr [bx],0 +endif + fstp st(0) + fstp st(0) + fldz +ifdef STATRES +exit: + fstp qword ptr result + fwait + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + pret + pend frexp +; +; ldexp(d, i) +; returns x = d * 2^i + procdef ldexp, <,> + fild word ptr ii + fld qword ptr dou + fscale + fxch + fstp st(0) +ifdef STATRES + fstp qword ptr result + fwait + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + pret + pend ldexp +; +; modf(d, dptr) +; returns fractional part of d, and +; stores integral part into *dptr + procdef modf, <,> + fld qword ptr doub + fld st(0) + fldcw word ptr chop_ctl + frndint + fldcw word ptr round_ctl + ldptr bx,dptr,es +ifdef LONGPTR + fst es:qword ptr [bx] +else + fst qword ptr [bx] +endif + fsub +ifdef STATRES + fstp qword ptr result + fwait + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + pret + pend modf + finish + end + frexp87s.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 +; the psuedo accumlators are formated as follows: +; -10 -8 -6 -4 -2 0 +; |grd + LS ----- fraction ---- MS | exp | sign +; +; floating point system error codes: +UNDER_FLOW equ 1 +OVER_FLOW equ 2 +DIV_BY_ZERO equ 3 +; + include lmacros.h +dataseg segment word public 'data' + dw 5 dup (?) +temp dw ? + extrn flprm:word,flsec:word + extrn flterr_:word +status dw ? + extrn $flt_inx:word,chop_ctl:word, round_ctl:word +dataseg ends + assume ds:dataseg + +ifdef FARPROC + extrn $dldpss:far, $dst:far, $itod:far + extrn $dad:far, $dsb:far, $isnan:far +else + extrn $dldpss:near, $dst:near, $itod:near + extrn $dad:near, $dsb:near, $isnan:near +endif + + procdef _isnan,<> + lea bx,word ptr ddd ;compute address of first argument + call $dldpss ;load it into the float primary + call $isnan + pret + pend _isnan + + procdef frexp, <,> +; +; frexp(d, &i) +; returns 0 <= x < 1 +; such that: d = x * 2^i + cmp $flt_inx,0 + jnz $frexp87 + lea bx,word ptr d ;compute address of first argument + call $dldpss ;load it into the float primary + mov bx,flprm + mov ax,word ptr -2[bx] ;fetch current exponent value + test ax,ax + jnz fr_nzero + ldptr bx,i,es ;get pointer +ifdef LONGPTR + mov es:word ptr [bx],0 +else + mov ds:word ptr [bx],0 +endif + pret +fr_nzero: + sub ax,1022 + mov word ptr -2[bx],1022 + ldptr bx,i,es ;get pointer +ifdef LONGPTR + mov es:word ptr [bx],ax +else + mov ds:word ptr [bx],ax +endif + pret +$frexp87: + fld1 + fchs + fld qword ptr d + ftst + fstsw status + fwait + mov ah,byte ptr status+1 + sahf + je zero + fxtract + fxch + fsub st,st(2) + ldptr bx,i,es +ifdef LONGPTR + fistp es:word ptr [bx] +else + fistp ds:word ptr [bx] +endif + fscale + fxch + fstp st(0) + fwait + pret +zero: + fstp st(0) + fstp st(0) + fldz + ldptr bx,i,es +ifdef LONGPTR + mov es:word ptr [bx],0 +else + mov ds:word ptr [bx],0 +endif + pret + pend frexp +; +; ldexp(d, i) +; returns x = d * 2^i + procdef ldexp, <,> + cmp $flt_inx,0 + jnz $ldexp87 + lea bx,word ptr dou ;compute address of first argument + call $dldpss ;load it into the float primary + mov bx,flprm + mov ax,word ptr -2[bx] ;fetch current exponent value + test ax,ax + jz ld_zero + add ax,ii ;add i to exponent + js ld_underflow + cmp ax,2048 + jl ld_ret + mov flterr_,UNDER_FLOW + mov ax,2047 +ld_ret: + mov word ptr -2[bx],ax +ld_zero: + pret +; +ld_underflow: + mov flterr_,UNDER_FLOW + sub ax,ax + jmp ld_ret +$ldexp87: + fild word ptr ii + fld qword ptr dou + fscale + fxch + fstp st(0) + pret + pend ldexp +; +; modf(d, dptr) +; returns fractional part of d, and +; stores integral part into *dptr + procdef modf,<,> + cmp $flt_inx,0 + jz modf_soft + fld qword ptr doubl + fld st(0) + fldcw chop_ctl + frndint + ldptr bx,dptr,es + fldcw round_ctl +ifdef LONGPTR + fst es:qword ptr [bx] +else + fst ds:qword ptr [bx] +endif + fsub + pret + +modf_soft: + push di + push si + push ds + lea bx,word ptr doubl ;compute address of first argument + call $dldpss ;load it into the float primary + std + mov bx,flprm + mov ax,word ptr -2[bx] ;fetch current exponent value + test ax,ax + jnz mf_nzero + ldptr bx,dptr,es ;get pointer + call $dst +mf_return: + cld + pop ds + pop si + pop di + pret +mf_nzero: + mov di,ds + mov es,di + mov si,bx + mov di,offset temp + mov cx,6 ;save value for fraction part later +rep movsw + sub ax,1023 + jns int_notzero + mov ax,0 + call $itod + jmp get_fraction +int_notzero: + cmp ax,52 + jna mf_frac + ;fraction is zero + ldptr bx,dptr,es ;get pointer + call $dst ;store integer part away + sub ax,ax + call $itod + jmp mf_return +mf_frac: + sub di,di + mov cx,ax + mov ax,4 +mf_count: + sub cx,ax + jbe mf_cdone + dec di + mov ax,8 + jmp mf_count +mf_cdone: + jcxz no_shift + neg cx + mov al,byte ptr -3[bx][di] + shr al,cl + shl al,cl + mov byte ptr -3[bx][di],al +no_shift: + dec di +zap_loop: + cmp di,-8 + jle get_fraction + mov byte ptr -3[bx][di],0 + dec di + jmp zap_loop +get_fraction: + ldptr bx,dptr,es ;get pointer + call $dst ;store integer part away + std + pop ds + push ds + mov di,flprm + xchg di,flsec + mov flprm,di + mov si,ds + mov es,si + mov si,offset temp + mov cx,6 ;restore original value +rep movsw + call $dsb ;compute fractional part + jmp mf_return + pend modf + finish + end + fsubs.asm +ifndef INTERNAL +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 +; the psuedo accumlators are formated as follows: +; -12 -10 -8 -6 -4 -2 0 +; |guard digits + LS ----- fraction ---- MS | exp | sign +; +; floating point system error codes: + include lmacros.h +UNDER_FLOW equ 1 +OVER_FLOW equ 2 +DIV_BY_ZERO equ 3 +; +dataseg segment word public 'data' + public flprm,flsec + public flterr_ +flterr_ dw 0 +flprm dw acc1 +flsec dw acc2 +YU dw ? +VEE dw ? + dw 5 dup (?) +acc1 dw 7 dup (?) +acc2 dw ? +; +;work area for divide and multiply routines +; + dw 4 dup (?) +temp dw 4 dup (?) +loop_count db 0 ;iterations left (for divide) +lcnt1 db 0 ;# iter. for this word of quotient +dataseg ends + assume ds:dataseg + + + internal $floats + +endif + + public $maxdigit ; this must be in CODESEG +$maxdigit dw 16 ;maximum # of digits for ftoa() to produce. + + intrdef $isnan + sub ax,ax + ret + + intrdef $fldpds ;load single float into primary accum using ds:bx +ifndef LONGPTR + intrdef $fldp +endif + push di + mov di,ds + mov es,di + mov di,flprm + jmp short fload + + intrdef $fldpss ;load single float into primary accum using ss:bx + push di + mov di,ss + mov es,di + mov di,flprm + jmp short fload + + intrdef $fldpes ;load single float into primary accum using es:bx +ifdef LONGPTR + intrdef $fldp +endif + push di + mov di,flprm +fload: + push si + mov ax,es:2[bx] ;get exponent/sign word of number + mov byte ptr [di],ah ;save sign + mov dh,al ;save fraction bits + shl ax,1 ;get LS bit of exponent + xchg ah,al + and ax,0ffH + jnz fld_nz + push ds + mov ax,ds + mov es,ax + jmp loadzero +fld_nz: + sub ax,127 ;adjust from excess 127 notation + add ax,1023 ;put into excess 1023 notation + mov word ptr -2[di],ax ;and save + or dh,80H ;turn "hidden" bit back on + mov dl,es:byte ptr 1[bx] + mov ah,es:byte ptr [bx] + sub al,al + shr dx,1 ;shift fraction into same position as a double + rcr ax,1 + shr dx,1 + rcr ax,1 + shr dx,1 + rcr ax,1 + mov word ptr -4[di],dx + mov word ptr -6[di],ax + sub ax,ax + mov word ptr -8[di],ax + mov word ptr -10[di],ax + mov word ptr -12[di],ax + pop si + pop di + ret + + intrdef $fldsds ;load single float into secondary accum using ds:bx +ifndef LONGPTR + intrdef $flds +endif + push di + mov di,ds + mov es,di + mov di,flsec + jmp short fload + + intrdef $fldsss ;load single float into secondary accum using ss:bx + push di + mov di,ss + mov es,di + mov di,flsec + jmp short fload + + intrdef $fldses ;load single float into secondary accum using es:bx +ifdef LONGPTR + intrdef $flds +endif + push di + mov di,flsec + jmp short fload + + intrdef $fstds ; store single float from primary using ds:bx +ifndef LONGPTR + intrdef $fst +endif + mov cx,ds + mov es,cx + jmp short dofst + + intrdef $fstss ; store single float from primary using ss:bx + mov cx,ss + mov es,cx + jmp short dofst + + intrdef $fstes ;store single float from primary using es:bx +ifdef LONGPTR + intrdef $fst +endif +dofst: + push di + push si + push bx + call dornd + pop di + mov si,flprm + mov ax,-2[si] ;get exponent + test ax,ax + jnz fst_nzero + mov es:word ptr [di],0 + mov es:word ptr 2[di],0 + pop si + pop di + ret +fst_nzero: + sub ax,1023 ;switch from excess 1023 notation + add ax,127 ;into excess 127 notation + mov dx,-4[si] + mov bx,-6[si] + add bx,10H ;round number + adc dx,0 + shl bx,1 ;move number back into proper position + rcl dx,1 + shl bx,1 + rcl dx,1 + test dx,dx + js fix_exp + shl bx,1 + rcl dx,1 + jmp short fst_merge +fix_exp: + inc ax ;adjust exponent +fst_merge: + mov cl,7 + shl ax,cl + mov cl,[si] ;get sign + and cl,80H + or ah,cl ;merge sign and exponent + and dh,7fH ;clear "hidden" bit + or al,dh ;merge with sign/exponent + mov es:word ptr 2[di],ax + mov es:byte ptr 1[di],dl + mov es:byte ptr [di],bh + pop si + pop di + ret +; + intrdef $fstsds ; store single float from secondary using ds:bx +ifndef LONGPTR + intrdef $fsts +endif + mov cx,ds + mov es,cx + jmp short dofsts + + intrdef $fstsss ; store single float fromn secondary using ss:bx + mov cx,ss + mov es,cx + jmp short dofsts + + intrdef $fstses ; store single float from secondary using es:bx +ifdef LONGPTR + intrdef $fsts +endif +dofsts: + mov ax,flprm + xchg ax,flsec + mov flprm,ax +ifdef FARPROC + call far ptr $fstes +else + call $fstes +endif + mov ax,flprm + xchg ax,flsec + mov flprm,ax + ret + + intrdef $dldpds ; load double float in primary using ds:bxS +ifndef LONGPTR + intrdef $dldp +endif + mov cx,ds + mov es,cx + jmp short dodldp + + intrdef $dldpss ; load double float in primary using ss:bx + mov cx,ss + mov es,cx + jmp short dodldp + + intrdef $dldpcs ; load double float in primary using cs:bx +ifndef FARPROC + mov cx,cs + mov es,cx +else + mov cx,bx + mov bx,sp + mov bx,ss:2[bx] + xchg cx,bx + mov es,cx +endif + jmp short dodldp + + intrdef $dldpes ;load double float in primary using es:bx +ifdef LONGPTR + intrdef $dldp +endif +dodldp: + push di + mov di,flprm +dload: + push si + lea si,6[bx] +dload2: + push ds + mov cx,es ;swap the segment registers + mov dx,ds + mov es,dx + mov ds,cx + std + lods word ptr [si];get first two bytes of number + mov es:byte ptr [di],ah ;save sign + mov dh,al ;save top nibble of fraction + mov cl,4 + shr ax,cl + and ax,7ffH ;isolate exponent + jz loadzero + sub di,2 + stos word ptr [di] + and dh,15 ;isolate fraction + or dh,10H ;put back "hidden" bit + mov es:byte ptr 1[di],dh + mov cx,6 + inc si +rep movs byte ptr [di], byte ptr [si] + mov al,0 + stosb ;clear guard bytes + stosb + stosb + cld + pop ds + pop si + pop di + ret +loadzero: + std + sub ax,ax + mov cx,7 +rep stos word ptr [di] + cld + pop ds + pop si + pop di + ret + + intrdef $dldsds ; load double float in secondary using ds:bx +ifndef LONGPTR + intrdef $dlds +endif + mov cx,ds + mov es,cx + jmp dolds + + intrdef $dldsss ; load double float in secondary using ss:bx + mov cx,ss + mov es,cx + jmp dolds + + intrdef $dldscs ; load double float in secondary using cs:bx +ifndef FARPROC + mov cx,cs + mov es,cx +else + mov cx,bx + mov bx,sp + mov bx,ss:2[bx] + xchg cx,bx + mov es,cx +endif + jmp dolds + + intrdef $dldses ; load double float in secondary using es:bx +ifdef LONGPTR + intrdef $dlds +endif +dolds: + push di + mov di,flsec + jmp short dload + + intrdef $dstds ; store double float from primary using ds:bx +ifndef LONGPTR + intrdef $dst +endif + mov cx,ds + mov es,cx + jmp short dodst + + intrdef $dstss ; store double float from primary using ss:bx + mov cx,ss + mov es,cx + jmp short dodst + + intrdef $dstes ; store double float from primary using es:bx +ifdef LONGPTR + intrdef $dst +endif +dodst: + std + push di + push si + push bx ;save address + call dornd ;round fraction to 7 bytes + pop di ;restore address + add di,6 + mov si,flprm + mov dl,[si] ;get sign + and dl,80H + sub si,2 + lods word ptr [si];get exponent + mov cl,4 + shl ax,cl + or ah,dl ;merge sign and exponent + mov dl,1[si] + and dl,15 ;clear "hidden" bit + or al,dl ;merge with sign/exponent + stos word ptr [di] + mov cx,6 + inc di +rep movs byte ptr [di], byte ptr [si] + cld + pop si + pop di + ret + + intrdef $dstsds ; store double float from secondary using ds:bx +ifndef LONGPTR + intrdef $dsts +endif + mov cx,ds + mov es,cx + jmp short dodsts + + intrdef $dstsss ; store double float from secondary using ss:bx + mov cx,ss + mov es,cx + jmp short dodsts + + intrdef $dstses ; store double float from secondary using es:bx +ifdef LONGPTR + intrdef $dsts +endif +dodsts: + mov ax,flprm + xchg ax,flsec + mov flprm,ax +ifdef FARPROC + call far ptr $dstes +else + call $dstes +endif + mov ax,flprm + xchg ax,flsec + mov flprm,ax + ret + + intrdef $dpshs ;push double float onto the stack + ;from the primary accumulator + pop ax ;fetch return address +ifdef FARPROC + pop dx +endif + sub sp,8 ;make room for double on stack + mov bx,ss + mov es,bx + mov bx,sp ;address of place to store +ifdef FARPROC + push dx +endif + push ax ;put return address back + jmp near ptr dodsts +; + intrdef $dpsh ;push double float onto the stack + ;from the primary accumulator + pop ax ;fetch return address +ifdef FARPROC + pop dx +endif + sub sp,8 ;make room for double on stack + mov bx,ss + mov es,bx + mov bx,sp ;address of place to store +ifdef FARPROC + push dx +endif + push ax ;put return address back + jmp near ptr dodst +; + intrdef $dpopp ;pop double float into secondary accum + push bx + push es + mov bx,ss + mov es,bx + mov bx,sp + add bx,FPTRSIZE+4 ;address of data to load +ifdef FARPROC + call far ptr $dldpes +else + call $dldpes +endif + + pop es + pop bx + ret 8 ;return and de-allocate space +; + intrdef $dpop ;pop double float into secondary accum + push bx + push es + mov bx,ss + mov es,bx + mov bx,sp + add bx,FPTRSIZE+4 ;address of data to load +ifdef FARPROC + call far ptr $dldses +else + call $dldses +endif + pop es + pop bx + ret 8 ;return and de-allocate space + + intrdef $dlip ;load double immediate primary + push bp + mov bp,sp +ifdef FARPROC + les bx,2[bp] +else + mov bx,cs + mov es,bx + mov bx,2[bp] +endif + add 2[bp],8 ;skip over double constant in code + pop bp + jmp dodldp + + intrdef $dlis ;load double immediate secondary + push bp + mov bp,sp +ifdef FARPROC + les bx,2[bp] +else + mov bx,cs + mov es,bx + mov bx,2[bp] +endif + add 2[bp],8 ;skip over double constant in code + pop bp + jmp dolds + + intrdef $dswap ;exchange primary and secondary + mov ax,flsec + xchg ax,flprm + mov flsec,ax + ret + + intrdef $dng ;negate primary + mov bx,flprm + cmp -2[bx],0 + je no_flip + xor byte ptr [bx],80H ;flip sign +no_flip: + ret + + intrdef $dtst ;test if primary is zero + mov bx,flprm + cmp word ptr -2[bx],0 + jne true + sub ax,ax + ret +true: + sub ax,ax + inc ax + ret + + intrdef $dcmp ;compare primary and secondary + push di + push si + std + mov si,flprm + mov di,ds + mov es,di + mov di,flsec + mov al,byte ptr [si] + test al,al ;is primary negative + js dcneg +; primary is positive + xor al,byte ptr [di] ;check if signs the same + js p_gt_s ;differ then p > s + jmp short docomp +dcneg: + ;primary is negative + xor al,byte ptr [di] ;check if signs the same + js p_lt_s ;differ the p < s + xchg di,si ;both negative reverse sense of test +docomp: + sub di,2 ;back up to exponent + sub si,2 + mov cx,5 ;test exponent + 4 words of fraction +repe cmps acc1, es:acc2 + jb p_lt_s + ja p_gt_s + ;return 0 if p == s + xor ax,ax + jmp short cmp_return + ;return 0 if p == s +p_lt_s: ;return < 0 if p < s + xor ax,ax + dec ax + jmp short cmp_return +; +p_gt_s: ; > 0 if p > s + xor ax,ax + inc ax +cmp_return: + pop si + pop di + cld + ret + + intrdef $dsb ;subtract secondary from primary + mov bx,flsec + xor byte ptr [bx],80H ;flip sign of secondary + ;and fall thru into add routine + + intrdef $dad ;add secondary to primary + pushf + push bp + push si + push di + std + mov si,flprm + mov di,ds + mov es,di + mov di,flsec + mov cx,word ptr -2[si] ;get exponent of primary + sub cx,word ptr -2[di] ;compute magnitude difference + jae order_ok + xchg si,di ;make largest number primary + mov flprm,si + mov flsec,di + neg cx ;fix exponent difference +order_ok: + cmp cx,64 ;see if numbers overlap + jna add_ok ;no overlap just return largest number + pop di + pop si + pop bp + popf + ret +add_ok: + lea si,-3[di] + mov di,offset temp+7 + sub al,al +cx_check: + cmp cx,8 ;more than a byte to shift ? + jb shift_it ;no, then shift remaining part over + stos byte ptr [di] + sub cx,8 + jmp cx_check +shift_it: + sub dl,dl +shift_loop: + mov ah,dl + lods byte ptr [si] + mov dl,al + shr ax,cl + stos byte ptr [di] + cmp di,offset temp-2 + jae shift_loop +; + mov si,flprm + mov di,flsec + mov cx,5 ;load up for loops below + mov al,byte ptr [di] + xor al,byte ptr [si] + jns signs_same + test byte ptr [di],80H ;check which is negative + jnz sub_s_from_p +; +; subtract primary from secondary +; + clc + mov bx,0 +sub_loop_1: + mov ax,temp-2[bx] + sbb ax,word ptr -12[bx][si] + mov word ptr -12[bx][si],ax + inc bx + inc bx + loop sub_loop_1 + jmp short check_sign +; +; subtract secondary from primary +; +sub_s_from_p: + clc + mov bx,0 +sub_loop_2: + mov ax,temp-2[bx] + sbb word ptr -12[bx][si],ax + inc bx + inc bx + loop sub_loop_2 +check_sign: + mov byte ptr [si],0 ;mark result as positive + jnb do_normalize + mov byte ptr [si],0FFH ;mark result as negative + clc + mov bx,0 + mov cx,5 +neg_loop: + mov ax,0 + sbb ax,word ptr -12[bx][si] + mov word ptr -12[bx][si],ax + inc bx + inc bx + loop neg_loop + jmp short do_normalize +; +; signs of numbers are the same just add them together +; +signs_same: + clc + mov bx,0 +add_loop: + mov ax,temp-2[bx] + adc word ptr -12[bx][si],ax + inc bx + inc bx + loop add_loop +;;; jmp short do_normalize ;fall through +; +; normalize number such that first byte of number is >= 0x10 +; and < 0x20 +; +do_normalize: + mov si,flprm + lea bp,-12[si] +norm: + lea bx,-3[si] + mov dx,word ptr -2[si] ;get exponent +byte_loop: + cmp byte ptr [bx],0 + jne bskip_done + dec bx + sub dx,8 + cmp bx,bp + jae byte_loop +; +; number is zero +; +zero_result: + mov di,ds + mov es,di + mov di,flprm + sub ax,ax + mov cx,7 +rep stos word ptr [di] + pop di + pop si + pop bp + popf + ret + +bskip_done: + sub cx,cx + lea di,-3[si] + mov ah,byte ptr [bx] + dec bx + cmp ah,20H + jnb too_big +; + mov al,byte ptr [bx] + mov ch,al +left_count: + cmp ah,10H + jae move_left + shl ax,1 + inc cl + dec dx + jmp left_count +move_left: + mov [di],ah + dec di + dec bx + cmp bx,bp + jb clear_tail + mov ah,ch + mov al,byte ptr [bx] + mov ch,al + shl ax,cl + jmp move_left +; +; +too_big: + mov al,ah + sub ah,ah + mov ch,al +right_count: + inc cl + inc dx + shr ax,1 + cmp al,20H + jnb right_count +move_right: + stos byte ptr [di] + cmp bx,bp + jb clear_tail + mov ah,ch + mov al,byte ptr [bx] + dec bx + mov ch,al + shr ax,cl + jmp move_right +; +clear_tail: + mov cx,di + sub cx,bp + inc cx + jcxz norm_done + sub al,al +rep stos byte ptr [di] +; +norm_done: +; +; overflow/underflow checking needs to be done here +; + cmp dx,0 + jg no_under + mov flterr_,UNDER_FLOW + mov word ptr -2[si],1 + jmp short clr_fraction +no_under: + cmp dx,2048 + jl no_over + mov flterr_,OVER_FLOW + mov word ptr -2[si],2047 +clr_fraction: + mov word ptr -4[si],1000H + lea di,-6[si] + sub ax,ax + stos word ptr [di] + stos word ptr [di] + stos word ptr [di] + jmp fault_handler +no_over: + mov word ptr -2[si],dx ;save new value of exponent + pop di + pop si + pop bp + popf + ret +; + intrdef $ddv + ;double floating divide (primary = primary/secondary) + pushf + push bp + push si + push di + std + mov di,ds + mov es,di + mov bp,flprm + mov bx,flsec + mov ax,ds:-2[bp] + test ax,ax + jnz not_zero + jmp zero_result +not_zero: + mov dx,-2[bx] + test dx,dx + jnz div_ok + mov flterr_,DIV_BY_ZERO + jmp fault_handler +div_ok: + sub ax,dx + add ax,1019 ;exp = Ep - Es + mov ds:-2[bp],ax + mov al,byte ptr [bx] + xor ds:byte ptr [bp],al +; + mov ax,-6[bx] ;check if easy divide case + or ax,-8[bx] + or ax,-10[bx] + jnz hard_div +; + mov si,-4[bx] + lea di,ds:-4[bp] + mov cx,4 + mov dx,[di] + cmp dx,si + jb ediv_loop + shl si,1 + inc ds:word ptr -2[bp] ;adjust exponent +ediv_loop: + mov ax,-2[di] + div si + stos word ptr [di] + loop ediv_loop + sub ax,ax ;this IS the correct way + div si + stos word ptr [di] + jmp do_normalize +; +hard_div: + lea si,ds:-4[bp] + lea di,-4[bx] + mov cx,4 +repe cmps acc1, es:acc2 + jne do_div +; numbers are the same so answer is 1 + add ds:word ptr -2[bp],4 ;adjust exponent + lea di,ds:-4[bp] + mov ax,1000H + stos es:acc1 + sub ax,ax + stos es:acc1 + stos es:acc1 + stos es:acc1 + mov si,bp + mov dx,word ptr -2[si] + jmp norm_done +; +do_div: + mov ds:word ptr -12[bp],0 + mov ax,ds:-10[bp] + mov dx,ds:-8[bp] + mov si,ds:-6[bp] + mov di,ds:-4[bp] + jb dont_shift + inc ds:word ptr -2[bp] ;fix exponent + shr di,1 + rcr si,1 + rcr dx,1 + rcr ax,1 +dont_shift: + sub cx,cx + sub bp,4 + mov loop_count,4 +bdiv_loop: + mov lcnt1,16 +div_loop: + shl cx,1 + shl ax,1 + rcl dx,1 + rcl si,1 + rcl di,1 + sub ax,word ptr -10[bx] + sbb dx,word ptr -8[bx] + sbb si,word ptr -6[bx] + sbb di,word ptr -4[bx] + js zero_bit +one_bit: + inc cx ;set bit in quotient + dec lcnt1 + jnz div_loop + mov ds:word ptr [bp],cx + sub bp,2 + sub cx,cx + dec loop_count + jnz bdiv_loop + jmp do_normalize +; +bzero_loop: + mov lcnt1,16 +zero_loop: + shl cx,1 + shl ax,1 + rcl dx,1 + rcl si,1 + rcl di,1 + add ax,word ptr -10[bx] + adc dx,word ptr -8[bx] + adc si,word ptr -6[bx] + adc di,word ptr -4[bx] + jns one_bit +zero_bit: + dec lcnt1 + jnz zero_loop + mov ds:word ptr [bp],cx + sub bp,2 + sub cx,cx + dec loop_count + jnz bzero_loop + jmp do_normalize +; +; + intrdef $dml + ;double floating multiply (primary = primary * secondary) + pushf + push bp + push si + push di + std + mov si,flprm + mov bx,flsec + mov ax,-2[si] + test ax,ax + jnz prm_not_zero + jmp zero_result +prm_not_zero: + mov dx,-2[bx] + test dx,dx + jnz alt_not_zero + jmp zero_result +alt_not_zero: + add ax,dx + sub ax,1019 + mov -2[si],ax + mov al,byte ptr [bx] + xor byte ptr [si],al + sub ax,ax + mov cx,8 + mov di,ds + mov es,di + mov di,offset temp+6 +rep stos word ptr [di] ;clear result +; + mov cx,-10[bx] + jcxz skip1 + mov ax,-6[si] + test ax,ax + jz skip13 + mul cx + mov temp-2,dx +skip13: + mov ax,-4[si] + test ax,ax + jz skip1 + mul cx + add temp-2,ax + adc temp,dx + adc temp+2,0 +skip1: + mov cx,-8[bx] + jcxz skip2 + mov ax,-8[si] + test ax,ax + jz skip22 + mul cx + add temp-2,dx + adc temp,0 + adc temp+2,0 +skip22: + mov ax,-6[si] + test ax,ax + jz skip23 + mul cx + add temp-2,ax + adc temp,dx + adc temp+2,0 +skip23: + mov ax,-4[si] + test ax,ax + jz skip2 + mul cx + add temp,ax + adc temp+2,dx + adc temp+4,0 +skip2: + mov cx,-6[bx] + jcxz skip3 + mov ax,-10[si] + test ax,ax + jz skip3x + mul cx + add temp-2,dx + adc temp,0 + adc temp+2,0 + adc temp+4,0 +skip3x: + mov ax,-8[si] + test ax,ax + jz skip31 + mul cx + add temp-2,ax + adc temp,dx + adc temp+2,0 + adc temp+4,0 +skip31: + mov ax,-6[si] + test ax,ax + jz skip32 + mul cx + add temp,ax + adc temp+2,dx + adc temp+4,0 +skip32: + mov ax,-4[si] + test ax,ax + jz skip3 + mul cx + add temp+2,ax + adc temp+4,dx + adc temp+6,0 +skip3: + mov cx,-4[bx] + jcxz skip4 + mov ax,-10[si] + test ax,ax + jz skip41 + mul cx + add temp-2,ax + adc temp,dx + adc temp+2,0 + adc temp+4,0 + adc temp+6,0 +skip41: + mov ax,-8[si] + test ax,ax + jz skip42 + mul cx + add temp,ax + adc temp+2,dx + adc temp+4,0 + adc temp+6,0 +skip42: + mov ax,-6[si] + test ax,ax + jz skip43 + mul cx + add temp+2,ax + adc temp+4,dx + adc temp+6,0 +skip43: + mov ax,-4[si] + test ax,ax + jz skip4 + mul cx + add temp+4,ax + adc temp+6,dx +skip4: + lea di,-4[si] + mov si,offset temp+6 + mov cx,5 +rep movs word ptr [di], word ptr [si] + jmp do_normalize +; + intrdef $utod + pushf + push bp + push si + push di + std + mov di,ds + mov es,di + mov di,flprm + mov byte ptr [di],0 ;make sign positive + mov word ptr -2[di],1023+12 ;set exponent + sub di,4 + stos word ptr [di] + sub ax,ax + stos word ptr [di] + stos word ptr [di] + stos word ptr [di] + stos word ptr [di] + jmp do_normalize +; + intrdef $itod + pushf + push bp + push si + push di + std + mov di,ds + mov es,di + mov di,flprm + mov byte ptr [di],0 ;make sign positive + mov word ptr -2[di],1023+12 ;set exponent + test ax,ax + jns pos_int + neg ax + mov byte ptr [di],80H ;make sign negative +pos_int: + sub di,4 + stos word ptr [di] + sub ax,ax + stos word ptr [di] + stos word ptr [di] + stos word ptr [di] + stos word ptr [di] + jmp do_normalize +; +dornd proc near + ; round the number in the primary accumulator + mov di,flprm + mov ax,word ptr -12[di] + mov word ptr -12[di],0 + cmp byte ptr -10[di],80H + mov byte ptr -10[di],0 + jb rndexit + jne round_up + test ax,ax + jnz round_up + or byte ptr -9[di],1 ;round up on even, down on odd + ret +round_up: + add byte ptr -9[di],1 + adc word ptr -8[di],0 + adc word ptr -6[di],0 + adc word ptr -4[di],0 + cmp byte ptr -3[di],20h + jb rndexit + inc word ptr -2[di] ;bump exponent + shr word ptr -4[di],1 ;and re-normalize number + rcr word ptr -6[di],1 + rcr word ptr -8[di],1 + rcr word ptr -10[di],1 +rndexit: + ret +dornd endp +; + intrdef $xtod + mov cx,1 + jmp short xxtod + + intrdef $ul2d + mov cx,0 +xxtod: + pushf + push bp + push si + push di + std + mov di,ds + mov es,di + mov di,flprm + mov byte ptr [di],0 ;make sign positive + mov word ptr -2[di],1023+28 ;set exponent + test cx,cx + jz pos_long + test dx,dx + jns pos_long + neg dx + neg ax + sbb dx,0 + mov byte ptr [di],80H ;make sign negative +pos_long: + sub di,4 + xchg ax,dx + stos word ptr [di] + xchg ax,dx + stos word ptr [di] + sub ax,ax + stos word ptr [di] + stos word ptr [di] + stos word ptr [di] + jmp do_normalize +; + intrdef $dtou + intrdef $dtoi + intrdef $dtox + push si + push di + mov si,flprm + sub ax,ax + mov temp,ax + mov temp+2,ax + mov temp+4,ax + mov temp+6,ax + mov ax,word ptr -2[si] + sub ax,1023 + js d2x_zero + cmp ax,54 + jae d2x_zero + mov di,ds + mov es,di + mov di,offset temp + sub bx,bx + mov cx,ax + mov ax,4 +d2x_count: + sub cx,ax + jbe d2x_cdone + dec bx + mov ax,8 + jmp d2x_count +d2x_cdone: + mov dl,byte ptr -3[si][bx] + mov byte ptr [di],dl + inc di + inc bx + jle d2x_cdone + neg cx + mov ax,temp + mov dx,temp+2 + mov bx,temp+4 + jcxz d2x_nshift +d2x_shift: + shr bx,1 + rcr dx,1 + rcr ax,1 + loop d2x_shift +d2x_nshift: + test byte ptr [si],80H + jz d2x_ret + neg dx + neg ax + sbb dx,0 +d2x_ret: + pop di + pop si + ret + +d2x_zero: + sub ax,ax + sub dx,dx + pop di + pop si + ret + + intrdef $dstat ; save floating state in buf es:bx + push si + push di + mov di,bx + mov si, offset flterr_ ; get start of data area + mov cx, offset lcnt1+1 ; get end of data area + sub cx, si ; get size +rep movs byte ptr [di], byte ptr [si] ; save floating state + pop di + pop si + ret + + intrdef $drest ; restore floating state from buf es:bx + push si + push di + push ds + mov dx,ds ; swap segment registers + mov cx,es + mov ds,cx + mov es,dx + mov si,bx + mov di, offset flterr_ ; get start of data area + mov cx, offset lcnt1+1 ; get end of data area + sub cx, di ; get size +rep movs byte ptr [di], byte ptr [si] ; restore floating state + pop ds + pop di + pop si + ret + +; +; +fault_handler: + pop di + pop si + pop bp + popf + ret +; +ifndef INTERNAL +$floats endp + finish + end +endif + fsubs87.asm +ifndef INTERNAL +; Copyright (C) 1983 by Manx Software Systems +; page 54,130 +; :ts=8 +; floating point system error codes: + include lmacros.h +UNDER_FLOW equ 1 +OVER_FLOW equ 2 +DIV_BY_ZERO equ 3 +; + internal $floats + +dataseg segment word public 'data' + public flterr_ +flterr_ dw 0 +second db 8 dup (?) +work dw 4 dup (?) +status dw 0 + extrn chop_ctl:word, round_ctl:word, rdown_ctl:word +dataseg ends + assume ds:dataseg +ifdef FARPROC +frame equ 4 +else +frame equ 2 +endif + +endif + +ifdef INTERNAL +; +; In the table 0 -- number is valid +; 1 -- number is +/- NAN +; 2 -- number is +/- infinity +; 3 -- number is +/- unnormal +; 4 -- number is +/- denormal +; 5 -- register is marked empty + +oktab db 3,1,3,1,0,2,0,2,0,5,0,5,4,5,4,5 + + intrdef $isnan + push bp + mov bp,sp + sub sp,2 + fxam + fstsw word ptr -2[bp] + fwait + mov bl,byte ptr -1[bp] + and bl,047h + test bl,40h + jz noc3 + or bl,08h +noc3: + and bx,0fh ; mask to get c3 c2 c1 and c0 bits + mov al,cs:byte ptr oktab[bx] + cbw + test ax,ax + mov sp,bp + pop bp + ret +endif + + intrdef $fldpds ;load single float into primary accum +ifndef LONGPTR + intrdef $fldp +endif + finit + fld ds:dword ptr[bx] + ret + + intrdef $fldpss ;load single float into primary accum + finit + fld ss:dword ptr[bx] + ret + + intrdef $fldpes +ifdef LONGPTR + intrdef $fldp ;load single float into primary accum +endif + finit + fld es:dword ptr[bx] + ret + + intrdef $fldsds ;load single float into secondary accum +ifndef LONGPTR + intrdef $flds +endif + fld ds:dword ptr[bx] + fstp qword ptr second + ret + + intrdef $fldsss ;load single float into secondary accum + fld ss:dword ptr[bx] + fstp qword ptr second + ret + + intrdef $fldses +ifdef LONGPTR + intrdef $flds ;load single float into secondary accum +endif + fld es:dword ptr[bx] + fstp qword ptr second + ret + + intrdef $fstds ;store single at addr in BX +ifndef LONGPTR + intrdef $fst +endif + fst ds:dword ptr[bx] + fwait + ret + + intrdef $fstss ;store single at addr in BX + fst ss:dword ptr[bx] + fwait + ret + + intrdef $fstes +ifdef LONGPTR + intrdef $fst ;store single at addr in BX +endif + fst es:dword ptr[bx] + fwait + ret + + intrdef $fstsds ;store single at addr in BX +ifndef LONGPTR + intrdef $fsts +endif + fld qword ptr second + fstp ds:dword ptr[bx] + fwait + ret + + intrdef $fstsss ;store single at addr in BX + fld qword ptr second + fstp ss:dword ptr[bx] + fwait + ret + + intrdef $fstses +ifdef LONGPTR + intrdef $fsts ;store single at addr in BX +endif + fld qword ptr second + fstp es:dword ptr[bx] + fwait + ret + + intrdef $dldpds ;load double float into primary accum +ifndef LONGPTR + intrdef $dldp +endif + finit + fld ds:qword ptr[bx] + ret + + intrdef $dldpss ;load double float into primary accum + finit + fld ss:qword ptr[bx] + ret + + intrdef $dldpcs ;load double float into primary accum + finit +ifndef FARPROC + fld cs:qword ptr[bx] +else + mov cx,bx + mov bx,sp + mov bx,ss:2[bx] + xchg cx,bx + mov es,cx + fld es:qword ptr[bx] +endif + ret + + intrdef $dldpes +ifdef LONGPTR + intrdef $dldp ;load double float into primary accum +endif + finit + fld es:qword ptr[bx] + ret + + intrdef $dldsds +ifndef LONGPTR + intrdef $dlds +endif + push di + push si + push ds + mov cx,ds + mov es,cx + jmp dodldsx + + intrdef $dldsss + mov cx,ss + mov es,cx + jmp dodlds + + intrdef $dldscs +ifndef FARPROC + mov cx,cs + mov es,cx +else + mov cx,bx + mov bx,sp + mov bx,ss:2[bx] ; gat code segment of calling routine + xchg cx,bx + mov es,cx +endif + jmp dodlds + + intrdef $dldses +ifdef LONGPTR + intrdef $dlds ;load double float into secondary accum +endif +dodlds: + push di + push si + push ds + mov di,ds + mov si,es + mov ds,si + mov es,di +dodldsx: + mov di,offset second + mov si,bx + mov cx,4 +rep movsw + pop ds + pop si + pop di + ret + + intrdef $dstds ;store double at addr in BX +ifndef LONGPTR + intrdef $dst +endif + fst ds:qword ptr[bx] + fwait + ret + + intrdef $dstss ;store double at addr in BX + fst ss:qword ptr[bx] + fwait + ret + + intrdef $dstes +ifdef LONGPTR + intrdef $dst ;store double at addr in BX +endif + fst es:qword ptr[bx] + fwait + ret + + intrdef $dstsds ;store double at addr in BX +ifndef LONGPTR + intrdef $dsts +endif + fld qword ptr second + fstp ds:qword ptr[bx] + fwait + ret + + intrdef $dstsss ;store double at addr in BX + fld qword ptr second + fstp ss:qword ptr[bx] + fwait + ret + + intrdef $dstses +ifdef LONGPTR + intrdef $dsts +endif + fld qword ptr second + fstp es:qword ptr[bx] + fwait + ret + + intrdef $dlip ;load double immediate primary + pop bx +ifdef FARPROC + pop es + finit + fld es:qword ptr [bx] + add bx,8 + push es + push bx + ret +else + finit + fld cs:qword ptr[bx] + add bx,8 + jmp bx +endif +; + intrdef $dlis ;load double immediate secondary + pop bx +ifdef FARPROC + pop dx +endif + push di + push si + mov di,ds + mov es,di + mov di,offset second + mov si,bx ;get return addr + mov cx,4 +ifdef FARPROC + push ds + mov ds,dx +lis_lp: ;8086 doesn't handle double prefixes + movs word ptr [di], word ptr [si] +else +lis_lp: ;8086 doesn't handle double prefixes + movs word ptr [di], cs:word ptr [si] +endif + loop lis_lp + mov bx,si +ifdef FARPROC + pop ds +endif + pop si + pop di +ifdef FARPROC + push dx + push bx + ret +else + jmp bx +endif + + intrdef $dpsh ;push double float onto the stack + ;from the primary accumulator + pop ax ;fetch return address +ifdef FARPROC + pop dx +endif + sub sp,8 ;make room for double on stack + mov bx,sp ;address of place to store +ifdef FARPROC + push dx +endif + push ax ;put return address back + jmp $dstss + + intrdef $dpshs ;push double float onto the stack + ;from the primary accumulator + pop ax ;fetch return address +ifdef FARPROC + pop dx +endif + sub sp,8 ;make room for double on stack + mov bx,sp ;address of place to store +ifdef FARPROC + push dx +endif + push ax ;put return address back + jmp $dstsss + + intrdef $dpopp ;pop double float into secondary accum + push bx + push es + mov bx,sp + add bx,frame+4 ;address of data to load + call $dldpss + pop es + pop bx + ret 8 ;return and de-allocate space +; + intrdef $dpop ;pop double float into secondary accum + push bx + push es + mov bx,sp + add bx,frame+4 ;address of data to load + call $dldsss + pop es + pop bx + ret 8 ;return and de-allocate space +; + intrdef $dswap ;exchange primary and secondary + fld qword ptr second + fxch + fstp qword ptr second + fwait + ret +; + intrdef $dng ;negate primary + fchs + ret +; + intrdef $dtst ;test if primary is zero + ftst + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + jne ltrue + sub ax,ax + ret +ltrue: + sub ax,ax + inc ax + ret +; + intrdef $dcmp ;compare primary and secondary + fcom qword ptr second + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + jb lp_lt_s + ja lp_gt_s + ;return 0 if p == s + xor ax,ax + ret + ;return 0 if p == s +lp_lt_s: ;return < 0 if p < s + xor ax,ax + dec ax + ret +; +lp_gt_s: ; > 0 if p > s + xor ax,ax + inc ax + ret +; + intrdef $dsb ;subtract secondary from primary + fsub qword ptr second + ret +; + intrdef $dad ;add secondary to primary + fadd qword ptr second + ret +; + intrdef $ddv + ;double floating divide (primary = primary/secondary) + fdiv qword ptr second + ret +; + intrdef $dml + ;double floating multiply (primary = primary * secondary) + fmul qword ptr second + ret +; + intrdef $utod + mov work,ax + mov work+2,0 + fild dword ptr work + ret +; + intrdef $itod + mov work,ax + finit + fild word ptr work + ret +; + intrdef $ul2d + mov work,ax + mov work+2,dx + mov work+4,0 + mov work+6,0 + finit + fild qword ptr work + ret +; + intrdef $xtod + mov work,ax + mov work+2,dx + finit + fild dword ptr work + ret +; + intrdef $dtou + intrdef $dtoi + intrdef $dtox + fldcw word ptr chop_ctl + fld st(0) + fistp qword ptr work + fldcw word ptr round_ctl + fwait + mov ax,work + mov dx,work+2 + ret + + intrdef $dstat ; save floating state in buf es:bx + push si + push di + push ds + mov di,bx + mov si,offset flterr_ ;get start of data + mov cx,offset status+2 ;get end of data + sub cx,si ;get size + add bx,cx ;save end +rep movs byte ptr [di], byte ptr [si] ; save data + mov cx,es + mov ds,cx + esc 101110b,[bx] ; save floating state (acts like finit) + wait + esc 101100b,[bx] ; restore floating state + pop ds + pop di + pop si + ret + + intrdef $drest ; restore floating state from buf es:bx + push si + push di + push ds + mov si,bx + mov cx,es ; swap segment registers + mov dx,ds + mov es,dx + mov ds,cx + mov di,offset flterr_ ;get start of data + mov cx,offset status+2 ;get end of data + sub cx,di ;get size + add bx,cx ;save end +rep movs byte ptr [di], byte ptr [si] ; save data + esc 101100b,[bx] ; restore floating state + wait + pop ds + pop di + pop si + ret + +ifndef INTERNAL +$floats endp + finish + end +endif + fsubs87s.asm +; Copyright (C) 1983 by Manx Software Systems +; page 54,130 +; :ts=8 +; floating point system error codes: + include lmacros.h + + internal $floats + +UNDER_FLOW equ 1 +OVER_FLOW equ 2 +DIV_BY_ZERO equ 3 +; +codeseg segment para public 'code' + public flprm,flsec + public flterr_ +dataseg segment para public 'data' + public $flt_inx, chop_ctl, round_ctl, rdown_ctl +$flt_inx dw 0 ; 8087/software emulation switch index +flterr_ dw 0 +second db 8 dup (?) +work dw 4 dup (?) +status dw 0 +flprm dw acc1 +flsec dw acc2 +YU dw ? +VEE dw ? + dw 5 dup (?) +acc1 dw 7 dup (?) +acc2 dw ? +; +;work area for divide and multiply routines +; + dw 4 dup (?) +temp dw 4 dup (?) +loop_count db 0 ;iterations left (for divide) +lcnt1 db 0 ;# iter. for this word of quotient +chop_ctl dw 0fbfH ;control word for Chop mode +round_ctl dw 03bfH ;control word for Round nearest mode +rdown_ctl dw 07bfh ;control word for Round Down mode + +dataseg ends + + assume ds:dataseg + +ifdef FARPROC +frame equ 4 +CALLSZ equ 5 +else +frame equ 2 +CALLSZ equ 3 +endif + +$flttb87 equ this word ; 8087 hardware indirection table + dw $isnan87 + dw $fldses87 + dw $fldpes87 + dw $fstes87 + dw $fstses87 + dw $dlis87 + dw $dldses87 + dw $dlip87 + dw $dldpes87 + dw $dstes87 + dw $dstses87 + dw $dpsh87 + dw $dpshs87 + dw $dpop87 + dw $dpopp87 + dw $dswap87 + dw $dng87 + dw $dtst87 + dw $dcmp87 + dw $dsb87 + dw $dad87 + dw $ddv87 + dw $dml87 + dw $utod87 + dw $itod87 + dw $xtod87 + dw $ul2d87 + dw $dtoi87 + dw $dstat87 + dw $drest87 + dw $fldsss87 + dw $fldsds87 + dw $fldpss87 + dw $fldpds87 + dw $fstss87 + dw $fstds87 + dw $fstsss87 + dw $fstsds87 + dw $dldsss87 + dw $dldsds87 + dw $dldpss87 + dw $dldpds87 + dw $dstss87 + dw $dstds87 + dw $dstsss87 + dw $dstsds87 + dw $dldpcs87 + dw $dldscs87 + +dataseg segment word public 'data' +$flttb equ this word ; initial indirection table +$isnantb dw $isnan86 +$fldsestb dw $fldses86 +$fldpestb dw $fldpes86 +$fstestb dw $fstes86 +$fstsestb dw $fstses86 +$dlistb dw $dlis86 +$dldsestb dw $dldses86 +$dliptb dw $dlip86 +$dldpestb dw $dldpes86 +$dstestb dw $dstes86 +$dstsestb dw $dstses86 +$dpshtb dw $dpsh86 +$dpshstb dw $dpshs86 +$dpoptb dw $dpop86 +$dpopptb dw $dpopp86 +$dswaptb dw $dswap86 +$dngtb dw $dng86 +$dtsttb dw $dtst86 +$dcmptb dw $dcmp86 +$dsbtb dw $dsb86 +$dadtb dw $dad86 +$ddvtb dw $ddv86 +$dmltb dw $dml86 +$utodtb dw $utod86 +$itodtb dw $itod86 +$xtodtb dw $xtod86 +$ul2dtb dw $ul2d86 +$dtoitb dw $dtoi86 +$dstattb dw $dstat86 +$dresttb dw $drest86 +$fldssstb dw $fldsss86 +$fldsdstb dw $fldsds86 +$fldpsstb dw $fldpss86 +$fldpdstb dw $fldpds86 +$fstsstb dw $fstss86 +$fstdstb dw $fstds86 +$fstssstb dw $fstsss86 +$fstsdstb dw $fstsds86 +$dldssstb dw $dldsss86 +$dldsdstb dw $dldsds86 +$dldpsstb dw $dldpss86 +$dldpdstb dw $dldpds86 +$dstsstb dw $dstss86 +$dstdstb dw $dstds86 +$dstssstb dw $dstsss86 +$dstsdstb dw $dstsds86 +$dldpcstb dw $dldpcs86 +$dldscstb dw $dldscs86 +dataseg ends + + +SIZFLTTB equ 48 + + intrdef $fltinit +; test for 8087/80287 and install new vector table if present + push si + push di + push es + mov ds:status,0 + esc 28,bx ; finit (initialize 8087) + xor cx,cx + esc 15,ds:status ; fstcw + mov cx,50 +w1loop: loop w1loop ; wait for a while + and status,01f3fh ; clear unused bits + cmp status,0033fh ; is 8087 there? + jnz no_8087 ; no, use software emulation + wait + esc 47,status ; fstsw status + mov cx,50 +w2loop: loop w2loop ; wait for a while + test ds:status,0b8bfh ; all status bits should be off + jnz no_8087 ; bad status, assume not there + mov si,offset $flttb87 ; 8087 is there! + mov $flt_inx,2 ; set index for outside routines + mov ax,ds + mov es,ax + mov di,cs + mov ds,di + mov di,offset $flttb ; get pointer to indirection table + mov cx,SIZFLTTB + cld +rep movsw ; and overwrite it with new table + mov ds,ax + fldcw word ptr round_ctl ;set initial control + +no_8087: + pop es + pop di + pop si + clc ;return OK status + ret + + intrdef $isnan + jmp $isnantb + + intrdef $fldses +ifdef LONGPTR + intrdef $flds ;load single float into secondary accum +endif + jmp $fldsestb + + intrdef $fldsss ;load single float into secondary accum + jmp $fldssstb + + intrdef $fldsds ;load single float into secondary accum +ifndef LONGPTR + intrdef $flds +endif + jmp $fldsdstb +; + intrdef $fldpes +ifdef LONGPTR + intrdef $fldp ;load single float into primary accum +endif + jmp $fldpestb +; + intrdef $fldpss ;load single float into primary accum + jmp $fldpsstb +; + intrdef $fldpds ;load single float into primary accum +ifndef LONGPTR + intrdef $fldp +endif + jmp $fldpdstb +; + intrdef $fstes +ifdef LONGPTR + intrdef $fst ;store single at addr in BX +endif + jmp $fstestb +; + intrdef $fstses +ifdef LONGPTR + intrdef $fsts ;store single at addr in BX +endif + jmp $fstsestb +; + intrdef $fstss ;store single at addr in BX + jmp $fstsstb +; + intrdef $fstds ;store single at addr in BX +ifndef LONGPTR + intrdef $fst +endif + jmp $fstdstb + + intrdef $fstsss ;store single at addr in BX + jmp $fstssstb +; + intrdef $fstsds ;store single at addr in BX +ifndef LONGPTR + intrdef $fsts +endif + jmp $fstsdstb +; + intrdef $dlis ;load double immediate secondary + jmp $dlistb +; + intrdef $dldsss + jmp $dldssstb + + intrdef $dldscs + jmp $dldscstb + + intrdef $dldsds +ifndef LONGPTR + intrdef $dlds +endif + jmp $dldsdstb + + intrdef $dldses +ifdef LONGPTR + intrdef $dlds ;load double float into secondary accum +endif + jmp $dldsestb +; + intrdef $dlip ;load double immediate primary + jmp $dliptb +; + intrdef $dldpss ;load double float into primary accum + jmp $dldpsstb + + intrdef $dldpcs ;load double float into primary accum + jmp $dldpcstb + + intrdef $dldpds ;load double float into primary accum +ifndef LONGPTR + intrdef $dldp +endif + jmp $dldpdstb + + intrdef $dldpes +ifdef LONGPTR + intrdef $dldp ;load double float into primary accum +endif + jmp $dldpestb +; + intrdef $dstses +ifdef LONGPTR + intrdef $dsts +endif + jmp $dstsestb + + intrdef $dstes +ifdef LONGPTR + intrdef $dst ;store double at addr in BX +endif + jmp $dstestb + + intrdef $dstss ;store double at addr in BX + jmp $dstsstb + + intrdef $dstds ;store double at addr in BX +ifndef LONGPTR + intrdef $dst +endif + jmp $dstdstb + + intrdef $dstsss ;store double at addr in BX + jmp $dstssstb + + intrdef $dstsds ;store double at addr in BX +ifndef LONGPTR + intrdef $dsts +endif + jmp $dstsdstb + + intrdef $dpsh ;push double float onto the stack + ;from the primary accumulator + jmp $dpshtb +; + intrdef $dpshs ;push double float onto the stack + ;from the secondary accumulator + jmp $dpshstb + + intrdef $dpopp ;pop double float into primary accum + jmp $dpopptb +; + intrdef $dpop ;pop double float into secondary accum + jmp $dpoptb +; + intrdef $dswap ;exchange primary and secondary + jmp $dswaptb +; + intrdef $dng ;negate primary + jmp $dngtb +; + intrdef $dtst ;test if primary is zero + jmp $dtsttb +; + intrdef $dcmp ;compare primary and secondary + jmp $dcmptb +; + intrdef $dsb ;subtract secondary from primary + jmp $dsbtb +; + intrdef $dad ;add secondary to primary + jmp $dadtb +; + intrdef $ddv + ;double floating divide (primary = primary/secondary) + jmp $ddvtb +; + intrdef $dml + ;double floating multiply (primary = primary * secondary) + jmp $dmltb +; + intrdef $utod + jmp $utodtb +; + intrdef $itod + jmp $itodtb +; + intrdef $xtod + jmp $xtodtb +; + intrdef $ul2d + jmp $ul2dtb +; + intrdef $dtou + intrdef $dtoi + intrdef $dtox + jmp $dtoitb + + intrdef $dstat + jmp $dstattb + + intrdef $drest + jmp $dresttb + +INTERNAL equ 1 + purge intrdef +intrdef macro pname +pname&86 label near + endm + include fsubs.asm + purge intrdef +intrdef macro pname +pname&87 label near + endm + include fsubs87.asm + purge intrdef +intrdef macro pname + public pname +ifdef FARPROC + pname label far +else + pname label near +endif + endm +$floats endp + finish + end + ftoa.asm +; Copyright (C) 1984 by Manx Software Systems +; + include lmacros.h +; +;static double rounding[] = { +rounding equ this word +; 5.0e+0, + db 00H,00H,00H,00H,00H,00H,014H,040H +; 0.5e+0, + db 00H,00H,00H,00H,00H,00H,0e0H,03fH +; 0.5e-1, + db 09aH,099H,099H,099H,099H,099H,0a9H,03fH +; 0.5e-2, + db 07bH,014H,0aeH,047H,0e1H,07aH,074H,03fH +; 0.5e-3, + db 0fcH,0a9H,0f1H,0d2H,04dH,062H,040H,03fH +; 0.5e-4, + db 02dH,043H,01cH,0ebH,0e2H,036H,0aH,03fH +; 0.5e-5, + db 0f1H,068H,0e3H,088H,0b5H,0f8H,0d4H,03eH +; 0.5e-6, + db 08dH,0edH,0b5H,0a0H,0f7H,0c6H,0a0H,03eH +; 0.5e-7, + db 048H,0afH,0bcH,09aH,0f2H,0d7H,06aH,03eH +; 0.5e-8, + db 03aH,08cH,030H,0e2H,08eH,079H,035H,03eH +; 0.5e-9, + db 095H,0d6H,026H,0e8H,0bH,02eH,01H,03eH +; 0.5e-10, + db 0bbH,0bdH,0d7H,0d9H,0dfH,07cH,0cbH,03dH +; 0.5e-11, + db 095H,064H,079H,0e1H,07fH,0fdH,095H,03dH +; 0.5e-12, + db 011H,0eaH,02dH,081H,099H,097H,061H,03dH +; 0.5e-13, + db 082H,076H,049H,068H,0c2H,025H,02cH,03dH +; 0.5e-14, + db 09bH,02bH,0a1H,086H,09bH,084H,0f6H,03cH +; 0.5e-15, + db 016H,056H,0e7H,09eH,0afH,03H,0c2H,03cH +; 0.5e-16, +; db 0bcH,089H,0d8H,097H,0b2H,0d2H,08cH,03cH +; 0.5e-17, +; db 097H,0d4H,046H,046H,0f5H,0eH,057H,03cH +; 0.5e-18, +; db 0acH,043H,0d2H,0d1H,05dH,072H,022H,03cH +;}; + +ten dw 0,0,0,4024h +zero dw 0,0,0,0 +; 1, +one db 00H,00H,00H,00H,00H,00H,0f0H,03fH +; 2, + db 00H,00H,00H,00H,00H,00H,00H,040H +; 3, + db 00H,00H,00H,00H,00H,00H,08H,040H +; 4, + db 00H,00H,00H,00H,00H,00H,010H,040H +; 5, + db 00H,00H,00H,00H,00H,00H,014H,040H +; 6, + db 00H,00H,00H,00H,00H,00H,018H,040H +; 7, + db 00H,00H,00H,00H,00H,00H,01cH,040H +; 8, + db 00H,00H,00H,00H,00H,00H,020H,040H +; 9 + db 00H,00H,00H,00H,00H,00H,022H,040H + + extrn $maxdigit:word ;this item is in CODESEG. + +ifdef INLINE +dataseg segment word public 'data' + extrn chop_ctl:word, round_ctl:word +status dw 0 + +dataseg ends + assume ds:dataseg +endif + +IFDEF LONGPTR +buffer equ es:byte ptr [di] +getes macro + mov es,word ptr abuf[2] + endm +ELSE + +buffer equ byte ptr [di] +getes macro +; + endm +ENDIF +; +;ftoa(number, abuf, maxwidth, flag) +;double number; register char *abuf; + procdef ftoa, <,,,> + add sp,-8 + push di + push si + mov di,word ptr abuf ;load offset word of buffer +;{ +; register int i; +; int exp, digit, decpos, ndig; +; +; ndig = maxwidth+1; + mov ax,maxwidth + inc ax + mov word ptr -8[bp],ax +; exp = 0; + mov word ptr -2[bp],0 +ifdef INLINE + fld qword ptr number +else + lea bx,number + call $dldpss +endif + call $isnan + je notnan + mov cx,ax + mov al,'?' + cmp cx,1 + beq outrange + mov al,'*' + cmp cx,3 + je iszero + cmp cx,4 + je iszero + jmp outrange +iszero: +ifdef INLINE + fstp st(0) ; discard number + fldz +else + mov bx, offset zero + call $dldpcs +endif +notnan: +; if (number < 0.0) { +ifdef INLINE + ftst + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + je $4 + jnc $3 +else + mov bx, offset zero + call $dldscs + call $dcmp + je $4 ;skip scaling if zero + jge $3 +endif +; number = -number; +ifdef INLINE + fchs +else + call $dng +endif +; *buffer++ = '-'; + getes + mov buffer,'-' + inc di +; } +$3: +; if (number > 0.0) { +; while (number < 1.0) { +$5: +ifdef INLINE + fld1 + fcomp + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + jbe $6 +else + mov bx, offset one + call $dldscs + call $dcmp + jge $6 +endif +; number *= 10.0; +ifdef INLINE + fmul qword ptr ten +else + mov bx,offset ten + call $dldscs + call $dml +endif +; --exp; + dec word ptr -2[bp] +; } + jmp $5 +$6: +; while (number >= 10.0) { +ifdef INLINE +$7: + fcom qword ptr ten + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + jb $8 + fdiv qword ptr ten +else + mov bx,offset ten + call $dldscs +$7: + call $dcmp + jl $8 +; number /= 10.0; + call $ddv +endif +; ++exp; + inc word ptr -2[bp] +; } + jmp $7 +$8: +; } +; +; if (flag == 2) { /* 'g' format */ +$4: + mov ax,flag + cmp ax,2 + jne $9 +; ndig = maxwidth; + mov ax,maxwidth + mov word ptr -8[bp],ax +; if (exp < -4 || exp >= maxwidth) +; flag = 0; /* switch to 'e' format */ + mov ax,word ptr -2[bp] + cmp ax,-4 + jl $11 + cmp ax,maxwidth + jl $10 +$11: + mov flag,0 +$10: + jmp $12 +; } else if (flag == 1) /* 'f' format */ +; ndig += exp; +$9: + cmp al,1 + jne $13 + mov ax,word ptr -2[bp] + add word ptr -8[bp],ax +; +; if (ndig >= 0) { +$13: +$12: + mov bx,word ptr -8[bp] + test bx,bx + jl $14 +; if ((number += round[ndig>MAXDIGIT?MAXDIGIT:ndig]) >= 10.0) { +IFDEF FARPROC + mov ax,es ; save es into ax + mov cx,seg $maxdigit + mov es,cx + cmp bx,es:$maxdigit +ELSE + cmp bx,$maxdigit +ENDIF + jle $16 +IFDEF FARPROC + mov bx,seg $maxdigit + mov es,bx + mov bx,es:$maxdigit +ELSE + mov bx,$maxdigit +ENDIF + +$16: +IFDEF FARPROC + mov es,ax ; resotre es +ENDIF + mov cx,3 + shl bx,cl +ifdef INLINE + fadd qword ptr rounding[bx] + fcom qword ptr ten + fstsw word ptr status + fwait + mov ah,byte ptr status+1 + sahf + jb $15 + fstp st(0) + fld1 +else + add bx,offset rounding + call $dldscs + call $dad + mov bx,offset ten + call $dldscs + call $dcmp + jl $15 +; number = 1.0; + mov bx, offset one + call $dldpcs +endif +; ++exp; + inc word ptr -2[bp] +; if (flag) +; ++ndig; + cmp flag,0 + je $18 + inc word ptr -8[bp] +; } +$18: +; } +$15: +; +; if (flag) { +$14: + cmp flag,0 + je $19 +; if (exp < 0) { + mov ax,word ptr -2[bp] + test ax,ax + jge $20 +; *buffer++ = '0'; + getes + mov buffer,'0' + inc di +; *buffer++ = '.'; + mov buffer,'.' + inc di +; i = -exp - 1; + not ax + mov cx,ax +; if (ndig <= 0) +; i = maxwidth; + cmp word ptr -8[bp],0 + jg $21 + mov cx,maxwidth +$21: +; while (i--) +; *buffer++ = '0'; + jcxz $23 + mov al,'0' +rep stosb +$23: +; decpos = 0; + sub ax,ax +; } else { + jmp short $25 +$20: +; decpos = exp+1; +; } + mov ax,word ptr -2[bp] + inc ax + jmp short $25 +; } else { +$19: +; decpos = 1; + mov ax,1 +; } +$25: + mov word ptr -6[bp],ax +ifdef INLINE + fldcw word ptr chop_ctl +endif +; +; if (ndig > 0) { + cmp word ptr -8[bp],0 + jle $28 +; for (i = 0 ; ; ++i) { + mov si,0 + jmp short $27 +$26: + inc si +$27: +; if (i < MAXDIGIT) { +IFDEF FARPROC + mov cx,es ; save es + mov ax,seg $maxdigit + mov es,ax + cmp si,es:$maxdigit + mov es,cx ; resotre es +ELSE + cmp si,$maxdigit +ENDIF + jge $29 +; digit = (int)number; +ifdef INLINE + fist word ptr status + fwait + mov ax,status +else + call $dtoi + push ax +endif +; *buffer++ = digit+'0'; + getes + add al,'0' + stosb +; number = (number - digit) * 10.0; +ifdef INLINE + fild word ptr status + fsub + fmul qword ptr ten +else + pop bx + dec bx + js no_subtract + mov cl,3 + shl bx,cl + add bx,offset one + call $dldscs + call $dsb +no_subtract: + mov bx, offset ten + call $dldscs + call $dml +endif + jmp short $30 +; } else +$29: +; *buffer++ = '0'; + getes + mov buffer,'0' + inc di +$30: +; if (--ndig == 0) +; break; + dec word ptr -8[bp] + jz $28 +; if (decpos && --decpos == 0) +; *buffer++ = '.'; + mov ax,word ptr -6[bp] + test ax,ax + jz $26 + dec ax + mov word ptr -6[bp],ax + jnz $26 + getes + mov buffer,'.' + inc di +; } + jmp $26 +; } +$28: +ifdef INLINE + fldcw word ptr round_ctl + fstp st(0) ; get rid of the value, we're done with it +endif + getes +; +; if (!flag) { + cmp flag,0 + jne $32 +; *buffer++ = 'e'; + mov buffer,'e' + inc di +; if (exp < 0) { +; exp = -exp; +; *buffer++ = '-'; + mov al,'+' + cmp word ptr -2[bp],0 + jge $33 + neg word ptr -2[bp] + mov al,'-' +; } else +; *buffer++ = '+'; +$33: + stosb +; if (exp >= 100) { + mov ax,word ptr -2[bp] + cmp ax,100 + jl $35 +; *buffer++ = exp/100 + '0'; + mov cx,100 + cwd + idiv cx + add al,'0' + stosb +; exp %= 100; + mov ax,dx +; } +; *buffer++ = exp/10 + '0'; +$35: + mov cx,10 + cwd + idiv cx + add al,'0' + stosb +; *buffer++ = exp%10 + '0'; + mov ax,dx + add al,'0' + stosb +; } +; *buffer = 0; +$32: + mov buffer,0 +;} + pop si + pop di + mov sp,bp + pret + +outrange: + mov cx,maxwidth + jcxz $32 +rep stosb + jmp $32 +; +ifdef FARPROC + extrn $isnan:far +else + extrn $isnan:near +endif + +ifndef INLINE +ifdef FARPROC + extrn $dad:far,$dsb:far,$dml:far,$ddv:far + extrn $dldpcs:far,$dldpss:far,$dldscs:far + extrn $dcmp:far,$dng:far,$dswap:far,$utod:far,$dtoi:far +else + extrn $dad:near,$dsb:near,$dml:near,$ddv:near + extrn $dldpcs:near,$dldpss:near,$dldscs:near + extrn $dcmp:near,$dng:near,$dswap:near,$utod:near,$dtoi:near +endif +endif + pend ftoa + finish + end + isnan.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + + procdef _isnan,<> + fld qword ptr x + call $isnan + pret + pend _isnan + +; +; In the table 0 -- number is valid +; 1 -- number is +/- NAN +; 2 -- number is +/- infinity +; 3 -- number is +/- unnormal +; 4 -- number is +/- denormal +; 5 -- register is marked empty + +oktab db 3,1,3,1,0,2,0,2,0,5,0,5,4,5,4,5 + + public $isnan +$isnan proc + push bp + mov bp,sp + sub sp,2 + fxam + fstsw word ptr -2[bp] + fwait + mov bl,byte ptr -1[bp] + and bl,047h + test bl,40h + jz noc3 + or bl,08h +noc3: + and bx,0fh ; mask to get c3 c2 c1 and c0 bits + mov al,cs:byte ptr oktab[bx] + cbw + test ax,ax + mov sp,bp + pop bp + ret +$isnan endp + finish + end + log.c +#include "math.h" +#include "errno.h" + +double log10(x) +double x; +{ + return log(x)*0.43429448190325182765; +} + +#define A0 -0.64124943423745581147e+2 +#define A1 +0.16383943563021534222e+2 +#define A2 -0.78956112887491257267e+0 +#define A(w) ((A2*w A1)*w A0) + +#define B0 -0.76949932108494879777e+3 +#define B1 +0.31203222091924532844e+3 +#define B2 -0.35667977739034646171e+2 +#define B(w) (((w B2)*w B1)*w B0) + +#define C0 0.70710678118654752440 +#define C1 0.693359375 +#define C2 -2.121944400546905827679e-4 + +double log(x) +double x; +{ + double Rz, f, z, w, znum, zden, xn; + int n; + extern int errno; + + if (x <= 0.0) { + errno = EDOM; + return -HUGE_VAL; + } + f = frexp(x, &n); + if (f > C0) { + znum = (znum = f-0.5) - 0.5; /* the assignment prevents const. eval */ + zden = f*0.5 + 0.5; + } else { + --n; + znum = f - 0.5; + zden = znum*0.5 + 0.5; + } + z = znum/zden; + w = z*z; +/* the lines below are split up to allow expansion of A(w) and B(w) */ + Rz = z + z * (w * + A(w) + /B(w)); + xn = n; + return (xn*C2 + Rz) + xn*C1; +} + log87.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + +EDOM equ 22 + +;/****************************** log10 ***************************** +; Using the 8087/80287, calculate log, base 10, of x using +; the formula: +; log x = log 2 . log x +; 10 10 2 +;*/ + +neghuge db 099h,0bbh,0adh,058h,0f1h,0dch,0efh,0ffh +botval db 0cdh,03bh,07fh,066h,09eh,0a0h,0e6h,03fh +topval db 01ah,062h,0c0h,0cch,0b0h,0afh,0f4h,03fh + + assume cs:codeseg,ds:dataseg + +dataseg segment public byte 'data' + extrn errno_:word +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + +;double log10 (x) +;double x; +; + procdef log10,<> + sub sp,2 + fld qword ptr x + ftst + fstsw word ptr -2[bp] + mov ah,byte ptr -1[bp] + sahf + jz badval + jnc okval +badval: + mov errno_,EDOM + fstp st(0) + fld cs:qword ptr neghuge + jmp exit +okval: + fldlg2 + fxch st(1) + fld cs:qword ptr botval + fcomp + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnae default + fld cs:qword ptr topval + fcomp + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnb default + fld1 + fsub + fyl2xp1 + jmp exit +default: + fyl2x +exit: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,2 + pret + pend log10 + + +;/****************************** log ***************************** +; Using the 8087/80287, calculate log, base e, of x using +; the formula: +; log x = log 2 . log x +; e e 2 +;*/ + +;double log (x) +;double x; + + procdef log,<> + sub sp,2 + fld qword ptr xx + ftst + fstsw word ptr -2[bp] + mov ah,byte ptr -1[bp] + sahf + jz badval1 + jnc okval1 +badval1: + mov errno_,EDOM + fstp st(0) + fld cs:qword ptr neghuge + jmp exit1 +okval1: + fldln2 + fxch st(1) + fld cs:qword ptr botval + fcomp + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnae default1 + fld cs:qword ptr topval + fcomp + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnb default1 + fld1 + fsub + fyl2xp1 + jmp exit1 +default1: + fyl2x +exit1: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,2 + pret + pend log + finish + end + pow.c +#include "math.h" +#include "errno.h" + +double pow(a,b) +double a,b; +{ + double answer; + extern int errno; + register long count; + char sign, inverse; + + if (a == 0) { + if (b <= 0) +domain: errno = EDOM; + return 0.0; + } + if (b == 0) + return 1.0; /* anything raised to 0 is 1 */ + inverse = sign = 0; + if (modf(b,&answer) == 0) { + if (answer < 0) + inverse = 1, answer = -answer; + if ((count = answer) == answer) { + for (answer = 1.0 ; count ; count >>= 1, a *= a) + if ((int)count & 1) + answer *= a; + if (inverse) + answer = 1.0/answer; + return answer; + } + if (a < 0) + sign = 1, a = -a; + if ((count&1) == 0) + sign = 0; /* number is even so sign is positive */ + + } else if (a < 0) + goto domain; + + answer = exp(log(a)*b); + return sign ? -answer : answer; +} + random.c +/* + * Random number generator - + * adapted from the FORTRAN version + * in "Software Manual for the Elementary Functions" + * by W.J. Cody, Jr and William Waite. + */ +double ran() +{ + static long int iy = 100001; + + iy *= 125; + iy -= (iy/2796203) * 2796203; + return (double) iy/ 2796203.0; +} + +double randl(x) +double x; +{ + double exp(); + + return exp(x*ran()); +} + sin.c +#include "math.h" +#include "errno.h" + +double cos(x) +double x; +{ + double sincos(); + + return sincos(x, fabs(x) + 1.57079632679489661923, 0); +} + +double sin(x) +double x; +{ + double sincos(); + + if (x < 0.0) + return sincos(x,-x,1); + else + return sincos(x,x,0); +} + +#define R1 -0.16666666666666665052e+00 +#define R2 +0.83333333333331650314e-02 +#define R3 -0.19841269841201840457e-03 +#define R4 +0.27557319210152756119e-05 +#define R5 -0.25052106798274584544e-07 +#define R6 +0.16058936490371589114e-09 +#define R7 -0.76429178068910467734e-12 +#define R8 +0.27204790957888846175e-14 + +#define YMAX 6.7465e09 + +static double sincos(x,y,sgn) +double x,y; +{ + double f, xn, g; + extern int errno; + + if (y >= YMAX) { + errno = ERANGE; + return 0.0; + } + if (modf(y * 0.31830988618379067154, &xn) >= 0.5) + ++xn; + if ((int)xn & 1) + sgn = !sgn; + if (fabs(x) != y) + xn -= 0.5; + g = modf(fabs(x), &x); /* break into fraction and integer parts */ + f = ((x - xn*(3217.0/1024)) + g) - xn*-8.9089102067615373566e-6; + if (fabs(f) > 2.3283e-10) { + g = f*f; + f = (((((((R8*g R7)*g R6)*g R5)*g + R4)*g R3)*g R2)*g R1)*g*f+f; + } + if (sgn) + f = -f; + return f; +} + sin87.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + +EDOM equ 22 +ERANGE equ 21 + +highval db 000h,066h,067h,0d0h,03dh,0ebh,0cfh,043h ; 4.6e+18 + + assume cs:codeseg,ds:dataseg + +dataseg segment public byte 'data' + extrn errno_:word +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + +;double cos (x) +;double x; + + procdef cos,<> + sub sp,2 + fld qword ptr x + fabs ;y = fabs(x) + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jz zeroval + jc badval ;if this is true y is not a number + fcom cs:qword ptr highval + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jb goodval ;y must be < 4.6e+18 +badval: + mov errno_,ERANGE + fstp st(0) ;clean up the stack + fldz ;result is zero + jmp exit +zeroval: + fstp st(0) ;clean up the stack + fld1 ;result is one + jmp exit +goodval: + fstp st(0) ;get rid of y + fld qword ptr x ; reload x + mov ax,1 + call near ptr __sincos +exit: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,2 + pret + pend cos + +;double sin (x) +;double (x); + + procdef sin,<> + sub sp,2 + fld qword ptr xx + fabs ; y = fabs(x) + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jz zeroval1 + jc badval1 ; y is not a number + fcom cs:qword ptr highval + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jb good1 ;y must be < 4.6e+18 +badval1: + mov errno_,ERANGE +zeroval1: + fstp st(0) ;clean up stack + fldz ;result is zero + jmp exit1 +good1: + fstp st(0) ;clean up the stack + fld qword ptr xx ; reload xx + xor ax,ax + call near ptr __sincos +exit1: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,2 + pret + pend sin + +__sincos proc near + push bp + mov bp,sp + sub sp,2 + mov cx,ax ; save flag + ftst ; set the status flags + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + xor dx,dx ; positive sign flag + sahf + ja sk_pos ; j if both bits zero (number is positive) + mov dx,1 ; negative sign flag +sk_pos: + mov word ptr -2[bp],-2 ; divide by 4 exponent + fild word ptr -2[bp] ; put exponent on stack + fldpi ; put pi on stack + fscale ; pi/4 + fxch ; put -2 before pi/4 + fstp st(0) ; and discard scale factor + fxch ; swap pi/4 and x (put x back on stack top) + fprem ; find which octant x lies in y = x/(pi/4) + fstsw word ptr -2[bp] + fabs ; x = fabs(x) + fwait + mov al,byte ptr -1[bp] + xor bx,bx + test al,1 ; using least significant 3 bits of quotient + jz ok1 ; determine which octant of unit circle x is in + or bx,4 +ok1: + test al,2 + jz ok2 + or bx,1 +ok2: + test al,64 + jz ok3 + or bx,2 +ok3: + cmp cx,1 + jnz noadjust + mov dx,0 + add bx,2 +noadjust: + test bx,1 + jz skip1 ; j if bit not set (not odd number) + fsub ; x = (pi/4) - x + jmp test_it +skip1: + fxch ; get p/4 on top + fstp st(0) ; and discard it +test_it: + ftst ; is x zero now? + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnz doit + fstp st(0) ; pop x clean up stack + fld1 ; answer is one + jmp exit2 +doit: + fptan ; compute partial tangent x/y x on top y in st1 +; +exit2: + mov ax,bx + and ax,3 + cmp ax,2 + jz noexch + cmp ax,1 + jz noexch + fxch ; swap x and y +noexch: + fxch + fld st(1) ; save a copy of x + fmul st,st(0) ; compute x ^ 2 + fxch + fmul st,st(0) ; compute y ^ 2 + fadd ; (x ^ 2) + (y ^ 2) + fsqrt ; sqrt (x ^ 2 + y ^ 2) + fdiv ; x / sqrt(x ^ 2 + y ^ 2) +; +; see if the sign needs to be changed +; + shr bx,1 + shr bx,1 + and bx,1 + cmp bx,dx + jz alldone + fchs ; x = - x +alldone: + fwait + add sp,2 + pop bp + ret +__sincos endp + finish + end + sinh.c +#include "math.h" +#include "errno.h" + +extern int errno; + +#define P0 -0.35181283430177117881e+6 +#define P1 -0.11563521196851768270e+5 +#define P2 -0.16375798202630751372e+3 +#define P3 -0.78966127417357099479e+0 +#define Q0 -0.21108770058106271242e+7 +#define Q1 +0.36162723109421836460e+5 +#define Q2 -0.27773523119650701667e+3 + +#define PS(x) (((P3*x P2)*x P1)*x P0) +#define QS(x) (((x Q2)*x Q1)*x Q0) + +double sinh(x) +double x; +{ + double y, w, z; + int sign; + + y = x; + sign = 0; + if (x < 0.0) { + y = -x; + sign = 1; + } + if (y > 1.0) { + w = y - 0.6931610107421875000; + if (w > LOGHUGE) { + errno = ERANGE; + z = HUGE_VAL; + } else { + z = exp(w); + if (w < 19.95) + z -= 0.24999308500451499336 / z; + z += 0.13830277879601902638e-4 * z; + } + if (sign) + z = -z; + } else if (y < 2.3e-10) + z = x; + else { + z = x*x; + z = x + x * + (z*(PS(z) + /QS(z))); + } + return z; +} + +double cosh(x) +double x; +{ + double y, w, z; + + y = fabs(x); + if (y > 1.0) { + w = y - 0.6931610107421875000; + if (w > LOGHUGE) { + errno = ERANGE; + return HUGE_VAL; + } + z = exp(w); + if (w < 19.95) + z += 0.24999308500451499336 / z; + z += 0.13830277879601902638e-4 * z; + } else { + z = exp(y); + z = z*0.5 + 0.5/z; + } + return z; +} + sqrt.c +#include "math.h" +#include "errno.h" + +double sqrt(x) +double x; +{ + double f, y; + int n; + extern int errno; + + if (x == 0.0) + return x; + if (x < 0.0) { + errno = EDOM; + return 0.0; + } + f = frexp(x, &n); + y = 0.41731 + 0.59016 * f; + y = (y + f/y); + y = ldexp(y,-2) + f/y; /* fast calculation of y2 */ + y = ldexp(y + f/y, -1); + y = ldexp(y + f/y, -1); + + if (n&1) { + y *= 0.70710678118654752440; + ++n; + } + return ldexp(y,n/2); +} + sqrt87.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h + +dataseg segment word public 'data' + extrn errno_:word +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + assume ds:dataseg + +ERANGE equ -20 +EDOM equ -21 + + procdef sqrt, <> +; +; double sqrt(d) +; + sub sp,2 + fld qword ptr doub + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnc sqrt_ok + fchs + mov errno_,EDOM +sqrt_ok: + fsqrt +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif + fwait +endif + add sp,2 + pret + pend sqrt + finish + end + sqrt87s.asm +; Copyright Manx Software Systems, Inc. 1985, 1987 + include lmacros.h +dataseg segment para public 'data' +status dw ? + extrn chop_ctl:word, round_ctl:word + extrn errno_:word + extrn $flt_inx:word +dataseg ends + assume ds:dataseg +; +;double sqrt(x) +;double x; + procdef sqrt, <> + lea bx,ss:word ptr doub + call $dldpss + mov cx,$flt_inx + or cx,cx + jz $sqrt86 +; +; + +ERANGE equ -20 +EDOM equ -21 + +$sqrt87: + fld qword ptr doub + ftst + fstsw status + fwait + mov ah,byte ptr status+1 + sahf + jnb sqrt_ok + fchs + mov errno_,EDOM +sqrt_ok: + fsqrt + pret +; +$sqrt86: +; +;{ +; double f, y; +; int n; +; extern int errno; + add sp,$2 + push di + push si +; +; if (x == 0.0) +; return x; + mov bx,offset zero + call $dldscs + call $dcmp + jne $3 + lea bx,ss:word ptr doub + call $dldpss + jmp return +; if (x < 0.0) { +$3: + lea bx,ss:word ptr doub + call $dldpss + mov bx,offset zero + call $dldscs + call $dcmp + jge $4 +; errno = EDOM; + mov word ptr errno_,22 +; return 0.0; + mov bx,offset zero + call $dldpcs + jmp return +; } +; f = frexp(x, &n); +$4: + lea ax,word ptr -18[bp] +ifdef LONGPTR + push ss +endif + push ax + lea bx,ss:word ptr doub + call $dldpss + call $dpsh + call frexp_ +ifdef LONGPTR + add sp,12 +else + add sp,10 +endif + lea bx,word ptr -8[bp] + call $dstss +; y = 0.41731 + 0.59016 * f; + lea bx,word ptr -8[bp] + call $dldpss + mov bx, offset xcons1 + call $dldscs + call $dml + mov bx,offset xcons2 + call $dldscs + call $dad + lea bx,word ptr -16[bp] + call $dstss +; y = (y + f/y); + lea bx,word ptr -8[bp] + call $dldpss + lea bx,word ptr -16[bp] + call $dldsss + call $ddv + lea bx,word ptr -16[bp] + call $dldsss + call $dad + lea bx,word ptr -16[bp] + call $dstss +; y = ldexp(y,-2) + f/y; /* fast calculation of y2 */ + mov ax,-2 + push ax + lea bx,word ptr -16[bp] + call $dldpss + call $dpsh + call ldexp_ + add sp,10 + call $dpsh + lea bx,word ptr -8[bp] + call $dldpss + lea bx,word ptr -16[bp] + call $dldsss + call $ddv + call $dpop + call $dad + lea bx,word ptr -16[bp] + call $dstss +; y = ldexp(y + f/y, -1); + mov ax,-1 + push ax + lea bx,word ptr -8[bp] + call $dldpss + lea bx,word ptr -16[bp] + call $dldsss + call $ddv + lea bx,word ptr -16[bp] + call $dldsss + call $dad + call $dpsh + call ldexp_ + add sp,10 + lea bx,word ptr -16[bp] + call $dstss +; y = ldexp(y + f/y, -1); + mov ax,-1 + push ax + lea bx,word ptr -8[bp] + call $dldpss + lea bx,word ptr -16[bp] + call $dldsss + call $ddv + lea bx,word ptr -16[bp] + call $dldsss + call $dad + call $dpsh + call ldexp_ + add sp,10 + lea bx,word ptr -16[bp] + call $dstss +; +; if (n&1) { + mov ax,word ptr -18[bp] + test ax,1 + jeq $5 +; y *= 0.70710678118654752440; + lea bx,word ptr -16[bp] + call $dldpss + mov bx,offset xcons3 + call $dldscs + call $dml + lea bx,word ptr -16[bp] + call $dstss +; ++n; + inc word ptr -18[bp] +; } +; return ldexp(y,n/2); +$5: + mov ax,word ptr -18[bp] + mov cx,2 + cwd + idiv cx + push ax + lea bx,word ptr -16[bp] + call $dldpss + call $dpsh + call ldexp_ + add sp,10 +return: + pop si + pop di + mov sp,bp + pop bp + ret +;} +$2 = -18 + pend sqrt +; +zero dw 0,0,0,0 +xcons1 db 018H,09H,06dH,039H,097H,0e2H,0e2H,03fH +xcons2 db 0f7H,0ccH,092H,00H,035H,0b5H,0daH,03fH +xcons3 db 0cdH,03bH,07fH,066H,09eH,0a0H,0e6H,03fH +ifdef FARPROC + extrn frexp_:far + extrn ldexp_:far + extrn $dad:far,$dsb:far,$dml:far,$ddv:far + extrn $dldpss:far,$dldpcs:far,$dldscs:far,$dldsss:far,$dstss:far + extrn $dcmp:far,$dtst:far + extrn $dpsh:far,$dpopp:far,$dpop:far,$dng:far,$dswap:far + extrn $itod:far,$utod:far,$xtod:far + extrn $dtoi:far,$dtou:far,$dtox:far +else + extrn frexp_:near + extrn ldexp_:near + extrn $dad:near,$dsb:near,$dml:near,$ddv:near + extrn $dldpss:near,$dldpcs:near,$dldscs:near,$dldsss:near,$dstss:near + extrn $dcmp:near,$dtst:near + extrn $dpsh:near,$dpopp:near,$dpop:near,$dng:near,$dswap:near + extrn $itod:near,$utod:near,$xtod:near + extrn $dtoi:near,$dtou:near,$dtox:near +endif +dataseg segment para public 'data' + extrn errno_:word +dataseg ends + finish + end + tan.c +#include "math.h" +#include "errno.h" + +extern int errno; + +static double tansub(); + +#if MPU8080 || MPUZ80 || MPU6502 +#define TOOSMALL (1.0/HUGE_VAL) +#else +#define TOOSMALL TINY_VAL +#endif + +double cotan(x) +double x; +{ + double y; + + y = fabs(x); + if (y < TOOSMALL) { + errno = ERANGE; + if (x < 0.0) + return -HUGE_VAL; + else + return HUGE_VAL; + } + return tansub(x,y,2); +} + +double tan(x) +double x; +{ + return tansub(x, fabs(x), 0); +} + +#define P1 -0.13338350006421960681e+0 +#define P2 +0.34248878235890589960e-2 +#define P3 -0.17861707342254426711e-4 +#define Q0 +1.0 +#define Q1 -0.46671683339755294240e+0 +#define Q2 +0.25663832289440112864e-1 +#define Q3 -0.31181531907010027307e-3 +#define Q4 +0.49819433993786512270e-6 + +#define P(f,g) (((P3*g P2)*g P1)*g*f + f) +#define Q(g) ((((Q4*g Q3)*g Q2)*g Q1)*g Q0) + +#define YMAX 6.74652e09 + +static double tansub(x, y, flag) +double x,y; +{ + double f, g, xn; + double xnum, xden; + + if (y > YMAX) { + errno = ERANGE; + return 0.0; + } + if (fabs(modf(x*0.63661977236758134308, &xn)) >= 0.5) + xn += (x < 0.0) ? -1.0 : 1.0; + f = modf(x, &g); + f = ((g - xn*(3217.0/2048)) + f) - xn*-4.454455103380768678308e-6; + if (fabs(f) < 2.33e-10) { + xnum = f; + xden = 1.0; + } else { + g = f*f; + xnum = P(f,g); + xden = Q(g); + } + flag |= ((int)xn & 1); + switch (flag) { + case 1: /* A: tan, xn odd */ + xnum = -xnum; + case 2: /* B: cotan, xn even */ + return xden/xnum; + + case 3: /* C: cotan, xn odd */ + xnum = -xnum; + case 0: /* D: tan, xn even */ + return xnum/xden; + } + return 0.0; +} + tan87.asm +;:ts=8 Copyright Manx Software Systems, Inc. 1986 + include lmacros.h + +ERANGE equ 21 +EDOM equ 22 + +highval db 000h,066h,067h,0d0h,03dh,0ebh,0cfh,043h ; 4.6e+18 +one dw 0,0,0,3ff0h ; 1.0 +zero dw 0,0,0,0 ; 0.0 + +dataseg segment public byte 'data' + extrn errno_:word +ifdef STATRES +result db 8 dup (?) +endif +dataseg ends + + assume cs:codeseg,ds:dataseg + +;double cotan(x) +;double x; + + procdef cotan,<> + sub sp,2 + push word ptr errno_ + mov ax,0 + mov word ptr errno_,ax + mov ax,word ptr xx+6 + push ax + mov ax,word ptr xx+4 + push ax + mov ax,word ptr xx+2 + push ax + mov ax,word ptr xx + push ax + call tan_ + add sp,8 + cmp errno_,0 + jz okres + pop cx ;get old errno off stack + fldz ;answer is zero + jmp exit1 +okres: + pop word ptr errno_ ;restore old errno +ifdef STATRES + mov bx,ax +ifdef LONGPTR + mov ds,dx + fld es:qword ptr [bx] +else + fld qword ptr [bx] +endif +endif + ftst + fstsw word ptr -2 [bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnz oktan + mov word ptr errno_,EDOM ;domain error + jmp exit1 +oktan: + fld1 ; load a one + fdivr ; cotan(x) = 1 / tan(x) +exit1: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + fwait + add sp,2 + pret + pend cotan + +;double tan (x) +;double x; + + procdef tan,<> + sub sp,2 + fld qword ptr x ;load x + fld st(0) ;get a copy of x + fabs + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jz zeroval + jc badval ; value is not a number + fcom cs:qword ptr highval + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jb goodval +badval: + mov errno_,ERANGE +zeroval: + fstp st(0) ; get rid of fabs(x) + fstp st(0) ; get rid of x + fldz + jmp exit +goodval: + fstp st(0) ; get rid of fabs(x) + fldz + fcomp + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + xor dx,dx ; clear sign flag + sahf + jb sk_pos + mov dx,1 ;sign is negative +sk_pos: + mov word ptr -2[bp],-2 ; divide by 4 exponent + fild word ptr -2[bp] + fldpi + fscale ; compute pi/4 + fxch ; put -2 before pi/4 + fstp st(0) ; and discard (clean up stack) + fxch ; get x back on stack top + fprem ; figure out the octant of the result + fstsw word ptr -2[bp] + fwait + fabs ; make x absolute + mov al,byte ptr -1[bp] + cbw + xor bx,bx + test ax,1 + jnz ok1 + or bx,4 +ok1: + test ax,2 + jnz ok2 + or bx,1 +ok2: + test ax,64 + jnz ok3 + or bx,2 +ok3: + test bx,1 + jnz noadjust + fsub ; pi/4 - x + jmp do_it +noadjust: + ftst + fstsw word ptr -2[bp] + fwait + mov ah,byte ptr -1[bp] + sahf + jnz do_it + fstp st(0) ; discard x + fld1 ; result is one + jmp nochk +; +do_it: + fptan ; take the tangent x on top y in st1 +; +nochk: + mov ax,bx ; does the fraction need inversion? + and ax,3 + cmp ax,1 + jz noswap + cmp ax,2 + jz noswap + fxch +noswap: + shr bx,1 ; do we need to change the sign? + and bx,1 + cmp bx,dx + jnz nosign + fchs +nosign: + fdivr ; finish the tangent calculation +exit: +ifdef STATRES + fstp qword ptr result + mov ax,offset result +ifdef LONGPTR + mov dx,ds +endif +endif + fwait + add sp,2 + pret + pend tan + finish + end + tanh.c +#include "math.h" + +#define P0 -0.16134119023996228053e+4 +#define P1 -0.99225929672236083313e+2 +#define P2 -0.96437492777225469787e+0 +#define Q0 +0.48402357071988688686e+4 +#define Q1 +0.22337720718962312926e+4 +#define Q2 +0.11274474380534949335e+3 + +#define gP(g) (((P2*g P1)*g P0)*g) +#define Q(g) (((g Q2)*g Q1)*g Q0) + +double tanh(x) +double x; +{ + double f,g,r; + + f = fabs(x); + if (f > 25.3) + r = 1.0; + else if (f > 0.54930614433405484570) { + r = 0.5 - 1.0/(exp(f+f)+1.0); + r += r; + } else if (f < 2.3e-10) + r = f; + else { + g = f*f; + r = f + f* + (gP(g) + /Q(g)); + } + if (x < 0.0) + r = -r; + return r; +} + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/MCH86.ARC b/Manx Aztec C86 v42b/ARC/MCH86.ARC new file mode 100644 index 0000000..18096c1 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/MCH86.ARC @@ -0,0 +1,2227 @@ + makefile + +OBJ=csav.o farcall.o fcall.o index.o lsubs.o memccpy.o memchr.o memcmp.o\ + memcpy.o memset.o movblock.o movmem.o peek.o pointers.o port.o ptradd.o\ + ptrdiff.o rindex.o segread.o setjmp.o setmem.o strcat.o strchr.o strcmp.o\ + strcpy.o strlen.o strncpy.o strrchr.o swapmem.o sysint.o toupper.o\ + cswit.o clswit.o fptrs.o fltstub.o strstr.o stricmp.o strlwr.o strrev.o + +CC=cc +AS=as +MODEL= +AMODEL=0 +DIR= + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +bld: $(OBJ) cswt.o olsubs.o + @echo mch86 done + +bldlc bldl bldld: $(OBJ) + @echo mch86 done + +$(DIR)$(MODEL)rom.o: rom.asm + $(AS) -dMODEL=$(AMODEL) rom.asm -o $@ + +ovly: $(DIR)ovld.o $(DIR)ovldpath.o $(DIR)ovbgn.o + @echo overlay done + +ovlyl ovlyld ovlylc: + @echo overlays supported only in small model + +$(DIR)ovld.o: ovloader.c + $(CC) +$(MODEL) -n ovloader.c -o $@ +$(DIR)ovldpath.o: ovloader.c + $(CC) +$(MODEL) -n -DDOS20 ovloader.c -o $@ +$(DIR)ovbgn.o: ovbgn.asm + $(AS) -dMODEL=$(AMODEL) ovbgn.asm -o $@ + clswit.asm +; Copyright (C) 1983, 85 by Manx Software Systems +; :ts=8 + include lmacros.h + public $clswt + +$clswt proc + pop bx ; get address of table +ifdef FARPROC + pop es +endif + push di + push si + mov si,bx ; save base address + dec cx + mov di,cx ; save number of entries in di +ltop: +ifdef FARPROC + cmp ax,es:word ptr [bx] + jne notit + cmp dx,es:word ptr 2[bx] + je found +else + cmp ax,cs:word ptr [bx] + jne notit + cmp dx,cs:word ptr 2[bx] + je found +endif +notit: + add bx,4 + loop ltop +found: + shl di,1 + shl di,1 ; adjust di for length of values + add di,si ; di now points at array of labels + sub bx,si ; find which entry matched + shr bx,1 ; divide by 2 to get offset to label +ifdef FARPROC + mov ax,es:word ptr [di][bx] ; get address to return to + pop si + pop di + push es + push ax + ret +else + mov ax,cs:word ptr [di][bx] ; get address to return to + pop si + pop di + jmp ax +endif +$clswt endp + finish + end + csav.asm +; Copyright (C) 1983 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment para public 'data' + extrn _sbot_:word + extrn _lowwater_:word +dataseg ends + assume ds:dataseg,cs:codeseg +ifdef FARPROC + extrn _stkover_:far +else + extrn _stkover_:near +endif + extrn $begin:far + dw near ptr $begin + public $csav, $cret +$csav proc + pop bx +ifdef FARPROC + pop dx +endif + push bp + mov bp,sp + add sp,ax + cmp sp,bp ;check for wrap around + ja stackfault + cmp sp,word ptr _sbot_ ;or moving into the RED zone + jb stackfault + cmp sp,word ptr _lowwater_ + ja nodeeper + mov word ptr _lowwater_,sp +nodeeper: + push di + push si +ifdef FARPROC + push cs + mov ax,offset $cret + push ax + push dx + push bx + ret +else + call bx +endif +$csav endp + +$cret proc + pop si + pop di + mov sp,bp + pop bp + ret +$cret endp + +stackfault: + mov sp,bp ;put stack back the way it was + jmp _stkover_ + finish + end + cswit.asm +; Copyright (C) 1983, 85 by Manx Software Systems +; :ts=8 + include lmacros.h + public $cswt + +$cswt proc +ifndef FARPROC + pop bx ; get address of table + push di +ifndef LONGPTR + push es +endif + mov di,cs + mov es,di + mov di,bx ; make di to point to table of values + mov bx,cx ; save number of entries in bx + shl bx,1 ; adjusted for size of an entry + cld +repne scasw ; find the right entry + mov cx,es:word ptr -4[di][bx] ; pick up target address +ifndef LONGPTR + pop es +endif + pop di + jmp cx ; jump there +endif +$cswt endp + finish + end + cswt.asm +; Copyright (C) 1983, 85 by Manx Software Systems +; :ts=8 + include lmacros.h + ifdef FARPROC +data equ word ptr es:[bx] +addr equ word ptr es:2[bx] +dflt equ word ptr es:[bx] + else +data equ word ptr cs:[bx] +addr equ word ptr cs:2[bx] +dflt equ word ptr cs:[bx] + endif +slot equ 4 + public $swt + +$swt proc + pop bx +ifdef FARPROC +ifndef LONGPTR + mov dx,es +endif + pop es + push es +endif + mov cx,data + add bx,2 + jcxz eswt +swtloop: + cmp ax,data + je found + add bx,slot + loop swtloop +eswt: + push dflt +ifdef FARPROC +ifndef LONGPTR + mov es,dx +endif +endif + ret +found: + push addr +ifdef FARPROC +ifndef LONGPTR + mov es,dx +endif +endif + ret +$swt endp + finish + end + farcall.asm +; :ts=8 +;Copyright (C) 1983, 85 by Manx Software Systems + include lmacros.h + procdef farcall, <, , > + push si + push di + push ds + push es +; + ldptr bx,srcregs,ds + mov ax,[bx] + push 2[bx] ;save BX value for later + mov cx,4[bx] + mov dx,6[bx] + mov si,8[bx] + mov di,10[bx] + mov es,14[bx] + mov ds,12[bx] ;trash DS last + pop bx ;now get value for BX + push bp + call where + pop bp + push ds ;save returned DS + push bx ;save returned BX + mov ds,-6[bp] ;fetch C's data seg, for small model + ldptr bx,dstregs,ds + mov [bx],ax + pop 2[bx] ;value returned in BX + mov 4[bx],cx + mov 6[bx],dx + mov 8[bx],si + mov 10[bx],di + pop 12[bx] ;value returned in DS + mov 14[bx],es + pop es + pop ds + pop di + pop si + pop bp + pushf + pop ax + ret + pend farcall + finish + end + fcall.asm +; Copyright (C) 1985 by Manx Software Systems +; :ts=8 + largecode +codeseg segment byte public 'code' + assume cs:codeseg + public $fcall +$fcall proc far + push dx + push ax + ret +$fcall endp +codeseg ends + end + fltstub.asm +; Copyright (C) 1987 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + + public $fltinit +$fltinit proc + clc ;all OK + ret +$fltinit endp + finish + end + fptrs.asm +; :ts=8 +;Copyright (C) 1985 by Manx Software Systems + include lmacros.h + assume ds:dataseg + + internal $fptrs +; +; $hdiff ; subtract (and compare) huge pointers in ax:dx cx:bx +; + intrdef $hdiff + push si + sub dx,bx + sbb si,si + mov bx,cx + mov cx,4 +sloop: shl dx,1 + rcl si,1 + loop sloop + add ax,dx + adc si,0 + sub ax,bx + sbb si,0 + mov dx,si + pop si + cmp dx,0 + jnz doret + cmp ax,0 + jz outnow +outclear: + clc + ret +doret: + jgt outclear + stc +outnow: + ret + + intrdef $hadd ; add hugeptr in cx:bx with long in ax:dx + push si + push di + mov si,cx + mov cx,4 + xor di,di +addloop: + shl bx,1 + rcl di,1 + loop addloop + add bx,si + adc di,0 + add ax,bx + adc di,dx + mov cx,4 + mov dx,ax + and ax,0fh +canon: + shr di,1 + rcr dx,1 + loop canon + pop di + pop si + ret + + intrdef $hinx ;add hugeptr in cx:bx to long in ax:dx and put in es:bx + push si + push di + mov si,cx + mov cx,4 + xor di,di +xddloop: + shl bx,1 + rcl di,1 + loop xddloop + add bx,si + adc di,0 + add bx,ax + adc di,dx + mov cx,4 + mov ax,bx + and bx,0fh +xcanon: + shr di,1 + rcr ax,1 + loop xcanon + mov es,ax + pop di + pop si + ret + +$fptrs endp + finish + end + index.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef index, <,> + cld + push si + pushds + ldptr si,arg,ds + mov bl,val +lookloop: + lodsb + test al,al + jz notfound + cmp al,bl + jne lookloop + retptrr si,ds + dec ax + popds + pop si + pret +notfound: + retnull + popds + pop si + pret + pend index + finish + end + lsubs.asm +; Copyright (C) 1983 1984 by Manx Software Systems +; :ts=8 + include lmacros.h + internal $longs +; + intrdef $ldv +;long divide (primary = primary/secondary) + push di + sub di,di ;mark result as positive + test dx,dx + jns prim_ok + neg dx + neg ax + sbb dx,0 + inc di ;mark as negative +prim_ok: + test bx,bx + jns sec_ok + neg bx + neg cx + sbb bx,0 + xor di,1 ;flip sign of result +sec_ok: + call comdivide +chksign: + test di,di + jz posres + neg dx + neg ax + sbb dx,0 +posres: + pop di + ret +; + intrdef $lrm +;long remainder (primary = primary%secondary) + push di + mov di,0 ;mark result as positive + test dx,dx + jns rprim_ok + neg dx + neg ax + sbb dx,0 + inc di ;mark as negative +rprim_ok: + test bx,bx + jns rsec_ok + neg bx + neg cx + sbb bx,0 +rsec_ok: + call comdivide + mov ax,cx + mov dx,bx + jmp chksign +; + intrdef $lum +;unsigned long remainder (primary = primary%secondary) + call comdivide + mov ax,cx + mov dx,bx + ret +; + intrdef $lud +;unsigned long divide (primary = primary/secondary) + ifdef FARPROC + call comdivide + ret + endif + +; fall thru into common divide routine if not large code model +; +comdivide proc near ; divide (dx,ax) by (bx,cx): +; returns quotient in (dx,ax) +; remainder in (bx,cx) +; + test bx,bx ;check for easy case + jnz hardldv + cmp cx,dx + ja veryeasy + push ax + mov ax,dx + sub dx,dx + div cx + mov bx,ax ;save high word of quotient + pop ax + div cx + mov cx,dx ;save remainder + mov dx,bx + sub bx,bx + ret +veryeasy: + div cx + mov cx,dx ;save remainder + mov dx,bx ;bx is already zero if we are here + ret +hardldv: + push di + push si + mov si,cx ;copy divisor (bx,cx) into (di,si) + mov di,bx + push dx ;save dividend for remainder calculation + push ax + + test bh,bh + jz shiftit + mov cl,ch ;shift bx,cx right 8 bits + mov ch,bl + mov bl,bh + mov al,ah ;shift dx,ax right 8 bits + mov ah,dl + mov dl,dh + sub dh,dh +shiftit: + shr dx,1 + rcr ax,1 + shr bl,1 + rcr cx,1 + test bl,bl + jnz shiftit + + div cx ;guess at quotient (may off by 1) + mov cx,ax + ; compute remainder = dividend - divisor*quotient + mul si + mov bx,dx + push ax ;save low half + mov ax,cx + mul di + add bx,ax + jnc normal_path + dec cx + pop ax ; delete top element off the stack + mov ax,cx + mul di + mov bx,ax ; save the answer into bx + mov ax,cx + mul si + add bx,dx + mov es,cx ; es now contains the answer of the divide + mov cx,ax +; bx:cx now contains result * quotient + pop ax + pop dx + sub cx,ax + sbb bx,dx + not cx + not bx + add cx,1 + adc bx,0 + mov ax,es + jmp answer_ok +normal_path: + mov dx,bx ;high half + mov ax,cx ;restore quotient to ax for return + + pop bx ;low half of divisor*quotient + pop cx ;low half of dividend + sub cx,bx + pop bx ;high half of dividend + sbb bx,dx + jnc answer_ok ;if we get a borrow, answer was too big + add cx,si ;so adjust the remainder + adc bx,di + dec ax ;and the quotient +answer_ok: + sub dx,dx + pop si + pop di + ret +comdivide endp +$longs endp + finish + end + memccpy.asm +; Copyright (C) 1984, 1985 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + procdef memccpy,<,,,> + push si + push di + pushds + cld +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,s1 + ldptr si,s2 + mov bl,char + mov cx,lim + jcxz cpydone +cpyloop: + lodsb + stosb + cmp al,bl + jz cpyfnd + loop cpyloop + jmp short cpydone +cpyfnd: + retptrr di,es + popds + pop di + pop si + pret +cpydone: + retnull + popds + pop di + pop si + pret + pend memccpy + finish + end + memchr.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef memchr,<,,> + push di +ifdef LONGPTR + mov ax,ds + mov es,ax +endif + cld + ldptr di,area + mov al,char + mov cx,lim + jcxz notfound +repne scasb + jne notfound + dec di + retptrr di,es + pop di + pret +notfound: + retnull + pop di + pret + pend memchr + finish + end + memcmp.asm +; Copyright (C) 1984, 1985 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + procdef memcmp,<,,> + push si + push di + pushds + cld +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr si,dest + ldptr di,src + mov cx,lim + jcxz done +repe cmpsb + mov ax,0 + ja greater + je done + dec ax +done: + popds + pop di + pop si + pret +greater: + inc ax + jmp done + pend memcmp + finish + end + memcpy.asm +; Copyright (C) 1984, 1985 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + procdef memcpy,<,,> + push si + push di + pushds + cld +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,s1 + ldptr si,s2 + mov cx,lim + mov dx,cx + shr cx,1 + jcxz chk_odd +rep movsw +chk_odd: + test dl,1 + jz done + movsb +done: + retptrm s1 + popds + pop di + pop si + pret + pend memcpy + finish + end + memset.asm +; Copyright (C) 1984, 1985 by Manx Software Systems, Inc. +; :ts=8 + include lmacros.h + procdef memset,<,,> + push di + cld +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,area + mov al,char + mov ah,al + mov cx,lim + mov dx,cx + shr cx,1 + jcxz nowords +rep stosw +nowords: + test dl,1 + jz done + stosb +done: + retptrm area + pop di + pret + pend memset + finish + end + movblock.asm +;Copyright (C) 1983, 1985 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef movblock,<,,> + push di + push si + push ds + push es + pushf + cld + mov cx,len + les di,dest + lds si,src + cmp cx,4 + jne not_int + cli +not_int: + test cx,cx + jnz not_mov_all + mov cx,8000H + jmp short movwords +not_mov_all: + mov dx,cx + shr cx,1 + jz mv_skip +movwords: +rep movsw +mv_skip: + test dl,1 + jz done + movsb +done: + popf + pop es + pop ds + pop si + pop di + pret + pend movblock + finish + end + movmem.asm +;Copyright (C) 1984, 1985 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef movmem,<,,> + pushf + cld + push si + push di + pushds +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr si,arg1 + ldptr di,arg2 + mov cx,len + mov ax,es + mov dx,ds + cmp ax,dx + jne move_forward + cmp di,si + je done + jb move_forward + std + add di,cx + add si,cx + dec di + dec si + test cl,1 + jz nobyte + movsb +nobyte: + dec di + dec si + jmp short domove +; +move_forward: + test cl,1 + jz domove + movsb +domove: + shr cx,1 + jz done +rep movsw +done: + cld + popds + pop di + pop si + popf + pret + pend movmem + finish + end + olsubs.asm +; Copyright (C) 1983 1984 by Manx Software Systems +; :ts=8 +codeseg segment para public 'code' + assume cs:codeseg + public $olongs +$olongs proc near +; + public $lng ;negate primary +$lng: + neg dx + neg ax + sbb dx,0 + ret +; + public $lcmp ;compare primary and secondary +$lcmp: + cmp dx,bx + jne cmpdone + cmp ax,cx + je cmpdone + ja p_gt_s + sub ax,ax + dec ax + stc + ret +p_gt_s: + sub ax,ax + inc ax +cmpdone: + ret +; + public $lad ;add secondary to primary +$lad: + add ax,cx + adc dx,bx + ret +; + public $lsb ;subtract secondary from primary +$lsb: + sub ax,cx + sbb dx,bx + ret +; + public $lan ;and primary with secondary +$lan: + and ax,cx + and dx,bx + ret +; + public $lor ;or primary with secondary +$lor: + or ax,cx + or dx,bx + ret +; + public $lxr ;exclusive or primary with secondary +$lxr: + xor ax,cx + xor dx,bx + ret +; + public $lcm ;complement primary +$lcm: + not ax + not dx + ret +; + public $lls ;shift primary left by secondary +$lls: + and cl,03fH ;restrict to 63 bits + jz lsdone +lsloop: + shl ax,1 + rcl dx,1 + loop lsloop +lsdone: + ret +; + public $lrs ;right shift primary by secondary bits +$lrs: + and cl,03fH ;restrict to 63 bits + jz rsdone +rsloop: + sar dx,1 + rcr ax,1 + loop rsloop +rsdone: + ret +; + public $lur ;unsigned right shift primary by secondary bits +$lur: + and cl,03fH ;restrict to 63 bits + jz ursdone +ursloop: + shr dx,1 + rcr ax,1 + loop ursloop +ursdone: + ret +; + public $lml +$lml: ;long multiply (primary = primary * secondary) + push ax ;save low word + push dx ;save high word + mul bx + mov bx,ax ;keep partial product + pop ax ;get high word + mul cx + add bx,ax ;add to partial product + pop ax ;get low word + mul cx + add dx,bx ;add in partial products + ret +; +$olongs endp +codeseg ends + end + ovbgn.asm +; :ts=8 +;Copyright (C) 1984 by Manx Software Systems +codeseg segment para public 'code' +dataseg segment para public 'data' +save_si dw 0 +save_di dw 0 +save_sp dw 0 +save_bp dw 0 +save_ret dw 0 + extrn _Uorg_:word, _Uend_:word +dataseg ends + assume cs:codeseg,ds:dataseg + extrn ovmain_:near + public $ovbgn +$ovbgn proc near + pop save_ret + pop cx ;throw away overlay name + mov save_sp,sp + mov save_bp,bp + mov save_si,si + mov save_di,di + cld + mov di,offset _Uorg_ ;clear uninitialized data + mov cx,offset _Uend_ + sub cx,di + shr cx,1 + jz nobss + sub ax,ax +rep stosw +nobss: + call ovmain_ +; +; fall through into ovexit code +; + public ovexit_ +ovexit_: + mov bp,save_bp + mov sp,save_sp + mov si,save_si + mov di,save_di + push cx ;fake argument to replace overlay name + jmp save_ret +$ovbgn endp +codeseg ends + end $ovbgn + ovloader.c +/* Copyright (C) 1984 by Manx Software Systems */ + +#define OV_MAGIC 0xf2 + +struct ovrheader { /* overlay header header */ + short o_magic; + unsigned short o_corg; + unsigned short o_csize; + unsigned short o_dorg; + unsigned short o_dsize; + unsigned short o_bss; + unsigned short o_entry; +}; + +static char *ovname; + +#asm + public ovloader_ +ovloader_ proc near + mov bx,sp + mov ax,word ptr 2[bx] + mov ovname_,ax + call _ovld_ + jmp ax +ovloader_ endp +#endasm + +static +_ovld() +{ + int fd, flag; + register char *cp, *xp; + auto struct ovrheader hdr; + char *getenv(), path[64]; + extern char *_mbot, _Cend[], _Uend[]; + +#ifdef DOS20 + if ((cp = getenv("PATH")) == 0) + cp = ""; + xp = path; + for (;;) { + strcpy(xp, ovname); + strcat(path, ".ovr"); + if ((fd = open(path, 0)) != -1) + break; + do { + if (*cp == 0) + loadabort(10); + xp = path; + while (*cp) { + if (*cp == ';') { + ++cp; + break; + } + *xp++ = *cp++; + } + *xp = 0; + } while (path[0] == 0); + } + +#else + strcpy(path, ovname); + strcat(path, ".ovr"); + if ((fd = open(path, 0)) == -1) + loadabort(10); +#endif + + if (read(fd, &hdr, sizeof hdr) != sizeof hdr) + loadabort(20); + + /* safety check overlay header */ + if (hdr.o_magic != OV_MAGIC) + loadabort(30); + if (_mbot < hdr.o_dorg+hdr.o_dsize+hdr.o_bss) + loadabort(40); + if (_Cend > hdr.o_corg || _Uend > hdr.o_dorg) + loadabort(60); + + if (_csread(fd, hdr.o_corg, hdr.o_csize) < hdr.o_csize + || read(fd, hdr.o_dorg, hdr.o_dsize) < hdr.o_dsize) + loadabort(50); + close(fd); + return hdr.o_entry; +} + +static +loadabort(code) +{ + char buffer[80]; + + sprintf(buffer, "Error %d loading overlay: %s$", code, ovname); + bdos(9, buffer); + exit(100); +} + peek.asm +;Copyright (C) 1983, 1985 by Manx Software Systems +; :ts=8 + include lmacros.h + procdef peekw,<> + push ds + lds bx,addr + mov ax,ds:[bx] + pop ds + pret + pend peekw +; + entrdef peekb + procdef peek,<> + push ds + lds bx,addr1 + mov al,ds:[bx] + and ax,0ffH + pop ds + pret + pend peek +; + procdef pokew,<,> + push ds + mov ax,val + lds bx,addr2 + mov ds:[bx],ax + pop ds + pret + pend pokew +; + entrdef poke + procdef pokeb,<,> + push ds + mov al,val1 + lds bx,addr3 + mov ds:[bx],al + pop ds + pret + pend pokeb + finish + end + pointers.asm +; :ts=8 +;Copyright (C) 1985 by Manx Software Systems + include lmacros.h + assume ds:dataseg +; +; ptrtoabs(lptr): convert pointer to 20-bit physical address +; + procdef ptrtoabs,<,> + mov ax,lptr + mov dx,llptr + mov cx,4 + rol dx,cl + mov bx,dx + and bx,0fff0h + and dx,0fh + add ax,bx + adc dx,0 + pret + pend ptrtoabs +; +; abstoptr(laddr): convert 20-bit physical address to pointer +; + procdef abstoptr,<,> + mov ax,laddr + mov dx,lladdr + and dx,0fh + mov bx,ax + mov cx,4 + ror dx,cl + shr bx,cl + and bx,0fffh + or dx,bx + and ax,0fh + pret + pend abstoptr + finish + end + port.asm +;Copyright (C) 1983, 1985 by Manx Software Systems +; :ts=8 + include lmacros.h + entrdef inport + procdef inportb,<> + mov dx,port + in al,dx + and ax,0ffH + pret + pend inportb +; + procdef inportw,<> + mov dx,port1 + in ax,dx + pret + pend inportw +; + entrdef outport + procdef outportb,<,> + mov dx,port2 + mov al,val + out dx,al + pret + pend outportb +; + procdef outportw,<,> + mov dx,port3 + mov ax,val1 + out dx,ax + pret + pend outportw + finish + end + ptradd.asm +; :ts=8 +;Copyright (C) 1985 by Manx Software Systems + include lmacros.h +; +;char *_ptradd(lptr, long): return lptr+long +; + procdef _ptradd,<,,,> + mov ax,segm + sub dx,dx + mov cx,4 +sloop: shl ax,1 + rcl dx,1 + loop sloop + add ax,offs + adc dx,0 + add ax,incrl + adc dx,incrh + mov bx,ax + mov cx,4 +sloop2: shr dx,1 + rcr ax,1 + loop sloop2 + mov dx,ax + mov ax,bx + and ax,15 + mov bx,dx + pret + pend _ptradd + finish + end + ptrdiff.asm +; :ts=8 +;Copyright (C) 1985 by Manx Software Systems + include lmacros.h +; +; long _ptrdiff(lptr1, lptr2): return long pointer difference +; + procdef _ptrdiff,<,,,> + mov ax,seg1 + sub ax,seg2 + sbb dx,dx + mov cx,4 +sloop: shl ax,1 + rcl dx,1 + loop sloop + add ax,off1 + adc dx,0 + sub ax,off2 + sbb dx,0 + mov bx,dx + pret + pend _ptrdiff + finish + end + rindex.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef rindex, <,> + pushf + cld + push di +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,string,es + mov dx,di ;save for later + sub ax,ax + mov cx,7fffH +repne scasb + mov cx,di + sub cx,dx ;compute length of string + dec di ;backup to null byte + mov al,chr ;get byte to look for + std ;now go backwards +repne scasb + je found + retnull + pop di + popf + pret +found: + retptrr di,es + inc ax + pop di + popf + pret + pend rindex + finish + end + rom.asm +; Copyright (C) 1984, 1985 by Manx Software Systems +; :ts=8 + include lmacros.h +; +; If you want your stack at a fixed place, you may remove the +; "bss cstack..." statement below and change the "mov sp,cstack..." +; to load SP with the value you desire. Note that the setup of +; SS may need to be changed also. If the program is small data +; model, then SS must be equal to DS or pointers to automatic +; variables won't work. +; +; Otherwise, stacksize should be set according to your program's +; requirements. +stacksize equ 2048 +; +; dataseg is the data segment address (as a paragraph #) +; this is picked from the -D option of the linker +; +;Dseg equ 040H ;physical addr 0x400, just above the int vectors + +dataseg segment word public 'data' + bss cstack:byte,stacksize + public $MEMRY +$MEMRY dw -1 + dw -1 + public errno_ +errno_ dw 0 + public _dsval_,_csval_ +_dsval_ dw 0 +_csval_ dw 0 + public _mbot_, _sbot_ +_mbot_ dw 0 + dw 0 +_sbot_ dw 0 + dw 0 +; +; The variable is used with csav and cret only. Therefore if you do not +; compile the the +c option or +b option you do not need this. +; + public _lowwater_ +_lowwater_ dw -1 + extrn _Dorg_:byte,_Dend_:byte + extrn _Uorg_:byte,_Uend_:byte +dataseg ends + extrn _Corg_:byte,_Cend_:byte + +ifdef FARPROC + extrn main_:far, $fltinit:far +else + extrn main_:near, $fltinit:near +endif + + public $begin +$begin proc far + cli + cld +; +; Compute where initialzed data starts (@ next para after code) +; + mov ax,offset _Cend_+15 + mov cl,4 + shr ax,cl + add ax,seg _Cend_ + mov ds,ax ;place where data is in rom + mov bx,dataseg ;place where data is to go in ram + mov es,bx +; +; Note: For hardware reasons the instruction which loads SS should +; be immediatly followed by the load of SP. +; + mov ss,bx + mov sp,offset cstack+stacksize +; +; copy Init data from rom to ram + mov di,0 + mov cx,offset _Dend_ + inc cx + shr cx,1 + jcxz nocopy + mov si,0 +rep movsw +nocopy: +; +; clear uninitialized data + mov di,offset _Uorg_ + mov cx,offset _Uend_ + sub cx,di + inc cx + shr cx,1 + jcxz noclear + sub ax,ax +rep stosw +noclear: +; + assume ds:dataseg,es:dataseg + + mov ds,bx ;set DS, now DS, SS, ES are equal + mov di,$MEMRY + inc di + and di,0fffeH ;adjust to word boundary + mov $MEMRY,di ;save memory allocation info for sbrk() + mov $MEMRY+2,ds + mov _mbot_,di + mov _mbot_+2,ds + mov _sbot_,0ffffH ;this is the heap limit for sbrk() + mov _sbot_+2,0fff0h + mov _dsval_,ds + mov _csval_,cs ;this is of dubious value in large code + sti + call $fltinit ;setup floating point software/hardware + jnc flt_ok + hlt ;program needs 8087 and one wasn't found +flt_ok: + jmp main_ ;main shouldn't return in ROM based system +$begin endp +codeseg ends + end $begin + segread.asm +; :ts=8 +;Copyright (C) 1983, 1985 by Manx Software Systems + include lmacros.h + procdef segread,<> +ifdef LONGPTR + mov cx,es + ldptr bx,segs,es +ifdef FARPROC + mov ax,4[bp] + mov es:[bx],ax +else + mov es:[bx],cs +endif + mov es:2[bx],ss + mov es:4[bx],ds + mov es:6[bx],cx + +else + + mov bx,segs +ifdef FARPROC + mov ax,4[bp] + mov [bx],ax +else + mov [bx],cs +endif + mov 2[bx],ss + mov 4[bx],ds + mov 6[bx],es + +endif + pret + pend segread + finish + end + setjmp.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef setjmp,<> + pushds + ldptr bx,jmpbuf,ds + lea ax,jmpbuf + mov [bx],ax + mov ax,0[bp] ;get caller's BP + mov 2[bx],ax + mov 4[bx],si + mov 6[bx],di + mov ax,2[bp] ;caller's IP + mov 8[bx],ax +ifdef FARPROC + mov ax,4[bp] ;caller's CS + mov 10[bx],ax +endif + sub ax,ax + popds + pret + pend setjmp +; + procdef longjmp,<,> + mov ax,retval +ifndef LONGPTR + mov bx,ds + mov es,bx +endif + ldptr bx,jbuf,es + mov sp,es:[bx] + mov bp,es:2[bx] + mov si,es:4[bx] + mov di,es:6[bx] + test ax,ax + jnz ax_ok + inc ax +ax_ok: +ifdef FARPROC + jmp es:dword ptr 8[bx] +else + jmp es:word ptr 8[bx] +endif + pend longjmp + finish + end + setmem.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef setmem,<,,> + pushf + cld + push di +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,src,es + mov cx,len + mov al,val + mov ah,al + mov dx,cx + shr cx,1 + jz skip +rep stosw +skip: + test dl,1 + jz done + stosb +done: + pop di + popf + pret + pend setmem + finish + end + strcat.asm +; :ts=8 +;Copyright (C) 1983, 1985 by Manx Software Systems + include lmacros.h + procdef strcat,<,> + mov dx,7fffH + jmp short catcommon + pend strcat + + procdef strncat,<,,> + mov dx,len +catcommon: + cld + push si + push di + pushds +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,str1 + sub ax,ax + mov cx,7fffH +repne scasb ;find end of destination string + dec di ;backup to null byte + ldptr si,str2 + mov cx,dx +cpyloop: + lodsb + stosb + test al,al + loopnz cpyloop + jz nul_ok + sub al,al ;guarantee that string is nul terminated + stosb +nul_ok: + popds + pop di + pop si + retptrm str1 + pret + pend strncat + finish + end + strchr.asm +; :ts=8 +;Copyright (C) 1985 by Manx Software Systems + include lmacros.h + procdef strchr, <,> + cld + push si + pushds + ldptr si,arg,ds + mov bl,val +lookloop: + lodsb + cmp al,bl + je found + test al,al + jnz lookloop + retnull + popds + pop si + pret +found: + retptrr si,ds + dec ax + popds + pop si + pret + pend strchr + finish + end + strcmp.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef strcmp,<,> + cld + push si + push di + pushds + ldptr si,s1 +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,s2 +cmploop: + lodsw + scasw + jne word_notequal + test al,al + jz equal + test ah,ah + jnz cmploop + jmp short equal + pend strcmp + + procdef strncmp,<,,> + mov cx,len + mov dx,cx + shr cx,1 ;# of times through word loop + cld + push si + push di + pushds + ldptr si,str1 +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,str2 + jcxz words_equal +ncmploop: + lodsw + scasw + jne word_notequal + test al,al + jz equal + test ah,ah + loopnz ncmploop + jz equal +words_equal: + test dl,1 + jz equal + cmpsb + jne notequal +equal: + sub ax,ax +done: + popds + pop di + pop si + pret +word_notequal: + sub di,2 ;back up to first byte in word + scasb ;and redo the compare a byte at a time + jne notequal + test al,al ;if end of string, this was a false mismatch + jz equal + mov al,ah ;get second byte + scasb ;this must be not equal, since the words aren't equal +notequal: + sbb ax,ax + js done ;if -1 then s1s2 + jmp done + + pend strncmp + finish + end + strcpy.asm +; :ts=8 +;Copyright (C) 1983, 1985 by Manx Software Systems + include lmacros.h + procdef strcpy,<,> + cld + push si + push di + pushds +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,str2 + mov cx,0ffffH + mov al,0 +repne scasb + not cx ;real length of string + ldptr di,str1 + ldptr si,str2 + shr cx,1 + jcxz nowords +rep movsw + +nowords: + jnc nobyte + movsb +nobyte: + popds + pop di + pop si + retptrm str1 + pret + pend strcpy + finish + end + stricmp.asm +; :ts=8 +;Copyright (C) 1988 by Manx Software Systems + + include lmacros.h + procdef stricmp,<,> + push si + push di + pushds + sub ah,ah + sub bh,bh + + ldptr si,s1 + ldptr di,s2 +cmploop: + lodsb +; convert al to lower case if needed + cmp al,'A' + jl skip + cmp al,'Z' + jg skip + add al,'a'-'A' +skip: +ifdef LONGPTR + mov bl,byte ptr es:[di] +else + mov bl,byte ptr [di] +endif + inc di +; convert bl to lower case if needed + cmp bl,'A' + jl skip2 + cmp bl,'Z' + jg skip2 + add bl,'a'-'A' +skip2: +; Now "compare bytes" + cmp al,bl + jne word_notequal + test al,al + jnz cmploop + +equal: + popds + pop di + pop si + pret +word_notequal: + sub al,bl + popds + pop di + pop si + pret + pend stricmp + + finish + end + strlen.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef strlen,<> + cld + push di +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,str1 + mov bx,di ;save for later + sub ax,ax + mov cx,7fffH +repne scasb + mov ax,di + sub ax,bx ;compute length of string + dec ax + pop di + pret + pend strlen + finish + end + strlwr.c +#include + +strlwr(string) +unsigned char *string; +{ + register unsigned char *place; + place = string; + while ( *place ) { + *place = tolower(*place); + place ++; + } + return string; +} + + strncpy.asm +; :ts=8 +;Copyright (C) 1983, 1985 by Manx Software Systems + include lmacros.h + procdef strncpy,<,,> + cld + push si + push di + pushds + mov cx,len +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,str1 + ldptr si,str2 + jcxz cpydone +cpyloop: + lodsb + test al,al + jz zerofill + stosb + loop cpyloop + jmp short cpydone +zerofill: +rep stosb +cpydone: + popds + pop di + pop si + retptrm str1 + pret + pend strncpy + finish + end + strrchr.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef strrchr, <,> + pushf + cld + push di +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr di,string,es + mov dx,di ;save for later + sub ax,ax + mov cx,7fffH +repne scasb + mov cx,di + sub cx,dx ;compute length of string + dec di ;backup to null byte + mov al,chr ;get byte to look for + std ;now go backwards +repne scasb + je found + retnull + pop di + popf + pret +found: + retptrr di,es + inc ax + pop di + popf + pret + pend strrchr + finish + end + strrev.asm +; :ts=8 +;Copyright (C) 1988 by Manx Software Systems + include lmacros.h +ifdef FARPROC + extrn strlen_:far +else + extrn strlen_:near +endif + procdef strrev,<> + + push si + pushds + +ifdef LONGPTR + mov ax,word ptr string+2 + push ax +endif + mov si,word ptr string + push si + call strlen_ +ifdef LONGPTR + add sp,4 + mov ds,word ptr string+2 +else + pop cx +endif + add ax,si + dec ax + mov bx,ax +; si should point to start of string +; bx should point to rear of string + + jmp loop_test +again: +; swap word ptr by [si] and word ptr by [di] + mov dl,byte ptr [si] + mov cl,byte ptr [bx] + + mov byte ptr [si],cl + mov byte ptr [bx],dl + + inc si + dec bx +loop_test: + cmp si,bx + jb again + + mov ax,word ptr string +ifdef LONGPTR + mov dx,word ptr string+2 +endif + popds + pop si + pret + pend strrev +codeseg ends + end + strstr.asm +; :ts=8 +;Copyright (C) 1988 by Manx Software Systems + + include lmacros.h + +ifndef FARPROC + extrn strncmp_:near + extrn strlen_:near +else + extrn strncmp_:far + extrn strlen_:far +endif + + procdef strstr,<,> + + push si + push di + pushds + + ldptr si,s2,es + + +ifdef LONGPTR + mov di,es + push es +endif + push si + + call strlen_ + +ifdef LONGPTR + add sp,4 + mov es,di +else + pop cx +endif + mov di,ax + + ldptr bx,s1,ds + +; bx pointer to first string ( offset only ) +; si pointer to second string ( offset only ) +; di length of second string ( offset only ) + + jmp test_condition +top_of_loop: + +; save bx + push bx + + push di +ifdef LONGPTR + push ds +endif + push bx +ifdef LONGPTR + push es +endif + push si + + call strncmp_ + +ifdef LONGPTR + add sp,10 + mov es,word ptr s2+2 +else + add sp,6 +endif + +; restore bx + pop bx + + test ax,ax + jz return_succ + + inc bx + +test_condition: + cmp byte ptr [bx],0 + jne top_of_loop + +exit_failure: + +ifdef LONGPTR + xor dx,dx +endif + xor ax,ax + jmp final_exit +return_succ: + mov ax,bx +ifdef LONGPTR + mov dx,word ptr s1+2 +endif +final_exit: + popds + pop di + pop si + pret + pend strstr + + finish + end + swapmem.asm +; :ts=8 +;Copyright (C) 1984 by Manx Software Systems + include lmacros.h + procdef swapmem,<,,> + push si + push di + pushds +ifndef LONGPTR + mov di,ds + mov es,di +endif + ldptr si,str1 + ldptr di,str2 + mov cx,len + jcxz done +ifdef LONGPTR + mov ax,ds + mov dx,es + cmp ax,dx + jne swaploop +endif + cmp di,si + je done +swaploop: + mov al,es:[di] + xchg al,ds:[si] + stosb + inc si + loop swaploop +done: + popds + pop di + pop si + pret + pend swapmem + finish + end + sysint.asm +; :ts=8 +;Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef sysint,<,,> + sub sp,14 + push si + push di + push es + push ds +; +; build instruction sequence on the stack to issue int +; and restore ss:sp to value before int. +; Note: All this is because some handlers don't restore ss and sp. +; + mov byte ptr -10[bp],0cdH ;int xx + mov al,num + mov byte ptr -9[bp],al + mov word ptr -8[bp],0cd8cH ;mov bp,cs + mov word ptr -6[bp],0d58eH ;mov ss,bp + mov byte ptr -4[bp],0bcH ;mov sp,xx + mov ax,sp + sub ax,6 + mov word ptr -3[bp],ax + mov byte ptr -1[bp],0cbH ;retf + mov word ptr -12[bp],ss ;set up pointer to above code + lea ax,-10[bp] + mov word ptr -14[bp],ax +; + ldptr bx,sregs,ds + mov ax,[bx] + push 2[bx] ;value to go into BX + mov cx,4[bx] + mov dx,6[bx] + mov si,8[bx] + mov di,10[bx] + mov es,14[bx] + mov ds,12[bx] + pop bx + push bp + call ss:dword ptr -14[bp] + pop bp + push ds ;save values so we have working registers + push bx + ldptr bx,dregs,ds +ifdef LONGPTR + mov [bx],ax + pop 2[bx] ;value returned in BX + mov 4[bx],cx + mov 6[bx],dx + mov 8[bx],si + mov 10[bx],di + pop 12[bx] ;value returned in DS + mov 14[bx],es + pop ds +else + mov ss:14[bx],es + pop ss:2[bx] ;value returned in BX + pop ss:12[bx] ;value returned in DS + pop ds + mov [bx],ax + mov 4[bx],cx + mov 6[bx],dx + mov 8[bx],si + mov 10[bx],di +endif + pop es + pop di + pop si + pushf + pop ax + add sp,14 + pret + pend sysint + finish + end + toupper.asm +; Copyright (C) 1983 by Manx Software Systems + include lmacros.h + procdef toupper,<> +; + mov al,val1 + sub ah,ah + cmp al,'a' + jl tu_done + cmp al,'z' + jg tu_done + sub al,'a'-'A' +tu_done: + pret + pend toupper +; +; + procdef tolower,<> +; + mov al,val2 + sub ah,ah + cmp al,'A' + jl skip + cmp al,'Z' + jg skip + add al,'a'-'A' +skip: + pret + pend tolower + finish + end + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/MISC.ARC b/Manx Aztec C86 v42b/ARC/MISC.ARC new file mode 100644 index 0000000..773f835 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/MISC.ARC @@ -0,0 +1,1615 @@ + abort.c +#include + +void abort(void) +{ + raise(SIGABRT); + _exit(255); +} + atoi.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include + +atoi(cp) +register char *cp; +{ + register unsigned i; + register sign; + + while (*cp == ' ' || *cp == '\t') + ++cp; + sign = 0; + if ( *cp == '-' ) { + sign = 1; + ++cp; + } else if ( *cp == '+' ) + ++cp; + + for ( i = 0 ; isdigit(*cp) ; ) + i = i*10 + *cp++ - '0'; + return sign ? -i : i; +} + atol.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include + +long +atol(cp) +register char *cp; +{ + long n; + register sign; + + while (*cp == ' ' || *cp == '\t') + ++cp; + sign = 0; + if ( *cp == '-' ) { + sign = 1; + ++cp; + } else if ( *cp == '+' ) + ++cp; + + for ( n = 0 ; isdigit(*cp) ; ) + n = n*10 + *cp++ - '0'; + return sign ? -n : n; +} + calloc.c +/* Copyright (C) 1984 by Manx Software Systems */ + +char *calloc(nelem, size) +unsigned nelem, size; +{ + register unsigned i = nelem*size; + register char *cp, *malloc(); + + if ((cp = malloc(i)) != (char *)0) + setmem(cp, i, 0); + return cp; +} + ctype.c +/* Copyright (C) 1984 by Manx Software Systems */ + +char ctp_[129] = { + 0, /* EOF */ + 0x20, 0x20, 0x20, 0x20, /* nul soh stx etx */ + 0x20, 0x20, 0x20, 0x20, /* eot enq ack bel */ + 0x20, 0x30, 0x30, 0x30, /* bs ht nl vt */ + 0x30, 0x30, 0x20, 0x20, /* ff cr so si */ + 0x20, 0x20, 0x20, 0x20, /* dle dc1 dc2 dc3 */ + 0x20, 0x20, 0x20, 0x20, /* dc4 nak syn etb */ + 0x20, 0x20, 0x20, 0x20, /* can em sub esc */ + 0x20, 0x20, 0x20, 0x20, /* fs gs rs us */ + 0x90, 0x40, 0x40, 0x40, /* sp ! " # */ + 0x40, 0x40, 0x40, 0x40, /* $ % & ' */ + 0x40, 0x40, 0x40, 0x40, /* ( ) * + */ + 0x40, 0x40, 0x40, 0x40, /* , - . / */ + 0x0C, 0x0C, 0x0C, 0x0C, /* 0 1 2 3 */ + 0x0C, 0x0C, 0x0C, 0x0C, /* 4 5 6 7 */ + 0x0C, 0x0C, 0x40, 0x40, /* 8 9 : ; */ + 0x40, 0x40, 0x40, 0x40, /* < = > ? */ + 0x40, 0x09, 0x09, 0x09, /* @ A B C */ + 0x09, 0x09, 0x09, 0x01, /* D E F G */ + 0x01, 0x01, 0x01, 0x01, /* H I J K */ + 0x01, 0x01, 0x01, 0x01, /* L M N O */ + 0x01, 0x01, 0x01, 0x01, /* P Q R S */ + 0x01, 0x01, 0x01, 0x01, /* T U V W */ + 0x01, 0x01, 0x01, 0x40, /* X Y Z [ */ + 0x40, 0x40, 0x40, 0x40, /* \ ] ^ _ */ + 0x40, 0x0A, 0x0A, 0x0A, /* ` a b c */ + 0x0A, 0x0A, 0x0A, 0x02, /* d e f g */ + 0x02, 0x02, 0x02, 0x02, /* h i j k */ + 0x02, 0x02, 0x02, 0x02, /* l m n o */ + 0x02, 0x02, 0x02, 0x02, /* p q r s */ + 0x02, 0x02, 0x02, 0x02, /* t u v w */ + 0x02, 0x02, 0x02, 0x40, /* x y z { */ + 0x40, 0x40, 0x40, 0x20, /* | } ~ del */ +} ; + format.asm +; Copyright (C) Manx Software Systems, Inc. 1987 +; All Rights Reserved. +; :ts=8 + include lmacros.h + +INTSIZE equ 2 +LONGSIZE equ 4 +DBLSIZE equ 8 + +ifdef LONGPTR +loades macro reg,expr + les reg,dword ptr expr + endm + +pushptr macro addr,seg + push seg + push addr + endm +else + +loades macro reg,expr + push ds + pop es + mov reg,word ptr expr + endm + +pushptr macro addr,seg + push addr + endm +endif + +LDBLOPT equ 01H +LONGOPT equ 02H +FAROPT equ 04H +LEFTJUST equ 08H +ALTFORM equ 10H +CASEMAP equ 20H + +CONVCOUNT equ 21 +conversions db 'LlhFNoxXudiscpneEfgG%' +conv_routines dw ldblopt,longopt,shortopt,FARopt,NEARopt + dw octal,hex,upperhex,unsigned,decimal,decimal + dw string,char,pointer,numchar + dw fltformat,cap_fltformat,fltformat,fltformat,cap_fltformat + dw default + +digits db '0123456789abcdef' + +ifndef FLOAT +nofltmsg db ' -lm first',0 +endif + +charcount equ word ptr -2[bp] +fldwidth equ word ptr -4[bp] +precision equ word ptr -6[bp] +outsize equ word ptr -8[bp] +dsvalue equ word ptr -10[bp] +options equ byte ptr -11[bp] +fillc equ byte ptr -12[bp] +sign equ byte ptr -13[bp] +pos_sign equ byte ptr -14[bp] +buffer equ byte ptr -340[bp] +autosize equ 340 + + procdef format,<, , > + sub sp,autosize + push di + push si +ifdef LONGPTR + mov dsvalue,ds +endif + cld + ldptr si,fmtstr + mov charcount,0 +; +main_loop: + mov options,0 ;reset all conversion flags + lodsb ;get next byte of format string + cmp al,'%' ;is it a conversion character ? + je ispercent ;yes, then perform conversion +default: + test al,al + jz finishup + call emitchar + jmp main_loop +finishup: + mov ax,charcount +ifdef LONGPTR + mov ds,dsvalue +endif + pop si + pop di + mov sp,bp + pret + +ispercent: + mov fillc,' ' + mov pos_sign,0 ;default is no sign char for positive #'s + mov sign,0 ;clear out sign, so %s works right + mov precision,-1 +next_flag: + lodsb ;next byte of format string + cmp al,'-' ;check for left justify flag + jne not_minus + or options,LEFTJUST + jmp short next_flag +not_minus: + cmp al,'+' ;always show sign flag + jne not_plus + mov pos_sign,'+' + jmp short next_flag +not_plus: + cmp al,' ' ;show positive sign with space + jne not_space + cmp pos_sign,0 + jne next_flag + mov pos_sign,' ' + jmp short next_flag +not_space: + cmp al,'#' ;print in alternate form + jne not_alter + or options,ALTFORM + jmp short next_flag +not_alter: + cmp al,'0' ;check for zero fill flag + jne not_zero + mov fillc,'0' + lodsb ;skip over '0' +not_zero: + call do_width + test dx,dx + jns pos_width + neg dx + or options,LEFTJUST +pos_width: + mov fldwidth,dx + cmp al,'.' ;check for precision field + jne no_precision + lodsb ;skip over '.' + call do_width + mov precision,dx +no_precision: + mov di,cs + mov es,di +convert_again: + mov di,offset conversions + mov cx,CONVCOUNT +repne scasb + sub di,offset conversions+1 ;compute index into table + shl di,1 ;scale for proper addressing + jmp word ptr conv_routines[di] ;dispatch handler + + +ldblopt: + or options,LDBLOPT + lodsb + jmp short convert_again +longopt: + or options,LONGOPT +shortopt: ;not needed for 8086 +NEARopt: ;Aztec promotes near ptrs to far ptrs on varargs calls + lodsb + jmp short convert_again +FARopt: + or options,FAROPT + lodsb + jmp short convert_again + +octal: + mov cx,8 ;set base to 8, and unsigned conversion + jmp short intconv +upperhex: + or options,CASEMAP +hex: + mov cx,16 ;set base to 16, and unsigned conversion + jmp short intconv +unsigned: + mov cx,10 ;set base to 10, and unsigned conversion + jmp short intconv +decimal: + mov cx,0ff0aH ;set base (cl) and signed conv flag (ch) +intconv: + loades di,args + mov ax,es:[di] + add di,2 + test options,LONGOPT + jz shortload + mov dx,es:[di] + add di,2 + jmp short signcheck +shortload: + sub dx,dx + test ch,ch + jz nosign + cwd +signcheck: + test ch,ch + jz nosign + mov ch,pos_sign + mov sign,ch + test dx,dx + jns nosign + mov sign,'-' + neg dx + neg ax + sbb dx,0 +nosign: + mov word ptr args,di + cmp precision,0 ;check for default precision + jge prec_ok + mov precision,1 ;set to default of 1 for integer conversions +prec_ok: + + mov ch,0 + mov di,ss + mov es,di + lea di,buffer+20 ;make ES:DI point at end of buffer +digit_loop: + test dx,dx + jnz notyet + test ax,ax + jz digits_done +notyet: sub bx,bx ;clear high word of quotient + cmp cx,dx + ja veryeasy + push ax + mov ax,dx + sub dx,dx + div cx + mov bx,ax ;save high word of quotient + pop ax + div cx + jmp short div_done +veryeasy: + div cx +div_done: + xchg dx,bx ;ax,dx has quotient, bx has remainder + mov bl,cs:digits[bx] + dec di + mov es:byte ptr [di],bl + jmp digit_loop + +digits_done: + test options,ALTFORM ;check for # form of conversion + jz normalform + cmp cl,10 + je normalform ;no effect on decimal conversions + cmp cl,16 + jne nothex + mov sign,'x' ;hex: prefixes output with 0x + jmp short normalform +nothex: + dec di ;octal: prefixes output with 0 + mov es:byte ptr [di],'0' + +normalform: + lea cx,buffer+20 ;get starting address into cx + sub cx,di ;and compute char count into cx + mov ax,precision + sub ax,cx + mov precision,ax + jle output_string + sub fldwidth,ax ;adjust for precision padding to be done + +output_string: + mov outsize,cx ;save for later + cmp sign,0 + jz width_ok + cmp sign,'x' ;hex prefix instead of sign? + jne nothex_prefix + dec fldwidth ;adjust for 0x prefix +nothex_prefix: + dec fldwidth ;adjust for sign character +width_ok: + sub fldwidth,cx ;adjust for characters to be output + jle left_justify + test options,LEFTJUST + jnz left_justify + +; emit leading pad characters for right justified field + + cmp fillc,'0' ;if padding with zeros + jne wpad_loop + call emitsign ;then we must emit sign chars if required +wpad_loop: + mov al,fillc ;emit padding needed to get min field width + call emitchar + dec fldwidth + jg wpad_loop + +left_justify: + call emitsign ;emit sign chars if required + +zpad_loop: ;emit any padding needed because of precision + dec precision + js outchars + mov al,'0' + call emitchar + jmp zpad_loop + +outchars: ;emit the characters generated + dec outsize + js trail_pad + mov al,es:byte ptr [di] + inc di + call emitchar + jmp outchars + +trail_pad: ;emit trailing field width padding + dec fldwidth + js outdone + mov al,' ' ;trailing pad is always space + call emitchar + jmp trail_pad +outdone: + jmp main_loop + +cap_fltformat: + or options,CASEMAP + add al,'a'-'A' ;map convert char to lower case +fltformat: +ifndef FLOAT + add word ptr args,DBLSIZE + mov ax,cs + mov es,ax + mov di,offset nofltmsg + sub fldwidth,size nofltmsg - 1 + jmp outchars +else + +ifdef FARPROC + extrn ftoa_:far +else + extrn ftoa_:near +endif +ifdef LONGPTR + push ds ; save current ds + mov ds,dsvalue ; make sure ds points to dataseg +endif + sub al,'e' + sub ah,ah + push ax + mov ax,precision + test ax,ax ;check for default precision + jns fprec_ok + mov ax,6 ;set to default of 6 for float conversions +fprec_ok: + push ax + lea ax,buffer + pushptr ax,ss + loades bx,args + add word ptr args,DBLSIZE + mov al,pos_sign + mov sign,al + mov ax,es:word ptr 6[bx] + test ax,ax + jns flt_positive + mov sign,'-' + and ah,7fH ;clear sign bit +flt_positive: + push ax + push es:word ptr 4[bx] + push es:word ptr 2[bx] + push es:word ptr [bx] + call ftoa_ + ifdef LONGPTR + add sp,16 + pop ds + else + add sp,14 + endif + mov di,ss + mov es,di + lea di,buffer ;make ES:DI point at buffer + mov al,0 + mov cx,0ffffH +repne scasb + not cx ;length counting nul char + dec cx ;fix so we have correct length + jmp set_buffer +endif + +string: + call get_pointer + push di ;save for output routine + mov al,0 + mov cx,0ffffH +repne scasb + not cx ;length counting nul char + dec cx ;fix so we have correct length + cmp cx,precision + jbe strlen_ok + mov cx,precision ;limit string to precision chars +strlen_ok: + pop di ;get buffer address back + mov precision,0 ;precision already dealt with + jmp output_string + +char: + loades di,args + mov al,es:[di] + add di,2 + mov word ptr args,di + mov buffer,al + mov cx,1 + mov ax,ss + mov es,ax +set_buffer: + lea di,buffer ;get buffer address back + mov precision,0 ;precision already dealt with + jmp output_string + +pointer: + jmp main_loop + +numchar: + call get_pointer + mov ax,charcount + mov es:word ptr [di],ax + test options,LONGOPT + jz nc_done + mov es:word ptr 2[di],0 +nc_done: + jmp main_loop + +emitsign proc near + mov al,sign ;check if sign chars required + test al,al + jz emitreturn + cmp al,'x' ;check for 0x prefix + jne normalsign + mov al,'0' + call emitchar + mov al,'x' +normalsign: + mov sign,0 ;mark sign as already emitted + ;fall through into emitchar routine and return +emitchar: + inc charcount + test options,CASEMAP + jz nocasefix + cmp al,'a' ;check if lowercase alpha + jb nocasefix + cmp al,'z' + ja nocasefix + sub al,'a'-'A' ;map lowercase into uppercase +nocasefix: + push es ;save for routines above +ifdef LONGPTR + mov ds,dsvalue ;restore normal DS for outside function +endif + sub ah,ah + push ax + call result + pop ax ;fix stack +ifdef LONGPTR + mov ds,word ptr fmtstr+2 ;get internal DS back +endif + pop es ;restore +emitreturn: + ret +emitsign endp + +get_pointer proc near + loades di,args +ifndef LONGPTR + test options,FAROPT + jnz load_longptr + mov di,[di] + add word ptr args,2 + ret +load_longptr: +endif + les di,es:dword ptr [di] + add word ptr args,4 + ret +get_pointer endp + +; process a field width or precision specifier + +do_width proc near + cmp al,'*' ;variable field width indicator + jne fixed_width + loades di,args + mov dx,es:[di] + add di,INTSIZE ;bump to next argument + mov word ptr args,di + lodsb ;skip over '*' + ret + +fixed_width: + sub dx,dx + mov ah,0 +pack_digits: + cmp al,'0' ;is character a digit ? + jb pack_done ;no, then we are done. + cmp al,'9' + ja pack_done + sub al,'0' ;put into absolute range 0-9 + shl dx,1 + mov cx,dx ;CX = DX*2 + shl dx,1 ;DX*4 + shl dx,1 ;DX*8 + add dx,cx ;DX*10 + add dx,ax ;accumulate value given + lodsb ;fetch next byte of format string + jmp pack_digits +pack_done: + ret +do_width endp + + pend format + finish + end + lcalloc.c +/* Copyright (C) Manx Software Systems, Inc. 1987. All rights reserved. */ + +huge void * +lcalloc(nelem, size) +unsigned long nelem, size; +{ + huge void *ptr; + huge long *lp; + huge void *lmalloc(); + + size *= nelem; + size = size+3 & ~3; + if ((ptr = lmalloc(size)) != (huge void *)0) { + size >>= 2; + for (lp = ptr ; size ; --size) + *lp++ = 0; + } + return ptr; +} + ldlmallo.c +/* Copyright (C) Manx Software Systems, Inc. 1985-1987. + All rights reserved. */ + +huge void * +lrealloc(area,size) +register char *area; unsigned long size; +{ + char *_realloc(); + + return _realloc(area,size); +} + +huge void * +lmalloc(size) +unsigned long size; +{ + char *_malloc(); + + return _malloc(size); +} + +lfree(p) +huge void *p; +{ + return free(p); +} + ldmalloc.c +/* Copyright (C) Manx Software Systems, Inc. 1985-1987. + All rights reserved. */ + +typedef unsigned long size_t; +char *_ptradd(); +long _ptrdiff(); +#define bump(p,i) ((l_t *)_ptradd((p),(i))) +#define ptrdiff(p1,p2) _ptrdiff(p1,p2) + +typedef struct list { + struct list *next; +} l_t; +static l_t first, *current; +static l_t *endmarker = &first, *restart = &first; +static size_t keep; + +#define INUSE 1 +#define inuse(p) (*(size_t *)(p)&INUSE) +#define markblk(p) (*(size_t *)(p) |= INUSE) +#define unmark(p) (*(size_t *)(p) &= ~INUSE) +#define chain(p) ((l_t *)(*(size_t *)(p) & ~INUSE)) + +#define BLOCK (1024*sizeof(l_t)) /* # of bytes to ask sbrk for */ + +char * +realloc(area,size) +register char *area; unsigned size; +{ + char *_realloc(); + + return _realloc(area,(unsigned long)size); +} + +char * +_realloc(area, size) +register char *area; unsigned long size; +{ + register char *cp, *end; + size_t osize; + char *_malloc(); + huge long *ptr, *orig; + + end = (char *)chain((l_t *)area-1); + if ((osize = ptrdiff(end, area)) > size) { + osize = size; + end = (char *)bump(area, osize); + } + free(area); + if ((cp = _malloc(size)) != 0 && cp != area) { + if (osize < 0xffffL) + movmem(area, cp, osize); + else { + osize = osize+3 >> 2; + orig = (huge long *)area; + for (ptr = (huge long *)cp ; osize ; --osize) + *ptr++ = *orig++; + } + if ((char *)current >= area && (char *)current < end) + *(size_t *)bump(cp, ptrdiff(current,area)) = keep; + } + return cp; +} + +char * +malloc(size) +unsigned size; +{ + char *_malloc(); + + return _malloc((unsigned long)size); +} + +char * +_malloc(size) +unsigned long size; +{ + register l_t *ptr, *temp, *lastfree; + register size_t len; + long times; + char *sbrk(); + + size = ((size+sizeof(l_t)*2-1)/sizeof(l_t))*sizeof(l_t); + if (current == 0) { + first.next = &first; + markblk(&first); + current = &first; + } + for (times = 0, lastfree = ptr = current ; ; ptr = chain(ptr)) { + if (ptr == endmarker) { + if (++times > 1) { + len = BLOCK; + if ((temp = (l_t *)sbrk((int)len)) == (l_t *)-1) + return 0; + if (temp != bump(ptr,(long)sizeof(l_t))) { + /* non-contiguous allocation */ + ptr->next = temp; + markblk(ptr); + len -= sizeof(l_t); + ptr = temp; + } + temp = bump(ptr, len); + ptr->next = temp; + temp->next = &first; /* new end marker */ + markblk(temp); + endmarker = temp; + if (chain(lastfree) == ptr) + ptr = lastfree; + } + } + if (inuse(ptr)) + continue; + lastfree = ptr; + while (!inuse(temp = chain(ptr))) { + ptr->next = temp->next; + if (temp == current) + current = &first; + } + len = ptrdiff(temp,ptr); + if (len >= size) { + if (len > size) { + ptr->next = bump(ptr, size); + keep = *(size_t *)ptr->next; + ptr->next->next = temp; + } + current = ptr->next; + markblk(ptr); + return (char *)(ptr+1); + } + } +} + +free(p) +char *p; +{ + register l_t *ptr; + + ptr = (l_t *)p - 1; + if (!inuse(ptr)) + return -1; + unmark(ptr); + current = ptr; + return 0; +} + lmalloc.c +/* Copyright (C) 1985 by Manx Software Systems, Inc. */ + +#ifdef __LDATA +typedef long size_t; +char *_ptradd(); +long _ptrdiff(); +#define bump(p,i) ((l_t *)_ptradd((p),(long)(i))) +#define ptrdiff(p1,p2) _ptrdiff(p1,p2) +#else +typedef unsigned size_t; +#define bump(p,i) ((l_t *)((char *)(p)+(i))) +#define ptrdiff(p1,p2) (unsigned)((char *)(p1)-(char *)(p2)) +#endif + +typedef struct list { + struct list *next; +} l_t; +static l_t first, *current; +static l_t *endmarker = &first, *restart = &first; +static size_t keep; + +#define INUSE 1 +#define inuse(p) (*(size_t *)(p)&INUSE) +#define markblk(p) (*(size_t *)(p) |= INUSE) +#define unmark(p) (*(size_t *)(p) &= ~INUSE) +#define chain(p) ((l_t *)(*(size_t *)(p) & ~INUSE)) + +#define BLOCK (512*sizeof(l_t)) /* # of bytes to ask sbrk for */ + +char * +realloc(area, size) +register char *area; unsigned size; +{ + register char *cp, *end; + size_t osize; + char *malloc(); + + end = (char *)chain((l_t *)area-1); + if ((osize = ptrdiff(end, area)) > size) { + osize = size; + end = (char *)bump(area, osize); + } + free(area); + if ((cp = malloc(size)) != 0 && cp != area) { + movmem(area, cp, osize); + if ((char *)current >= area && (char *)current < end) + *(size_t *)bump(cp, ptrdiff(current,area)) = keep; + } + return cp; +} + +char * +malloc(size) +unsigned size; +{ + register l_t *ptr, *temp, *lastfree; + register size_t len; + int times; + char *sbrk(); + + size = ((size+sizeof(l_t)*2-1)/sizeof(l_t))*sizeof(l_t); + if (current == 0) { + first.next = &first; + markblk(&first); + current = &first; + } + for (times = 0, lastfree = ptr = current ; ; ptr = chain(ptr)) { + if (ptr == endmarker) { + if (++times > 1) { + len = BLOCK; + if ((temp = (l_t *)sbrk((int)len)) == (l_t *)-1) + return 0; + if (temp != bump(ptr,sizeof(l_t))) { + /* non-contiguous allocation */ + ptr->next = temp; + markblk(ptr); + len -= sizeof(l_t); + ptr = temp; + } + temp = bump(ptr, len); + ptr->next = temp; + temp->next = &first; /* new end marker */ + markblk(temp); + endmarker = temp; + if (chain(lastfree) == ptr) + ptr = lastfree; + } + } + if (inuse(ptr)) + continue; + lastfree = ptr; + while (!inuse(temp = chain(ptr))) + ptr->next = temp->next; + len = ptrdiff(temp,ptr); + if (len >= size) { + if (len > size) { + ptr->next = bump(ptr, size); + keep = *(size_t *)ptr->next; + ptr->next->next = temp; + } + current = ptr->next; + markblk(ptr); + return (char *)(ptr+1); + } + } +} + +free(p) +char *p; +{ + register l_t *ptr; + + ptr = (l_t *)p - 1; + if (!inuse(ptr)) + return -1; + unmark(ptr); + current = ptr; + return 0; +} + makefile +OBJ=atoi.o atol.o calloc.o lcalloc.o ctype.o qsort.o format.o scan.o\ + sprintf.o sscanf.o rand.o abort.o raise.o signal.o sigtable.o +MOBJ=fscan.o fscan87.o fformat.o sprintf.o sscanf.o + +CC=cc +AS=as +MODEL= +AMODEL=0 + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +bld bldlc: $(OBJ) malloc.o + @echo misc done + +bldl bldld: $(OBJ) ldlmallo.o ldmalloc.o + @echo misc done + +math: $(MOBJ) + @echo math misc done + +fformat.o: format.asm + $(AS) -DFLOAT -dMODEL=$(AMODEL) format.asm -o $@ + sqz $@ + +fscan.o: scan.c + $(CC) -DFLOAT +$(MODEL) -n scan.c -o $@ + sqz $@ + +fscan87.o: scan.c + $(CC) -DFLOAT +$(MODEL) -n +e scan.c -o $@ + sqz $@ + +arc: + mkarcv misc.arc size) { + osize = size; + end = (char *)bump(area, osize); + } + free(area); + if ((cp = malloc(size)) != 0 && cp != area) { + movmem(area, cp, osize); + if ((char *)current >= area && (char *)current < end) + *(size_t *)bump(cp, ptrdiff(current,area)) = keep; + } + return cp; +} + +char * +malloc(size) +unsigned size; +{ + register l_t *ptr, *temp, *lastfree; + register size_t len; + int times; + char *sbrk(); + + size = ((size+sizeof(l_t)*2-1)/sizeof(l_t))*sizeof(l_t); + if (current == 0) { + first.next = &first; + markblk(&first); + current = &first; + } + for (times = 0, lastfree = ptr = current ; ; ptr = chain(ptr)) { + if (ptr == endmarker) { + if (++times > 1) { + len = BLOCK; + if ((temp = (l_t *)sbrk((int)len)) == (l_t *)-1) + return 0; + if (temp != bump(ptr,sizeof(l_t))) { + /* non-contiguous allocation */ + ptr->next = temp; + markblk(ptr); + len -= sizeof(l_t); + ptr = temp; + } + temp = bump(ptr, len); + ptr->next = temp; + temp->next = &first; /* new end marker */ + markblk(temp); + endmarker = temp; + if (chain(lastfree) == ptr) + ptr = lastfree; + } + } + if (inuse(ptr)) + continue; + lastfree = ptr; + while (!inuse(temp = chain(ptr))) + ptr->next = temp->next; + len = ptrdiff(temp,ptr); + if (len >= size) { + if (len > size) { + ptr->next = bump(ptr, size); + keep = *(size_t *)ptr->next; + ptr->next->next = temp; + } + current = ptr->next; + markblk(ptr); + return (char *)(ptr+1); + } + } +} + +free(p) +char *p; +{ + register l_t *ptr; + + ptr = (l_t *)p - 1; + if (!inuse(ptr)) + return -1; + unmark(ptr); + current = ptr; + return 0; +} + misc.bld +abort.c +atoi.c +atol.c +calloc.c +ctype.c +format.asm +lcalloc.c +ldlmallo.c +ldmalloc.c +lmalloc.c +makefile +malloc.c +misc.bld +qsort.c +raise.c +rand.c +scan.c +signal.c +sigtable.c +sprintf.c +sscanf.c + qsort.c +/* Copyright (C) 1984 by Manx Software Systems */ + +qsort(base, nel, size, compar) +char *base; unsigned nel, size; int (*compar)(); +{ + register char *i,*j,*x,*r; + auto struct stk { + char *l, *r; + } stack[16]; + struct stk *sp; + +#ifdef __LDATA /* added by R. Sherry Feb. 1 1988 for underflow problem */ + long ptrtoabs(); + void *abstoptr(); + + long good_address; + + good_address = ptrtoabs(base); + good_address -= size *2; /* double it for safety */ + base = abstoptr(good_address); + base += size *2; +#endif + + sp = stack; + r = base + (nel-1)*size; + for (;;) { + do { + x = base + (r-base)/size/2 * size; + i = base; + j = r; + do { + while ((*compar)(i,x) < 0) + i += size; + while ((*compar)(x,j) < 0) + j -= size; + if (i < j) { + swapmem(i, j, size); + if (i == x) + x = j; + else if (j == x) + x = i; + } + if (i <= j) { + i += size; + j -= size; + } + } while (i <= j); + if (j-base < r-i) { + if (i < r) { /* stack request for right partition */ + sp->l = i; + sp->r = r; + ++sp; + } + r = j; /* continue sorting left partition */ + } else { + if (base < j) { /* stack request for left partition */ + sp->l = base; + sp->r = j; + ++sp; + } + base = i; /* continue sorting right partition */ + } + } while (base < r); + + if (sp <= stack) + break; + --sp; + base = sp->l; + r = sp->r; + } +} + raise.c +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#include +#include + +extern void (*_sigfuns[])(int); + +int raise(int sig) +{ + register void (*handler)(int); + + if (sig < _FSTSIG || sig >= _FSTSIG+_NUMSIG) + return -1; + if ((handler = _sigfuns[sig - _FSTSIG]) == SIG_DFL) + _exit(255); + if (handler != SIG_IGN) + (*handler)(sig); + return 0; +} + rand.c +static unsigned long int next = 1; + +/* + * rand() returns a random number in the range of 0 to 32767. + */ +int rand() +{ + next = next * 1103515245 + 12345; + return (unsigned int)(next/65536) % 32768; +} + +/* + * srand() enables you to set the seed value of the rand() function. + */ +void srand(unsigned int seed) +{ + next = seed; +} + scan.c +/* Copyright (C) 1982, 1984 by Manx Software Systems */ +#include + +#ifdef FARMODIFIER +#define FAR far +#else +#define FAR +#endif + +#define EOF -1 + +static int maxwidth; +static int (*gsub)(); +static getnum(), skipblank(), getflt(); + +char *strchr(); + +scanfmt(getsub, fmt, arglist) +int (*getsub)(); register char *fmt; register char *arglist; +{ +#ifdef FLOAT + double atof(); +#endif + long lv; + register int c, count, base, cc; + char suppress, lflag, widflg; +#ifdef FARMODIFIER + char nearfar; +#endif + char FAR *ptr; + auto char tlist[130]; + static char list[] = "ABCDEFabcdef9876543210"; + static char vals[] = { + 10,11,12,13,14,15,10,11,12,13,14,15,9,8,7,6,5,4,3,2,1,0 + }; + + count = 0; + gsub = getsub; + while (c = *fmt++) { + if (c == '%') { + widflg = lflag = suppress = 0; +#ifdef FARMODIFIER + nearfar = 0; +#endif + maxwidth = 127; + if (*fmt == '*') { + ++fmt; + suppress = 1; + } + if (isdigit(*fmt)) { + maxwidth = 0; + do { + maxwidth = maxwidth*10 + *fmt - '0'; + } while (isdigit(*++fmt)); + widflg = 1; + } + +again: + switch (cc = *fmt++) { + case 'l': + lflag = 1; + goto again; + case 'h': /* specify short (for compatibility) */ + lflag = 0; + goto again; +#ifdef FARMODIFIER + case 'N': + nearfar = 0; + goto again; + case 'F': + nearfar = 1; + goto again; +#endif + + case '%': + c = '%'; + goto matchit; + case 'D': + lflag = 1; + case 'u': + case 'd': + decimal: + c = 12; + base = 10; + goto getval; + + case 'X': + lflag = 1; + case 'x': + c = 0; + base = 16; + goto getval; + + case 'O': + lflag = 1; + case 'o': + c = 14; + base = 8; + getval: + if (skipblank()) + goto stopscan; + if (getnum(&list[c], &vals[c], base, &lv) == 0) + goto stopscan; + if (!suppress) { +#ifdef FARMODIFIER + if (nearfar) { + ptr = *(void FAR **)arglist; + arglist += sizeof(void FAR *); + } else +#endif + { + ptr = *(void **)arglist; + arglist += sizeof(void *); + } + if (lflag) + *(long FAR *)ptr = lv; + else + *(int FAR *)ptr = lv; + ++count; + } + break; + +#ifdef FLOAT + case 'e': + case 'f': + if (skipblank()) + goto stopscan; + if (getflt(tlist)) + goto stopscan; + if (!suppress) { +#ifdef FARMODIFIER + if (nearfar) { + ptr = *(void FAR **)arglist; + arglist += sizeof(void FAR *); + } else +#endif + { + ptr = *(void **)arglist; + arglist += sizeof(void *); + } + if (lflag) + *(double FAR *)ptr = atof(tlist); + else + *(float FAR *)ptr = atof(tlist); + ++count; + } + break; +#endif + case '[': + lflag = 0; + if (*fmt == '^' || *fmt == '~') { + ++fmt; + lflag = 1; + } + +/* Fix so match [] will work. */ +/* Base is dead, therefor we can use it. R. Sherry 3/10/88 */ + for (base = 0 ; (cc = *fmt++) != ']' ; ) + tlist[base++] = cc; + tlist[base] = 0; + goto string; + case 's': + lflag = 1; + tlist[0] = ' '; + tlist[1] = '\t'; + tlist[2] = '\n'; + tlist[3] = 0; + string: + if (skipblank()) + goto stopscan; + charstring: + if (!suppress) { +#ifdef FARMODIFIER + if (nearfar) { + ptr = *(void FAR **)arglist; + arglist += sizeof(void FAR *); + } else +#endif + { + ptr = *(void **)arglist; + arglist += sizeof(void *); + } + } + widflg = 0; + while (maxwidth--) { + if ((c = (*gsub)(0)) == EOF) + break; + if (lflag ? (strchr(tlist,c)!=0) : (strchr(tlist,c)==0)) { + (*gsub)(1); /* unget last character */ + break; + } + if (!suppress) + *ptr++ = c; + widflg = 1; + } + if (!widflg) + goto stopscan; + if (!suppress) { + if (cc != 'c') + *ptr = 0; + ++count; + } + break; + + case 'c': + if (!widflg) + maxwidth = 1; + tlist[0] = 0; + lflag = 1; + goto charstring; + } + } else if (isspace(c)) { + if (skipblank()) + goto stopscan; + } else { +matchit: + if ((*gsub)(0) != c) { + (*gsub)(1); + goto stopscan; + } + } + } + +stopscan: + if (count == 0) { + if ((*gsub)(0) == EOF) + return EOF; + (*gsub)(1); + } + return count; +} + +static +skipblank() +{ + while (isspace((*gsub)(0))) + ; + if ((*gsub)(1) == EOF) + return EOF; + return 0; +} + +#ifdef FLOAT +static +getflt(buffer) +char *buffer; +{ + register char *cp; + register int c; + char decpt, sign, exp; + + sign = exp = decpt = 0; + + for (cp = buffer ; maxwidth-- ; *cp++ = c) { + c = (*gsub)(0); + if (!isdigit(c)) { + if (!decpt && c == '.') + decpt = 1; + else if (!exp && (c == 'e' || c == 'E') && cp != buffer) { + sign = 0; + exp = decpt = 1; + continue; + } else if (sign || (c != '-' && c != '+')) { + (*gsub)(1); + break; + } + } + sign = 1; + } + *cp = 0; + return cp==buffer; +} +#endif + +static +getnum(list, values, base, valp) +char *list; char *values; long *valp; +{ + register char *cp; + register int c, cnt; + long val; + int sign; + + if (maxwidth <= 0) + return 0L; + val = cnt = sign = 0; + if ((c = (*gsub)(0)) == '-') { + sign = 1; + ++cnt; + } else if (c == '+') + ++cnt; + else + (*gsub)(1); + + for ( ; cnt < maxwidth ; ++cnt) { + if ((cp = strchr(list, c = (*gsub)(0))) == 0) { + if (base == 16 && val == 0 && (c=='x' || c=='X')) + continue; + (*gsub)(1); + break; + } + val *= base; + val += values[cp-list]; + } + if (sign) + *valp = -val; + else + *valp = val; + return cnt; +} + signal.c +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ +#include +#include + +extern void (*_sigfuns[])(int); +static char setup; + +void (*signal(register int sig, void (*func)(int)))(int) +{ + register void (*retval)(int); + + if (!setup) { + _sig_setup(); + setup = 1; + } + if ((sig -= _FSTSIG) < 0 || sig >= _NUMSIG) { + errno = EINVAL; + return SIG_ERR; + } + retval = _sigfuns[sig]; + _sigfuns[sig] = func; + return retval; +} + sigtable.c +#include +void (*_sigfuns[_NUMSIG])(int)={0}; + sprintf.c +/* Copyright (C) 1982 by Manx Software Systems */ +static char *buff; + +sprintf(str,fmt,args) +char *str, *fmt; unsigned args; +{ + int spsub(); + register int i; + + buff = str; + i = format(spsub,fmt,&args); + *buff = 0; + return i; +} + +static +spsub(c) +{ + return (*buff++ = c)&0xff; +} + + sscanf.c +/* Copyright (C) 1983 by Manx Software Systems */ +static char *scnstr; +static char quit; + +sscanf(string, fmt, arg) +char *string, *fmt; int *arg; +{ + int sgetc(); + + scnstr = string; + quit = 0; + return scanfmt(sgetc, fmt, &arg); +} + +static +sgetc(what) +{ + if (what == 0) { + if (*scnstr) + return *scnstr++ & 255; + quit = 1; + } else { + if (!quit) + return *--scnstr & 255; + } + return -1; +} + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/ROM.ASM b/Manx Aztec C86 v42b/ARC/ROM.ASM new file mode 100644 index 0000000..0e414f8 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/ROM.ASM @@ -0,0 +1,117 @@ +; Copyright (C) 1984, 1985 by Manx Software Systems +; :ts=8 + include lmacros.h +; +; If you want your stack at a fixed place, you may remove the +; "bss cstack..." statement below and change the "mov sp,cstack..." +; to load SP with the value you desire. Note that the setup of +; SS may need to be changed also. If the program is small data +; model, then SS must be equal to DS or pointers to automatic +; variables won't work. +; +; Otherwise, stacksize should be set according to your program's +; requirements. +stacksize equ 2048 +; +; dataseg is the data segment address (as a paragraph #) +; this is picked from the -D option of the linker +; +;Dseg equ 040H ;physical addr 0x400, just above the int vectors + +dataseg segment word public 'data' + bss cstack:byte,stacksize + public $MEMRY +$MEMRY dw -1 + dw -1 + public errno_ +errno_ dw 0 + public _dsval_,_csval_ +_dsval_ dw 0 +_csval_ dw 0 + public _mbot_, _sbot_ +_mbot_ dw 0 + dw 0 +_sbot_ dw 0 + dw 0 +; +; The variable is used with csav and cret only. Therefore if you do not +; compile the the +c option or +b option you do not need this. +; + public _lowwater_ +_lowwater_ dw -1 + extrn _Dorg_:byte,_Dend_:byte + extrn _Uorg_:byte,_Uend_:byte +dataseg ends + extrn _Corg_:byte,_Cend_:byte + +ifdef FARPROC + extrn main_:far, $fltinit:far +else + extrn main_:near, $fltinit:near +endif + + public $begin +$begin proc far + cli + cld +; +; Compute where initialzed data starts (@ next para after code) +; + mov ax,offset _Cend_+15 + mov cl,4 + shr ax,cl + add ax,seg _Cend_ + mov ds,ax ;place where data is in rom + mov bx,dataseg ;place where data is to go in ram + mov es,bx +; +; Note: For hardware reasons the instruction which loads SS should +; be immediatly followed by the load of SP. +; + mov ss,bx + mov sp,offset cstack+stacksize +; +; copy Init data from rom to ram + mov di,0 + mov cx,offset _Dend_ + inc cx + shr cx,1 + jcxz nocopy + mov si,0 +rep movsw +nocopy: +; +; clear uninitialized data + mov di,offset _Uorg_ + mov cx,offset _Uend_ + sub cx,di + inc cx + shr cx,1 + jcxz noclear + sub ax,ax +rep stosw +noclear: +; + assume ds:dataseg,es:dataseg + + mov ds,bx ;set DS, now DS, SS, ES are equal + mov di,$MEMRY + inc di + and di,0fffeH ;adjust to word boundary + mov $MEMRY,di ;save memory allocation info for sbrk() + mov $MEMRY+2,ds + mov _mbot_,di + mov _mbot_+2,ds + mov _sbot_,0ffffH ;this is the heap limit for sbrk() + mov _sbot_+2,0fff0h + mov _dsval_,ds + mov _csval_,cs ;this is of dubious value in large code + sti + call $fltinit ;setup floating point software/hardware + jnc flt_ok + hlt ;program needs 8087 and one wasn't found +flt_ok: + jmp main_ ;main shouldn't return in ROM based system +$begin endp +codeseg ends + end $begin diff --git a/Manx Aztec C86 v42b/ARC/S.ARC b/Manx Aztec C86 v42b/ARC/S.ARC new file mode 100644 index 0000000..0cf7dec --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/S.ARC @@ -0,0 +1,424 @@ + makefile +# Copyright (C) Manx Software Systems, Inc. 1987. All rights reserved. + +# Note: the object files below are in the correct order for linking, +# thus the OBJ macro should be changed with caution. If you are in doubt, +# use the ORD utility to build a correctly ordered list. + +OBJ=cio.o scr_cdel.o scr_cins.o scr_clea.o scr_echo.o scr_eol.o\ + scr_eos.o scr_getc.o scr_home.o scr_inve.o scr_ldel.o scr_lins.o\ + scr_curs.o scr_loc.o scr_putc.o scr_call.o + +CC=cc +AS=as +MODEL= +AMODEL=0 + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +$(DIR)s$(MODEL).lib: $(OBJ) + del $(DIR)s$(MODEL).lib + lb $(DIR)s$(MODEL).lib $(OBJ) + @echo screen done + cio.c +extern int _attrib; + +static cputc(chr) +register int chr; +{ + scr_putc(chr); + + if (chr == '\n') + scr_putc('\r'); +} + +scr_puts(str) +register char *str; +{ + while(*str) + cputc(*str++); + + cputc('\n'); +} + +scr_printf(fmt,args) +register char *fmt; +unsigned args; +{ + format(cputc,fmt,&args); +} + +scr_setatr(back,frg,intens,blink) +register int back, frg; +register int intens, blink; +{ + register char tmp; + + tmp = _attrib; + _attrib = (back << 4) | frg; + + if (blink) + _attrib |= 128; + else + _attrib &= 127; + + if (intens) + _attrib |= 8; + else + _attrib &= 247; + + _attrib &= 255; + return(tmp); +} + +scr_getatr() +{ + return(_attrib); +} + +scr_resatr(atr) +register int atr; +{ + register char tmp; + + tmp = _attrib; + _attrib = atr; + return(tmp); +} + scr_call.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 + include lmacros.h +; +; scr_call(ax,bx,cx,dx) - issue int 10 with ax,... set to args +; +; + procdef scr_call,<,,,> + push si + push di + mov ax,aax + mov bx,bbx + mov cx,ccx + mov dx,ddx + int 10h + pop di + pop si + pret + pend scr_call + finish + end + scr_cdel.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * delete the char. at the cursor and put blank at end of line + */ + +#define max_width 80 + +extern int _attrib; + +scr_cdelete() +{ + register unsigned ch, x; + int lin, col; + + scr_loc(&lin, &col); + for (x = col ; x < max_width-1 ; ++x) { + scr_curs(lin, x+1); + ch = scr_call(0x0800,0,0,0); /* read out current char */ + scr_curs(lin, x); + scr_call(0x0900 | (ch&255), ch>>8, 1, 0); /* and shift over */ + } + scr_curs(lin, max_width-1); + scr_call(0x920, _attrib, 1, 0); /* put a blank at end of line */ + scr_curs(lin, col); + return(0); +} + scr_cins.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * insert a space at the cursor and delete the char. at end of line + */ + +#define max_width 80 +extern int _attrib; + +scr_cinsert() +{ + register unsigned ch, z; + int lin, col; + + scr_loc(&lin, &col); + for (z = max_width - 1 ; z > col ; --z) { + scr_curs(lin, z-1); + ch = scr_call(0x0800,0,0,0); /* read out current char */ + scr_curs(lin, z); + scr_call(0x0900 | (ch&255), ch>>8, 1, 0); /* and move it right */ + } + scr_curs(lin, col); + scr_call(0x920,_attrib,1,0); + return(0); +} + scr_clea.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * Clears the screen and homes the cursor + */ + +#define max_width 80 +#define max_y 25 + +extern int _attrib; + +scr_clear() +{ + scr_home(); + scr_call(0x920,_attrib,(max_width * max_y),0); + return(0); +} + scr_curs.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * Moves cursor to line lin, position pos + */ + +#define max_width 80 + +scr_curs(lin, col) +register int lin, col; +{ + if (col >= max_width) + col = max_width - 1; + if (lin >= 25) + lin = 24; + scr_call(0x200, 0, 0, (lin << 8) | col); + return(0); +} + scr_echo.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * if flg is zero disable echoing of characters + */ + +extern int _echo; + +scr_echo(flg) +int flg; +{ + _echo = flg; + return(0); +} + scr_eol.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * Clear to the end of line + */ + +extern int _attrib; + +scr_eol() +{ + int lin, col; + + scr_loc(&lin, &col); + scr_call(0x920, _attrib, 80-col, 0); + return(0); +} + scr_eos.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * clear to end of screen + */ + +extern int _attrib; + +scr_eos() +{ + int lin, col; + + scr_loc(&lin, &col); + scr_call(0x920, _attrib, (80-col)+((24-lin)*80), 0); + return(0); +} + scr_getc.asm +; Copyright (C) 1985 by Manx Software Systems +; :ts=8 + include lmacros.h +dataseg segment word public 'data' + public _echo_ +_echo_ db 0,0 +dataseg ends + assume ds:dataseg +ifdef FARPROC + extrn scr_putc_:far +else + extrn scr_putc_:near +endif +; +; scr_getc() - issue int 16 to get keyboard value +; returns normal ASCII chars as their value (0-127) +; special chars are in the range 128 - 255 +; cntl-break is returned as -2 +; + procdef scr_getc + mov ah,0 + int 16h + call mapchar + cmp _echo_,0 + jz no_echo + cmp ax,128 + jae no_echo + push ax + call scr_putc_ + pop ax +no_echo: + pret + pend scr_getc +; +; scr_poll() - polls keyboard for a character +; returns -1 for no character +; otherwise returns the character as above +; Note: this doesn't remove the char from the buffer +; + procdef scr_poll + mov ah,1 + int 16h + jnz mapit + mov ax,-1 + pret +mapit: + call mapchar + pret + pend scr_poll +; +mapchar proc near + test al,al + jz special + sub ah,ah + ret +special: + xchg al,ah + test al,al + jz ctl_brk + cmp al,3 + jne not_nul + sub ax,ax + ret +not_nul: + or al,80H + ret +ctl_brk: + mov ax,-2 + ret +mapchar endp +; + finish + end + scr_home.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * Homes the cursor (0, 0) + */ + +scr_home() +{ + scr_curs(0, 0); + return(0); +} + scr_inve.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * if flg is zero turn on inverse + */ + +extern int _attrib; + +scr_invers(flg) +int flg; +{ + _attrib = flg ? 0x70 : 0x07; + return(0); +} + scr_ldel.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * Deletes line at lin, blank lines at bottom + */ + +extern int _attrib; + +scr_ldelete() +{ + int lin, col; + + scr_loc(&lin, &col); + scr_call(0x600 | 1, _attrib<<8, lin<<8, (24<<8) | 79); + scr_curs(lin, 0); + return(0); +} + scr_lins.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * Inserts blank lines at lin, pushing rest down + */ + +extern int _attrib; + +scr_linsert() +{ + int lin, col; + + scr_loc(&lin, &col); + scr_call(0x700 | 1, _attrib<<8, lin<<8, (24<<8) | 79); + scr_curs(lin, 0); + return(0); +} + scr_loc.asm +; Copyright (C) 1984 by Manx Software Systems +; :ts=8 +; +; scr_loc(lin, col) - place the location of the cursor in line and column +; + include lmacros.h +; + procdef scr_loc,<,> +; + pushds + mov ah,3 + mov bh,0 + int 10h ; find the location of cursor + ldptr bx,lin,ds ; move address of line into bx + mov 0[bx],dh ; move cursor location into memory + mov byte ptr 1[bx],0 + ldptr bx,col,ds ; move addres of col. into bx + mov 0[bx],dl ; move cursor location into memory + mov byte ptr 1[bx],0 + popds + pret + pend scr_loc + finish + end + scr_putc.c +/* Copyright (C) 1984 by Manx Software Systems, Inc. */ +/* + * display the character at the cursor + */ + +int _attrib = 0x07; + +scr_putc(c) +register int c; +{ + c &= 255; + if (c >= 0x20) + scr_call(0x0900 | c, _attrib,1,0); + scr_call(0x0e00 | c, _attrib); + return c; +} + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/STDIO.ARC b/Manx Aztec C86 v42b/ARC/STDIO.ARC new file mode 100644 index 0000000..52a71c7 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/STDIO.ARC @@ -0,0 +1,743 @@ + makefile +OBJ=agetc.o aputc.o fdopen.o fgets.o fopen.o fprintf.o fputs.o fread.o\ + fscanf.o fseek.o fwrite.o getbuff.o getc.o getchar.o gets.o getw.o\ + mktemp.o perror.o printf.o putc.o putchar.o puterr.o puts.o putw.o\ + scanf.o setbuf.o tmpfile.o tmpnam.o ungetc.o assert.o + +MOBJ=fprintf.o fscanf.o printf.o scanf.o + +CC=cc +AS=as +MODEL= +AMODEL=0 + +.c.o: + $(CC) +$(MODEL) -n $*.c -o $@ + sqz $@ + +.asm.o: + $(AS) -dMODEL=$(AMODEL) $*.asm -o $@ + sqz $@ + +bld bldl bldld bldlc: $(OBJ) + @echo stdio done + +math: $(MOBJ) + @echo math stdio done + agetc.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +int _agetc_mask = 0xff; + +agetc(ptr) +register FILE *ptr; +{ + register int c; + +top: + if ((c = getc(ptr)) != EOF) { + switch (c &= _agetc_mask) { + case 0x1a: + ptr->_flags |= _EOF; + return EOF; + case '\r': + case 0: + goto top; + } + } + return c; +} + aputc.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +aputc(c,ptr) +register int c; register FILE *ptr; +{ + if (c == '\n') + if (putc('\r',ptr) == EOF) + return EOF; + return putc(c,ptr); +} + + assert.c +#include + +void _assert(char *expr, char *filename, unsigned int linenumber) +{ + fprintf(stderr, "Assert(%s) failed at line %u in file %s.\n", + expr, linenumber, filename); + abort(); +} + fdopen.c +/* Copyright (C) 1984 by Manx Software Systems */ +#include "stdio.h" + +FILE * +fdopen(fd,mode) +char *mode; +{ + register FILE *fp; + FILE *newstream(); + + if ((fp = newstream()) == NULL) + return NULL; + fp->_unit = fd; + fp->_flags = _BUSY; + return fp; +} + + fgets.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +char *fgets(s, n, fp) +char *s; FILE *fp; +{ + register c; + register char *cp; + + cp = s; + while (--n > 0 && (c = agetc(fp)) != EOF) { + *cp++ = c; + if (c == '\n') + break; + } + *cp = 0; + if (c == EOF && cp == s) + return NULL; + return(s); +} + fopen.c +/* Copyright (C) 1981,1982,1983,1984 by Manx Software Systems */ +#include "stdio.h" +#include "fcntl.h" +#include "errno.h" + +extern int errno; + +static struct modes { + char fmode[3]; + int omode; +} modes[] = { + "r", O_RDONLY, + "r+", O_RDWR, + "w", (O_WRONLY|O_CREAT|O_TRUNC), + "w+", (O_RDWR|O_CREAT|O_TRUNC), + "a", (O_WRONLY|O_CREAT|O_APPEND), + "a+", (O_RDWR|O_CREAT|O_APPEND), + "x", (O_WRONLY|O_CREAT|O_EXCL), + "x+", (O_RDWR|O_CREAT|O_EXCL), + "", 0, +}; + +FILE * +fopen(name,mode) +char *name,*mode; +{ + register FILE *fp; + FILE *newstream(), *freopen(); + + if ((fp = newstream()) == NULL) + return NULL; + return freopen(name, mode, fp); +} + +FILE * +freopen(name, mode, fp) +char *name,*mode; FILE *fp; +{ + register struct modes *mp; + register int fd; + + fclose(fp); + + for (mp = modes ; ; ++mp) { + if (*mp->fmode == 0) { + errno = EINVAL; + return NULL; + } + if (strcmp(mp->fmode, mode) == 0) + break; + } + +/* + Don't try to optimize the next 3 lines. Since _unit is a char, + assigning to it in the if statement will cause the -1 test to fail + on unsigned char machines. +*/ + if ((fd = open(name, mp->omode)) == -1) + return (NULL); + fp->_unit = fd; + fp->_flags = _BUSY; + return fp; +} + + fprintf.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +static FILE *Stream; + +fprintf(stream,fmt,args) +FILE *stream; char *fmt; unsigned args; +{ + int fpsub(); + + Stream = stream; + return format(fpsub,fmt,&args); +} + +static +fpsub(c) +{ + return aputc(c,Stream); +} + fputs.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +fputs(s,fp) +register char *s; +FILE *fp; +{ + while ( *s ) + if (aputc(*s++,fp) == EOF) + return(EOF); + return 0; +} + fread.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +fread(buffer,size,number,stream) +register char *buffer; unsigned size; int number; +FILE *stream; +{ + int total; + register int c,i; + + for ( total = 0 ; total < number ; ++total ) { + for ( i = size ; i ; --i ) { + if ( (c = getc(stream)) == EOF ) + return total; + *buffer++ = c; + } + } + return total; +} + fscanf.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include "stdio.h" + +static gchar(); +static int scnlast; +static FILE *scnfp; + +fscanf(fp, fmt, args) +FILE *fp; char *fmt; int *args; +{ + int gchar(); + + scnfp = fp; + scnlast = 0; + return scanfmt(gchar, fmt, &args); +} + +static gchar(what) +{ + if (what == 0) { + if (feof(scnfp)) + scnlast = EOF; + else + scnlast = agetc(scnfp); + } else + scnlast = ungetc(scnlast, scnfp); + return scnlast; +} + + fseek.c +/* Copyright (c) 1981, 1982 by Manx Software Systems */ +#include "stdio.h" + +fseek(fp,pos,mode) +register FILE *fp; +long pos; +{ + register int i; + long curpos, lseek(); + + fp->_flags &= ~_EOF; + if (fp->_flags & _DIRTY) { + if (flsh_(fp,-1)) + return EOF; + } else if (mode == 1 && fp->_bp) + pos -= fp->_bend - fp->_bp; + fp->_bp = fp->_bend = NULL; + if (lseek(fp->_unit, pos, mode) < 0) + return EOF; + return 0; +} + +long ftell(fp) +register FILE *fp; +{ + long pos, lseek(); + + pos = lseek(fp->_unit, 0L, 1); /* find out where we are */ + if (fp->_flags & _DIRTY) + pos += fp->_bp - fp->_buff; + else if (fp->_bp) + pos -= fp->_bend - fp->_bp; + return pos; +} + fwrite.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +fwrite(buffer,size,number,stream) +register char *buffer; unsigned size,number; +FILE *stream; +{ + register unsigned i,max; + + max = size * number; + for ( i = 0 ; i < max ; ++i ) { + if ( putc(*buffer++,stream) == EOF ) + return 0; + } + return number; +} + + getbuff.c +/* Copyright (C) 1983 by Manx Software Systems */ +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +FILE Cbuffs[MAXSTREAM] = { + { 0,0,0, _BUSY,0,0,1 }, + { 0,0,0, _BUSY,1,0,1 }, + { 0,0,0, _BUSY,2,0,1 }, + { 0,0,0, _BUSY,3,0,1 }, + { 0,0,0, _BUSY,4,0,1 }, +}; + +FILE * +newstream() +{ + register FILE *fp; + + fp = Cbuffs; + while (fp->_flags) + if (++fp >= &Cbuffs[MAXSTREAM]) + return NULL; + return fp; +} + +getbuff(ptr) +register FILE *ptr; +{ + char *buffer, *malloc(); + + if (isatty(ptr->_unit)) { +smlbuff: + ptr->_buflen = 1; + ptr->_buff = &ptr->_bytbuf; + return; + } + if ((buffer = malloc(BUFSIZ)) == NULL) + goto smlbuff; + ptr->_buflen = BUFSIZ; + ptr->_flags |= _ALLBUF; + ptr->_buff = buffer; + return; +} + + getc.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include "stdio.h" + +getc(ptr) +register FILE *ptr; +{ + register int len; + + if (ptr->_bp >= ptr->_bend) { + if (ptr->_flags&(_EOF|_IOERR)) + return EOF; + ptr->_flags &= ~_DIRTY; + if (ptr->_buff == NULL) + getbuff(ptr); + if ((len = read(ptr->_unit,ptr->_buff,ptr->_buflen)) <= 0) { + ptr->_flags |= len==0 ? _EOF : _IOERR; + return EOF; + } + ptr->_bend = (ptr->_bp = ptr->_buff) + len; + } + return *ptr->_bp++ & 255; +} + getchar.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +#undef getchar + +getchar() +{ + return agetc(stdin); +} + gets.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +#undef getchar + +char *gets(line) +char *line; +{ + register char *cp; + register int i; + + cp = line; + while ((i = getchar()) != EOF && i != '\n') + *cp++ = i; + *cp = 0; + if (i == EOF && cp == line) + return NULL; + return line; +} + getw.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include "stdio.h" + +getw(stream) +FILE *stream; +{ + register int x1,x2; + + if ((x1 = getc(stream)) == EOF || (x2 = getc(stream)) == EOF) + return EOF; + return (x2<<8) | x1; +} + mktemp.c +#ifdef DOS11 +#include +#endif + +char * +mktemp(template) +char *template; +{ + register char *cp; + register unsigned val; + extern unsigned _dsval; +#ifdef DOS11 + int file; +#endif + + cp = template; + cp += strlen(cp); + for (val = _dsval ; ; ) + if (*--cp == 'X') { + *cp = val%10 + '0'; + val /= 10; + } else if (*cp != '.') + break; + + if (*++cp == '.') /* allow for "abcd.XXX" type file names */ + ++cp; + if (*cp != 0) { + *cp = 'A'; +#ifdef DOS11 + while ((file = open(template, O_RDONLY)) >= 0) { + close(file); +#else + while (access(template, 0) == 0) { +#endif + if (*cp == 'Z') { + *template = 0; + break; + } + ++*cp; + } + } else { +#ifdef DOS11 + if ((file = open(template, O_RDONLY)) >= 0) { + close(file); +#else + if (access(template, 0) == 0) { +#endif + *template = 0; + } + } + return template; +} + perror.c +#include +#include + +perror (s) +char *s; +{ + if (errno < 0 || errno > sys_nerr) + return -1; + if (s) + fprintf (stderr, "%s: ", s); + fprintf (stderr, "%s\n", sys_errlist[errno]); + return 0; +} + printf.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ + +printf(fmt,args) +char *fmt; unsigned args; +{ + extern int putchar(); + + format(putchar,fmt,&args); +} + putc.c +/* Copyright (C) 1981,1982,1983,1984 by Manx Software Systems */ +#include "stdio.h" + +putc(c,ptr) +int c; register FILE *ptr; +{ + if (ptr->_bp >= ptr->_bend) + return flsh_(ptr,c&0xff); + return (*ptr->_bp++ = c) & 0xff; +} + +static closall() /* called by exit to close any open files */ +{ + register FILE *fp; + + for ( fp = Cbuffs ; fp < Cbuffs+MAXSTREAM ; ) + fclose(fp++); +} + +fclose(ptr) +register FILE *ptr; +{ + register int err; + + err = 0; + if (!ptr) + return -1; + if ( ptr->_flags ) { + if (ptr->_flags&_DIRTY) /* if modifed flush buffer */ + err = flsh_(ptr,-1); + err |= close(ptr->_unit); + if (ptr->_flags&_ALLBUF) + free(ptr->_buff); + if (ptr->_flags&_TEMP) { /* temp file, delete it */ + unlink(ptr->_tmpname); + free(ptr->_tmpname); + } + } + + ptr->_buff = + ptr->_bend = /* nothing in buffer */ + ptr->_bp = 0; + ptr->_flags = 0; + return err; +} + +flsh_(ptr,data) +register FILE *ptr; +{ + register int size; + extern int (*cls_)(); + + cls_ = closall; + if (ptr->_flags & _IOERR) + return EOF; + if (ptr->_flags & _DIRTY) { + size = ptr->_bp - ptr->_buff; + if (write(ptr->_unit, ptr->_buff, size) != size) { +ioerr: + ptr->_flags |= _IOERR; + ptr->_bend = ptr->_bp = NULL; + return EOF; + } + } + if (data == -1) { + ptr->_flags &= ~_DIRTY; + ptr->_bend = ptr->_bp = NULL; + return 0; + } + if (ptr->_buff == NULL) + getbuff(ptr); + if (ptr->_buflen == 1) { /* unbuffered I/O */ + if (write(ptr->_unit, &data, 1) != 1) + goto ioerr; + return data; + } + ptr->_bp = ptr->_buff; + ptr->_bend = ptr->_buff + ptr->_buflen; + ptr->_flags |= _DIRTY; + return (*ptr->_bp++ = data) & 0xff; +} + putchar.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +#undef putchar + +putchar(c) +{ + return aputc(c,stdout); +} + puterr.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +puterr(c) +{ + return aputc(c, stderr); +} + puts.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ + +puts(str) +register char *str; +{ + while (*str) + if (putchar(*str++) == -1) + return -1; + return putchar('\n'); +} + putw.c +/* Copyright (C) 1981,1982 by Manx Software Systems */ +#include "stdio.h" + +putw(w,stream) +register unsigned w; +FILE *stream; +{ + if ( putc(w,stream) < 0 ) + return EOF; + else if ( putc((w>>8),stream) < 0 ) + return EOF; + return w; +} + scanf.c +/* Copyright (C) 1982 by Manx Software Systems */ +#include "stdio.h" + +static gchar(); + +static int scnlast; + +scanf(fmt, args) +char *fmt; int *args; +{ + int gchar(); + + scnlast = 0; + return scanfmt(gchar, fmt, &args); +} + +static gchar(what) +{ + if (what == 0) { + if (feof(stdin)) + scnlast = EOF; + else + scnlast = agetc(stdin); + } else + scnlast = ungetc(scnlast, stdin); + return scnlast; +} + + setbuf.c +/* Copyright (C) 1981,1982 by Manx Software Systems and Thomas Fenwick */ +#include "stdio.h" + +setbuf(stream, buffer) +register FILE *stream; char *buffer; +{ + if (stream->_buff) + return; + if (buffer) { + stream->_buff = buffer; + stream->_buflen = BUFSIZ; + } else { + stream->_buff = &stream->_bytbuf; + stream->_buflen = 1; + } +} + + tmpfile.c +#include + +/* returns a pointer for a temp file which is automatically deleted + when the program exits; the file is opened for update */ + +FILE * +tmpfile () +{ + register char *cp; + register FILE *fp; + char *tmpnam(), *malloc(); + + cp = tmpnam (NULL); + if ( (fp = fopen (cp, "w+")) == NULL ) + perror (cp); + else { + if ((fp->_tmpname = malloc(strlen(cp)+1)) == NULL) { + fclose(fp); + unlink(cp); + return NULL; + } + strcpy(fp->_tmpname,cp); + fp->_flags |= _TEMP; + } + return fp; +} + + tmpnam.c +#include + +static char work[] = "AAAAA"; + +char * +tmpnam(s) +char *s; +{ + static char tmpbuf[L_tmpnam]; + register char *cp; + + if (s == NULL) + s = tmpbuf; + for (;;) { + strcpy(s,P_tmpdir); + strcat(s,work); + strcat(s,"XXX.XXX"); + for (cp = work ; *cp ; ++cp) + if (*cp == 'Z') + *cp = 'A'; + else { + ++*cp; + break; + } + if (mktemp(s)) + break; + } + return s; +} + ungetc.c +/* Copyright (c) 1981, 1982 by Manx Software Systems */ +#include "stdio.h" + +ungetc(c,ptr) +int c; register FILE *ptr; +{ + if (c == EOF || ptr->_bp <= ptr->_buff) + return EOF; + *--ptr->_bp = c; + return c; +} + + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/ARC/TERM.ARC b/Manx Aztec C86 v42b/ARC/TERM.ARC new file mode 100644 index 0000000..cafb230 --- /dev/null +++ b/Manx Aztec C86 v42b/ARC/TERM.ARC @@ -0,0 +1,322 @@ + term.mk +OBJ=term.o pcio.o + +term.exe: $(OBJ) + ln -o term.exe $(OBJ) -ls -lc + term.c +#define XOFF 0x13 +#define XON 0x11 + +main(argc, argv) +char **argv; +{ + register int speed, channel; + + printf("Manx term 4.10a (Use F1 to exit)\n"); + channel = 1; + if (argc > 1 && argv[1][0]=='-') { + channel = argv[1][1] - '0'; + if (channel < 1 || channel > 2) { + printf("Invalid unit #.\n"); + printf("Usage: term [-1 | -2] [speed]\n"); + exit(1); + } + --argc; + ++argv; + } + + speed = 0; + if (argc > 1) + speed = atoi(argv[1]); + term(speed, channel); + comrest(); +} + +#undef putchar + +putchar(c) +{ + scr_putc(c); + if (c == '\n') + scr_putc('\r'); + return c; +} + +#define INQSIZ 256 /* these sizes must be powers of two */ +#define OUTQSIZ 16 + +unsigned char inqh, inqt, outqh, outqt; +unsigned char inpq[INQSIZ], outq[OUTQSIZ]; +int inqcnt; +char mode, stopped, xoffsent; + +term(speed, channel) +{ + /* + * Inpq is the queue of characters from the com line, waiting to go to + * the console. Outq is from the console, waiting to go to the com line + */ + register int c, row; + + cominit(speed, channel); + for (;;) { + if (scr_poll() != -1) { + c = scr_getc(); + if (c == (59|0x80)) /* check for F1 to exit */ + return c; + if (c == (83|0x80)) + c = 0x7f; /* map DEL key to ascii DEL */ + outq[outqh] = c; + outqh = outqh+1 & OUTQSIZ-1; + } + + if (inqh != inqt) { + c = inpq[inqt] & 0x7f; /* strip parity */ + ++inqt; + --inqcnt; + switch (mode) { + case 1: + mode = 0; + switch (c) { +#ifdef DOWNLOAD + case 02: case 03: /* initiate upload/download sequence */ + download(); + continue; +#endif + case 'Q': /* insert a blank @ cursor pos */ + scr_cinsert(); + continue; + case 'W': /* delete the char @ cursor pos */ + scr_cdelete(); + continue; + case 'E': /* insert a blank line @ cursor pos */ + scr_linsert(); + continue; + case 'R': /* delete the line @ cursor pos */ + scr_ldelete(); + continue; + case 'T': /* clear to end of line */ + scr_eol(); + continue; + case '*': /* home cursor & clear screen */ + scr_clear(); + continue; + case '=': /* cursor move sequence */ + mode = 2; + continue; + } + /* fall thru into normal character processing */ + + case 0: + if (c == 0x1b) + mode = 1; + else if (c == 032) + scr_clear(); + else + scr_putc(c); + break; + + case 2: /* row character for cursor move */ + row = c - 32; + mode = 3; + continue; + + case 3: /* column character for cursor move */ + c -= 32; + scr_curs(row, c); + mode = 0; + continue; + } + } + + if (inqcnt > 200 && !stopped) { + if (comput(XOFF) == 0) + stopped = xoffsent = 1; + } else if (xoffsent && inqcnt < 30) { + if (comput(XON) == 0) + stopped = xoffsent = 0; + } else if (outqt != outqh && comput(outq[outqt]) == 0) { + stopped = 0; + outqt = outqt+1 & OUTQSIZ-1; + } + } +} + pcio.asm +;:ts=8 +; +; IBM PC Support routines +; + include lmacros.h + +dataseg segment word public 'data' +BASE equ 3f8H + +DATA dw BASE+0 ;data register +INTENAB dw BASE+1 ;interrupt enable +DIVLAT dw BASE+0 ;divisor latch (least sig. byte) +INTID dw BASE+2 ;interrupt identification +LINECTL dw BASE+3 ;line control +MODCTL dw BASE+4 ;modem control +LINSTAT dw BASE+5 ;line status +MODSTAT dw BASE+6 ;modem status + +INTNUM db 12 ;COM1 interrupt vector # +INTMASK db 10H ;bit mask for 8259. +INTCTL equ 20h ;8259 control register +INTCHIP equ 21h ;8259 mask register + +extrn inqh_:byte, inqt_:byte, inqcnt_:word +extrn inpq_:byte + +vec_save dd ? +intr_reg db ? +intr_chp db ? +dataseg ends + + + assume ds:dataseg + +data_add dw ? ;codesegment variable for location of dataseg in 'C' + + procdef comput,<> + mov dx,LINSTAT + in al,dx + and ax,20H ;is the transmitter ready? + jz notready ;not yet + mov bx,sp + mov al,byte ptr outvalue + mov dx,DATA + out dx,al ;output the data + sub ax,ax + pret +notready: + mov ax,-1 + pret + pend comput + + procdef cominit,<,> + cmp channel,1 + je skipfix +; +; we are using SERIAL2, adjust I/O ports, and Int vectors +; + mov bx,offset DATA + mov al,2 +fixloop: + mov byte ptr 1[bx],al + add bx,2 + cmp bx,offset MODSTAT + jbe fixloop + dec INTNUM ;serial2 uses IRQ3 + shr INTMASK,1 + +skipfix: + mov data_add,ds ;mov 'C' dataseg address to var. + push es + mov ah,35h ;ask DOS for current int vector + mov al,INTNUM + int 21h + mov word ptr vec_save,bx + mov word ptr vec_save+2,es + mov ah,25h ;ask DOS to set new int vector + mov al,INTNUM + push ds + mov dx,cs + mov ds,dx + mov dx,offset intsr ;addr of interupt service in DS:DX + int 21h + pop ds + pop es + + mov dx,INTENAB ;get contents of interupt enable reg. + in al,dx + mov intr_reg,al ;sav contents of interupt enable reg. + mov al,0 ;disable interupts for now + out dx,al + mov dx,INTCHIP ;get contents of interupt chip + in al,dx + mov intr_chp,al ;sav contents of interupt chip + mov cl,INTMASK + not cl + and al,cl + out dx,al ;turn on interupt chip + + cmp speed,0 + je nosetup + + mov al,80H + mov dx,LINECTL + out dx,al + mov ax,0c200H + mov dx,1 ;dividend = 0x1c200 + div speed ;compute baud rate divisor + mov dx,DIVLAT + out dx,al ;setup com port to given baud rate + mov al,ah + inc dx ;second byte of divisor latch + out dx,al +nosetup: + mov al,03H ;set 8 data, 1 stop, no parity + mov dx,LINECTL + out dx,al + inc dx + mov al,0bh ;turn on DTR, RTS and enable ints + out dx,al + mov al,020h ;send EOI to 8259 + out INTCTL,al + mov dx,DATA + in al,dx ;just in case one was waiting for us + mov dx,INTENAB ;now turn on 8250 interupts + mov al,01H ;enable data ready intr. + out dx,al + pret + pend cominit + + procdef comrest + mov al,intr_reg + mov dx,INTENAB + out dx,al + mov al,intr_chp + mov dx,INTCHIP + out dx,al +; + push ds + mov ah,25h ;ask DOS to restore old int vector + mov al,INTNUM + lds dx,vec_save + int 21H + pop ds + pret + pend comrest + + public intsr +intsr proc far + push ds + push ax + push dx + push bx + mov ds,data_add + mov dx,DATA + in al,dx ;yes, get the byte + sub bx,bx + mov bl,inqh_ + mov byte ptr inpq_[bx],al ;mov char. into cue + inc bl ;increment cue head will wrap at 255 + cmp bl,inqt_ + je no_overflow + mov inqh_,bl + inc inqcnt_ +no_overflow: +; + mov al,020h ;send EOI to 8259 + out INTCTL,al + pop bx + pop dx + pop ax + pop ds + iret +intsr endp + + finish + end + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/AZTEC.BAT b/Manx Aztec C86 v42b/AZTEC.BAT new file mode 100644 index 0000000..714129a --- /dev/null +++ b/Manx Aztec C86 v42b/AZTEC.BAT @@ -0,0 +1,12 @@ +@echo off +if "%CLIB%" == "" goto START +goto END + + This is a modified version of the AZTEC Batch which should + run on either a floppy or a hard drive... + +:START +set CLIB=\AZTECC86\LIB\; +set INCLUDE=\AZTECC86\INCLUDE\; +set PATH=\AZTECC86\BIN;%PATH%; +:END diff --git a/Manx Aztec C86 v42b/Aztec C86 Command Prompt.lnk b/Manx Aztec C86 v42b/Aztec C86 Command Prompt.lnk new file mode 100644 index 0000000000000000000000000000000000000000..0753ca2b8a3526dda878bc881c717ed2766243a0 GIT binary patch literal 1765 zcmcIkTWAwm82*w;vEDF+xVByk8rjuute3W0RFu|Aw6w(vRm?)#BxYeT4dz=$se zUos+yqBf2`D2V#tn<7EWA}DLUAXXNs_-s?wLW%5bZ()Z{xVPHlIh$y--l-_(eO(BQzkTUS?HE9E3)+ojxle z{$eL?_LQw~3p)9Psr9kytX?V?&2CoF#z$liD-*ti6)fXZM(qmBqTWN>+^LNhEw{JH z?6s19>v6!GRsdC4iE>VB2{!YGNbNRfb_3?F4_S=|EtJBT^GiMDR^j6CIM=wl(fp`e zIy=MeaRw)o9S7u#{9f>TKiIE7FtnO!x{_lcvit=rHwp!M2MoZ*=d_|(uA zz>eC7hBmhAn2N2}6^6bY%5%n4KjVncarzXF#?)TgCtjXVoojW~Lj09KBX^1t6=-8l zq2Jo4DkZqGO!5#2q~7s=FYd#iP2^)|Rca@e34N9+U~{B?Q<4b7FFm5Z0zOy-t5 zKv4SXr~S@?!%FPBNUfZ!PDNFmdl!h3Z|vj|&qnDWz~g~qp$3Iv-YtsQ~Zl)!b=9b5R%j2)Y=?3w<>x#-}3 z&3lHA{y#ieaQO~gi{3u3``P||#$b){3HXQxl-L?jl!+}&KBl0QG{zZi<^8jdcVa6# zc-Gsf4e>56BR!}5n_k;vwT8;4G{B&z-z05wFI`mk$DHQDyi59HWKjyro$MfHAqwzC kG@2q@$s&P~%i9#*mqQ*s>bDimdNg{AMM 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/AS.EXE b/Manx Aztec C86 v42b/BIN/AS.EXE new file mode 100644 index 0000000000000000000000000000000000000000..12af38b959eb3630373d5fe74e2f3f14dee9e0ee GIT binary patch literal 51602 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/C.EXE b/Manx Aztec C86 v42b/BIN/C.EXE new file mode 100644 index 0000000000000000000000000000000000000000..e3b1af75c743cf748297e2aef1a872d1574d51da GIT binary patch literal 10122 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/CC.EXE b/Manx Aztec C86 v42b/BIN/CC.EXE new file mode 100644 index 0000000000000000000000000000000000000000..19dcdc18c080503eb3faeea47f2a78e15f372a12 GIT binary patch literal 57020 zcmeFad3;nw`Zrp=cUHn0wgiw4J57KPkSw4iCn|_hu|p#QZj3YIxL|h#3?bOEbdD%9 z3-0PpwZq z_0&_(R&}nN@h-cISy*3|<1mchQtr5uu^z88Jj;JQ@%#V(_y1iCT&EuKMLz0L&T}{T z`6OqAv2vdOFMoZdr@q=#|DdPA`H*L!htFGXR631HJMU!)ZMAc4xsh*WeB4rh{VI=< zZe?|Lrta9e&-UM)`^tGgB>&CRCQ02^_cxDibNwTpI%lGsEM4zJhbJEJ*FWa5Ii0M2 zwTEXqd1e}Q_(R1{<1yXHf7%o2i=?Xc0H&t+StRxnkXQZF zKh*i4r`*V2tzt+RgtoIxF>pc9}db6eOkvIF7^Zjr5BbE5xgKs

3J~(Mp8?;3@g@ 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 BDjWa+ literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/CGEN.EXE b/Manx Aztec C86 v42b/BIN/CGEN.EXE new file mode 100644 index 0000000000000000000000000000000000000000..ea7a44b00d9e816d39a361ba3168a9f2da0f74a8 GIT binary patch literal 97710 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/CPP.EXE b/Manx Aztec C86 v42b/BIN/CPP.EXE new file mode 100644 index 0000000000000000000000000000000000000000..bc9808b362be831fdc5674c6d9eea3cd388ed45b GIT binary patch literal 20252 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/CTOENG.COM b/Manx Aztec C86 v42b/BIN/CTOENG.COM new file mode 100644 index 0000000000000000000000000000000000000000..4a31e41778c2f141a2cc1cd662e3d6b70c161107 GIT binary patch literal 11422 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

(7gT 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 Bok#!x literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/ENGTOC.COM b/Manx Aztec C86 v42b/BIN/ENGTOC.COM new file mode 100644 index 0000000000000000000000000000000000000000..81c47b7ee7ec8530ed18e7722cb75ea8922b46cf GIT binary patch literal 5914 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 W9g==?pa{oL`+vnFFRv|6r~e-${31dC literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/GREP.EXE b/Manx Aztec C86 v42b/BIN/GREP.EXE new file mode 100644 index 0000000000000000000000000000000000000000..88096403505eff60d07dcccb308808ce3111cd35 GIT binary patch literal 6706 zcmdT}i+dDRmcP|qUES%BqzMK{cYtP5oSlp$VuRE|H)a|X4X zl`1)DQfS_E!I)?zQZFC!5Yd>}K$_XD%90qjH;+-Cj&X0`wKB%NiC0yO`!imPV%$Ew z9tWK_Ixg2MGuChytIU6x@MHlgCqA;AtR!nl4XGo3=I2Z)^AqN$%t&h$!?paS^-#sZ zdZs;{B(MD`U;6v(Dzo}U;-A$)(L%-h@`&&^R6=uvPfC@^&^#h!H=DP5nG(R843)9i2T z5GH8Id~Nm@842K;1qRd8{81JJr^ooCe6H6g|EmQYBYdi{L(K3+9|egujUM||pIVoa z$I$&~V_TYE`FEwMQu=a9CzR08b@O(GPpV^M{P!fzrwBPnh%ZVQ@0QKCQeOFKF5Ja| zr7>|AQ>G7nX!A=w#?!H1_os-CLyUggk4)h+?Eu+uzLFDjiwmJ_J!VW8Xgme@^97iO1DY@m_Q$ zg@YUsveY^*x(tWUpl~Rb=t{I1i(m1Dir)a0Q=`hDRBJJFiAq}$twr+`Z7LH&!S9JU zZiK2HQ-|mj0AjRrMmJz+4;@N;lF|jagKG$rzonA^JKBiOCfcd28pJ!?HBjM;^GQPD z-2S|19*~#L@W4pwZ&Y!#?ab>ni%4~Dy~+(p-!+&`O+sJ zB$}OwX@E#)pJ*AT6y|9#PZdm|d6lAu;^!LU0VQ3k9B3|6VV~s#50I<_$%b|#IM|2bPx4IQ7xKEgw~=0+IdnfT1?-o)S^oI zUZ5)PN<39-Vv_@e@@G0V&P+LY_)7JsJdA1M&0F+F~@}oH(pd-pqQI z2#xzmpB;fg>j$k;yv!@lguGYuV|e8$=)4{R zGfj%)npmSp#5yF!fU@!y^@`&Cd2=QN%rHEvw`QKDTLLnwGg#!;pphzBs7-N14H^wd zl|EfjUb!v9Us9sT07|$7fQ0i!4-?_9fJitEe1sE4K|GWr;6jgY2^B~4D#aO^(Pf5H zB$yUeRb8ji_B?n5E0<9J9Rlzorj@f&kTnK5WqdT6=dF+@4HB58xQl0%L&j97hzKTk zkgYvK$@gk-CpEaGAcsk)sg{I_ri$LONL@*)?__&id0=RK+Mv{$a^F&NDfn+w z@VhAZ+bH<&P~1PHO#g6)0My8`HKT#W$MoayN`h{C4P-t|(TL5>S#uAGNYOAT$sDM!6^Sj+l)Ztx0qcx|Oe}E?d+6aC_s`a7j^839eZMb-AZaMD4XGnA^4U??=&>+1tI!_j=V-l!c)r~(s~3Pgl)kOWA0z3S|(x$;>|Sc+6t97RPaCzwh6N~P_EM8Zx7e&-l+ z$L)+?I$PFc-qax&l&>KhLb!YM0=zlfPgIHii2 zu{2f3!XQAi?ovabs=1Wg`s#QBBOP+i& zKSYb=Iyoh|Fscohn|7b?R}8(oN9Yjdre5?c-N1Q%wb3xmsjbz==40$1HX2xctispQ z)7mj29g?7Oi{!IP!BJ9O=F!Qu+|G~f8b}%opS;3AGnx^HK}Nz+`-K*}IOQ7+XR2%i z<3I4nTxw}B;E(MLwVuK7Qpfq^EA%F%F)$o6DW9o=k@6^|gBs8AVDb(+O)Yyw z{}n#%2&{4y>=DR0-BQK?8t4f*SsPuW#R%Z&)iu1RNmsG#JMez46br{PymA`xH>8f) z16M0)PNr>+Gz^f9>=oL8?B-F;23aCx0ABE4po!eCo7@9de>$2lQUejputd4T;Me+2 zB4nyUy3AW)qv`Ui20ws}vxLCxBBgAslp}D7=Z3b9b16GFN?U2W)7*zPcS#=C2DW0@ z)+5L>Id@zb1D~>uaHjSh!=0vzW2mFtF@ebX`jFqOB>wP*G)A0=K@+@MA z_?pCXiJ+?cNog7+#x86#2!8-)VzEl`)KIbkQw>gP4waqC*SK-|aX7>Un(68rY_!sR zBs*T3hC4oHvH%NRQ&GZtnj64FK)FYX9;kCtbDs*%`f=!wd)s&D^}MoUsqH8$jVh^Qy#Z1vOQ(1!rw~UTH7yeg6$dn zK0o@M(O-72giY3It-fm(rJ`-X3x zWGZ|~IJZ_E#rPYf%`-*FrV&&wGbrD}E_6-B`0LIXe~rZWUQ|*8s@jHJl?#>MuqZb? zE|J5WOHn*daa1UHjfh{M?^Hhb+^x~rlx|OzLRuq#Fz9Gh~_pq z+Ys>$w0zhaKe#ZfJqHoL;fgn_`%;1W(uyn)GHuFNcp2K1vv{#>N>96mD5KGKw%dqe zX}6+~YPYHr%~H^kFPXw|!%hB%K|nhPZN=<5zUi`H|2-Z#%{AAWYI-3X7pOP_UN>fU9@CXw(hz{_`FSLBpumh%{w-z_vr-fq)*0q4mX;%}9S65%g=>;l<-g?Lkczzo zw<^6;A9I%v)ETAnfhx_j68|`eUo*uIh%{|(OSLnk<)hY)EeG0CI?*F);?vvmqe#C} z`4N+bGM68J#DG-j;O%C<7pCL#tQV<}9ND{`+6yvm&^ZOGXK4V}Z#}MGZt6v^>SGs~ zJ2jPInib7b5#%*==6BII+v%Aq+6EO$l?Z{_I$g*25l>+t$MaDA=xK%B=cV_%&v&0U zb{juxQ!df#h1R}|arnv`x&~>8;imKwsXv1hN&S61M+}1TAo0M*C~<|{i`#}9%*Mn# zO27zX24|xlT#?6h0>we+Sm7?8{JhamZ}KrjO9!auqP*E~H=Va&twAgK-y-CvxXdC( zq>euME7sq%X}kk5`xt~po&*0MOm$xWlQ<9H%|cdmU73Mdns;<}Cw@S5AroZdL6*7c z;<@XB<>p~VFup8~adlKxV*4wGJt9pxuQqq>adfO#P^Qss2D2$vI_v6aS2teUgEFe~ z(JC#08P0S4 z<#a*I#H(YZi3Z|2-S9oJ)n#qjMrJ=Oc+^ zT^+rzwQ|#lO9dYJ%~L|jB4O;NivoLX55UU|k*SvtG!R;zq`5kFOMNZz*0WxSFBKoR zS6r~r6w`_#rzvGbI@W#V7$ zEtx%bIhP5T{Y*q8R!Mf=godv7a-MT_<=I6ApNE%Wp%!`L74IPoFHlSaQl^wM(ivB<2lGL?H-XZEDQPp?vYG!y2`phBWM z2-Fv%N6_L`KmBw`YfSKA!G?>mgjWoTth^LA5u(n1#i7oA*&!#sM!Kj;Z6^NV>t7w4 zLMg<`sg$2OP(MB2K78L{l>*u-p{;wgF~u}A5IQ&>rjxlOl$4t@?@|5J(^C)AJ?Y|F*1RpAQp*{(5wB)&Jn@lV)$5 zfXucq$}-;QZig0!rlD>{WWiU@tk65JI;^6le0!mzY16ByQupNTc0{noU1tdz@v#I% znOXrcdrzK@GK1Frpg{3HlD-Ey&?*I}FhldKVm|#ULeqb(?ue(TZeSA82lV~-(}4(< z#L7{Af8Y*sLiP_<{2L`eAu+6!KMoaOC=am?r+32m1iogB!zc{n6kZyq*k-w%d$P=Uxp-KnwTS$HZ4PFo_J5n&7HId*6BVrUOMHPnC)a`P z40;;XvYR_&uTOV#$L#?VW)#IM^|Z6(gwk+9%?fwUZ@AE*KEbtoX8f#`J8yR(EYWab zUc4wU7UX@MOc)Ltu@uof`S4o`B}{`Yu47+IM=QdRvd!4IS)vOIvufXj5WorXM z^$O>*XPjbfbzm|HkVgW6wE>V<*Q~Btr8AoDoKg$oDYaH|U#+lWb>GnY(Rfxp_h z`V1OQj5yb(MeUMJsJ7T50RiGOb4o zZaebBV05_0Fn4wgcXo_-cGx>Q!;AkvHfRm9eZrlRt12OL3gYu-81}TpCzaTR_pX{9kC?8e2Ken(^NvJpdU1 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/HD.COM b/Manx Aztec C86 v42b/BIN/HD.COM new file mode 100644 index 0000000000000000000000000000000000000000..00b913bd27d0ac9186a6d6750584864f4242e753 GIT binary patch literal 2876 zcmb_eeQZhs|EK)!0dYku?z%f1>>84J_O2fz0 zW`jTOI~te!H4A%gY84+lCy-mQB05l&oPucn!hu1? zIm7vrvp^W){8RfV)1cv_G~Dk~-@vhRCL;F}aN{e+r+<(3&-WzSl29q z`2UQO1+(|CeB7%x8Nd+@7iqYlzpFTq%*c6+h7r;>_4de?BP*;ZE>G*%Apwo&_4gMf z+xzpAW)jF#InQ4?)Oef(rvHZmoJLpI?EWDzxL!B7I`W}xvF(47eYy`UU^XAHph@>0 zBaO$My6Pv%7m*&Rj>S$RL`US=w>Y`5z*n5AqCPch^iS<720F+;+tWIfg%%$P3-=Ks zSLNP{BVIMm`Mt?4qE`i&p}6@T8d^r=0`V0gtFei(Pp{9G>P9kawuogH+L@BboPFIm zDaJBJS26rFkumX^pdiuf2(gN65w{*PmZ)GghsS2evdpe2E@N$U&I*grr~VZp^67~k z79g=eIR(ayxKU_vDRP&L6*CzzQmPARlK{H*#RI8E+_sQ0;-07QvUUexi@4V)c$h=7 zh9ho=!pZk*p*>ql$NT1KGn&bf3#~Ibe$4w)$SuVUuXOg452&1F^awIr_fWk?quqVyEHeR5`ubO|Jk$EI?IJMVUK z?{ox+Ea*7(%EGEi_xAnR{nKv4YTE;}jX-;)+aQ!^G>nrR4^1wp6@VKq*9c&c@rpZ$ zo>Wp2_9gZ+b&fc6c>6GC6}skOX6 zgRhDUQ4(scHxvxu{$-4B0$l@)6G9&#^b(BJQkYPaPwf``hYl{4$cXkgK%`L4Um({U zsUg~Z`y|OY(oG$Dc98kONyYH9iAcd5T%#CzChVkoi8P*bWnVLpY&6|uo$dQO$$i!H4~0KXsXbn; zie-gbJE^UfNV>s3a9JF`!C&p1lZd6Q<60ucXA@aRHgUc$#k_VJPZg&IP~Z8&uv;2x zvN}H52(Sx|)SdVG@M`3sP!D_Wib!EYXwkvRkZ}8C=vMFi2wL^|M^OYrpv`lnPLP>I zrtg{;!Y7`~VoT2S{=rm;KXE<3Ds`goN@Mh2MH&Z2+%qX=@C~uaswbxianB9$?HeMG ztE7P&VxoFNOw7M7s$b`VMzt1cmce-+{97EYIdxYvw6+euI9lVR&J#vfQs?XVE{1;; zKcyNGkniFa-^YM6TPFIjvz}3ZW$+(gD(SPDfa@}eb%Pp(>v9P?acrWY!K=P$@DF&T zq*)@>9w}1+Ul|X$q3Xork@);WbIJyMOZ>UUMvC1fW7`aV)~ZXA^P$f~$*X$^u_jGk z0ADio%S`EsUIFG^fN{qo0?fEUQ?++9kPEH#NVL{1scXK3{ia7VBv5;uMD4W_v?O#Z0FFz2syFwb z2lRnf?%npZBUPer>XpqUjfVut#S(iX@jXthWzYwV@-i8%>3GDhkJQT6o@r%mQsBJF z21#EKt0`L$w|b^S*2tggC9`5`KK8tH=wQ8+!J91&QXF(#VN(}R!X^-!?}Oz+Yd2d| zy~-Tiz6la!@dzU249#}GE-#Oz;A@4tK|QWj1UKvk>;M1 z^0BK6hn{#y7B>-q|9<2#lr_V-0=IOJ1$OvK0VbB7bhmBKD>Hv1+gNrnQ z&jc&I>SE-FFbyQr(F0(y&6lUJceGmoKd3Y;FS_ug7~EHyu_wu8M|G9tN_Td^LMTrf zL)nE@@iozfFN;AVa5T+Jvg~()7R^y>EWI(BOVO8c;xqoUK73Pjz*=JKqN1%exCq2& z(r7}lF!>x?KFr`;BrGfz%Q=TE3{*+&>9x_=GU_GsINB~9zN3CDbwfahkMK^37GX`c+6pZ8)~w$1$XaIicsC!y7f=jtzB2Q z-nP5b7Tob;Wp{ALt2Gw$^2HTs+upslA8p_B6WjLSu1+UH95TV*W6vK*%e58Vt+M{hgWFBv|ir z`|rKaUCf@Z_kGVf@5k@F=d543dppS{HsT~#3%Wj+%Uemv-;qYmWw zB7{6gNR&PzvhN_i!`ZvU?w#TQZ4-&Lx*E2+V6le~sZ=j`T2!;reO-%5_af4@42!&- z91zIh@ZhmCqdYAkQ?uPfDOgOD;#-Y@w+3H3Gpf9-oaQr%$kd!-;yN^ED4e}l?Cufu zf?fFADXLGVVv6z#YXe@rRFL`DcWogz<&<)&d@i^&PfE9H3ne~whmAFE4i*v6-Dp$Z zaJP$(d(>Y{@x>DM+_iq!gQXkO`!QsbWtMbHaC-PNHd&I$dmoFqs$p+#l)#QFs zN9sufX(HRmdYh9wVN2s4vQ6c9Zm%t5yT^9PHjkqnFLoX(d%l1>Fp0#^{~}lU%Crhm ze>2vf&~6MB?-PkUk7-iuep-xN$9eRd)g5f|?tNlwuk46CjCsH2@M#WX1z&dfVjB}( z8ALhyOJQi(^@67>A9dJ%n14Yzyq-T~&mx}4uds!`Plgm@GySuC2RO24<{3L|oDZnThi@$5fMg?vK$(uvGa{@z6FNi$ZzG@T zzhC)b{8GE9{BZPAo2X+cI#tCkRfMC+DQX&Tu8zTwO)l>0K|t*lO+^)EpA%)F5aQ)| zEeF{iBwjtqO++=lU?ow@M4u@n#8wgl7tyh3w*_+{4ldi;D>(`q6A$yT#X2iFjgKV~ zp<-1e&Ai&m87^sH>?km{7*Q;z2aAD~GBx2V>K@I61~Q<5JPS-*l#)3>ib6nZz#%&d z=}vJgr%krt02uyLJEk_bmOXLV5ncDFKc+s-Z%TA_nV92Qqqs*WI7}Ge(j64F9Ban^ zW}F$uCW)-zqMxOMql3rK zjAHb8LX6Ez_eI@tLJqcx8r+{*e~x8+al{>my(h82S!~w7m_+MWh|lo+w$@`}JN_P5 z4u3T{_G{wvr5$1;D>Obd!0GNd!}KS@u!O00J{C4TP5wd%o?;&W?K?kyNo;E!61!d! zcMU(@*7_H*-JNJ_eN|N4iCx3<&$YGwRn*p+`?pq>VJJnu-dx*UCW<#iC1nhaGyg@@ zvYA)1KVv4Wo5>#%)dxr{aT$K$RT_m*qH=p`D6wgWJv8u?mK#dk#+q){d{LVbO60TV zEv$JI!1@@l?mXvH29mC&xCO;anNyq2a)vnz!y*F>acYc|c_X(X;(x{&prse6qB@s3 zFFVNef}p5QHChN)z2GfTwX+tZiW~!u9knq^W6bJV&w2p3#y~m*uZCb8jOq%`hXCAT zLt-!m9%j~eqP`0#frzmDe5vJ0h466}hm^<*STbYVks_xU=}aT1&7SDjW9RWr3L~FV$upC5fmzL5Sj}dMO3GWGLl=?iP@**brVSbT>~YN=8uJ6}yQb8yyz>K8p0l5lP@MZgrT4aqcu_8mvLbcs)ve_$|@Jyzp2R&Z~*hhQ+H|g zgrvwm*UE=p#px`Vkv-;?J(I)k(J_5J@f#RrlA5fGQHZx!~t{P6}z5h zFs+m)Sc*I?xRgkfafp`3afZ4RKuzr&8UrF>Sy|*=#Q!wL8ezvdYkiBgy5BLgJwM!b za{{|Tj7hnA0YdH?f+lVU$)L>qbO4T9$OxTj2{Uw9O1=9sn<*JOJB${*(@3|!ksM-FQT%Ru-2D_Kj> zh10s9YJo_J#ku^SIah*g!FF|WyV({|?#qHSRSu?UJ zfossnCP0w!JvcEDW9h!>-P*IJ1Aitum3ftB0eICs8`G&_n@@RP8DMjyw%J#N5~&iW zy*Xefp@c4H6gCTT3JxYS^+b4R9~lr8hmc0#1I`_75r7XMsm;|JQ`PMdcTtH#oSXuD zwD_WJf?F?*hnnL=J^|RkNTJ)YeE_BQw+RA+Rdl4igc`s(o8_in^)hd`j+BC?DGeD; zbE-|A5-LL4r<8CmVb2Y2I?L<8I-?~VUKj+d#8iHJ3A?rL&j9j=M#&CQ7ICA%oyN}4 zb{`nDXUyr@c9`3v3-1+cJSO8qjL}qSa#gPLGNt`iDG|Z~9}Smqil7U?I`MH}ruHMu9cSBZ zFQ+{_d!^J{`{WU2U}gEeeXd@7VfZS@ zPw(s<9+mj{y-!z^!`lqDF+*Y}b0dq)Pr2l~O-S?X`R9r%x6`6+ zJGcc-gWv4C4Sjd--~_YJt5$K!`>h|t5O8j02(OhT!0~}1?;4t9@xj@A2iGwh%9HUz zMs0*K7#0A7R~=?=CP=!FYumLGy2P{NrbI+%G7Rj@%Z?~frQFfB0tcsKULTtxQHnI@SRBtBfUIG@a`6X}&a65z!oxMEIK8%lVA9lSmmla-5sf;Du@G zQ@9Zzd<8^r2^TIA21<}xN44)Ir;gIabkQ_}6OTOOOGr-cQi@#Lg|abk-iG%+S{Rk4 zB4{$lB{L5mKq98gQ&}iX7=V#}o{Wr5$Vs-R*yJ3B2+Tz0W^$QKcF%kUh!<EoDNdhB}!$l=o@xCYz|MUM$i~IRiEaAD`iDXQg9a= zusfg&(^4#(Qrif!Mx55tX%G+rQ*yvhkZ7k2K_(_EC5d?n9fYm{fO4UmHl~~Sth{Wb ztzNa*hJ&4|w=j%p)us7`38Z3;;8ve8lvYqnw@&Y>rG@T9LwZ*YRWfR+>t*Fc*rr5H z&o`#S^8|cq*|KGW>fkWa*-&vU?qyj~T91D%8TAO2D6K^u4;HwcKx()#QCP6cE?4U8 zARL7zo4xGV16;?|@1!OnZ{mS7VCP8TMJXd()H2CNaD?DLWkgBv&GB$i)Q*YLZ6sX0 z%Z~h15wY>Y0hv=Sj0mvOU6@Z1(1%DoJ%X1ZnJV_MplPl*!sYS8av^X%z8bTX0p1Nr zQ;y@261%-Byi^goYbl!$M!?f-KsUv_A6u%&{5p2eOcokQ7}JbFdCRrXJGKb}YyY{b z=0106UDJBGs=8rgeXW1_rp+tnJv?*g%(j^d{=Pl)KW2V!=8tDSiGMH7QfH;l&YT^Y z^{ZJC{QK3c_h;mPanYA#^^-}3G{TbVbG;5JU+ z0ry9wr)Zv(1=zLYPObgt*vUKK{?Iw#K2HYR7YOX2>pevaWg0B~$f12y8Mx*E*xS5B4TnkI4*_uW_9!d}(WjM|r_@Y~%yw`1+9#G;ZXBZw}?P|LD0H zt8?3~)?USgnbP#&C#h0q@RLlYkqb?leRb}DJ%4v+Z^HEoJk@mwSy(fFgF7BBy%=o1 zfV>0WO)_sfDb3&%ZPyR2xs#{;WPq%JvZ)f9&wP zv#@lukylDbD~!mB-EZlyo#_u6Y1`G4IA9|kM>~6WAMC;70KzY}T#vnWSzU=&f<$iE zZfKe2MwcU7iame1-F*SB<0@*B*&->~*Tnn12s=al}mtC-KjdBE%RYE>q93TZxsx%2zQ0 zn>5uLH7*o=CV@7GjS12;ui7d2*hxN>jGdXG1lfKK8+U-$yiOWPpjX|7Guh!)U$gt# zcCMko?3c@2I-Jm9IpB)cQxB$%oEkY1Iz?JW@blR%NSGwi8m;InV@KwdR7&TCfbYdt0Bz+Irrj+#LiRlhaf&Y@|JSaqZ}G}n?K%g-JR=M4fu9wL;v9R$|6SJZ|~nb zr?*L4rm1Y2WKO7@wz5Jc>grorVPtVQYcM0XYd9EB4P57?!T1Wv%n{BPac8C5I!f*IO=;%*M&Pe@HSr zdR@o&-*sf}??`6nA9Fi$uA=w}>TGVP*n{JHMsC+CIyjuG}9hy*!Lx3-K6u6@#kykfjo!nmD`ZsB0IkDOebAHTspGk-1d3F_!235=Q&9@zZc5O z2$K2l9c&>;Q?wLU@6*aiN3`>_2g_HAC(*LA4wi`XPoKGne7f`X6)kV$fWknycp84~ z&8B${V{@_)F3zT1*_5ZNXm>X4$jPJ~8Cg`FWeeDG717f7r#zPf?e4p*aqHLbUv*?| zo}QOx{J#TvkJ9oSeEnO_=itWZF3&0R{t59nmNT+gRKLgho>+qjN3{dhwbXc`X+d=z zdo~*!Ubf7mew*`kOEhvTRdOU66;ZlrcL0M*u|)Zc!6K(*4;H1!yj#1#?o@Y%Z(6ZJ zrvX#gI`d*RJCcD*Tp=|dfh6RjG;$czx^%zsUBte<|+QS{|z{W3_9IKFyx&2tL0Cu9IuSe!q{F7X-Qn0{*R6ai<*gTO&;|`)Oz*7#OwDn_Ya`5*uO_d#`Kfa%~?Udmx z+r&m122Ww5qnTG4!7F7LH>QGZqH1W_hT09F82_08Xw^(XtK})DR|J=)%DD(<X9bvExl;WxAPle4CkFFCrzRL)3a~dgee0I9d3D zJOe51=K@nM^Plh^tSaW-5Pk<*cHGeGL@=1S`_m425(i-I`WNC((c%Bbw$>jvsfIn;Ms z%h_IiE$ukLpXj7lQ5Rr|!G(Cw`am|wNBYRHoX+UaGVoyn$5z6Y#n#gAatqz7sEL7i zMjroUlDzx;P55f6V_$xJ<>!;UI`-wq*Z=sbuBq{FuB>rZ1~$uE{I!yE-bS*qvi3U3 zSy%6`b=JvJy(}Sbt?|#D*k4^c-aTG-RyR0n>m+BTGtb}Tx40$@Z>+18DywT7oB@AL z-Ns6(x~>-0jdg*lhPh+{9mG^(?nZy0rt(2cj8rFKne~CX&4J1-&W7r3ey6`_qu*Zz zX?0dd-6rR}nkwgp2PHoQ-ceVDHPi*1n9(0FCaaX3YnHEFzRo!|J*JZC>YN*@H~(w& z_f#C}pHU8So(tZCLkEInDYA#tG2-F2`b(Yp)RY?`rR&IfIold9RP`TNEs}qEa z3!L{XtgB~>Znzhu%mB`NU=3Ee*QE7ZgbSA%yELhtHPyIb1jxTCDwUAco^^MwE?s*o zX>cxF=v-&$c}%6%way2sYw8S@l6pq4mZ=_^uCA@BZmh17VHHp}pgn&-#a%|KIMx78n5DAzmhm$%fzG|mR8G5}{Zxrv{# zdEk*yg|n`<=0T^w5pG&5Z`t4v_$||ux__c#Ci@i8{fx-)5zMl|?_}0sQaAYFGk(iY z*eXb#u~vU=RWclmWmSQgG_j$tVVnLY2?SWdowbs`hFQkgE~z$nVPGd5XJOL<=LSq+ zDx$%d5-wSBM_piZg)`S#RVh_ESw{)$Amdla+it(3WVxH9lCAh(fY^U|4G(THzXIfr z@o+`&hPoQ3RJj4}!dzv6b6!I#F(*KQB~}nidPRxR(%~%l1Y8iil@J@h6*ayRwUkQK zQkqb+H=%|TcKl;Q?^w%bo7mtcHu#ARVM1e!`F~@Dy^pXMG(Y+5lWdHakKtiu;%Cy> z$LdWnKDN*Jm;|ZDhx?2V8+VetD^3DkCuDK{;+wy)IDgUNn;8-Z{NIqP5fpRNQ?G5x fA?pBhTPkZGWKiFb$Lxon#Xnp7+0KWYsp&GUFRB34&xTLmaRHyT|PZ1}q6#Oz*F{ zXGX$S?)~nc_q!veyXse`PMtb+>YP(GMEYjS?Md>A^vH1%yrnwje&UYwlAwy>DHMYw zXe3Vg1d6{PK?cR+D85MKM=g=(G$2R-9%lR}O%aLEic|gvt+q#NcFOx{P1#ACGzOwp ze?s1p9A@8hFhqGQ_FkPrmXM`HAdiwNvWaXZ-y?64x5+7Tnk;1YGv8s#nWypIz!c-1 z%*8-OhBSl96lwo+YiGvC*Qw?=ODOK}2KZZdG2LCT~gVeN6hq ze{$sTEk{6z9#-)j@i&>so(fek;h!X!7*=)oi&Y2N!-i3039YbAT7?jFluo~DJbTe` zqVHmtfjm2S(+Dc*bl*iIkUkBU`hDFG*opU5bpAIZq=(NmDCJI6iolocaiWk_4IL}{f$uaC< zRo0TDKsrkfq_gDoU6lHzgG`Q;`gC63`_j9CgBKi;ef&O?BqRbrAMw(dl2l2Kvq7;6u_jSGZb*=aH+k2x*d&k?-NQ|$9VY*D@>_rJ} z#y6>O@*`#}y1v?BAxem*G<}t%e)af2&Q*{9aIXA>31<1Vrhl3%A5V3wP_hs$noM^8 zF5aK6FP);V`%iNiaZOkl!Q2*rD&8O+?4M)AN~p*GbB=6|v5q&k9{ls1Lr!^T3RsWa z*6G}w0%2tDamD#fj_UFLInu%Z)VRvOH0r{Bjbp~&hb&R^5whS0bzKY*4Bdy>@C9JAx(DJ;zD~s7?KX=R`pMoi2&qx-w> z!(K8*UdLo%dy$`wKVRN19n7^Gg{V`0hx$Wb(;(TM>2De$O?l&RjS&|JU+$hH2_Iz= zH6VQC7e3mlmJKN>V-bs{?eSPVf1h1yh_;eLjBur0xZ-pM)1eIeB>zcPx0V877}ip* zD%s<7PpES)6<6!}g3TS74jqh&V;QGoTp`C|3VHtjsE`oR77Ru+4m)Y=G&HRhjYmb5 z8+dc`(BY!kC=@X?SwbihC0T11&9r7v%)a9b?2Ix&>+dD%GfVAb1{)jHobs{} zx4h1v{7-ETQJ8WzIefvhu_y=R);46UZug8G}xlUvjH#A z;42zz)nOhm)gpWNBMnZ{;Ud5m3MaJku}f{Rstv6Caul|qHkjnsW>9Z&cz0ev_(T#u z!PDO~OuQvw;WGvnHjMC&r&>0=zsEaYs-z*l)pE#8k^;iV?ZU?~-RGoX6jfkj+*eWV zN;p_X90D5k_}*Q z3}D}a?DC2gE2K&*5JX@-_vw{g##jkRt^NI!FuTv*YzwphY;VEysQrgFxsu3!R({PS zW%SPtS!PHXm+`too^n&l_$x|xYOhjerkekkxoZBox$>S{m<~lTbEo_T{4-h(pPRdQ zu~V)}w3RYw{1fZe6C}-E;p=ZRQL{dk8=Xyg)SQ{HaD%|$;}-m3%GkBKdbkOTazi5= zr8yC&`5Pt|*}=T9zYzOacYLS6>{}s7%wC%i(hs?U>vEjIwmhfYGXa(p{C2GNvt-l|b7^?; znl;-GR$`AXo`5|V^*2R{XhwRkT){&Nv^0)aMx}-k-@*c~*|(60k2xBKrI6EDIV|<+ zLj*7cw#SGAwEdxjZF%1gZq9Kw_qOMOLSCc^@ZFdInPUYoMs};{w-|%abV?tmQ6*wq za7T=u(Rw5Lu8HM=!98dZA@X_J0-^W!i0Q$-0M;bCgFnLik!1JbOOC;QXYiLf)WOL! zki=2vMxo<6MDsfK@D&YuU5BnAeWKorQg!Rl1r55OLA^Tk9~6Re=!(KBV5ObDJSpP^ zJ9SB?)y~#DYWoTwW)I|%quBa+P$cWaQ*mfmFjo7!c#TphX|Of#+b}fmIcjB>v=P2V z(+@hrzPuN@?1wtPpQq*@$P0#bNtRMc)ck#U!MAlFPY1rA7yP3Ra5~`23!c@1G#zNk z3%;WRQ6yC0(V7=LuLGY_fX=`fyr3iJH4Btfm=wL*x>g84C}xr8sGyE z)q(RG&;r0PPqV+@Yd|XiRtLH$&@K!)gEk%bHwsWwebDA^6^33!DnJ({m9`GZPgu}O zZ7gKrv{$KtlPU*VEws{7%D`Cs#V{kySYG^={e|!6z1U^fP#B($7CE$fOT50;L03}# zwsy`Bp0+sE{3-K-T#{2hi*RiPaqls5YMRW!(kIO$UR#lm)SI1h16kjDj5#$;G~r^Q zS7u1>z86YE!w5xABb`L<-TMJ0a}Ux&(>ADSs;_N9D$t&C#ySAFAlX?VdsDXo#R{fm+@fF%dvjCK7H64Nw2lvcB^pc5q^Jz0~Nw)Iw<8$9dCnb4nz41-z*thb+ zZ9T+4g@iAd_`o+JCPPTL#wefRNfa6GFq1@PX&B1M2&MxzqGV7S%~hhFPL$MGJ(adw ziM+so9M>2z8rtavM8g2QlX?C;Cwm-EwQ5r6K%Hs}9oVT7c{ig8{)jG?H7*uZL{+M$ zZsj$xzo)qyb=nr5ru@`QpU@1+pAoaYgsOrX?q5E}ZFnQFtZ-bN!Y+PsN2lqYB| zfU;AjYYLgr3YT8_c?+ieIb9#6+1K<1jY&s|)}H2Xy0O{If+S>t`yW!OwRYT*ZRHt4 zrv{6;#zY=eGf4?4C+o@MWHZ@9wvp|mj?@#8G?MlyKbrEZDLmYg=q;*D_NxxjOiM|LVIohDE-!Tmuwaus6*g;Ebkh(+Ckw^oS?g{A#0jnO|M+Elw~|mP&&4S?8L;ts~fbgIkA<`m;|LN&16>Ud6J; zH#HCPEF%n0bdAJrJ+O$l_IMhR9NF!3>>9~6GI(yV-+vD0Hk-aFQgt|9#~ofojcPs! zZhc!K5Ii}s^TWMad9gl{Re;2A1qaT{h;x-dq&z*0jF?wIM6GwHD*w%WnwT+P6>^d^QS z(wnGFyrUwRf(U&ljqSH@-U^pC1(R}BvpWPcE$mLl3L+vpUGfpyN1HNM#;J$P^}4Ak zvg-|Rt`zczQk-%UaW_XB=X7{M0^ABS`gOd9)nw}bHtmfdMC(&4FP|G{F1>wu*U zvvywA5`dSelS||d@xdKZp<}nHB9S-*lAz3juy-=@lk`!}G+7AY_XJg(OtX$L4RBt+ zh$kUiiQB(Bi4ilXh7+xHZG2{|LcF z-H6I8$2^enmlvyXqY60=zS}aM#<8N+1?dc zB$+z5^K?LM{D?=@*<6h*QX|#$s(>z;KNQu5N#v8w_d@TOCZtzBTeW?gP*&HtUffbs zzj)~0&vzFkyV%DRxR?l+HdK`ayxqsn$xe!;&ZNry7f0n`L-FN>3 z3-TXa_)yiR&0DIsa`U$D;I`Iy>b(TRH-EB@sc?_T6ukZ^;esTs{wu@0(wq;Q_d`pUkvDqj{lL>6rhMJeROWST08@1xEs=L_%AXwsFw zLLRrm!VUh2JjbyA%v0>(IocP|vM^V)9FZp(0^D?@oB6Ku=eqTo4N4e@x zg$xifN0bloG8|DZ;AJ|Z^mkc_G7)7CXK}^ag{;-sWm7XO$hfm4Gjh!V;Y))T<*6tu z7RQ-=pL%CLi^tT~+G{Pf*CE3M%w=9I@CKT!G}iAiV{Q!j6={2?Bi#N*Pjvqokvipj z9Onyuzbn-#op78P{6gwqKlp`W82sYk+1%FWcV?7lwfvp(XAGF`o$9-3^QQZ5rc;ev zZ&b|XSs^pu-q90v{1G7?w*bO$lQCNu36u@dRL=`_U2hbPx!AFDXU*K~sy zjq)!DvR?VO)L{31DL;?*aHHiYFaMk z7em@kcl5NsaYVm7i7Zzm@7$7C;PNDz6)U3zSSyRhv_&98$~K4OO7^D zdqLgv#0G{jQ^jj#_U%8jW<4j^B-RSMpu2@{6`1kuS49@w@m^{3 zNATBZ2o$rpaIx~QO@U%7f7r?!*s=24{rYg<-0ejEAcx2u?3t1T8d+x1py$y3pq)^l}c{V3rb5>cBjs4ok6?OnHfxlInU#9U5F99bT0(oLP=2F0_`-Z)dW5!uwg?c zA}9t$R(={b6QbsOaDB9smo0xmI;Tl(A?`%@SEt!|n(0QP+J71uqVqep2xk)|mzEaO z(!Cm{nB#!2y9B0_y1_TH$ZJxw{u{4mt>LN==joB z!KU}PjX*lBH!qP~<8`Yz=0Zbkzn+@C@f&R~L6d0sw%J_QZdCZp6~1yQPYfXHvm)3wZ?lnsi}gB^TX6AM}; zSGrK@TVxZnu${H^Upse%@tY!iAXaOGKK^SI2%t--4Cnc`3z}H(q}zJ@h!Wr+kyw=H z;wL%n7L=aTdfLtvoDioY!<*%qc*}Ux_(gfyz?+Ph`AK=1!s?~Ih!>~4k&Tr<)*VYF zR=ecXY){(237^+CaKea75e6alG3wrA}!XdXF9~5l&-`)@F%m1@<*_;;lZaWX(>MK`Bg8;@=iqUo993La8^|#NCh*J?NzWXV z-Ym!CSUIZi(*Ec%o%EEW1mfxB-5KC*%1*&Znb`(#y&q4OEXsZW$fMb_NHW<31i#+l znMVBC*(m=#o@t~r`))Fsyqax<)W1dRRML&|G;$)FMfqg*9eAF>a~hGe7obe+3s9bB zU-GoKdNa4SWGT0@w#HjiwY}!)DsN3)E$8&qJ?W|1L6$CAyK)&bi#N9o4m7?z`1b)sw9pw`5C0Rqf_#PN?%#Kk2CxYqt=A z<4USAkVZEK-!w|SscQ3gW7JE>QjftWVm&tD=b%ZjmpiZ?v+$+M#}X0f4Ae5P-ufpQ zmf~|TYBE+V{zrf%k#?X~=s*4?#D>34pf+%he+kwmmHZ0mG>jJiQZ$WpVYKN$Gw{_v zb2a;8)L1ovvM7BMwTz2e$3>IIL5m?-*ugN1FyrNk85cvcGv7eD)#YX7+I zmzQwv>UxyR>QJok)OfK{HQTFES+c3laRuPU0gRg-w&<0(P`YoGsYietVhd7t4TQQ~@Z-~Elk>zXF zV7FAPS-EaySt%#1T(vxxvypY4s@nSP+8%tEbJvM;Jk?x1jCWV{mf1Fvxn-Ph<2YE1 zj!S&>uKycS%9^T4B}rr9CrUxT$Sg^`dqqxNCrmxk1d_gT%2V~ F`7b0?8IJ$} literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/INSTALL.COM b/Manx Aztec C86 v42b/BIN/INSTALL.COM new file mode 100644 index 0000000000000000000000000000000000000000..d7b139679032007bb913f211f4822764f2b3d4d0 GIT binary patch literal 16050 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 S^2xwrzimA(&0L#eP52)|q6|L( literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/LB.EXE b/Manx Aztec C86 v42b/BIN/LB.EXE new file mode 100644 index 0000000000000000000000000000000000000000..69514436254ef0bc05e7a25ced1bfdb9918ebdec GIT binary patch literal 12384 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 Q_LKjbJ=W#@DbJbtUrgE9WB>pF literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/LN.EXE b/Manx Aztec C86 v42b/BIN/LN.EXE new file mode 100644 index 0000000000000000000000000000000000000000..c8fafd60448460223713bf23dbca1c0d4985172c GIT binary patch literal 37920 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 X|L%|#13M19akPK0-jmZ9J@$VC8iWmW literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/LS.COM b/Manx Aztec C86 v42b/BIN/LS.COM new file mode 100644 index 0000000000000000000000000000000000000000..b51c4a6ee691c2defe5fd8c66f6303ea08d2d35d GIT binary patch literal 6574 zcmdToZB$cNwkNqaHzAY|@vB~EFuoS1B}$o&MW+cUZ_$g@7PDHLkoFaef~`{oUve*C z7sfCV$K(X&O<$*DXT6!$M>{jM)UmUeu3#Mnp$TLCAkgWcwo1ikZ+iP-{UDU4xo@8v zRGg3Xem^wlWAAQ9_SxsgzMkgpdsy)+TGX&tpMJ0$oP*jEZgGK8R|8CK|{Mf{PXEr{%R#)9M-51pnaZBBxHE4dA!DJT`o}mhE8RRQG(!&nCrA~``o(FlG|4hd;q&oA>~{xZyuafrVy!2N9Z>n38h zAZqa>j&d$4_G5&(=dt|-T$%7YXn&a+b1!21Ze^HRrQrRcv3w)A$vJ7(xKQ}2CCg+CI5!eoJL-TFow-ne-iCAy(ATXt3 zCsYwGiBN2#3RJ~q40h;L%m>_zIU}66_ypLIO#wAB$9=C?NSWeriPG7%`#6Q}TWnEP#&GBGNX-&HFUTA94=Rwim? zviBKfqEaSrxa3Bi+{h4~p;uwEUjkoUO3_TYVIuSrBPcNGn| zghmbKn??V#)2U&Qg*nPKFOVD6aw840q8~>;#=RPJyDfAO_-q3{dg)(qxiy$$_7B*+$K3v zvdg^1QSepX^#FmGFeVOum1I!nAX2=G%u~kA1L>bbNdJv-oA;AMA+{NumFw{T zJlO}i+Si|S*l`1mJ&b&xyhPle4y)k!dW(lZur5B5q68aA*KQ?OG{mK9yq2~+MsL>& zTFV1!ms-*SLWQKeZlIb|sKyjZmZc0u5_gNFbdd0W3uEwFo#ioIN*HsCuqjkZ81uKn zPU)v_>mLg{;IOxG2mRau%rPtD8+CX9(ht=O&IX5>IodoFZ_q`>>6oNqxrE%1w99rP zq6ndFTFmLFOVXzf0N;eB0W>~BO-Q08?*6XapmW&86DnUnV`)eV8owtg=`5Zk$@oc2 zypd2-mk7Nj-tY>JfOuSq!#l?VJwK`+vmseRl5+V4q7ti?k&WP#cQ ztR>C%6b>BB(H1V@refchVV4%}fO|HqBI~i%4-3lFu+i8o`9@^O4Ya61&Kq$8q%_uI zhuUvXrfib407XYT_OYNww+0Q1Im=PUer1+UW(!cqA7GXwgDx^i5oMy49d9esG(xo< zX>6z?#QKWgW>p@|>lETO-3X3Rw+iifn}yn71pg#|9@R@RU2Mlec29_18JνDJ2{ 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 Bv*G{% literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/OBD.EXE b/Manx Aztec C86 v42b/BIN/OBD.EXE new file mode 100644 index 0000000000000000000000000000000000000000..cdc7f4d4bad27e4afdf04981dd5daa2442bdbbb3 GIT binary patch literal 8786 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/OBJ.EXE b/Manx Aztec C86 v42b/BIN/OBJ.EXE new file mode 100644 index 0000000000000000000000000000000000000000..0b8c4deca64f611f1e17495718acde45fb07a309 GIT binary patch literal 15522 zcmeHue|%KcweLPN=bTI?k(lAeO!l*z41VkZ;lQSXq zLYO#!nH;3ncYFPDZEK9$s#NVQtwU=e7@VQDsDWDXN9AYbjK?2=0ErOh-0wPPCIsvK zeBQtBeI7&R?7jBdYp=c5+H0@9_L(2t^(?!Zam>z21x<6Co4t(1uVbhi|1^~U|G)ot zC2*(wMR0H26aLKXRvwt-4Yu&6^&-CcmaOnv=2jL@@`ial)35hNU2(>=D&B97y~u(t z(IhVs<(mT~Q~me20wqjZ*v>zpPK}7Y8Jy~hh^O$F6%kM4F#|2`@HUXim=xU0>jdAJ z?p5v1*-U!JxqwL@IPYZAU!2RBwAu=dYk|^p=sq&Mhq*P7pr)_6;9fBt zVQ#(l8$#?X$^^Z!1PJc~$(2JSubA#t7O+6+j7%n(m8ZsQMQ1XU-h6Mcv%bS;8jJxQheQOdwgpCsF-A=M6JFyQg`V$p2j2UG3S$*lxz6 zVo4@r)Ku-!iC=q7aIb|*VGb)+{)uLN3EzRQ>nPdyEBy?7kke496EMh&M3+3IVyjs zfrrq;_heRkl$+Clnw)MW>sXZOIAHD_eO@gh;>*79=j)CBu|!Uv(33=58P6i(j7+XI z!YsiLm}+oW4elmtOO|$HW*B_m1h3qyW)AgSNZ&sI@-%TTN1U2QD}WoO`Gmq(Yu>0h&&HS> z$?IjYHQeTNe$$d}kMgugR$-2%aj`nC^|MT-X6Tx}eS+7m+%U>p6^yeDU&ij>l*dOY zPo{PjWXD{bN14NUmF-!vVicXCw@mI;nn!UENo+D84$vkzdz|TH z`|Kc_hR)ZIjQxiJIzpfU=2g~?j0FwQeggdyAbXbjfZp$q1UU%E!&&N5kMd`fre>*k zl9D~juSSt<=IDrz5#mc|-jS&msW+-O+W52Pcg;5bT70JQHhjwYW2l$&DJak8r}i>u z7HhQp@1Em@+Am$a`d4+OCwx0JmKrCr*mSb6-c=~wgRALK4g(T>J$i^u*gu6wzG zYLDE+8@hRmm*cG`p@{LQXEJ%9|ByT|M;=f|c$6OAD-Q^4KpyCrXX`m4ABsM_$kxZ? zsGNbizFOwlLc6PMOO}#xd6Z|U!!X=_mZ)g3211mh>Oqh4;J45Qz5{K$N4eu$XcxW% zZF6FP(CdqAa3OL;&CwOJCl{Qk1?m*tH+(oqF1D9RUpxDl^r^F-Ngp}~nDjU21tz`g zj5F!)>fir$TCsf1qx{tjN@#np=ZN`D2w`7Gsm;76WUxKu3AJDsgtlZ*-e^*9+SQ*dPT4h(EMC3qLb7-TdA4_*CMLb_G&AXAXDXA9 z4x8k6a2bfBJ>)u1LMAPdEOa59xeC@fB5vp;`Y@DM(NG(Q}dS>y&+dzO-~Gw z&@h=oY??`S#mxh<>pW4FAHK^L`vsF-14eC;P0dJFFko!5iDdgF$yOoR9w*s;n&=$d z?Y1%ht*CX*vjtlQgbmjv`@*E;s`F$`Au1-x!&U&OvT2x?Ye4-A)?V!Ki)vAlo7eA3 z;$8zfdqy_%S6jBFh}&N$dXX+BK;ZHILr_toKk*a0PLrekb#Zwh_9Ry0ll?7J+?Fi9 ziApQ=yLKS+ZWqJ^8J>@1bWdtp!6WWTz;W!6f7;d575VFX)$9a_p+5F9#{~eH3f2lWKIgTc(KBfGasSA~Mqq_*ImC6RAG98tf zN&~SH^J!sCi>=X~v({T%@!5tCJvUj`TeGa=t^WzQGh=9TdC982tB88f8Je+iAGhfn zw>!KUQt7-BQbDX|QjZ7YGyQs?rG#w6(UNYRy&X2Mld%?)dWyn~;NHP%Plr1bwiwRP zV@M@)97uG!Y@lKZPr{mN==Z|VSL#;6 z@Ye`G5@aU#dqYLDZE~s07PE51iyi?Y{H|91l${9wjKC^>&f8wWJ&`v{YpdWOpJ)ZI zX`u>{fCxpUG<_!jmE#Rn@H&i7!hTLL1CN5qcHxN^Gm>o&QQL@+-x@3}gX0<%aGLz- zdUp$x_)t-qEy6E#>7;+0K7vAaaI*5Jq@xW<%pxg z3TNJuA}_W^DlG`4dnuX^I8*$2Ny_7c8{qiIMub$k!UVZ=%*zZ_zzYv@;=IgY6wW2C zRmJrPDi$|P69!wlFf%NYXaYH;j?zo&IC|DA7nRynoztWUJ<5;9UM9jnp7ln{A+`4M z;Ue3Z?G2Ul1S8p&bHRuxN9RM+zcr#*tb~8hhSGE)v}b#_9GTK(MpUSWudg8nz9E}E zdt>&qH)X@1qT)(KgPr%<5Ya_Nh!l`zwtH<+u`ruM`4b@n-!BOwzF!as@|=L907dNq zg#9Tdw_?peY#S`C%FLCn1Vwj86~*H&ezZrt!>u!MW(=lw=2)#^%lu>5`rI>?%jFLuF-QjlprGb+` zx*n0cYzn&yE@8G!85oaesZHq}PpgMqNwp`OX>x~O5!}j27%a{a*Jm@yrkj(5?YGPp z9+PN42W^Pq{{V3th+hlh{O(6N)uP>`e8Rkyl|d)-_v!upqcljW;}fCtBO!bxkl$d4 zv!8{eSIXd-G?#cr_pZ6Rp3zb{c9D@g(jr73*BC2J~8;oQW7nR$5ZNXA7Ax%tjcSs0N z26ws4n}qyb2ww-t2<8nJ;aNJu3nPM0p*Yl|T*BF41ucIyK|WOz1`!PdhPBjn3}uW z!c<%AZww)q)aM+*q?j|ENr&O1rT5j7QP*G!gCw!MDWcL|f0R>xoolEn4M5?%M$%8y zT!W~gd&_}f%ixHO=Ga3_6VGxOl(w*eycA|cWc^&)KybZCXYq3JUwkkkxJnC!dIHiH z9Mi1?e(x%fA-^|9qoZG3lb~EvwX%%`_gdAgVUTJ-EE?8m$4dhEO6b1P9OE=Y{dTSB zkf0So)y(1!FNEkP4(rnSD}fZI6`kdjLv&E<+%6a%4EiM3q%~QG4!z+gAZRDFKE@i{ zn~~U>FGC{rYE2{DI%Wkh)zskLQ3*`saj^bKjT-()$@C->peGp!J;{9NiM=fR6#nLe z%JZNy&X^7sDOe_id(f~I4PtmHN)M%ajl~Fae?jPYLFjx=&|ND~wIVD`qE!P#FS=N9 zCh2e?IFGAKFX2wp+GCs2~&Uzl_X-$wwF72XOK>(Tl57AQhr z|H$Xi8oY364HC`+ztDnsja9|&^|O8{;FaEOtgZzdks0ld4}%oLqdbt zR(capg?Uw{o(P-?`efbq=+y=-WRor!M0NjzU@C^g5<+}- zCKX7AR4GQ>adWmAaY<43GZFE|Y)%skvXMc|y*XP$OWVV@WVe>yoXxoPW@Q{p?lc|f z9_c>sw`)zZG{7C;AF0M03n zZ0w~|RvTcHpra0M<%c6NMXDP8+{*l6fTYb7Ct)NNt?1_L@GaSHWm6X1GR+48B`GFvDGagJIpyM}KJy>hP0CYNDX5V3>o>)0-s_Xwx8&Sf@r za?~Z75r!?Zt+c7*QK6WOA~rSC`6wM$&(Lmm7WrzTE~g-_>nO}Fc8OA|@<|-SbQWeO zWfy1*c*VbCxl$z0LX=0{ZZE`W(l<5RBaskJ3seg zBrc{>FHY}8eRMkC#$A`d-3{%ZjqQYhDTYhCG@O-a=)?67F~ha=4IA#p1c~*R4M%L7 zL3B8#)xcC24Cjjwg>NAqjp;K`ry!pNpL(-qq&)7Xl!uY}Kpx>Ilt=g-5?g@08;|{t zqXgEs4rP>6IArWdv6&nufNPAn9wU6yUWtD>E?}7_o^<#UW3R?UFT2Hc~Uc}HX&h#;}x$uA^cYm9)(i2)6S&7IvYq^cg799 zj<~2Eb`=-Rvu!ZPz8DO)oI+R^Y(a2m2_HeXk5AGK71iRX?LX;Nufn2JGiWSc9Z8Q7 zsuibqWaOa8uUkRDB8jrAk8_=+o_?XV>J%%ZuYm5*q*U@xbLOPFPU&mapAmi<`^FSp zhy56F9FM^{$x2<<^MR_1JXry5lM2vYb<&HIx3Q(_2uP%zg8#$W>Quu2y2G~u(FHc?lnwMY3Zi&Ba4&u`s88uIFB#otYDa-9~Y&U~v66WpiqehDt|q&M>Dv zGl!gZMsZH-Q8;bncHgTb@r7oBuW=#Xq%(K3QTN%_W z8w61Ce}++)#EGd`8})8a8BUZ2k2UC2^|@TmqCSb?=&_1;d$|Uc-wx##{S$&zORy54 z$g;R|20fQ(bT9h2vw|wFxN|N&55{p%if4xATu9F`ac4D?+ST92&R!fkQMB&ur8B@5 zP<}4e8$NZ>t?V-6kdB)=iYdNEAk8bj69iC-MQ_M+CgeKZF)e$inLXM6jTyIqW<-<1 zM7A@J0B)t)?CreI7G^k77u{!5#voGUJJ%SgmisVD(+O|K8VdBIt^tTJ6Jm-~=8Z<~ zx)ry@$l(kWi}%^qD^b@u{jxJudISe0q%n>NjsrXC2-kDq*!e^PVv0a#tz_DZj#Hl^ zkLg%HpiSA4zaY2pQkTOjAo=YVKJZAGcwDFp^;sXo(+Aku_;$UCPo&Bu|F_9Q3T6*h-MP*g>ltzmyGK%lAqReMr%5) zJV>(BEoK%1@f{doObX6O!w;$m%#f9FD><27c(OJM)Z8dQ#qf>rONRopmijY|#G)mV zf?bS{>&(&BY>OTo>(~O%dIn&C9d$NbY$LT@w8m!crDI@jgDrsdG`hV!Z^{WX))9i- zTO#FonmVqd!DbeHw$28dGmrU%px9vh7|T6x{o5d87A0F}osA6Fm(p>cZL(NrQ=b79 zqS(f!oRH}*XaIc35p&e7T!gxLgLQMX47X-WL^z1UZD3hMNP$urm*k`8PwKFDE{E;3FylP|z415HIK;i47e^iowjYHkk>+f$b?Snn zv=FV*K^fO*$lZ{)dXS&x|J07A3+VX6!Dh5U|lH-Oi??(jnP~5G4aqG7u#j zqy_3aqGW>}LGR!ZqS#>TQF;_`p;K%aj@V%9@LfXm8Hhdu(Kmc(pUpL2s~U{W(ZHbN zK!1}czX=|}PqHGB??XyavT+PU!cU^*6tMI$5@lZk$p@r=5g5+=@RZjhZh?r@2}l4b zvvKUjWh=c|fcv9Fid&Ah@h&iD$mJ#n|KwzsX!FqOj+UEn9>Lm8q@vo(5dtbd zLFU;KJkK_!_)`#3`AjPELYn#-I;bxj!&4rUHWq+%?_hLXL>)t(IHs3mD?{cT<@}SJ zYjC6|u3pZ>pv{A+4a%PQCHti{J{3n^;MbVBlJz$#nX?mN!`6XQF(}UGp4{wXg zExi1Jqid(O@$@V5yNk9dntkT2W_J&0$ui420h6U67=WGSPgG)e`!4Ee zPQTLML!32fdcw)ruNcF9tSV8q<^)O_a@x^6*9FCS1Zr%0=AmtB>oN zgfT?LI$_lJ^q#okyu?CsaEDytSkG4vt?Ce^jfk?&J$q^juH2-LF3Bwwo zxnCze#7f-rtWV|qx#ZtSMaE=qBAR$t#s4xCj*!ss2<55Z7^Co5ewT|gcDF|I)TNXK znd;&sgIdy!vsy$QFieOXsWHGts~5&NDq5b(!3_u&$imQ6nDK6KsXEp#$!l& zSp_KS$2uWgRfCdT9?y$wKy*algOQzTN;h^J`5p7VP*vQclp=0x5|vxXrNU87DUM6| z2w-72f6#?ibS!<{n2uxV#jbc`ddHD;IpbKm;~l)3f{e6|kKtT=Sy>r&UhKhq zu=H3uu8pJOiS!fctr;iMDSdVfWj$1uK^1Rt78jKY{u;dCf|np5$rcX<)7X3lmCn>* z9zMB9Ap{dE9*{CZC9NYkyni}~|8hTKiLsNUvmGCrCG(xf(rG|_ ze7uBUkm-%h(qgrGiV=biM&kM~xT?_f<q2GVD+ncYwmSb)i*EluUOr*5cvI2M zGj6F_wtPkHO8e9`Ywasn`x+$%UAKO*kgN6#VsY#7M8tKLZ7<1_Mv*U7DoyHFLvcjJ zbq2Yn(?}il(UC>dw&RUmF;I2ZqMj{r_(iliRJFwJ9}#Fd&HP7Ex2qqQT&v?`sXZmr zaHa1$Gi|#v$+Y>vgJS8R@081`4%UFQ~8oo_PZ1+u03%8K2W zkY78=4-#qHvOT_&V_V9*Yqj~s6Dc!ot(9HW&WGDDFb?5J; zC*NH%#h;Z>C@B#PZSQs**uhGs`NovovTkI-w4P(~+dap6j+uMR?`>C4(vD7{5N96R z@{-#ixfn4IZ%+-RGbi5DbcxI)nRl}itT95aR{F5pQ0%0?nLC~kIB9gEHC%!%@_>P$ zUP*1dbcILxnHg^olnbL7EnNLriZ^iAUrX&4^fhjd^pMu0gy^*EQ9k3nZJXKz`0RJU zEFvDPeUC&EfJ5QcWk|;}fR+Qaj7=wwoRKUPcbQ-Ck4B`1 zh$i^8=@owpT6^2~zH(((vs$JqG)yuElMg4Oyr`pl&Qd)Dg6qYIrY%PTgI3=pj~E!N z^ji?Q!6&F9vEUK+PuTiqN~5K-oI-c`Jqn-*h$vujH~psJPj2((Fa4&i|0vv=J9wR( zYhsRnv|eCYO_`7UoMmn8ava)m`~C@kWLewZ%HNuMhwvNz;PL!m=@z6xvhzD05_*p0 z%eevJ;PK)^>rC>Y*6wE8`EBpZ$1iOD*l+%$rsaontAs>{qI|h%lOT7O<#)~&4t{3- zv~dU{*qwP$-P&b7wDpkV(AKxMbEQ#0he=cbGPYWf-m#jn*qss?oG2qmO7+^YIq)6PMfii@SQTetUzS_RW{6!8dqtOShO)@P4$!-s`Z0v!#EE!U<95N=)<}hHB`dGIWB#3P=5MT7RXbB}yL+m?aoJ*>y8Z5YztrHD z7F*fex~7^nt1)(iM06+REuUm%K6YD8T^$&xZ>YssbwJho&9vt=T3I1RV(XG9%YC&q zQmx$}I1H=8=d1TMqI07Eu*ns&<@I$L*_Fn%VN(R?l5CZ{>=nnd}wrRc;6O2W~g_7WZfF72#d(@7yQcG43Sy z6^9M$w)y21to+u6x6anTQLkFCkj-AOK(BgOnbEeC9*M@K)T+ZhNj=cd8_V!JlK_7B zX#86^qk=7*UBQ+vtXQ;=mE|=uyvb!KZQ`=pRjcdRf`zx<_I*}nJStelLbd=ss^`v~ zOFgTTrMa_*K5X_}hBnmcJ5kd+8t}Obs`b7=n(eEpTYfJ|6|%OYvZ}Vg-mu&W*;GKV zwapDM#o872#s}9ft6yW69&D&383KRh>SnTo0up1=dVrp=%)%jY%`z@d+9 z!RKHmtS82q*P&#tK`FHcrPOAWgl3emHD3A$14`NuO5E^@X?O)MJ`8o@_+gbH=>Lrc zI_Ebd_kZc1rZF~S+Kij8n=$SB88?$>^wmD#U+t@1F(KVLany$8fzTPMqJXtUY6XPqnI0d!6CljF-?h(75|G>b`~CU* zeSQ;W&R%=3z4qE`uf6tKd+)=YKU&B}F@d>QsYTcSVLmZ~u^G29z{clJr2qft|6K{p zk-rY_?D9oD7lh3$DrPv?`iLi?ms*16_%kf*5l!+uQJxSg7%Q3MGV_EA7)nB{$+BLX z9u@mK1nuFdn2E=OQL!H$6`|$Alwd|^xyc)}g`*~-DS$lFrfVgrl7+Y(=@ zYvxFOBJR^e4HtxO(o*`7cyDUK1)4# zqknaqWK&G2d4>ULEs$)=p8$TvzyU@{vQjU8G|{gxkp@+C0KnO`&NlrjIj`P4MpdDNl)cC=qUruC&XXY73vhNmN{3qfrjv8UJD^mbPrLT$BnF4DeE0%9UmC~+{oHMSuY?fG$8)Ik@Xm5 z{SsN71L6wvsWOs39}s_uD~(T`%3FHcz%3`-2Z3N65N~GTLP$!oh6;B%SumsJc}MGA zLQI?`2uz#Ua+i=VKJN&MIx@5zb^0JZ57>FL@WmiQAC;fuI|l<9yE44fNoWQI?H278 z(Q?TAmRYp)!{0R)5r0jV-GG}cC-Hl;W$ZEL&SZ7A|J-{dSAVYAqJ5xM`ILVHv1c#P zu=*Lx#KJX>O=ezpA6vpg?5Au4+sxY79(ITwW5wos&8vI;{nY$SH}r`4b#t3VZ2r@_ z?Pc3`TekFLT_;}2mha4(Z`BWTU7p1J@xNbC`?C0;glcCrlhhpMZ#M)oT>ZC!m+kCQ z@OR(}be7aVROrQYyJ~}17=2XU-?V0kZ9NIBUJN%_grHe%w02M9&N81|Z!uKtj}|%6 z_!X4tYQTM&+}W{T?wlrfYEGZJ*W#Bu(^#k6+47-t?;&}AY|R1ZNhZhS48VuwPj%>O zWZNERa-OOis6sE?4weK`h;mH(*rz^n30mi6&^GzhyDvdIe;KsZ$p#{C9&o}g$x&@6 zpA>tt!HG6T8_ms+v&*l!+{c*oo%IY^}LfM|Zhs--5gk3FLo#yQkPnR~#r@oRZ{Jr_(RB_ZOZv65Xljn6cS=Vc0wnAw0 zy5yB6ZT!}bRC4sz&Q$W6t>;t8fn+p4a+{d+iQ7y|mz_z6dv)?MT!s=Tk9f|JkZF`i z7F-DCY|Jia!Wff?r<0GcJDsiQ&x?KFKDMBTT9gA7_$133I3HIY(6G zHJ>@-PczxmX+Q^@T1E;$gYg?oB-?LDwkpZ?2+8*IWaaR-eVEcy0JVPT3^#P9t++8& z7b+!}o+E9FP%=e+kCQU?ICb>P)2Y3Wc@ls8f|i%!=FQJixQ*LLDPd5b6SN`V0V%&u zZ2Xzn_=wneFGIoxp0vf}C#adee4vt}QjoCoc5VqowE zNF=AXM6^j4kq$y6hP1$6e6Wy$Ku|92q)y5|IpECS9u%Px@iR;tNJ4vuxP6nj{R46P zQnD6}#c&8b(Xk&xl&nwu#BbE)SVv7l?ut)w?`?4nYkQ16WPLtub6Q*4AH^@k<7q?1Nn(|_ z%8|6Lw>!3^C#`FLvaUX*0XFh*2W&V|^qnU^fgB`tgnx^LeSAnRwKN{?%go!mjpL@I zag6T~)LG{Er&wQr9~uGY0MBJ3Fq?R)W`tiG$5T&^pedwgn>pkgL26|RW^$-kJ@pk~ z=4w6oLHtpJ{1sB{YN9B2zwN~9@(LU`-BM%IR6BC2nD^@)& zQfBT7sy}xs%fb9>pfUo?TM`*wq1&^@I^FI3*r^J4er1oPd+F(vv$i^$rkK27IUyPg z{oJ){hT7ni!!kyDjT2C#PI-!n`%G7cZnH{*!i5_hLNG0Kn@P%)r&#jEjSk7`$Sb z(oo76FS4YHZlxlTio|3QmiqxsY3pCeU{X4-J%~`8k)R`7*oGO|KjbzA`*12YCRrkR zZN}oBo#mH5_atTYO{g#vv158@d18JrEn1XdrJ=%ph~@gp(VSujoQMXie6J%~Vq>Ag zzQ7zEa$AF=QdF-FuYkibIGSdci%pPF%X&wo7^{DmAg*_WWBnmpy)?n2kAn$AFJUDM zH#iiLgtRt`hGT2ba6Ea!FXwG_Y98uPN|-*i-_;ihv;KrXRs{Jq6&b=ax<7cBKT>3& zJd$#e5RQs+Y$itf)p_$N6ojVa48!p8)bL^cM-Po|Gb5Uicg ziVI?*ig>E^pA-&>x+E-I;nkGImEsKTsv1Ijo zs5%)urXD`dEnBD%K(HiK*o>jcB{Rsk4xWbc!3>h%4Kql&-27QhUiDBPm_Mz*(wxjo zN8SgNr!HaYE(bV&z zPIWUaf;*h*^Yq;6R5y$u(?-*@%%==6d6ipjUiEQeI#jqB%6A3VUj(Sm7@d|XTk8Uwat)B*VTg{$V02_~ z6A!RZfhjnGYY%3|5GC8>)g^~&%LYm4i%7T#9j9Sy2=1)g!IrzJr4c|vV~0l>X#M2a z*d4-E`}Y2G@BYb=BAYhU-~qu6ZyZ@fbuuH00jPb78v_E9I^?a!V+eOYIEp zuR$EzkZnVmcKx=inRe~AflSNVW@FkF@jo-f2hvHmlSy%RA0{2dnkjvveT8+w${+{W z1aklNH+Kl?(<2QDrXw@$oKCV!*F9Z;P`zPaxS`9r(j5N}ri-TqG)n$f=O`;P!iNqa zy)(RAq#ddvvDda*$4&E(u-2(3r~9bu7Hop=I{U zDMOA;$ET_=tj=_VcV;9Pt&5OoI_dRJFUOn?%u&GX-@UvgFneei zb$n@%>1o6FSNP5Xc848w4Yo0rz#1X^2nC;`KveEU>d$sKQkZf`lDTuzuXe+ z2g!3T76NfDA*SZWVdWuY72Ew`PojSb){T4-Gv6sK6SWm72PDz%9;H zn!(~?RJMVhh0jv;xA3-iDd&4;3gOfO=co-hC6VPA{|soQ5rXg^j{4(TxeGp znw0H8B`drV=qIc+)?}A;9fM;=|CRqh{sF6>);mGlovPVb$m3ybe(r&(7W~>^t_i5B z-odL;>Zi#6#Aj47&1+BAxvFK46JeiMeOT}#X#{~@wF1ba`Ihlkfh@ikJK{u%_A)v8 zRKYJtu@E2isuO_w%J&H8qzDhah_J&Tr<#(_bJ+ZK8{6T?p}9c3{@m2Nt-rADw%&(* zC4~0m^KDdb?rGa_cyFS!i7aAM`kv~VJ{0>Rbu4rLX@xHXP8urmb; z14vvj=hP}EzW|xPzm)9oB-ty_GdbgV$CN2K+gta*t03X4zfEXkxxgMXSR<0^2Qb1t zGRx@chZzk#ms}oUo&cr|0K zqRK#o0?512ki2Wd8;^hMN*xX4GhplPV7UXt%kU1?sy7CxpAFM?lZKG2K90LqN zmkBiLdDTI^GE(X#r1D5gdfuB3WeZLa?!Z1Vyd+2Ai>?FCA<1b0?o8;bo8vt$I6m=VF&Mqku$hWZ!CN} z{S1THHzc4$G0#cHBA(L`&+(||JcIP&>1H{~mqKiO$k^$j{r-cdWFFwSRWQ7$fpo+b z^PCk})YFAT2dq>-I#p}QMF-C!Q;2vvVxHs77HYuuk+Hk=&6j?(B*ZnUg|H5_s1B!d zDem?p?lvgJ>G&21oV>U6p5`1xgE!aF&5Y1+vR88rNfOI1YL3`8foN~c*#@RIt2bYS zXubq7Cy6*38@Djj6Le#5?;hIQGxqqfVfHiHFnb+4xXAe^5r18vo!UzbH5NK-i1Sr0 zK9LR#aqyVn{>9m*5`-Qw+|*Y?NE-Fk#7jGR_3tbn1}g-C^2J&12|m z7+bJ62CbYYtuH~tlWJIX)UOR!-UH!(Lu!cI#iS41OK7y_B#d!&UeFF=7ve+b3UmDH zu5iO~xP;*bIEFUmb5t936x(SCpKVGPpdlbK43kjHptdYpKYBPd2lf)M^^Af1t`P)m zk|=vl3ZBzcGnm#`dYnzBpO9ha>}0Q|O|yFt@xZbKGn6N>(p+!$s*k}3w4iZ8a!}Rf zmQd*h3uysxMx%WF5kHpS_#m)}QfwC=hcQHmcRXp3y~-qDm4J%a)#e-Zs@gRFn$6uk%N}QmlOpIvQm&ZIJ zB6RGOgeH*~nF%{47{It9V8?{c8=iS9Jq#6&A+}&x8D4{LuvZ7r@^*SJd;V5B+4GFI z(;E-No?}}iL4J(AY4yA5>jh7u1lZH^V=KRd3kRc)TyE4+%d6gnjU2hS`djzlIAt6_cRicC!0thdvN(Y0&dP1i>7J?K6m z);srNocP%Uk(fXveCo2H{@$p#O(6Aavh>dKX#b2yd#a#^=ruJ+JnDMvoUKnu>HNz%&eX@Gu0a6<|_eASWl> zx6*T-PPY{vcNY`jNw}xe^Wy|=FW{M>yJypLP{Litq$cgv_~{GrFE6ANrR72M-a~s2 z!H4eeZ#`>M)6LsgH31fN&5 zEHtML1dGq3Vq*re|2a~(AA&RA6FB({(~z7D6!Gw-IeA>4NU}$KVFLwx9tI}OmG@W@ z<=5oKq6bvC6V{xt3keMze|Rb~c^OVE3>Jwt!W!YPN{gvmdiJMtnZvjS(kCJjMUsOFjwuJxZ+C zCQm+YxOPis^5o-cI{Ap7N^q@6_>_e-!|cuW{(U(9ChT45V84jaY$tNmhx8sB0V0D8e`zM|qxYEq;(1 zeKh_i7G_(tB;|!^eF?NqH8MRKAycV#Xsdwb(bB{Ut`80@_;E0^;GUqf0Gss%ql1=$ zYo-2h34ptn|3*tpI0hi}R3`1bTs)$DryVLTdu(ZlSk!jJ_F{Y)#@&(zf0nYz`41u6 zg0?lm!<#n_=_gpZ@&Ec?ab%9?=t}m#Xx1F{s(12MP5Qs)j~Ka@WA2B=A|c!(4Jnu? z4Ja5b^+o5?yZfnK_diqmlmh?wy2QWM-^WKjJ?in1!BI;_t{Aywq>eBBQF;kV3bT{? z8y|Iv{^lk1mm9GkLQ#%&LW10g-3jOmf~XHP_`egBAH!D6ME-jm%LV8zK<{v91)y1g zUgppoq>3*1<1ZVP$^ibNyOJN!8V=Dx%{_n~;n2NE^+lyej7swX-p31Qqoy3t-5jEp zDgYI6s1m6IUH*8HQRxAIIo*}20S)62we%36z8qSN)U&A6*Qitr@C-k{%mmuQfK(1q zOLc$_a43k>5>z_CxFD7S+}>U35kRkUh+6tFpl1ydNadr_vqq(r0GoLMNv{!51BV&_ zg#j($&}yVaT&H-LH?#)OT%JD}SP?*Xbk~sq6>#V=r1qUhXz#wA7O&&UMQxVuo6GE{5@^dkZ%$yZP??NdLUsu_m->^V$5fa;IWae4Gar00D9t&uS#Mb@H? zG>w+M=rlT@AOofR0*2p;6;6z<`nip9aFT_1;2r-bIH*01T6_Y24XB($OHuP%K(jd1 z2Is|{ev94Bu9)W>qlG@D9`BJdMm(p8tn@J0%NM_O zN(*`aCg7ImPfn%!cN?Ha4y^>g`GD#OBClwqLS1kp>psfj@lU5buT#HCnS{(AQl=-r z{#@X%$`ru)r~Jz8cz%p44djj8iS%`xGAYnZKv!@`0(2LkbPk08%>s1cBymIy&H?lt zL3;fur3}Cq1aM8e9-20fG;Kcc{3wc15tm&iAFX?k_bTOSKS*_YG^D58i~L_xK5t<@ zpvMR@w6Yvv123#VN;+wb%VsOacSr_hziF7&~n^w%AqLSH#^bs*CF+$&*Jp zw$|d&OO3hlsm`6Ze2;B;l$^NFQm!xvh8Bn&O+~o+itzDD+BWs6_mEqM<1{-!!;#d6 zgd1=y-Y<-J!6_G+ax72W;1RFz(fMAi$b?-Rh&;L3-&BM^SsmUNF--UzTWJki5qAbm zS{kTnn^8e~(P*B!LvatX-eNfRGb*ZZV{H*%0^Liol_6VliY!kEp00krgmy6#U03+v zmv+g%L~3^9#x1Uvj>X2|F@A|u!jXqX9R@fhr0#A};4!)_J*piu{3TrXv*Z_<0`qyx zLs>5gKuqVu%PCOysYBEJx@6ZSoWD|6RXY0P#2H(8B~`_Cd?v$oy%{GIh-iyM>iV15 z9*K86dg zX%G!g0-Q7td}ZoW{)Nq?pcllR`HjjP%Yos-O?+cwUhhi-D}-MHcwUEj=3yxg&uII9=;#*dgz zK3gaJ_99%l)RtntUOeKYE~ah#qEj=SyohE}02A9K`>M8J2k*Ke1#sw7e`iYGwO~ec zmby)yMuVY!4II*In_46w?1Un)VBeVdmQ|oTIL1i9y!h0c=*Wjo!o$%t?NePclkPuC zp;k)!(`W|nrf41RyW#MQxPfQWwxA8;^asAT`RbFlo!wE<5iZZ1S7WAun z=%;KCuE3KJEPRqek3?gR4#05HzKT!XM5SBNB3~SrN_>N=&W^G%I@^Rv<3YcoaIhqvft$Jry~h_iG4IHY=GKk@^cuQ zb~t5AC!d5KFPP}qC5F2#nDDr(5iJsN^-z19k0g`<`{~yEZsIj@C8mdkRO2~vLC$hZ zS+|vmP#lpTlLmxlh_qrQDU)T1Vlz$;4j>cNs{kYSQp#dg;aq;XT?l58y`>>CIy0VV z;wo+MMGSbnK{qT^ksTbP6$_@{#o~2RYdF|L%i)x*Q3h~L#P2)-j z-Nx@9E3zY=jHcNj3uB}d26tsG!#YX#HVy)TSt_QEY&2Eq0>ez)kTudD8Wm)A0Teh4Qj+xGQPMaj82O+IlbM~$JM!NC|{0wTUIkC3p zBzVBF%E_@E2RinL53opsjeOD-xY2P=V6U_0zpjftwzVy>dS8&t`n5TK%YScahF9K^ zv#;a0ynk-Tan00me9gzXO;4-0%*z=xioQh@$m@~jl~uA*lf+a z*0pWxyd_-I<uBz?%20 zYkO?#ri6i1tjGU)L7hf7x3eQ@T*_j0tQfv%eA|U4&q=6GPQkJuF)6am%Sd0~1q06| zISR@HV!^*JHH~qJqmO!ZpJlGKoevp`EkUd72EV5E?49(qv}4aJGdZ9%h+t?_d(OVs zSi!i!pn}_$_8T*9?-%lWd%xKGg?X=e&nE3Fa#3KA6v0eOAz$)R%OIH;aTG3hclKd! zyhh>?nMpElV+ELFgj}Yc#A-vX6@UNfYC;gC0m)LO088XP13|lr$}G}ApZb&;H@@Do z4q!BKdBA{|oR(ip6PFl z2ygtVqrp?!jVOhKL+;f@NJlb&HWX+XtBxKzCE3XDGXE|(0G=9Ly6|_VmxET69&6h9 z@>Oliw8@%E&7^!V`C!V+i{-RWo6o&2Eazy^^yr~bmm_eUPYiXH1a0u#U=uWvSn!Fv zhd1xA*4bL$vZAB%9yG)=;RW2=PH%|5`w#Q#Z-S=gzvnh*-Eo_oWnwvhZ#>U3>-#?T z8q z{>Jtb&U5QNk&m2T{kNd`ZC%ffWbL#jE97O%dFQNh`{e9a#rpA==FjW8F~aSAKh~Pt z%=?@7=j?C(&e&>IuMh%hY97=2yk>vv zJ?rk_n=fdlxpQBev3q!~o;!`dc%1ta@z)da^VGy^;DsUk*AvTp^qL9jICr5)HPy#W z{$~Fb38+rSy`ip2l10xRXw$R%lb%9bG2o)1r(C&TD@1+dC3Tk~A0vNi zlgDAyxClYsV-!!3eV40N_L>g`$@#i_`26qD#SN}wPI$KC6pMgsa&~Tq#^~I#;9bnV zp?9oyN6=QfVX$rODyuyvIvqB91awV z?UOy33dInSpdJFPw&nx*JAy;t;awBxcfowte0*lN6O9y)1fT7iKhFpj zAy|bK?H(TJduB&Sa-7*=meRmh_ZXDH^3Zfz-L^u^=?o0k5Tge⁡61yTbR1&0med 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/RM.EXE b/Manx Aztec C86 v42b/BIN/RM.EXE new file mode 100644 index 0000000000000000000000000000000000000000..460f31cb17cfaab1ae1e0d4d018e2b83a092fdfc GIT binary patch literal 1938 zcmeHI|7%-S6hH4vZqwMNU6EG(Ax*Fb>>IHPW`%TF8b-Pe?E;-iqc*jroor~PuP-V7 zU`$8@ruUh_K>S6;8TU&SnGhv)>SEJ2!YEpbkg2uB_$B2zs1~~F+Fb8Ty0YQ^0`b9p z_q=n@_s_ZKJ^ti5h6e_Wu#YFC4+7l)_XE)H>eIHn|G)h=EARyVJr?GfunzkX8D~o? ztSQ>%+Z$1 zA}?e&-cO?aAdqSDih1&Z$o4_0dE#e@|MNp>eNrER_G@26A;W-DD`cnebvd70antaz zods`E`@uw3;--GuYR^t3mwTeWl}UmgBwrT}NY#OCKp^Y2 zP`Z~9H6<%3_37GA?}i1_#T|w1?@vFrV6qTPYo(1WXOYOzm&CM|G(g!RnTYyL68ArA8prL6I4Od=1@QC^by0 zj_o7BZAH3_k|xqs8{}NdMx+a*qlrg*dI%b>8au)I4iXZ)FQW%{=3%;24-&*?QRXX3 zxrooDDm6{=)DBP0pm`o#3agZq3waFyv5wF+45g2EVzbq#Yry9pRGWw9LYgf=LVT%Q zuC&vZ%1a-@eqOPtltZQ3Dm+DVlM%Umgtm@;AhLZ(;)&T0#QZd155m1#3OGvfkRhaE zJ#DA@l&8JP6S7slbJC@&YTPD(zo{N~W6zz`ylD?TkXMp<97YSK!GGEHVC!>Cd^6aQ z;Td=4B)HYo_7hqxydK|_8X}*Kf-b1-edif?bz+n@%W38$B&d!pqz!X8q@_Z74+$Y+ zJ$f-SbP)GF@V;r`9na_ok^HY)B8|ci9jNqK2L*iW?WEd00}SMbZ$yA%5cb3!D{{!=KJa7O2 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/SDB.EXE b/Manx Aztec C86 v42b/BIN/SDB.EXE new file mode 100644 index 0000000000000000000000000000000000000000..4d035593f940b241ee472ae3a7b74108daa7cea1 GIT binary patch literal 101948 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/SQZ.EXE b/Manx Aztec C86 v42b/BIN/SQZ.EXE new file mode 100644 index 0000000000000000000000000000000000000000..6ed9470b36963a74acdc9bae189597233aa5690b GIT binary patch literal 10280 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/TERM.EXE b/Manx Aztec C86 v42b/BIN/TERM.EXE new file mode 100644 index 0000000000000000000000000000000000000000..acbee34f8eb5ab4fc5ad6c48492a300317e0765f GIT binary patch literal 4678 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 UWdi;@WX8`O%ZQZcQY_xqf4?koY?{yy*T{qMCM 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 V;iDUOTe27z1Z4Wz_s`N({{j=EP5S@< literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/BIN/rm.c b/Manx Aztec C86 v42b/BIN/rm.c new file mode 100644 index 0000000..bb718e7 --- /dev/null +++ b/Manx Aztec C86 v42b/BIN/rm.c @@ -0,0 +1,13 @@ +#include +#include + +main(int argc, char **argv) +{ + + if (argc > 1) { + unlink(argv[1]); + } + + exit(0); + +} \ No newline at end of file diff --git a/Manx Aztec C86 v42b/CRCLIST b/Manx Aztec C86 v42b/CRCLIST new file mode 100644 index 0000000..9809e46 --- /dev/null +++ b/Manx Aztec C86 v42b/CRCLIST @@ -0,0 +1,108 @@ +arcv.com: crc=495a +as.exe: crc=a3ee +assert.h: crc=bf7e +build.arc: crc=c424 +c.exe: crc=d6c9 +c.lib: crc=265b +c86.lib: crc=7fda +cc.exe: crc=7004 +cgen.exe: crc=97ff +cl.lib: crc=f2f6 +clc.lib: crc=e39f +cld.lib: crc=c049 +cnm.exe: crc=d526 +color.h: crc=de55 +cpm86.arc: crc=5dd7 +cpp.exe: crc=0e57 +crc.exe: crc=80f8 +crt0.obj: crc=d6c2 +ctags.com: crc=79e7 +ctoeng.com: crc=9147 +ctype.h: crc=8342 +db.exe: crc=1c83 +dbg-read.me: crc=c436 +dbgmap.c: crc=5a54 +dbgmap.exe: crc=2ba7 +dbgmap.mak: crc=2cef +diff.exe: crc=d1ca +dioctl.h: crc=90b8 +dos20.arc: crc=c381 +engtoc.com: crc=0d08 +errno.h: crc=014d +exmpl.c: crc=cee0 +fcntl.h: crc=95b9 +float.h: crc=1234 +g.arc: crc=3e60 +g.lib: crc=040c +gl.lib: crc=1ebe +glc.lib: crc=1fde +gld.lib: crc=403f +grep.exe: crc=72d9 +hd.com: crc=fdf3 +hex86.exe: crc=9c02 +initsdb.com: crc=7972 +install.com: crc=2c0f +io.h: crc=3b0f +lb.exe: crc=31fc +lcrom.o: crc=fc29 +ldrom.o: crc=f2b0 +libc.h: crc=012d +limits.h: crc=1c7b +lmacros.h: crc=eb95 +ln.exe: crc=7fec +locale.h: crc=3313 +lrom.o: crc=fc29 +ls.com: crc=7593 +m.lib: crc=67ca +m87.lib: crc=12c9 +m87l.lib: crc=cb9b +m87lc.lib: crc=4eef +m87ld.lib: crc=bac7 +m87s.lib: crc=8a41 +m87sl.lib: crc=9ab3 +m87slc.lib: crc=aec9 +m87sld.lib: crc=c568 +make.exe: crc=9530 +math.arc: crc=c003 +math.h: crc=39ae +mch86.arc: crc=941d +memory.h: crc=e0dd +misc.arc: crc=c805 +ml.lib: crc=e082 +mlc.lib: crc=c28a +mld.lib: crc=f003 +model.h: crc=9339 +obd.exe: crc=6448 +obj.exe: crc=49c2 +ord.exe: crc=90b8 +ovbgn.o: crc=c959 +ovld.o: crc=bfc0 +ovldpath.o: crc=b36d +prof.exe: crc=9031 +proto.exe: crc=c4a7 +read.me: crc=1d4f +rom.asm: crc=418c +rom.o: crc=f2b0 +s.arc: crc=0b60 +s.lib: crc=9721 +sdb.exe: crc=e875 +setjmp.h: crc=cca9 +sgtty.h: crc=070f +signal.h: crc=2087 +sl.lib: crc=fd2c +slc.lib: crc=f5e0 +sld.lib: crc=1b69 +sqz.exe: crc=5071 +stat.h: crc=28b4 +stdarg.h: crc=aee1 +stddef.h: crc=73dd +stdio.arc: crc=5c57 +stdio.h: crc=f090 +stdlib.h: crc=2e8a +stksiz.c: crc=026f +string.h: crc=9d60 +term.arc: crc=66f2 +term.exe: crc=9692 +time.h: crc=1d84 +unpack.bat: crc=9388 +z.exe: crc=8863 diff --git a/Manx Aztec C86 v42b/EXMPL.C b/Manx Aztec C86 v42b/EXMPL.C new file mode 100644 index 0000000..84ac78e --- /dev/null +++ b/Manx Aztec C86 v42b/EXMPL.C @@ -0,0 +1,9 @@ +main() +{ + char buffer[100]; + + printf("Please enter your name: "); + gets(buffer); + printf("Hello %s, welcome to the growing family of AZTEC C users.\n", + buffer); +} diff --git a/Manx Aztec C86 v42b/INCLUDE/ASSERT.H b/Manx Aztec C86 v42b/INCLUDE/ASSERT.H new file mode 100644 index 0000000..ed041aa --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/ASSERT.H @@ -0,0 +1,10 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#ifndef assert +#ifndef NDEBUG +void _assert(char *expr, char *filename, unsigned int lineno); +#define assert(x) if (!(x)) _assert(#x, __FILE__, __LINE__); else; +#else +#define assert(x) +#endif +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/COLOR.H b/Manx Aztec C86 v42b/INCLUDE/COLOR.H new file mode 100644 index 0000000..d67e39a --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/COLOR.H @@ -0,0 +1,13 @@ +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 3 +#define RED 4 +#define MAGENTA 5 +#define YELLOW 6 +#define WHITE 7 + +#define BLINK 1 +#define NO_BLINK 0 +#define HIGH 1 +#define LOW 0 diff --git a/Manx Aztec C86 v42b/INCLUDE/CTYPE.H b/Manx Aztec C86 v42b/INCLUDE/CTYPE.H new file mode 100644 index 0000000..b8e2f3b --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/CTYPE.H @@ -0,0 +1,23 @@ +/* Copyright Manx Software Systems, Inc. 1984. All rights reserved */ + +#ifndef __CTP +extern char ctp_[]; + +#define isalpha(x) (ctp_[(x)+1]&0x03) +#define isupper(x) (ctp_[(x)+1]&0x01) +#define islower(x) (ctp_[(x)+1]&0x02) +#define isdigit(x) (ctp_[(x)+1]&0x04) +#define isxdigit(x) (ctp_[(x)+1]&0x08) +#define isalnum(x) (ctp_[(x)+1]&0x07) +#define isspace(x) (ctp_[(x)+1]&0x10) +#define ispunct(x) (ctp_[(x)+1]&0x40) +#define iscntrl(x) (ctp_[(x)+1]&0x20) +#define isprint(x) (ctp_[(x)+1]&0xc7) +#define isgraph(x) (ctp_[(x)+1]&0x47) +#define isascii(x) (((x)&0x80)==0) + +#define toascii(x) ((x)&127) +#define _tolower(x) ((x)|0x20) +#define _toupper(x) ((x)&0x5f) +#define __CTP +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/DIOCTL.H b/Manx Aztec C86 v42b/INCLUDE/DIOCTL.H new file mode 100644 index 0000000..092740d --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/DIOCTL.H @@ -0,0 +1,26 @@ +/* Copyright (C) 1983 by Manx Software Systems */ + +#define TIOCGETP 0 /* read contents of tty control structure */ +#define TIOCSETP 1 /* set contents of tty control structure */ +#define TIOCSETN 1 /* ditto only don't wait for output to flush */ + +/* special codes for MSDOS 2.x only */ +#define TIOCREAD 2 /* read control info from device */ +#define TIOCWRITE 3 /* write control info to device */ +#define TIOCDREAD 4 /* same as 2 but for drives */ +#define TIOCDWRITE 5 /* same as 3 but for drives */ +#define GETISTATUS 6 /* get input status */ +#define GETOSTATUS 7 /* get output status */ + +struct sgttyb { + short sg_flags; /* control flags */ + char sg_erase; /* ignored */ + char sg_kill; /* ignored */ +}; + +/* settings for flags */ +#define RAW 0x20 /* no echo or mapping of input/output BDOS(6) */ + +/* Refer to the MSDOS technical reference for detailed information on + * the remaining flags. + */ diff --git a/Manx Aztec C86 v42b/INCLUDE/ERRNO.H b/Manx Aztec C86 v42b/INCLUDE/ERRNO.H new file mode 100644 index 0000000..2ab0591 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/ERRNO.H @@ -0,0 +1,29 @@ +extern int errno; +extern char *sys_errlist[]; +extern int sys_nerr; + +/* MsDos return codes */ +#define EINVAL 1 +#define ENOENT 2 +#define ENOTDIR 3 +#define EMFILE 4 +#define EACCES 5 +#define EBADF 6 +#define EARENA 7 +#define ENOMEM 8 +#define EFAULT 9 +#define EINVENV 10 +#define EBADFMT 11 +#define EINVACC 12 +#define EINVDAT 13 +#define ENODEV 15 +#define ERMCD 16 +#define EXDEV 17 +#define ENOMORE 18 + +/* additional codes used by Aztec C */ +#define EEXIST 19 +#define ENOTTY 20 +/* used by the math library */ +#define ERANGE 21 +#define EDOM 22 diff --git a/Manx Aztec C86 v42b/INCLUDE/FCNTL.H b/Manx Aztec C86 v42b/INCLUDE/FCNTL.H new file mode 100644 index 0000000..e394bf9 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/FCNTL.H @@ -0,0 +1,13 @@ +#define O_RDONLY 0 +#define O_WRONLY 1 +#define O_RDWR 2 +#define O_DENYRW 0x10 +#define O_DENYW 0x20 +#define O_DENYR 0x30 +#define O_DENYN 0x40 +#define O_INHER 0x80 +#define O_COMP 0x00 +#define O_CREAT 0x0100 +#define O_TRUNC 0x0200 +#define O_EXCL 0x0400 +#define O_APPEND 0x0800 diff --git a/Manx Aztec C86 v42b/INCLUDE/FLOAT.H b/Manx Aztec C86 v42b/INCLUDE/FLOAT.H new file mode 100644 index 0000000..bbca7eb --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/FLOAT.H @@ -0,0 +1,32 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#define FLT_RADIX 2 +#define FLT_MANT_DIG 24 +#define FLT_EPSILON 1.19209290e-7F +#define FLT_DIG 6 +#define FLT_MIN_EXP -125 +#define FLT_MIN 1.17549435e-38F +#define FLT_MIN_10_EXP -37 +#define FLT_MAX_EXP 128 +#define FLT_MAX 3.40282347e+38F +#define FLT_MAX_10_EXP 38 + +#define DBL_MANT_DIG 53 +#define DBL_EPSILON 2.2204460492503131e-16 +#define DBL_DIG 15 +#define DBL_MIN_EXP -1021 +#define DBL_MIN 2.225073858507201e-308 +#define DBL_MIN_10_EXP -307 +#define DBL_MAX_EXP 1024 +#define DBL_MAX 1.797693134862316e+308 +#define DBL_MAX_10_EXP 308 + +#define LDBL_MANT_DIG 53 +#define LDBL_EPSILON 2.2204460492503131e-16 +#define LDBL_DIG 15 +#define LDBL_MIN_EXP -1021 +#define LDBL_MIN 2.225073858507201e-308 +#define LDBL_MIN_10_EXP -307 +#define LDBL_MAX_EXP 1024 +#define LDBL_MAX 1.797693134862316e+308 +#define LDBL_MAX_10_EXP 308 diff --git a/Manx Aztec C86 v42b/INCLUDE/IO.H b/Manx Aztec C86 v42b/INCLUDE/IO.H new file mode 100644 index 0000000..d78d6a3 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/IO.H @@ -0,0 +1,82 @@ +/* Copyright (C) 1982 by Manx Software Systems */ +/* + * if MAXCHAN is changed then the initialization of chantab in croot.c + * should be adjusted so that it initializes EXACTLY MAXCHAN elements of + * the array. If this is not done, the I/O library may exhibit + * strange behavior. + */ +#define MAXCHAN 11 /* maximum number of I/O channels */ + +/* + * argument to device routines. + * this is a typedef to allow future redeclaration to guarantee + * enough space to store either a pointer or an integer. + */ +typedef char *_arg; + +/* + * device control structure + */ +struct device { + char d_read; + char d_write; + char d_ioctl; /* used by character special devices (eg CON:) */ + char d_seek; /* used by random I/O devices (eg: a file) */ + int (*d_open)(); /* for special open handling */ +}; + +/* + * device table, contains names and pointers to device entries + */ +struct devtabl { + char *d_name; + struct device *d_dev; + _arg d_arg; +}; + +/* + * channel table: relates fd's to devices + */ +struct channel { + char c_read; + char c_write; + char c_ioctl; + char c_seek; + int (*c_close)(); + _arg c_arg; +} ; +extern struct channel chantab[MAXCHAN]; + +struct fcb { + char f_driv; + char f_name[8]; + char f_type[3]; + char f_ext; + char f_resv[2]; + char f_rc; + char f_sydx[16]; + char f_cr; + unsigned f_record; char f_overfl; +}; + +struct fcbtab { + struct fcb fcb; + char offset; + char flags; + char user; +}; + +#define OPNFIL 15 +#define CLSFIL 16 +#define DELFIL 19 +#define READSQ 20 +#define WRITSQ 21 +#define MAKFIL 22 +#define SETDMA 26 +#define GETUSR 32 +#define READRN 33 +#define WRITRN 34 +#define FILSIZ 35 +#define SETREC 36 + +#define Wrkbuf ((char *)0x80) diff --git a/Manx Aztec C86 v42b/INCLUDE/LIBC.H b/Manx Aztec C86 v42b/INCLUDE/LIBC.H new file mode 100644 index 0000000..3775f8e --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/LIBC.H @@ -0,0 +1,49 @@ +/* Copyright (C) 1981, 1982 by Manx Software Systems */ +#define fgetc getc +#define fputc putc + +extern int errno; +#define FLT_FAULT 0 /* vector for floating-point faults */ +extern int (*Sysvec[])(); + +#define NULL (void *)0 +#define EOF -1 +#define BUFSIZ 1024 +#define MAXSTREAM 20 + +#define _BUSY 0x01 +#define _ALLBUF 0x02 +#define _DIRTY 0x04 +#define _EOF 0x08 +#define _IOERR 0x10 +#define _TEMP 0x20 /* temporary file (delete on close) */ + +typedef struct { + char *_bp; /* current position in buffer */ + char *_bend; /* last character in buffer + 1 */ + char *_buff; /* address of buffer */ + char _flags; /* open mode, etc. */ + char _unit; /* token returned by open */ + char _bytbuf; /* single byte buffer for unbuffer streams */ + int _buflen; /* length of buffer */ + char *_tmpname; /* name of file for temporaries */ +} FILE; + +extern FILE Cbuffs[]; +extern char *Stdbufs; /* free list of buffers */ +FILE *fopen(); +long ftell(); + +#define stdin (&Cbuffs[0]) +#define stdout (&Cbuffs[1]) +#define stderr (&Cbuffs[2]) +#define getchar() agetc(stdin) +#define putchar(c) aputc(c, stdout) +#define feof(fp) (((fp)->_flags&_EOF)!=0) +#define ferror(fp) (((fp)->_flags&_IOERR)!=0) +#define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF)) +#define fileno(fp) ((fp)->_unit) +#define fflush(fp) flsh_(fp,-1) + +#define P_tmpdir "" +#define L_tmpnam 40 diff --git a/Manx Aztec C86 v42b/INCLUDE/LIMITS.H b/Manx Aztec C86 v42b/INCLUDE/LIMITS.H new file mode 100644 index 0000000..f92a4f5 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/LIMITS.H @@ -0,0 +1,21 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#ifndef __LIMITS +#define CHAR_BIT 8 +#define SCHAR_MIN -128 +#define SCHAR_MAX 127 +#define CHAR_MIN -128 +#define CHAR_MAX 127 +#define UCHAR_MAX 255 +#define SHRT_MIN 0x8000 +#define SHRT_MAX 0x7fff +#define USHRT_MAX 0xffffU +#define INT_MIN 0x8000 +#define INT_MAX 0x7fff +#define UINT_MAX 0xffffU +#define LONG_MIN 0x80000000L +#define LONG_MAX 0x7fffffffL +#define ULONG_MAX 0xffffffffU + +#define __LIMITS +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/LMACROS.H b/Manx Aztec C86 v42b/INCLUDE/LMACROS.H new file mode 100644 index 0000000..c3686de --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/LMACROS.H @@ -0,0 +1,210 @@ + nlist +; Copyright (C) 1985 by Manx Software Systems, Inc. +; :ts=8 + ifndef MODEL +MODEL equ 0 + endif + if MODEL and 1 + largecode +FARPROC equ 1 +FPTRSIZE equ 4 + else +FPTRSIZE equ 2 + endif + if MODEL and 2 +LONGPTR equ 1 + endif + +;this macro to be used on returning +;restores bp and registers +pret macro +if havbp + pop bp +endif + ret + endm + +internal macro pname + public pname +pname proc + endm + +intrdef macro pname + public pname +ifdef FARPROC + pname label far +else + pname label near +endif + endm + +procdef macro pname, args + public pname&_ +ifdef FARPROC + _arg = 6 + pname&_ proc far +else + _arg = 4 + pname&_ proc near +endif +ifnb + push bp + mov bp,sp + havbp = 1 + decll +else + havbp = 0 +endif + endm + +entrdef macro pname, args + public pname&_ +ifdef FARPROC + _arg = 6 + pname&_: +else + _arg = 4 + pname&_: +endif +ifnb +if havbp + push bp + mov bp,sp +else + error must declare main proc with args, if entry has args +endif + decll +endif + endm + +;this macro equates 'aname' to arg on stack +decl macro aname, type +;;'byte' or anything else +havtyp = 0 +ifidn , + aname equ byte ptr _arg[bp] + _arg = _arg + 2 + havtyp = 1 +endif +ifidn , + aname equ dword ptr _arg[bp] + _arg = _arg + 4 + havtyp = 1 +endif +ifidn , + aname equ qword ptr _arg[bp] + _arg = _arg + 8 + havtyp = 1 +endif +ifidn , + ifdef LONGPTR + aname equ dword ptr _arg[bp] + _arg = _arg + 4 + else + aname equ word ptr _arg[bp] + _arg = _arg + 2 + endif + havtyp = 1 +endif +ifidn , + ifdef FARPROC + aname equ dword ptr _arg[bp] + _arg = _arg + 4 + else + aname equ word ptr _arg[bp] + _arg = _arg + 2 + endif + havtyp = 1 +endif +ifidn , + aname equ word ptr _arg[bp] + _arg = _arg + 2 + havtyp = 1 +endif +ife havtyp + error -- type is unknown. +endif + endm + +;this macro loads an arg pointer into DEST, with optional SEGment +ldptr macro dest, argname, seg +ifdef LONGPTR + ifnb ;;get segment if specified + ifidn , + les dest,argname + else + ifidn , + lds dest,argname + else + mov dest, word ptr argname + mov seg, word ptr argname[2] + endif + endif + else + ifidn , ;;si gets seg in ds + lds si, argname + else + ifidn , ;;or, es:di + les di, argname + else + garbage error: no seg for long pointer + endif + endif + endif +else + mov dest, word ptr argname ;;get the pointer +ENDIF + ENDM + +decll macro list + IRP i, + decl i + ENDM + ENDM + +pend macro pname +pname&_ endp + endm + +retptrm macro src,seg +mov ax, word ptr src +ifdef LONGPTR + mov dx, word ptr src+2 +endif + endm + +retptrr macro src,seg +mov ax,src +ifdef LONGPTR + ifnb + mov dx, seg + endif +endif + endm + +retnull macro +ifdef LONGPTR + sub dx,dx +endif + sub ax,ax + endm + +pushds macro + ifdef LONGPTR + push ds + endif + endm + +popds macro + ifdef LONGPTR + pop ds + endif + endm + +finish macro +codeseg ends + endm + + list +codeseg segment byte public 'code' + assume cs:codeseg diff --git a/Manx Aztec C86 v42b/INCLUDE/LOCALE.H b/Manx Aztec C86 v42b/INCLUDE/LOCALE.H new file mode 100644 index 0000000..2c2fd7d --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/LOCALE.H @@ -0,0 +1,11 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#ifndef LC_ALL +#define LC_ALL 0 +#define LC_COLLATE 1 +#define LC_CTYPE 2 +#define LC_NUMERIC 3 +#define LC_TIME 4 + +char *setlocale(int category, const char *locale); +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/MATH.H b/Manx Aztec C86 v42b/INCLUDE/MATH.H new file mode 100644 index 0000000..3bebc80 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/MATH.H @@ -0,0 +1,24 @@ +/* Copyright Manx Software Systems, Inc. 1984. All rights reserved */ + +#ifndef __NOPROTO__ +double sin(double), cos(double), tan(double), cotan(double); +double asin(double), acos(double), atan(double), atan2(double,double); +double ldexp(double,int), frexp(double, int *), modf(double, double *); +double floor(double), ceil(double), fabs(double), fmod(double,double); +double log(double), log10(double), exp(double), sqrt(double); +double pow(double,double), sinh(double), cosh(double), tanh(double); +#else +double sin(), cos(), tan(), cotan(); +double asin(), acos(), atan(), atan2(); +double ldexp(), frexp(), modf(); +double floor(), ceil(), fabs(), fmod(); +double log(), log10(), exp(), sqrt(); +double pow(), sinh(), cosh(), tanh(); +#endif + +#ifndef HUGE_VAL +#define HUGE_VAL 1.79e+308 +#define LOGHUGE 709.778 +#define TINY_VAL 2.2e-308 +#define LOGTINY -708.396 +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/MEMORY.H b/Manx Aztec C86 v42b/INCLUDE/MEMORY.H new file mode 100644 index 0000000..3d8d0c1 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/MEMORY.H @@ -0,0 +1,2 @@ +extern char *memcpy(), *memchr(), *memccpy(), memset(); +extern int memcmp(); diff --git a/Manx Aztec C86 v42b/INCLUDE/MODEL.H b/Manx Aztec C86 v42b/INCLUDE/MODEL.H new file mode 100644 index 0000000..8889f3e --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/MODEL.H @@ -0,0 +1,7 @@ +#if (sizeof(int (*)()) == 4) +#define _LARGECODE +#endif + +#if (sizeof(char *) == 4) +#define _LARGEDATA +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/SETJMP.H b/Manx Aztec C86 v42b/INCLUDE/SETJMP.H new file mode 100644 index 0000000..38e2937 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/SETJMP.H @@ -0,0 +1,9 @@ +/* Copyright Manx Software Systems, Inc. 1984. All rights reserved */ +#ifndef __JBUFSIZE +#define __JBUFSIZE (6*sizeof(char *)) + +typedef char jmp_buf[__JBUFSIZE]; + +int setjmp(jmp_buf env); +void longjmp(jmp_buf env, int val); +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/SGTTY.H b/Manx Aztec C86 v42b/INCLUDE/SGTTY.H new file mode 100644 index 0000000..a2a5cad --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/SGTTY.H @@ -0,0 +1,19 @@ +/* Copyright (C) 1983 by Manx Software Systems */ + +#define TIOCGETP 0 /* read contents of tty control structure */ +#define TIOCSETP 1 /* set contents of tty control structure */ +#define TIOCSETN 1 /* ditto only don't wait for output to flush */ + +struct sgttyb { + char sg_erase; /* ignored */ + char sg_kill; /* ignored */ + short sg_flags; /* control flags */ +}; + +/* settings for flags */ +#define _VALID 0x3a +#define RAW 0x20 /* no echo or mapping of input/output BDOS(6) */ +#define CRMOD 0x10 /* map input CR to NL, output NL to CR LF */ +#define ECHO 0x08 /* ignored unless CBREAK is set */ +#define CBREAK 0x02 /* input using BDOS(1), unless echo off then */ + /* same as RAW */ diff --git a/Manx Aztec C86 v42b/INCLUDE/SIGNAL.H b/Manx Aztec C86 v42b/INCLUDE/SIGNAL.H new file mode 100644 index 0000000..05ee21c --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/SIGNAL.H @@ -0,0 +1,32 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#ifndef _NUMSIG + +#define SIGINT 1 +#define SIGTERM 2 +#define SIGABRT 3 +#define SIGFPE 4 +#define SIGILL 5 +#define SIGSEGV 6 + +#define _NUMSIG 6 +#define _FSTSIG 1 + +#ifndef __NOPROTO__ +#define SIG_DFL ((void (*)(int))0) +#define SIG_IGN ((void (*)(int))1) +#define SIG_ERR ((void (*)(int))-1) + +void (*signal(int sig, void (*func)(int)))(int); +int raise(int sig); + +#else +#define SIG_DFL ((void (*)())0) +#define SIG_IGN ((void (*)())1) +#define SIG_ERR ((void (*)())-1) + +void (*signal())(); +int raise(); +#endif + +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/STAT.H b/Manx Aztec C86 v42b/INCLUDE/STAT.H new file mode 100644 index 0000000..5e10dba --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/STAT.H @@ -0,0 +1,29 @@ +/* Copyright (C) 1984 by Manx Software Systems */ + +struct stat { + char st_attr; + long st_mtime; + long st_size; +}; + +/* settings of the st_attr field */ +#define ST_RDONLY 0x01 /* read only file */ +#define ST_HIDDEN 0x02 /* hidden file */ +#define ST_SYSTEM 0x04 /* system file */ +#define ST_VLABEL 0x08 /* volume label */ +#define ST_DIRECT 0x10 /* file is a sub-directory */ +#define ST_ARCHIV 0x20 /* set when file has been written and closed */ + +/* the format of the st_mtime field is: + < year > < month> < day > < hours > < minutes > < sec/2 > + 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + +where: + year is from 0-119 for 1980-2099 + month is 1-12 + day is 1-31 + hours is 0-23 + minutes is 0-59 + sec/2 is 0-29 +*/ diff --git a/Manx Aztec C86 v42b/INCLUDE/STDARG.H b/Manx Aztec C86 v42b/INCLUDE/STDARG.H new file mode 100644 index 0000000..66717a9 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/STDARG.H @@ -0,0 +1,6 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +typedef char *va_list; +#define va_start(ap, parmN) ((ap) = (char *)(&parmN + 1)) +#define va_arg(ap, type) ((ap) += sizeof(type), ((type *)(ap))[-1]) +#define va_end(ap) diff --git a/Manx Aztec C86 v42b/INCLUDE/STDDEF.H b/Manx Aztec C86 v42b/INCLUDE/STDDEF.H new file mode 100644 index 0000000..6e17298 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/STDDEF.H @@ -0,0 +1,14 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#ifndef __DEFS +extern char __offtemp[]; + +typedef int ptrdiff_t; +typedef unsigned int size_t; + +#define NULL ((void *)0) +#define offsetof(type, ident) ((char *)((type *)__offtemp)->ident - __offtemp) + +extern int errno; +#define __DEFS +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/STDIO.H b/Manx Aztec C86 v42b/INCLUDE/STDIO.H new file mode 100644 index 0000000..467dac5 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/STDIO.H @@ -0,0 +1,74 @@ +/* Copyright Manx Software Systems, Inc. 1982-1987. All rights reserved */ + +#ifndef _BUSY + +#define fgetc getc +#define fputc putc +#define NULL ((void *)0) +#define EOF -1 + + +#define BUFSIZ 1024 +#define MAXSTREAM 20 + +#define _BUSY 0x01 +#define _ALLBUF 0x02 +#define _DIRTY 0x04 +#define _EOF 0x08 +#define _IOERR 0x10 +#define _TEMP 0x20 /* temporary file (delete on close) */ + +#define _IOFBF 0x00 +#define _IOLBF 0x40 +#define _IONBF 0x80 + +typedef struct { + char *_bp; /* current position in buffer */ + char *_bend; /* last character in buffer + 1 */ + char *_buff; /* address of buffer */ + char _flags; /* open mode, etc. */ + char _unit; /* token returned by open */ + char _bytbuf; /* single byte buffer for unbuffer streams */ + int _buflen; /* length of buffer */ + char *_tmpname; /* name of file for temporaries */ +} FILE; + +extern FILE Cbuffs[]; + +#ifndef __NOPROTO__ +FILE *fopen(char *name, char *mode); +FILE *freopen(char *name, char *mode, FILE *stream); +FILE *fdopen(int fd, char *mode); +int fseek(FILE *stream, long pos, int whence); +long ftell(FILE *stream); +int remove(const char *filename); +#else +FILE *fopen(), *freopen(), *fdopen(); +long ftell(); +#endif + + +#define stdin (&Cbuffs[0]) +#define stdout (&Cbuffs[1]) +#define stderr (&Cbuffs[2]) +#ifdef MSDOS +#define stdaux (&Cbuffs[3]) +#define stdprt (&Cbuffs[4]) +#endif +#define getchar() agetc(stdin) +#define putchar(c) aputc(c, stdout) +#define feof(fp) (((fp)->_flags&_EOF)!=0) +#define ferror(fp) (((fp)->_flags&_IOERR)!=0) +#define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF)) +#define fileno(fp) ((fp)->_unit) +#define fflush(fp) flsh_(fp,-1) + +#define P_tmpdir "" +#define L_tmpnam 40 + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 +#define TMP_MAX 26 + +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/STDLIB.H b/Manx Aztec C86 v42b/INCLUDE/STDLIB.H new file mode 100644 index 0000000..bf9394c --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/STDLIB.H @@ -0,0 +1,57 @@ +/* Copyright Manx Software Systems, Inc. 1988. All rights reserved */ + +typedef unsigned int size_t; + +#ifndef __NOPROTO__ +double atof(const char *nptr); +int atoi(const char *nptr); +long int atol(const char *nptr); +double strtod(const char *nptr, char *endptr); +long int strtol(char *nptr, char *endptr, int base); +unsigned long int stroul(char *nptr, char *endptr, int base); +int rand(void); +void srand(unsigned int seed); +void *calloc(size_t nmemb, size_t size); +void *malloc(size_t size); +void *realloc(void *ptr, size_t); +void abort(void); +int atexit(void (*func)(void)); +int exit(int status); +char *getenv(const char *name); +int system(const char *string); +void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, + int (*compar)(const void *, const void *)); +int abs(int j); + +#else + +double atof(); +int atoi(); +long int atol(); +double strtod(); +long int strtol(); +unsigned long stroul(); +int rand(); +void srand(); +void *calloc(), *malloc(); +void *realloc(), abort(); +int atexit(); +int exit(); +char *getenv(); +int system(); +void *bsearch(); +int abs(); +#endif + + +#if __STDC__ != 1 +char *stricmp(const char *string1, const char *string2); +#ifdef __NOPROTO__ +char *strrev(const char *string1); +char *strlwr(const char *string1); +#else +char *strrev(); +char *strlwr(); +#endif +#endif + diff --git a/Manx Aztec C86 v42b/INCLUDE/STRING.H b/Manx Aztec C86 v42b/INCLUDE/STRING.H new file mode 100644 index 0000000..c05c087 --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/STRING.H @@ -0,0 +1,48 @@ +/* Copyright Manx Software Systems, Inc. 1987. All rights reserved */ + +#ifndef __NOPROTO__ +void *memcpy(void *s1, const void *s2, unsigned int n); +void *memmove(void *s1, const void *s2, unsigned int n); +char *strcpy(char *s1, const char *s2); +char *strncpy(char *s1, const char *s2, unsigned int n); +char *strcat(char *s1, const char *s2); +char *strncat(char *s1, const char *s2, unsigned int n); +int memcmp(const void *s1, const void *s2, unsigned int n); +int strcmp(const char *s1, const char *s2); +int strcoll(const char *s1, const char *s2); +int strncmp(const char *s1, const char *s2, unsigned int n); +unsigned int strxfrm(char *s1, const char *s2, unsigned int n); +void *memchr(const void *s, int c, unsigned int n); +char *strchr(const char *s, int c); +unsigned int strcspn(const char *s1, const char *s2); +char *strpbrk(const char *s1, const char *s2); +char *strrchr(const char *s, int c); +unsigned int strspn(const char *s1, const char *s2); +char *strstr(const char *s1, const char *s2); +char *strtok(char *s1, const char *s2); +void *memset(void *s, int c, unsigned int n); +char *strerror(int errnum); +unsigned int strlen(const char *s); + +#else +void *memcpy(); +void *memmove(); +char *strcpy(); +char *strncpy(); +char *strcat(); +char *strncat(); +int memcmp(); +int strcmp(); +int strncmp(); +void *memchr(); +char *strchr(); +unsigned int strcspn(); +char *strpbrk(); +char *strrchr(); +unsigned int strspn(); +char *strstr(); +char *strtok(); +void *memset(); +char *strerror(); +unsigned int strlen(); +#endif diff --git a/Manx Aztec C86 v42b/INCLUDE/TIME.H b/Manx Aztec C86 v42b/INCLUDE/TIME.H new file mode 100644 index 0000000..9ea9a8c --- /dev/null +++ b/Manx Aztec C86 v42b/INCLUDE/TIME.H @@ -0,0 +1,34 @@ +/* Copyright Manx Software Systems, Inc. 1984-1987. All rights reserved */ + +#ifndef CLK_TCK + +#define CLK_TCK 100 +typedef long time_t; +typedef long clock_t; + +struct tm { + short tm_sec; + short tm_min; + short tm_hour; + short tm_mday; + short tm_mon; + short tm_year; + short tm_wday; + short tm_yday; + short tm_isdst; + short tm_hsec; +}; + +#ifndef __NOPROTO__ +clock_t clock(void); +time_t time(time_t *timer); +struct tm *gmtime(time_t *timer), *localtime(time_t *timer); +char *asctime(struct tm *timeptr), *ctime(time_t *timer); +#else +clock_t clock(); +time_t time(); +struct tm *gmtime(), *localtime(); +char *asctime(), *ctime(); +#endif + +#endif diff --git a/Manx Aztec C86 v42b/LIB/C.LIB b/Manx Aztec C86 v42b/LIB/C.LIB new file mode 100644 index 0000000000000000000000000000000000000000..0d3484163dd01317a58532a6b6ad48ee101af88f GIT binary patch literal 38912 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 f>lUa5 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/C86.LIB b/Manx Aztec C86 v42b/LIB/C86.LIB new file mode 100644 index 0000000000000000000000000000000000000000..46157b2130365bdd18234b24286f43ad244ef128 GIT binary patch literal 29312 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/CL.LIB b/Manx Aztec C86 v42b/LIB/CL.LIB new file mode 100644 index 0000000000000000000000000000000000000000..9e2ece9593125a854fd59905f334cc87cb23a9ac GIT binary patch literal 42496 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

KY?q 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 bP6N?l!WjlmK4?gW512P*_)0JSJkI|I;-&8! literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/CRT0.OBJ b/Manx Aztec C86 v42b/LIB/CRT0.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..fe2252189e33e43824f0bbb6886df956d53c2fcb GIT binary patch literal 400 zcmXwxy-EW?6ot=SXE&Q@;%|{cA$C?Vf{3N-?2?29SCZK%SPUTqqM$;uhzNp}h*c`F z48BU9Km?z_2e1_poF8q@{l2;P%v}L~Z5|(>379wg`C4!axL!Ct<`6TS?v3 zx^I%3Y?>4%QkOWA*l@7OXk8QFGTKx$07@Qx zC~A~ZoS{!mzV^%C4<{a%Id?o_V&!_n#GMP<9XRqLYk=m6O-1qN0D literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/EXMPL.C b/Manx Aztec C86 v42b/LIB/EXMPL.C new file mode 100644 index 0000000..84ac78e --- /dev/null +++ b/Manx Aztec C86 v42b/LIB/EXMPL.C @@ -0,0 +1,9 @@ +main() +{ + char buffer[100]; + + printf("Please enter your name: "); + gets(buffer); + printf("Hello %s, welcome to the growing family of AZTEC C users.\n", + buffer); +} diff --git a/Manx Aztec C86 v42b/LIB/G.LIB b/Manx Aztec C86 v42b/LIB/G.LIB new file mode 100644 index 0000000000000000000000000000000000000000..fb90cba2600b331730bef641502d5682c98bb320 GIT binary patch literal 4992 zcmeGgS!`R!ao)j4T9oBS@z7~5Wy|zI9h7C$hfJA30GUy1=QX-4Cnl-rh?P#n?vGmo726;w4H_uZCS`4>VRs)7 z*=~MnpkLL)r%3IfKA*&UaeT}_I^YB? zIH&r&p22>fL{F~M-a(%ew+Op`c)Z_@)vBO&c+@>SI*2KPd}D-1C@1K_Ip!Xi%o9@* zksBHJjr2`s`#kP3-;mTvDBlZiLXQj&VCZ-I#``etcaM*Fze z_!0zY0NM_@+<>+DGK{7`ca(~- zSxI$o(mP+{hrR2fY*v)Yik_z&B8ejLvETCbswHy&P=dmK-_oG%7E`% zRu+8Uw{n1dm#ud2{lfZX@H2PLWvu8p_`YU61HKmf#EcP#cv;+WrqRWQX z!evm4ZQQ~VR7f)wPq4EkVM-%*bF;cdN-wr4PIKKo$|zpYi`2pr#m_H+Ds7B_dNrQ5 zU~SuKV&N^|=Py6RUdpnsVfGRwNo$)k!m|wbE6~i`gtR4sBRCAI+15qSo;vwxk6OIN zaA8W<)zg8aU%yC|o7NH{^g8i}t}ciB7N1<`_47)uzNY?bUTLbd5$;_F~)lU~wo z!k{wY2gX5@7tdQoKxJY8m^SIn83Apg1C}2%nH4?yp9UMilZ~PX>oNaZx0x-X*aq#Xl)foDjh0F^Tbf zAw}DNQYfWp`+K=!YCYJ=aht8Hq=OTaxU%{*ALaU%)CBXLS03Q#odMGdjyYsn!;Npi z6$+-<^zYNRRkI~HqREPDTb9o^iMlXoR{t#iVSW+HR^z5y;yWe|FQ8bm2|S>0xzx<}5Q?jBCG`0xj``f)I~v7&=pz|C2`A5h|OM(%V-8<&VpRI=hUhqtWg zD9X!}B`UHqk1W(sr&KCp-VdNj^8aRd4P*Snrv$U^RHmJl{EM9`ol3cjiD{SROID`6 zF?-?RD~@S5J#_ie_IjysrR`n0(v@kK=ZjaSy((Y6O3O_OSlS-Qm#}0p3q@@96r*g^ z(f9xUS-@uC6^Ny&^Viq@ntt%F&&kAWl{`xY3<^4GE@pmC|5!FJ`$W}Z`6ZyUCuTl} z@ux3jZot{6W-?IjW$v_q&@rc9f~q$m0+CmvJ*$7o7_ZZ%-Qurn&Vd<;D;GXuU^TIt zVE!5VAohW3?t51$)!fB5q1tGW85LU{PP}gl!rd1>l1tJ=zDRT1S2TC=DwG)&GDq_E z+{HI2gtZ*W)!brEu%ddJn5gLUp&OGqc^@h!{x>#|bE>Mijb>`x@DXt8ff=ZjorbMYdsiM%HP?4}lD1tpu zgu=VSn_RnHoA}-Qrs%Gy0(o|M6oy>}MQmqG9@rU>BlAwPJZ_A0L1U1!8EqU&?MTT& zJ3=yHhaiI;AVcBWFzc#yv3xDhMz=>9+8 zY!pfvQV=qPKrjdZhW{#BhC1^ZYnh}+*1rx@br8T%$}tLm8zCufvnP*uLLqkRihj$J KQ%BN#GVpKr&33r} literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/GL.LIB b/Manx Aztec C86 v42b/LIB/GL.LIB new file mode 100644 index 0000000000000000000000000000000000000000..58ae2fb9f383ff1793b4c5706038d5c11a19d13b GIT binary patch literal 4992 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 Gz`p=0J$9S` literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/LCROM.O b/Manx Aztec C86 v42b/LIB/LCROM.O new file mode 100644 index 0000000000000000000000000000000000000000..9013a5cebb4ff34a592cb144e817f7b8254b8f08 GIT binary patch literal 443 zcmYMsy-NaN90&04nVCh1dRm(yI0O!XTZ_F@1TKL?)5EEk9O~V9cWQT!dt+C>)hOU8J#P@S$?QCUFDl{&pnY1) z!(Q2g+ke}O6=vFh-99Tn9tUMitsg!A=tU|=$>Ws~a1?`D&l+{zk^!shb&EHH0Nd0{ z9)-TyR5-p)x(BeUEtPR}-n#qfd>jHJn}9F07TVgTG=o$V(N!>HT19D;1yDEk!p z=1}4KYW7dzR68o;>b3eO=zX366FY!Eycyozr?f&)6j36SHjub_$Y)I3L1JUifMlbR zX2uQ>bwoEvM#|@TO;8A?=$B+eQj%i|VtmBNe;OI4+q8Fmm=5@tX8Dvzr)cO;WVDo+ q(qJ(!Q6ZTUF}()FRE>|NVOd##D8(eXK)GZxBk&5f1Ug8hG=2dcA&E%< literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/LROM.O b/Manx Aztec C86 v42b/LIB/LROM.O new file mode 100644 index 0000000000000000000000000000000000000000..9013a5cebb4ff34a592cb144e817f7b8254b8f08 GIT binary patch literal 443 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 NkVb!--}rxp{Xfr))3N{n literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/M87.LIB b/Manx Aztec C86 v42b/LIB/M87.LIB new file mode 100644 index 0000000000000000000000000000000000000000..dd7a2c422209dc0e6237a8abdb41860b0ec734f9 GIT binary patch literal 17280 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/M87L.LIB b/Manx Aztec C86 v42b/LIB/M87L.LIB new file mode 100644 index 0000000000000000000000000000000000000000..0b241aa4c55c5e82625d42032c9cafb5f66be4e6 GIT binary patch literal 17664 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/M87LC.LIB b/Manx Aztec C86 v42b/LIB/M87LC.LIB new file mode 100644 index 0000000000000000000000000000000000000000..726144c67e8ae8509d8a0a624e83815c76f263f3 GIT binary patch literal 17408 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/M87LD.LIB b/Manx Aztec C86 v42b/LIB/M87LD.LIB new file mode 100644 index 0000000000000000000000000000000000000000..f667920ac9c9e6348daa5ff8fc7452085145d155 GIT binary patch literal 17536 zcmeHve_&MAmH(YLlSv3MCLzB_LT;!S3y~N>5tl&HRbQg5G2ayf)S5I90(^@JWZnd{ z8p4kJNCw&NcCFIsrU+^QQ7PZG1?j>-(nMNUf%aPoB>c2E!$ag}5@I@UKj+>zlL67{ z*KYTZZ-ei>GxwhR``mNRJ?C6!o?$GGRnM=jt*ZbqYxcbP6>Jz=P`jvt4QKOf=iHuW z0u?NS)m7G*pDLhbvRSnb`Z(qx`D^rI!xz z3qli^BM44p)wOkxS85fkkX1WoRn`FU@0khQ%N!=8%B07EHXj+p#)1&m#IeN(zj}UuulZZnh2T|%9Z$(X5yQ*BE{?-K_Psz zeo7Pg!G2Z+`w76TQudQFLb$;ikrqNSdos^#f1dokz%f_UkFS|fyFg+rsFh#GqDl$W z%n_KH+1{+j&HR}nxw1-ps_Mn(@%i*|YPBMDp80joA18he7QHd-8+B9(U@bDfEDcX=jsbB}KfbMdw)PvMtzh~Z#U{~zWzGKU2QR*?t@fV@1p95e~J1R8-KR`WUBv~zSiGp z_SNS(vfI;LZu5xdccuIlXrX#4R4vRtW4)Mf24yM|`U#`QD(7FQVv!Fp2H{>)TfqjW zpAtiCpMDH7enNusCb5ME!^K*io>u1RJnQMg7k}*);py~o{p1$buJ*E(Y7a16XLvN$`)~o)x3AP=)F&9J z^>IdhtWh5mTwuz-&D9p|>D=o%!aGCtX;%Lg=1J~W`@|Au5;@7vIO5vX9t--6tj=Rt zqdr=rK2LmSu7f3ejy9b3bmnS|d)(@2ci9>DId{Li-Ti(OS5G&Uo$(x2PkXvhrn`Zg zW1iKa_A%C>_H%j<&?|7RK)Z zAYwnG&~P!oA7I@B#FR9}k&w_~uVbm8YA~7HZu?r6;hzi=KSQ*L-y1+f2Z`F0 zz5tfxs#FISnuA&RJ)KwlR+K*PYE$@Qt-)4hqZwhXUcb?gzH+1SkF|cawX2?rGhJ2f z;}h>%#%!o66YqQR#bfe+apqHsE9me?r#@mWqvk`2B|xy2B*9vGE)RQgxrJSddvObk zcPDRUy!2moJk5Gfy5FAOd(yhU2}yD5x3Ext^7dCZ?HI!ZQ;=ZkKLGpS^xosv6!HGu zXglf}j)DoE!vKeYElhYVk`psRn?8?08_{(pH6&sB9V`<&fe#Kh;xl zR21~L#N@wLHVH-WD8zrGY{i1ktz6!h8>N2C51tD(>kFuf0V}9)6wLZ@jwp z7+EL!Hs0%t7_5??QQU8b^>sWy(6Y$-mW3E$!0;SZ187e7bpDBG6nh14-boxZK)q;I zjq!&!aEoSJ`db^@pwQRCHt<3M6y~~OaoXQv5cjQ0Zz~w89h=2($4=q0GO;CvqQITt zN~qo^Hqr%mE58{Uh{Cj}$tY(q=7rMKb-W*c8v)^;%%6@&nzVxJpWlTCm zn8!R~!aje&ugMkbKbHs~4f2-gKZ2FwiwE0*^dD)}P>O$Qk#>zR3JC200;FL;irEj` zs;x=wbE|eppnkU+)uax%)#xTQ(4nTCVptNXF|E6uMBE3Mh(ESC;zcSnCK5Uw>M08o zGLDEob5q_R;v%d6Wz>))q@;aaUOMp4q3k(rp&#A$O}QKb4nnR5NI(Q; zq7UuHuA>Z9Cb}9G?r$>zUkH!Y<^0yuNwq6<)oN+_H_VFgiT{Y;JPs!ghOmYWOiX4Agske zd?s6QWwxC%>ciDiO)wQ&7E~^D6S*Fzuy7w@*Z7x*MtA-7kcjnhv>r*=_%xHF1se;l z0WCq?XRm>*z;X2&nA43ueR>V_aYj9~gp>iJzTc?tyQXG2k)uU*>qg5Z6{@eC2<~5C z$bE9GK!{l0_3@Hnb9Oeqn^w5Hqx=^)P2(Gm7hYJhcWLXR3%$edc(`mBe6^86$De`?T*sT4b; z9W!kIha`aP-?;)Plk!iB1Y<%S8@7$H^Qaz59y=aeX^L+mm~oVAN*zmQTI385 zB*94bPb3+_xN?hgh}gr)OmI)=9Ong-<5%e#UhvhcCByK##81l|q57C|hgj}e!ACej zVLA^9g1Rpz2p|a{2woU}m~SMdl|;ctMF3EuHx>#=VI%;YTu6WvNC1=dbLeANv3?HT zPpltYKZ^LjmH58o?~@KWiM^)=NByx35Vh&f70I z?||UE0l|5vixOQW;CJPzLD>@fYKq{z>r;rElC-hEnw%~`DSYhflLvE>Lg4x&ljZiI zQ&gkRLxU9un^zOVdW3@|IxPj@AV+4wP4&Ycl}yX`Z7saW&siRHJ6W8qOUKbW2BsAfVcRw;@uftS={Rqj0?wGQhs7Hcylj|hbOANlO_lktId*Cb z_7C91}AC3PWeD7h6c+>d9hfgD(TL~XW_*`US0x;qzjF_xQ+ZHk!vDhPG#Hi=9 z|DgYw9U!fb=3ilCjlpBif5jv|9Z<9lV{`skr@gV{a+H2KpXWI3 z$j#C9{48foW5Wf`oX3%nr610}Nnr6feSdzQGXnMGZT8Jkmhl5m*n1CA`KGdg{9I>b z`exrhC{1PktKM7Pv1=_$-k!uRyuS3~7g^%|4|9!|U$$@{TQ=*b@KHAFM;lA{W!q-` z;Pxn{$0IFkdmLwa)b?nmTen9WZ4J@cZXV(4P$Cx&8NV|x$v9(3_Ttf?W|)zHtLj)2X|!uXqP)%&YEp55sUEIZ(|EyMiW zlyi8}Zx+Rty7%N9=soYwzzO=iuJoQ?@w?pSpT1$`4`r_$q5ogB8>b~TUWwLtT;r8E znxTt}^@xYE+aq}1v#Y&G@h}*#&7RTibZ4PW<+YN49c)fT3{r(Be z_d_-fDcq1LlS=yQt?rWk3XohsWBw6hk(#kaT)~{LT)sK5-NIJwTkU<8@7#>@8zJ=v z{O&*bN;m^KW;aEM#k6O4+{d9a_#J<0Rxdu|)o#yU?BtOcznyJaOeAWkfgY}2&eEdu zE9>m}PcBk!&9ZZh83Q)TY|~elM@6=_anMNHWQ^6;nm@)F+t$EAGejon&F0pe1OLu= zeqLQt{@sh>Z_V3(!u^~5Cx-7oVcl=tw^{%2OKV2h|H7fp*dpwDJNTcCl>ovMls~4! zo%X)~$>mNzD(B25`9q+yM#7(#Me!Z>Ha3E>aFO(eDUz^AL6PKYurcRN@x&3+vzv=z zUf37~HIT|C8-_mA{xC80VXijY`ZhL9PYOveh_N;%&P~X)BQx$rAbbfv3jR+a1{m>d zJPO7i!Dax$6XgFg1mWu8!v=ZJOlNg9LIFNwDiXocI_zF^>>=T_?lZ}K)pb}wXj_&UG-8Dq`DI`3vF*^LEEyV0=kW*OPdA^AtuBwF<0jZ^St z&IA|o6AUUa!o}7W&Vx7zvtfjR4Lr+sf^RYNxTf&n@e5TDgC&)fKoIzL9ZO;b=)EPs>X6 za)*5n<4YLuF_UAQkto%!X7pMpfl422UNLgyLUwx|h|0#aLc&jA>_wDv@7sTD|1s;H z{l~ypft?2Qx2IcoN9;4!?_ncQ)2AxoREhI95Xsa4FgP^=BbWb23i)RA(;OeBf3Wjr z=6_uz@trX^-t53k=D=m#wb0*kxX))vqay4ZN2*CqN)%yCbvR(;%Pu#U}MUu}tBHNpP!tz+Dz- zD?gvzG)>8FiqwbT{5>FkM;7@b6yLWMF51jNo6BpBQr}_)+z4_M{YXU%Xy87q#9#~5 z01vg0EK6bk;kb@+sM(VZ52v1pjA2w?ct$7p6#0K_Y3G<9n%BmHa*f^%++4ICix4Y% z9B+ovu)N<;`>ov*R<5Wu!l(gLJ^3-lokxIx+;-%`MMRZa+A)Nz_T>wVA??c-awEEZ zd7Z(0D=cC-)44^ACowb}2)44|gprB`iikI2_pl5x!F6mK%%4UwNO1-nUhR_&L;J3n z*YuQ9bGBeB#IWr{_cDU(x_4mxj9AX-!sg(C&Gn zEWNR@;W8td|2Y#Fv95-`Sz2Tp2O9L}BK>;;!QK%^#BX6Va;Sej7JrU$GvoKNhuC!X zD4WHqz|X5$`dl`j)gqqD$riKMhrSfEHg??&>oeBfwjpLi68;TcH}s|0^&>aLymG^9 zcP6dcyL$JuT`=u!k7END-pF=8m{DOI*K?ZVo{<{~dmxT!Lwxr$%+v@ybz7o2Q)x3M zwO=(ptAE+RGQ*iQIF*=2=MXS1=}O&}XwF6240nhAQ4lS0#^A0UAsSP3|KPMy9X8a_ zN|WCI2q*7*Ul}olPrwtdtQ59paS|*Gz~by*k{nt~)O@aaa2VLik2W@Z!kj~0fm|48 zP=iH(pt0c!bB=ZeW<%R{1@3dwrold%RA%Q+>m=2t-PjKGXNv{c+=2#m-UyY{8SM&; z)zaf!ft;)6U<8mYw88^8-WUn$K#y zS6k1tgfiC@EI3;-1Vfio2#yJzzXyD?V+}NPY!75XE)EjzSmuoC0Bx`$uE(QyPHT}q zBsiPHXZYQr*~t);ZXO`XR!Y>}Bqk9wev7LihQ~RRN&j}*K#?@$%)nypAy;6!_CT;k zK109Xt;Vc@7puCToL;=T&x#M;`(+2s`OLv-{cYF+-DN!5x_k8=_d#N%Yb991Z+UuSI7%Gw%i(ChQFxMs^ALQ{MJXRyekc9k0z zeMq}%u>2gSrD!LtUhO#4!PvN(#9IWE*wkB~#oh!%QY_rAGW7+BAdoKnPkaE;7>x}9 zrp1@&u{ezJ8|ar4I)A`Yr0>iJmD=*}bKX~!-8k87F<{YgXbLc-P@6g2ODC_`-sA3l zboO|`%J-oD?B)@TpXAj=G=6e-J^!Og?5r!eK7^R^se! zY%pMxgcXvg?<>1qL$e9}17~WQ|3eB64?_R^4!+-EjW~}h#mCH;R#G&~m`?$QLixxX z{TV?Z=9(oI%GQn*@E@)=zAJ};Qz=Jaj3&!4)p`Vx#UBJ)JJ-PDD zzTZ!I_M zf3E6@<4gYZ+~oMvW0$UZzH&1E$NKx{?z#Ea$)21SmwTS+$>+&sAGW+<-IFi-0osv3 z@I7cZFO*49L5w&vAu*VcY9?d^6SB;NuN7X7XY7)+$@Wbvb2r4e)wsf@bQP{N>R6u}uEEt8myl>gzr}A?rW!AC8hKO7@ zzNy=->~|+o>x#9)H-1f%yrm93fO+4C7F`VqjB8c{mSjNM?Wh)3gQrKyG36CuV7W!T ze4qPmVsJ}vB#t|2+mgpGZp!iMLx5c<#C%ht+K*5haU<* z7&M~u7ZWz=A4w_`Z}2}e0AQ<YNkG)*Tj$k%&xi2y-+tqd|4u^?gcT>mSJN1*1{sJz6D+R%X zOBq-DD}_=TMgB^6JsH*ES3q#rCb&LB)_>65^{oFR;CJ<>V;e|^0eMSHhmkh9d-vBAp^$fBuZ}1b>w=jCR~81to$7G7YYj#uIHqB>3T-w z7AA#qgE>K`v>DkHbiI-TK{^QfJbExnYXmtJ&XF&goD#9?$gc?p@z+Bhh;@VDrdtM6 zZ@J2Ou_=2nXAsHu$&xk0b{^&0-PN5#Jk%+RE$ zcUI&~@h-3O-m{Ho#yynqWMT1!vVnKI7kL+C@EJdP>d4GOzWhp!@4#K&nbG|3Hat>3 z$=m$<=m|gj@wW{zBZ{xMr`J_cOw_o#gxoQSXBF;;e9-q=v_&BBBTr8FK!|zA{V@*y{;`o>4s< zTlMGQ+&U)-Jn(4(7aAo9+(ac`J2$sNFs&;?Js0le3l<4O<7P7+qm1>=)pAHk>(+Is$;Krn``_Z|K(?9Mk26{HS%{O;#Z zoGAEjjS(dMQ##;F&GomkDOi6z=K9M!J4$h_xV4eh?_HQx%(is%SFUh zSiAgSs8Rm{<}Q!so7ga<3YV&k%$W=)piO0J{-tkf40k2t(S{pZ!-o6(NMT=Yav- zB9O@cHV)7@)BhJ0yrM;0T?R5IKl0{|pMOs&gme|N0gXL&ElUe+3har6ED;X!FVb_- zKCvJ62eW+}dl1lr=J_W}HX25A1b&vnokd|Rh+=8HKSs&9X}Q;Aw8yZA=WY|$Wo#(`k*zIZbror?)u4RI!Ovn}5bL z*z4y07>qFiD{$Cpt0Aki@2b!mE!K08hqh45BHC1*5#0xu9Tt1z%f}Lap#fimgz?i= zLrlOkEE;*A_CJ`SPAUFoP{UM;E6ocSpF@k6o8)PTR+2&r1&0hjkl<94?&-WlgFbko z4N?6(`zYqeT?x zD#f=5P#}yIpg<_WEl6?gQz@P*K!NaW0Sbg#0%Z+O0Sbig3lIpz14oIQf&!|>&BtJB z6)qRbL~-d+fK}pNq6Fy@qY2^CqJ+YWi&B}ZI#=)3?W^|V%^tS<`k!Wrk&hD4K)$9W zEFtnyU;hFNZ~c74g%+}m(`$)v&RNWINLcuJg*913U_1XT;`Li`QXRuxDb5I5V2Bur=zIz6u~w_aYT+Oj1>Um=8~!2Fh3INe=N~0+ zFE<)b7G?Id7HZbU-$pGxc_YhhUa^@azp%{v<^6S{lYhY%=-=TK8*s7$Yc}YAGW#Vc z|CdT*gxr6@3&vK+z2FsNxf$ezUZpq^6fUpyD#bTSSWvSGV>_gXR7u!b5*Cy_M#2Ky zgn@krQpIInrTA_E3fuw#3RDRK^FEm^w%kJ|Ds4Y(DY|wnkWCn=v$2nYeV#92QL`pt zTr5_K&5O#SqzNPS8G#}Dzgohgd|2d3uF^U>M5ko$32_KbAVI< zh-=GA@k0RU;<8d)4T!ET>{E01l%R|1$vG{ZNXZ2Y@TgO7Xv06mHdn$BX!l$Rqd;fAd+Y+T(B3n z+t|gId3goeMISOzpXiEs%bviaC_9Cogkbc9;76$|Xxi197G<1#6p>R$!z#{w`NV+x zNO^^Eayl1^ajE|DbQ9oPAGW)@T&;HBy+-7td!iT*{+=d(dvN1vE6H#OcT8Y9I?;Iy z57|Vw!gkS|{eLVOElz8Ww>8IG*y`yL7jy>mV0VmI6gl48I^J81r?3^KitMdy7%)*U zeJ03H>{b@vy8bPOAdz3e+0Ssv2R|q!iAHxc_$$6C`B#LrlMRE@$G*jqLbyQ4HPHov zC_^=%h0fgXTQLBy=jfETU@7U$eaZ^6B(UA6DY><5TBiGxow$p%{ogG-=Ur>(#g|s? zUftP!m#6y{&MV3V!o^j)R~=ftXLV=XE{U0u^B!S#-{K*ZzYG(uo+>Wlqq2OKEBLP+ z|2GOo59AN=+|XIW`hXI4!_)eJjn#!N_X~y`@(C!#O6Y<=!J#Yum-((6cUgBuPQ-!h zwuyP;Cf>!f<~g#UVa=}5vTEzHYHCMlS=G*(S=zkXn#%bjqc8C|Mgr}O@`J-Cf6&K-1G~0q)}$*sE{5h}jsLuS`!AYTQ|`UnuWg>*yy61K2-c@DF%yyXRpms#?1n3X9|5i3-{VwRU*uyh^>*;roTf_ck; z_**6ePqRW9S|=qf1>Wz`zIwW^jS8kyU6e_?%87Ne;3YDxvDJxeg1whIIpk&FVa+k}c03fRt zbuG!CXCWwW$?}4w;$FCLfw)^17GP)ujwNUDvSNS>7UeI`SzuWLupr;MELVYZ^H(gB zVNkRzUbfgm1x4#63b|^1xx|8?noC^CkbGaRa7COdX)4xoky2=pkqRveQ9u%Qp+!b6 z6b$51hLWSyhBTs+yJWF^S2)UDl3TbyO_K;wnuM*i0ObT9$dP#@NG-Qq#aFQ;c5_vB z0r`_8>I&b;61Ay(Qz@CE!uRsRMFIzRsqpgrWmSw(>GR*4kOmk}WLsJN_%36$&wi6%s*1VA22 z0Lfb!f_#;rLXxl&2=OTa;1ZHrfk|rf*^X};7@O%U3h@;M`-+U*SEP51W%eT>j<4o6 zA(uC30w2K1=Y}7z+&u2f-AFo zT)l-X#!(b1KnpW9?wD+H^;#J&MU0okJIp=hW|zai3`zNcc7f;tuo?NeNs3Tji9U@lN7|OvZ@Eq+Hw0}rChzsHGVd#2gPgL zaob=d8mkA-+A(qPQUO^&dP;*!0bL4-AxtQ_%>fUh$u1hVk@nJ1X4SdZu*z&qLos&( zX2!^pyB*D~r|6&KxS?JX;W!Q?&4{ZLtyH5zSJbFHpc2pIzyeIB0*1hYJgo+hlrRR6 zBr2KLqVi(}uiyohUZb7SCBpk@)`yU@ld->CCJ8tF2 z?{nUC&$qe5XN*l-m~igRxA=qS4oXr&zH-){DuJg`|6oh__{oSDFH9YP@l!rP{=?g% z8X9H!AI*C4gr6e+kq=)`n~|g;)By3Vifpo5e@wosvR)_y(jk(krOIKInkuLjfj)?~ zQ5D72sz6p9V{^&UmTCyl1d;-XgIKp8>8#8SB{@tBhecbH#XON8Bdw+uqeTeFnkhiA zvf(5j6_iGiSVTo3MN5Ml>wYefB0OgsYb20+KC3i$`Spq~f~0;i<0K)?oydsr6`6cR zVUfNfupwnQ%w0+5&Z+&n(wG)A?};7XV(y(btHs>+{g@WBmtRixESjqCD?w%tW5B>r zA(Jj%#ymGwM$l9*ASnrw@;U=!Lbk4Ekx)4F5a*f$1t#g95*Zoo9@wao=*GHxM591W zktvFN7Nta0151fj1!U2SLR#ZNAdAFUcfVJ3{W-tF%qtv!_b(5f@+(X!p*^*ex0uf{ z7N9l5QKL{X0jx`vHP#TT>UfNho~^Prkvl?aM+u7sT`i=aT(s_Pf6?gD>1uk7nl9u# zumv4R+s3-Plp;d*3c05+GB8UP%RpZxGgHF2&wS2TvyBJZG;&Nh}=bo(@ZT7oaXn3PDnd5()dr?ewE~WZ~vLSyll-K&IP}&d?K}fwDYZJUT@>8{_@R1 zp%S1GY9E^8;;Z(2FYAi-gR@_#KgusH`8qZ8FE3?BCANwT&Y(>sYja2%-TC)pE+16P zP!jWzbn*Y?%@UzKB)lOK6W9<|0;q)9;02KVFNglL84t?AKSg3wR7HWWu=P=FY_2Mn z6*(?N(xf6H_7wv;pmuI;h>2t{E*2JD5~rlAR&b2#W)fKREIPN+tXBnVlu?+|D`eAC z3|Fk@i~kz=XMI0P9>O!EF_6*N(jj0JR<;YmTbU?vo_GBn{3B4_EJRWT&N1{i`Ck$2 zZ@B-B*>qC>i%6@|&;C9aI#=|w6b+Lwe#FxX907HB0vtF?ez7#9BAldD>i5l5UrW}} z2>&YffHKG;Y8o#Dd{{evA@W^6H9g_;$~MJz5mM^dy< zU~=IIYjERcDg<}P^L0IIHg~i2=B`R}&rDyuqD6%gT|p`?ger`+=-j=MjK8wZxRS_b za~HWzat(fW2cxJYu41u{c1N$H+3|@i=7gLUQGC3Le$cErErzR^0K^OY2YG;?QPXPrDt;bPrr~>Z%BgfBeWw9ANzhtU%Rr4Gf7~ zWf5Q7uobajie&_hjovkL4Viq6bz?CWLJ1bKQM9_m5^WYEO#WYunh%Sq42Ex!Sdn!% zpx6pU;x=C?af|)VzL`7F{|`C{n7V?s_F%SVG5zuDxa|rnf>%Ed%Ay zSff4(3P*`TtY@-s23jH)xK`dS_{3bg!M;3e$#t@Z^KGzuxQo?bT0LU##iTj$3MT|lQ0+y`zkT|HxciB zCZQ^+;+{7PTb8-`OBwbIvEZ@(Ljci}V*iLOO>IUt?QPPgrqGH@lqES(QL0X^l1fE1g$tKs1U_?(R8m30)P=DBWeUm0N0B?ApwMiy@E1| z=>n|-nL$zlU16I&d-}bivwnh0-Yhx%%x;0bL;WAcuq91DgCu{&7P2;DinNJLy&o74 z2$aLB>{R*}dxv80FTgfZEz=(gN6P~hXe|kQRiZ;XY7!JUxB)UeAk?77C@2tdRhSuG zzc5vWfEK|+v7Y1sLJ(S2v3l1+W*>PZLKfW0m`PzpQD_B=D@mj%wUQ?fC9LHEbds2z zOLY7ZZ(xuC?Z@Nb%K&RT!gE}x2^VAlG&^RA6s?qNj9d*pv64kZGl`K^EMC}c=5}x) z}nX&?ZS{2;-p>n`brt!0b6Pqn6;NiA!ga2;jG*o z<>$3X4=PF^9hD0Cwt_`lV17wd8h89msYnQJq%PO+K>vYSFR0K+$R39h$9BmwP^ML_ z(h?rOFnv%|j=!RxfG=2(M-eG<$sH4b=kJL^$v8qX_WT5tu6 zMOc5IWYZSO=ANic3A>UXzhgXz3Zbj;g063@rc_bAqP^sTC~)hbS=EDQ?MNED)Zke= z#tmL-uq^Z;G?Kra%7e0Zuv`OAKMJ!%;0al#*z-!*25y5p-aA|T{pZ1YQ+Rkd4_}iy zB1JP|lV;q(1?^+Ep5>!jQtF&@ADn*fpASs@_}7b)dBnM?FWw*g`RFfy{nm3Qf4|tr zZLZ{Lt$&@=>$@=ZrLSIk@B)AB%mE=4uOE^o?xcqV0L5f~`<T{EK9#@r0iof0Yi+Xfq62>DY`Sdi<_npbS)^s{!tJfMg;GIZ*Hk zcTFX!>aRe_rs}e5$+fF=n%^{)#54&#`;l`Fv%cKi<1ib`xw+S24lXzMIm{vDW^ao* z1_3@Hv|uncZl=JgJWHcXBnLz`B&AtUBtmx@X$eq?+I##ZXmuR+XKhxq;1tU1P`ZnP z6x&l4MCr&DBf_uI@aSAGG`5((d38>U`CC{KE#~tV$~=pdeXJIVl_=yNM4#XADj{7fyf=jo?t%`L6Re5&DN;pY(F%b|ku5Rbr2-_f zB)UcL{Z9CMpq65PavMc75u<=@M5DBgh*7{cB1Yl7`*j)u;EHG>gqo;Nsa!NsVNIoo z_1IWTAwxl5;Y}`xksLg$mZF4mDL_ilQnWlEE1;)DT@)o8q^^K0APHeCI#+b}mCf(FqTQ7 zDw9v%Vf}|DU&4<~zN_1eG5fK3m*AN`P(@wIi!w`ydofl*YLiylEHx-#P(`3XjMde= zaCf?FzMoR<`Lf6-57<5!k#?vhd(RD7{FT#b7t7vR)AaaL&bT`s&5YzLqYwQq>fiPp zey-X1z=5?3?&Za~&iJ?U8@`6KAi}5|an!$QwVnvg-%~6>w|M`P`#wyaM1LKV(q_yz z&AEq9SeHh^_*WC;UAhrUEP_&hfGBzJ@voIF=!a{7Y+Cry9_G3cgHO0UI^+ z9n1AqC(Qb)wlAwrq|~#Bs*1$d+3=SNhg7wlYBAFGuCJ=CcW#sY$oZ_y#_h3~HnQOq zZKcpEg{flPcd8Mq0Vt6r!-xi*U=SsX*a&yDrqX;~GJ-{bOLl6cGYOJkE35>H2<}p= zqXQ1xWUoAwt2t|tNeKj3ZpiP55 zPa(61g`(7=Sj3`!SredeX<+c>e^3;AA?L}+j#b!i+@*GfP+o#J>{y)#;$AI#q5Cqm z6dVLLmG(5HxUIZQIEx*!^qxPQIg{G`{}p?&8A7I|@A~JA-l3`KJKCl&0lC4-yBTWDip4 z$K%4)6D(7;3d^O?WY`vmYbaPPR$N1uv^EKU7nu?QAIp#G!37ISEE(}2`#;-NydoC8 zdcq)m5Zt(nEDmT-kFjyP1WL-rzigqMaA>I#{;7Wugy;7gc_}G_07StdStBxs0qaqY zqag+OGIh}asXoyc0VRy+64JtOV^ekt~U z&$XD3i%o}5Y2*KMx_r@|>fRkCnH`E}B$!jyu$W%$^7K-xAj_ z){6@KU4a}#EusAzchS)%;fkSJnHNlL^}y3rwe3<*HC>gp{RgsWwEgTKmsgTBh>%j6 zgc~(%h&jq(j`I9MFoz)`OHSbwcN7wx2F?Yeg_;<5Fg8)7`0EwOB2g+NBXjrH{W!H_ zaZiOH-91&yhFcCy)iKL^%Jk>%cl-a^_I-N&7bgxrHm0=tC7%Ar)O$0AypWrJ$3b^- zQM-lzc~c4-^6*!0MjSeLvUbY0-}0~}sbgC_xbfx?GC1JdXZQy&AxM-OGl=vw5qtc&A0sbG}h5Q%(uTI{7F)=6VcdGlJ z&<}VSg>foc|`rjo(tmwdty>16CF{VCm{ib!26tL^vyJ|l}KyWU9aXxBXK zD6CHF?e?7JJAU>=T5Q6BcedX7g7f_+_EmH12XmZd+rR(d=FiUyuZBOVo)?t%LOAW8 z4%NN7>YLx6PW{XK@4p}U{zLbqDYaa2&zpt$FVd#S>o1a>#WQ~L{%64Y_;1=*f!3P3 ziUQ0w)mjo8m`X6pzi$$-EdBBHYaI4gjWc=i$}Wm@(C-V`nZP7cHzzSM$xOi!KbR?E z+c5BmA9)D=?MC31gsHf+p=V_Yo)i9sPoaDS1SnwZ-|vHSQi8qL(E>f%)8J=HV97urTF5_M;xUGieUU9>?( z6;*-F0i@&zl#DDyhRhfEk-c|tcwQ!oyKskampu`Med#W0R5t;I6r$BFNQyv@(iF-P z3*VnLfaW>5Lf{ikAr%zHBthUW7)Y~@7Wg1pYEKAGP=jcK5J}2|=wSpU0=88ZWLVS~ zku=zj*kS+1R|Kgaj$#EGa(yuP-R|8(>4S5r@Z%x``obl0@h+4`?S7fjlb!Wh;h zV@FfBMU1=nU{G0V!n6F`xM>b1?SCFkf{G>#Y={ybL+sf5Tb{HqJ-S;?Xit6o1poJ1 zpYP-p2?G)3`+2A~>4tSqS(}&5m>-P@h8)09uzu{0^Iy`7lz5pF`)!Cn=-4j+{es!( znS3qfMN6TAs|PnuF0f#)j84;WKH};_XL_B;kPJo9txD zb{BM`UJ-ma|0G`SL`)p@QT#*4?!)~)wf?~Bsm4X~@U~+hFC##{(riS{`Ub=uP_uBU zM9qTc4_y#{kr|*`sr_1Z7a;sJQv1~xO#|y3jyf~1Xmy=dYBic?#G#%9C*#dQ%+V}f zssMh4SszZR;Xb32#jOu|{ze~Dy5Wad{7LgL{?hBS?AJP~h}wS#?)VA$|A_i_t!Tb@ zUzR_#WRZDBe(@Y@?&87)%a<*Tnx6M$`i?Ypsz_yzTZ$cicJouDkDlixMId#+Z0hy-b|#Ova-(g=rC`sc?=^Ae3EmsRJi5IhzJwr0X)sT880;-MR zk6HD6tEhHOMZz{figm8Ouc>J=VXT z%>aa-EdP{u>S_H8RC@bVN#-6Maw#dQ}yeNgFC)3qgNoI*E;e3-e?`4dLzS0 zHd`#>Q&=8k1L|i zE{Mt-nfo^)kzP;=g^uomB1|AG<&C8-6Z3>A31Ng0%v}Gfg*MZw-cu z{88l>RT=dd=+KHB z?inVPg^ZFD@wy<7e`cxA!R68H zoI00T&mxQKPBbHfd19$&n%6DmzR}I=midM>ugmv^G_PCka?L1IM$JUVLeALU!d9HSz{~x4(GMFyMYOeVfNC_1s0=& zXJ3F>jK1d?NU6H#Yw}$K*vi-VkqqYy-9=h$e7~_U_HXh14SbZzsYhryD zcO^O=9+?y5JMH;dlq0)WSqPZTCT1DpdYGXD5>v8*gkcj9(q=^QgcQ&W< zGJRQ@w4i-h(ESPP;oKML-OJR$1i_w)wbELa7UWD@sSkr-_f3EmjB*-Js;#u2SrhEO zh1_DW`=(o?rWENd!KrDB%#hZ@k51_a(_qHi7Grk9neit#P!h z*PE4T1!L3tOtYRi0Xdw;!?;O}hnTY;>B-6rx2Hg!u(BaQk-G))O->>Vk&PE%U1K6P zut;V8IC>l{Q^zxF2&9~b`MBBZi3B5718gSGkOqy6826ZamD>I|wBOM}4j)BfX#P6d z*LGQNvX=&%tTA?8+J{#d$YQplVa1mFM%aCGEGhmT_xu7UkY2#C*}OhFWy|w=b-3Z$ zDzV2MA0*AtiM%)Q~6eNvQV3JF)d1F_0S^T9G4qRElT`(Uh-t?tMU zk>yU9$bjgP5~5)-x_#2gXTKt&_iyt_^|J3pBE5gL5)gif$7wV0O{M@v6S#{XxWVa< zs;S>Q2#BR!85a|0!(gul{*6r&k?e2vS(zJ7ZftRs>MOV*d9+2JJjAL?_jJI$3gYQv zW(}cv2_H+7J{-FcG@%+dkxB9t8&P3^ReEFcJuAjEzCuYN3?pKn78X-scpfT6-l)ND zC`~;}_zX`N+^y^Iz?l_hy;qa&Ig-2(6;J2Zd(&-GQ8DWEYCIwE*1XI%m1<6Ml4Erp z?>_A~3diDk-C>Zf7-i$%Pb@IlzQ3pFYe8Mx9eG^WuJ97IwrgcD1>A<4t-YRLi;+Zm z+ze|kEgp-G;!V-glnv~epB9Gw0iT-c*eb_gufrFm82yC*eMF%h`Gv>B`S>=rSKI0;|uh+BlR~?uce<}Wl80I zJH9*i@cgvY@%N4NoS7Vw%D-E5cKw?@AE#9Q{mo6?&6`qq#;*N;y!gqlQ+~c-;+c&r z?@Zy({VmZobb=|8i=ca~#Gk(nrf0#Fw|F-Df82!pkPla=17eZJL(Ddw=%2D~(Ff;$?*k~LN%ay0Qk$nIJD+3LF|Oi5VD zqDl=D9Jt5q)v=Gxu4xj>SJ@Q0qRI$~OYBvkT6-zfC4$X81aQl(puN^v!kY~f)0+(w zczX9y$J-ZV+_dg$I!;@v$E#5A1V2tt+j*5Xx#4z+iAh&8VTsY1 zLyIG)vf$MbL+IpXyoNRSg38mqbDP9@V0=Eu>G`heq&ZaLW|Ul++PIO-!lf){Roeu- zi&oVJjUNhl6-%f(F}&&v_uQte%mlgah<@sU5mFC?0+HtZ$UdH(Gq*|T-HwC%*r>fm z*0FWGPq&hcC_0Z2?@nP;?_fpO$t5C^oRrKx?!(%VJGM;d|=aqK!9+TB)h zZ~rmZu~X~s<^7M?eLbZ?&G+`RM?7#o!bOcy{XD^uvVw&_lTyOM%K=4g_+n%8fqg7m z)J=Or5$=_~pJd7pAd2~q?ji-+f?LIXI2*JZMi{ZvPg~+ zL3Tmmzji_W%klLR{Jkg&()X{fL*xfPVSi!qNZ)%TR^%@}YBP)i1S{H%PyymQf!d5Q z1k(4Uv>7)EP#}yKpg@>`Sb_NZqc&rf00qK73s4~B6DU!z3Q!>YMu0#No!~d@@}TRL z)LcbzBLbnO1#Fxurycyq^TkO~KPr_<*wD7|kjJ>86<78s%%c((74$d(^3kP;pvUPf z6L0!qMEPYHC^NBtSg4W9A>pYXDr})wV#=7nw*DyMwQCWd4?@;I7z4%l7h2~RLjEoc zt;Y;VVAEJAByXtB7B0;{<e;+3j`TPYCC2s zeXdiR(Mgba_febCBf&6HwHbX9EXv6+Qkh1XjoJ)7!T5BiHX~T1(t9pgW)duDm?T)x zkYQj%NvWbCv4C;FK)@pfEWpuHGSM3=KtVzRk#@73P5HM$Kw|l6Go}H=Ng-`U1_1hOgEr$KKxCY2GiDOrd;qfmU=3?C<^X_k zuFZG?0L*pF5RLS?Pi;o7M$*CBj76HU;?+}a#uDVxM?bY0%Ta(n`>8;SRj3${1-atm zpW2LKfa3F?I8>_{t9k&J#J55I1#iH!2JIeQrFJ-D2ZtTh9SrKMeRZF*(L z>zjA(tlwO_?X~Lq&41eYr>$>p+r4E^&7Zgb`L%{u_tiA+Xx!Dfb^n&Pb{^bxV5f8Y z;jKruZF#lk)y>;B@7h|sb?f%JZCmPUYd7zxdu7vWb+2yQwez*w9d&h=UK?ILdVAcK zF*P^uNZvJZ`;=G5ZN7ciom=kSe%F?tSKm`Nbz91o)U9b-r|q1!?TJnKuRK#*zVmn0 z|62QRJF045+{Wt?cE(o6zBc-m(XZaL{if=PwLhyKS9ieVrNul z7CtkvTZ1-zc6QP`Z7I7oF?(-kXS{0?cWWY3`5H<{)mbOuoVt?L4g9Es4c0LSHZer0 z>e&b_+i-lNbHj%lPado{jMzJo^>u9B2!mt7etk?(PIga|FR|Vb?n``wF8hOVIY5`) z^jJRxmpACLhaMZ~vRgdTrGYN{#6^@P=s*Zv2-;6+2k25yY5VE&23_inxa_9O8v>%V zJ#=ZH%Rcc)84YyVPnUgkIY5{CAY9&{%Wk^tp-Tf@_R(cOT@KKto|^E6Xa`;P(4~Pc z`-0<5Fp!$Egz1v9M-%HYWzp`N18|hbkVSW%ndnH@uD`LOz4g?(Q`qz7*5Cx{MfY8r z@ny{5)A91@UfTz@#EL9UV#Q74oUQzu*5j@6uY7i2`E=f!utM_QapD{LQOf`Enk**AH;IphiLxrZLP-Qd<$h}p$!kDn((1uSp9^Tm2 z|7s$qo_k&Yk?TfZkR`!>LCfoG=Z4unFeR?HYGACHJNTA*R$E(3Mr2bz0wY13b<~L` z;>R7vHgG6(cMzkHsGCte)JHEW+!C|>StBwZb-ifFv9}mSKUGB8&e-hdwXdS;Qz2(6 z_$-a>%&?Hdb*M7EV@qFlg1@;}x3<22U~A{tzYX5-(Z(jn=QBN@&9QU;)4x7yLh(S7 z^#)BulOth|Cf;7=h0|)g%O)NP7 zyy$fF#9jmI*j`{|`bHOCUlCN{vh|sGVNmNS@1X}go$GIWfR*otgEYY-=r^}h|%IHB6NY!O|s9Cg>w{t1E(d%0x4Br1uU@ z?-`ojWxdhCSM*hu_U+X(NA#4x6&PF3@e~RRPxp3r)t%`{a&~v|I`>E3%A&r?GD7Rv zZsl<)cC%NHVhzkxm*lMDb#;zQ=vmCylooR*4u652t`tXRPl}_cH^ouf#|uJP7eW@Cds0@uBIZfZS^4ZCBle{20DDZMK`E50XwMQ?mrU-9I7yG1kAh@AqC=QkUKpnKhy(az$@sS>MWcrGjS$6pXii;EwXD z^IGaVNrvj&!@Z*GtX${5&Z|2-{(D{dG<4ZSeH`XSFryAXxJS=B>Ku=BoxQ;^4S^bq zvHNs*dCURb2*%;9aZ|FI5JkoRaKF72k`v2P>jBsBGKI~=u(wYS2E4Bf|ZHpr%6139%%=yb>Q&X(zz zxVDlmTl4fT#tSA|hd{9!Y!7#9nrzd%xyC-bhuLTM;@1bXem=Tjm~Xnbb!lJg+}_r? zJ*|9hR};?H;B*vxZ(5+T42F`HxQy4Yea8}pvrr*i-dkxl5G&8tJv&k`U+3QUeP$L3 zE5t);>h-3YH}KnyA36Y&6k5Ibp{bKuVLCb>yyalMo+o{#hD#o7z)7ucHZu8D2Kqi{Q61bS5)m%&)%Dli8Q!Km#7)pnLwO_qSF z2}(jD0K~S0nGtuDnUR?gyW!-9=8a!K4D3eKuY;uFRkl{h(})DBKm z7@QFNII)7N?M)+seP5eB(IS$FE{sRR+fLy}Z>{du&|9l-YDT`KnhjN-$LvN-(x1m) zDln`Fn&fPPU4UO&Q$*G0iMv^3Q`P6_V!BP1ZehDwcvH=OawiVpvCpgZ)yWi!my$~oUR4cj2PnnR%#>#< x7Ff~;y0(rjG*3_5RdwPfPLq=mIuygxB&O~j&B&w=3G>8FRfHlUWdCadA0=G5{`WAeO+mlO~LM z&aXY~spzyIUbuLn)?AbpM`fX+EwQ$wGH>NFO&1acM40(~zR!D^L8bOw_Wb_%9dzFJ z`##V2`99z0_PssN`!4*3F(X@$yL5RL-50IM&0?`^fqB95i3*U#ZedH7tyqymz@o)V zmu0a8wsOVlEH;rXTk+%_i87GIe#UYZfR4Cj18o`;^rkUEK82mXuEVh~{P(I65z-QQ!6**5Y0HI&ACAo_h zEC=FqOa?ZvTp8LZB|Qzi-=cjhfb|MnVqUQzi*03DOLLbK2V2>a98u|3wk%r)o?ej+ z+)B1&!9w&+6&quk^T?z369B%lb7de`0T#hYQZ5Am zS-Vl!vK0%=1T9&%GUsV=&t1Go+|7$~Ff;1XZznb4d`5MZPmJ#IqQQmx8V|)4~P8~^qQR8PkdgTUZGM9kM$x6b-ShW&CBZo!U z8Ur?G_Po-c%OdP~!2&chV}1Dy<176ZhD#pf1u=G0PqC@pZt5*IeQh`KzGBlic9Xl< z^quoYEy@6m3RT_bQ>aMitY_dmp~>FiCF_GRqHsjBVKoblVD(i$N5Om+o=MG>$mFvT zqSPAV;h6!%pQWr0Vwu-@Jm{A$Pu@jO-UUxy2XNO?n*wD7wAY*YN`HZGdnNj2-+G>< z$_nL_To&#cC3Eh>OOaZ;#D(ZB;$QSu5pg% z7z0QWmF3r?@>2z`;supnr=8&i;er{oU!HcNcO(wYj5~Gx?>(Q88!+zTxun_TzUu76$&TaxTxD;wbqjaPrPq9!&Y&r#q@{ z<0tNO+%|j(hBcD>M?QQ(ZCZ|oP<_O=D)-55{VDmb%6g#;NQX$CmMVu;YO0`C z1o|M_CRb4u*Qx?pb&Sa-OIxbJM-xa2U?haPt?}aK%wQ}V8h%I{%Y$N;$d4l|q0I)f z5Ra9!fM8*fBpnr$dXbn%MIl2A1MABqq)^vq^_BMveC}$E*lg;$TCwCaD3&1PTtrTo zCodFNqbCoHNI7;>SAyx{w0>P-WV4C)M2&AY_0D*-+0=LChGvtSUru&zVAJ${1rg1r z9>$uv38RHvy0{s0-7U@a91@eDDK9iIB!uf)HUb()e%KnRs-FTG9gQE@vVu|dWm0oM zPZ2AMh!&-=u&yp878a02R|PLxow+1;{5`)oeA=rsrG$>;i@e!% zo-rTA8G;&xmXS24mo8XOLqpX;xlwwy$O=X73aK3hEDChB5P%Y&^<_Rq!wVOw>6NJp zNg?WiE$Bet)|aVSLi`HRCsV65DW!ZRGt!=snJHl0V><82b9?goJbAsIJQS1$r@l-r zyIR%#9YXhCkaYh=q5Hd>BQ@X>G{smej0r9w$3(Z_F2-i2!p%xzTYXwZx&k<&MU+)Z zW{2p%YqH7)&GKphQ5TsQgOC_JtCG~uAfQDniWI`36-KI#d%@(_chK*fEqS$-{DsZb8%Brd96YB&hYz#CZwE=HT=Vle@t++ymj^fFIsn}W6`fRKat!&+VRKdUvJ~j z{Q2ucLMuQiR6jVcoj=+3X) zaQTp8iIS`zK^O5Cq!pn(z-PsC92>$402MH+CQ`_MIrOJZ`$swWr$}syswnVPw!Ux- zRI#kcaVe4}6%nzo2#5f+U#o{1Ne1I$X5j@lDe0;WjEpjaB)Tk8&q9D26ww-<7a;8E z)ns1=$%Ug_ZU504Wa0RuHGqkrdS7;<3WuUbSlT4Om6^)BGRh#v$xNM&K3PEMZ+YFpYXJNM?f7O9|z97B3~L(5l&JnrO=iH ztG<@3qY?g9>;YwvMbtD#$o8&`bTJUCXi#&YT@!>p!ejmRo4kWPqR7x}un09PlJnTe z%q&UKLVL-DLoI>zyKh7xI76;8wXDh1%{H34Fa>(%z{QZ1sH8(z(-;O(jZtQub23Rt zL1sXuBMU}0nYz?GdEkTu#Q;hLNWMhbJM6voCi^F{h(pd=X^wIbe+e3wG_X*>T-LxH z$*u>xn>5TECiyO_rZA|s_O_m&8svVG=8hK;B4-VYBgCP{EW50QUCca6 z=>~~SfvYIvHL_+|#Uh-C-AdnI+wN|(8>B_oDianAbvH9+(G%+yJ@s$6D_X%DK!X?P zoEgwssxM6HxJY*FFk~|S7%V6ha!gbkV+|W=E$n9I;odHW&*_r1_$rv&!(qSBpKK6^ zN>6{sYmgRmSkTw%=oZI9SS#-M=`+OoleajuX}8dBhcexL7oEB)eB&QKu@VPZzdkEa zwOoBeBG*{N*EeiMESO>$K0||%snn9xtgpTuV<8k^E*nM5ORUi*F~a2jZB_GOEfvA? z%@a$qdIE~U3ZW8MZB17T+TWX^mh5at_03H#N!ejko32;VxQtt5T!T*g~qwSz8BYi5eA>qOxbO&JXvC zHJ5lkxiV&?}Lw}x9wB)t2^T{vQ@1FMq|NMK8s0Ekcuj0d> z4Q=^MLRC_657J`GGJD0-jQuOq<2jB6Vjq#=XVnZ5>tAeXYSWg`-X?8o3Qf37S&{=4 zrRwA=*|ZsTt@a$CD=&>G-=JX^jpem0#2)bm<8xl9FJRs0>~GKOKBsFfMv}3jmZ|v> z2WqP8$1z%6Tmt9(0@x?!b)V5iitC5B8bE6#6;y~~v}hXc3IKrdBcm#e1ORL*Sv$!t z6SDFtA8H3egBCqH!#a2F%;~uQ9sYu}a`>5DlI3q0!rf|HT%vHf^S~iA=rk z8xQc6!>a65`WJhEV((8fUX;MYm~1kAek>d<3v^#=N!Y6r9okWoAm73Dk>Ng}1~o=O zfrvrE%<$bvKJTVTpIA-u09_R+t{94FbEqu1h1AB7)o)izt!5(&CQy`G$&*LY!mc5N z=z}1n#=JQNypAkAO z&DAUlk^Ml)cFmJbK2e(zc_lx7JK+nt3*O~i4Bfp76-9xmS=$HC+I`R9r3TO1efQv{ z2G80(d5}`*LntM0JCz4z`(UL8o_+)~!_!9=M#*c_D`6Y>4$f8mbH(4E4%He%LPB`R zy5#62O>~)N+@VDsW452;qneXy9P=NTdH$CTi68yysi{2l{Ipl^5BPlam%sYsi>H3G z)WfaqQ)jgPWm2!_`)RLz_1Xj9^F3!9glN2RNQ$_VDiQ!Yoosviou?Cd)<>jy4tCve zS(2mCc=C0~CG7tPS0R6&qKeB&{XzeYU}td0&+x2}ztW){ZQ2g4bZkcveO_18R|XFh zvcf<0k&Gmv2MS){E~+F|{pl-NRb6^LxvJXUUYW1Nd?htOLf6)K-fl7!n|kb~fMP^T z?WVwDQ=i=wRBUoLn<5Zf6fzU$YJC+&I%O#wULg5DvKcE)z&sH()Oe$YA9d50vML?cx~*iE5bObi2dF$1JsObi2dF)<9^ zIXyH6s8mEUAy7qqO68)73TqU*lvzV3s!s}UazXS3g)6O5bl^KuHh!d54B?z@MJ)W2!+jr*y|cWs+7X6kfNhW@H~7w4KkP(5DFi!w{5 zE5j%>25CgGDSXvh0FoH1YkA?$p|baIT6HIiMm*VIeLp(oaC7GVn=*LinUo7f@2ore z_$tT9J0D3O!PkTz{+FMR>M2d!7TE{M`0p(TjrGj(VsG;weZ!A4&GL*J`S$Z<5mW7s<#J|oWU&|d*+IG6x zK%2{+(zf3DEw;w*GScg-IVOZ`vxQqIs7q0@2xplZFdKj}q9BB5(D?~bGLOYL^EI1I z-$h79xCpSVmMjq|EG@a!O7yFK>u9AuI$u$(J_$pvLw31QMuZUY?2Qa64_?g3I=2Va zBEwrPL_1DmkjV()d@UWLuRVo=Ygi;5=eQm!%6qFsInk;@QbN)}kN;9psD;8*+iB)fI6)TSzf{#$2ltgr&9DqOIp#0G+Rkln8e6)%s4uT2`H9|G%Z$VPwybp_N{NT6gE zc~>qJ6pl^7^XyPUsfy?MtQ<;JMgo|EMN-6~P0Cu3gZ@ZXcGkTicM*h@OIG-l1hR<6 z%Mn0H9zgziM~C*G<<{1a_LRGk7u+t+o}Cu^&u69m=P$+n^Z91e332}5Q`!UhoGxE< zBs*D{WdA9inP5)gUCgl#d9>7ONc`2LD3vPSzg!TLaj-0@8Qu!e1i34agTN_Fvicf2 zcqO(uP_37wdK~MT+G^A@SJz}!{74oJx9Brb>V&+Uq@jSM(!`C`upy=hyD7r;OTiol z7d=jXzu**i6cU|=XTfN$Cc>H7KL|3A1TqTA$lQ5HKMoF=&rO3ceH9yuk>*{~bj*B6 zSpeJ_+W(ifE2*_#oILc{4Ta^e@zht6r>6~hIeW#Ohn)F&9cKQAvLrU-p|9QyJ$&d? z^^_gI=E2L7$24!9@P~sJ8Uo*aVSg{zc1UjTp5v0&%Wu3ahgIcW8=Pml+Wq~KFkZzr z^mHXOTOnlz&=9V>+~w8oK&mGE9N2GC7IrSl}v}t0?8@#xbUa2ENCTE-GT`xW*zpo>1@(telfvbttTO}=C!Y}v14=;RH&{K4T2(ZYu4X8rwP!O}~W~ByX`8)~X3RAwm zTtyH`iZ?2_6p|6E0C$}S!loc?d%Lbwf&8h&JN8(_T2K6-fq_!UUmBuDN%6^ z?`*&8WygC@94zOS_vbl^c3ye^me0QvP7QxjJ*_D1#Bkca9je>?%-6p;llVXwjsqB!CVnKEgsglO0Uj z>k@8|f%1Ne<^R@voc|Ipw=#C4piAw)572$g%Cw^W%6qQVWNPtK3-Gq5Z(qcr1JL3? zw3q^fbyxuhZ(qeki$$wMiwEHv@gJFibYM{bYuVj^@Y6{3t1sI6)=3Av(to7ack95z zZk^og6#KAuG{!j?k8kp4_9pR`2}qQfLJgE0;xRZ_bo@sDm&SV7|L7QC{zK zXDz!E?Z;2ALH|FjzFjPuFWwjC4=#JkGCU?*-+j-$3l=WQUc7{? zxOLw=s>w*-l-bqyr@TO%c*aSnCetOhYwB2Y_;U_!_G^Dp>p}p;y(O~?VGfR&+GM&o zy2*3_c%9-DxW}_=>UfL6I{Q+9>(W%7U@;&!!R4Ad+7e_fyug{|3=&4WKAU=zz~V+% z>(oSxALu0RYG0~d&yTM$bbm_ai_`n2PO$jL>}r2hTb$mz>4PoJhss#QfpB(V&${o+ zSy<~|CwR7R*Ki36wK90*{p5TuPhVC2jda3GMmbO!=GjfKJS zcJ60u)^?dLY0Uxg_He-5<)3i;xo^$UFXIwkvit(yxV&@y@ijxyuJPTUcAv2EPg!wc zu&uC{75L$>ordu@*``mnG;eNjxYr-I=+~ovZc6xU%DbzB=h%-V9Pj?Y9*d(8Ke)8r zKRo~8gp%Lw)$xbpH;!`s1@#)u;nvH6W^S}zHc}6D=DYkJj&JhgiJP}L+zB7R&rLX7 zZ0arKx?4?s#j|^?g`Lcd4(#Ol7O2HO{J(W}Utx5YiC+q^gjowOCR%juy{yD^k+%nG zkX>}C{Tt?)-J9>vYZKdhnCqfvc2EA0_!7TV-u^XnT>wtLf9>e@FPMv8bl&NvuF{W= z!_eNgn2-B%4tQAaSfi^mU^{;U-{p>&)0i1-GX)2fm@aHI@y>XAssRZ8)I-)Ui(==* zdsgf5)5d%5COHRhuoIfde;7K>)Da5 zXLYT*W4l~`J&L9KANs@k7as^taxv*2 z0xioW_*z|r0C6K5#h9;3+D^i8yCNJhREkQn6&jdjYzRrjnD~;^pqHuwm^pwbM0h-| zVTMP@=75E#uV`c=T#>2uB1COHcEPoGRci&x;MMf?5OV}S6J z+kf5WBba&LLd%jRxr25^7(`mL!6CO@RZf+pjw=;)e0AGzGM3$t!=^?m4R^3`G~5_h zm%~D!zeW4>(C{N%VU!j+hx9iZjyMQ49B?@@|E7kcjr521%N_76p8T$-|E|{oz5{&} zM#o_m(qwSJhxQ%kZ8Xl?1{>$m80W(*GTxeuqb(l8VHO)-qUt{)7N&8Hv?k%sETJ~! zhkB^MC>hK3IYRZWPr&ql=}(^jpz(v>crpJCYyqC|^B*SWzi7Ug^BD9+=9O9Ukc&@f z(B!9Afbo3<0pcSMGMH=5S@aYvl_*kejmte5csq9b&+nTt(GQaE2NfYl# zWPwA2h6NADH5Rua0saO*y-tfWanXkuB#f_V#~U*PJ*GhF1AE8%E{l#k3v@R3Se(V4 zsS~Hdqv%-pM$;u)HN1!cA3Z$I;*U~Irr2%`B~a-TCC}e*!zy-1A|{)jnNtWK$BnUY zxcwNt6rwxQdKyv}*wH|Ld!FvF-!Tu?)+kWAh6pDjmUp4BsRCedsstwvoK;#nXYTr% z(m3(Xi!7!9z%@n~eOAn_Q?n!`-J0qm9j@@ag%0}ZU!VsiDt z%Il2_wKw_wK@&CyN5lPa)DKIe>>;eB;Pno?(z#wsXRIxg(N~b1{_*wWS7?I=<0&rt1#6&}>FHyL$6*MgU^ zQXTjINF7m9F|1Bugz8Zjt>7qEghJ0J9ft!_o#h(pBkEgga;BLZa4VDtu1kX#;h=e3 z#uA+3$n5o)dUYrHxyYV(EB(kX<;m23}&)ug*2Ax$C1G=Apon>AIo>PebiZG)fye zX7CR*znsr{tc91Dh3lNZX95L=QO_c?zZgxJ*Qu_55(oyNd$@*C<6$FqX`Jz%v5e1P z53_mfakhwMv&C!)i+PGIgY?hEmv-{m_Mn=eoxxSZc8uDUxHqUGq9S7N(5j&|!8>l; z8?<}a&bz}my|d+T#-VK!`2i#AyRbLj{!na|=ZtH7iSapUJw?1!Wn|`|G=XB!S)*K0 zN?%1kHl=Am3w6$wed|4z(Fy{83>|410>LKj`$cD=s#Q`88RMPSOe4n!@LLE&|?kJJlAuZ|0t%X;Z zWvIS%dIx|V%X$1_e=|%a#~DN(gV0fH^pQy4{w5zREx=cg=QiQ#wCHm&zx&8(s)Ky6&+fBlx~F6Y zpq|+V%m6f6aiwgHT^XV2wj{_eRx|`nm%0!V6z_+2L5?=R3_BhY30csaaq83^&nyAW zm>evXyF$R7MVIOtqV(p-$DEth-iZ}+U3N1mphWY#Sac$0`OSEvoEt3>WTjj5n3B}w zICsAJVVirNd6q(vKjymMZVG-GhnAQ0(ivyIq(_GvuB{S-a(^a3@V||dTK04vq&vLj zi2Veu@s~BGo{+Hg-qb17QoM-rE02v{iy4VMDq!{sci~eA5u*@n9Fol_vU;VYC=zz| zX6FxZujr57e_lc64~x>!mEM0_gFAlOK{+M{~1&>JS=@3vlZEQ=3fOqj3#sGI`k41dApWn=fHa z@Dl6G$O2l$;tQx}7QncOlnHQqW+;=rwO4TU0eGo%m?2@ZI6+!fq?#(s>Po0oJ) zKpnbol=Vttj-U0)y?I}OXe2XhyHDsk6rRG?cdZep5+Y5O9#^0_fE2^X*%o+O9%lBV zz+3o$oqTUU{dYsKf8f&-Rh{hr4`VyQ=t*w7AY; zNOh(t8$9agmn2f^Tv3D4*@!vIlO-&L7^UzWf8}NRt4e-0Y)|T$XUxgGuj+^64=qed z9)Dk~>+IyfWd6fb=Qh6C^HI{~Z{IBIZYoRSX?x##<-#YwO8VKR#Isx0+?B*%{5ZaS z=mbqt{U1MRJGHiD8h3@A~ukOfHi4RO#2~e&b$x1?sloX&~80Ca8B_T>qh*c6s%LzA1E1|I`Bi&vYY&V6b z6i1tSL_9=^UemmW!*74PHraMr1Cys+Q#)>y?Xu1sV7sh`dD5n-FB^ghPTL^@kT<=; z%=Z@zqj?{-#bkubKR&g-lJMm0(1OtV$^hjV2Obaucb)P{!dr@KF>w)yg)i&+-fjxR zCaVROyU~{3BZW0FpQZIg6|=K zo9{qv>m3DSq$VcvR5Wx#YWFew+a#2Wblg5W^qjsnv9mhCL1v$urwHo=ArC?*{HKOU zC{B%O)8RV7mm_}4WWjF19Tc$Ub3j<1SpE0|`Ju1tz^L)4w+|7$_Tdz-jkyA3Hc}A* zF-O{=d|^OVr=c>-Hp=3}oa+^U#J%NCN?4p)n_z=rD)8&hbl39n)nIa3Hd{ONKsKHI z;i%ny1d<1^04V{DlvN&@7k=)C&T7}U(j5HJE7m`KhXM!S8Z^PcjAO&upK!-dH&pmP z%C`ZvX`#wDE9fkcyt$)I`;z&-CvvTXfY&tOu$=S(KRPytBXr`^eFUpt?4t+oH~S=^ zK%dtjM@!Nvq9lF%PtIJ(E^YQX`X49~pnm99!CUv9#@-(i3NaUdrQ7 z@zS<_N;r9~-^pq)BVrZ0Ho7%!y937Lg9Hng&u!c(8`iQr-2{^x68hW65lAA*5N^E$SVXJ*ZB*>q}4v%T}sK{o1ufpu;l@6oLp3X_S>Sj0Gg&ZgbT z@Ru>9{ceM)e8v%=)B%ku0MB<`@j>Uy13BzxU+& zBiJxlV)$vJME&yjHi;Gai<{asg8*?9Rht$hKm;AMX}1zc-}BO@-7Y|ZaF+lD!V<(P z#Md{qY0CsC5OM@45dN7!iNcEl6bPjPl;axmA{5*}*DI;nisJT0KoA#EtwB(|_Tyx} z#YNmCZd2Qq!!E<7R$SR5273Q9%>Qu$j4~XoN|ypdrJ+jzTI9Scp^^Mry1`6^Rmvw9yhK zRWU|@g6b`DDka}0!6H2oFs&qQ+MN>wHF+()c=T^08*&1p2Ytx?6j1jN? zLXsetKDw$+TZsbn*;NHvszUjI%*YiVU)84N0~DWM)uyf0j8Q#+OX9OE|BNpXusZF2 z-DWN9utUQS=??i{+*7t~N7c5fo!hD^_EqoM_WP~7_S9CrQNDlg{ylZO|FHMKo`YNK ztKOQ1ziQ$6m+Iqcw+jHg0Vyd%Jpj`S$W{)fE*x_w1;u+`Dtz?&@7Ts`pk^ z)>hQ+d41dKd#Y=8U)mE{K6>ZKZ8uchQl3;kv0~cJgl&_`@2`OQDB=+Y;j;W^3;PM7t_S0h>UG|Aby42C-pty*#1T_TGg`l@6t${AJ zl=c=~-k?jZ0hfJrc|$;ywx2F_bU7#yOJDblFFj{dB3L%R#!l zMVAJ;)KU}P5bdDLe!A4r)^_G_YC#tho^vjYxu`DM_Zr^nkK2Qwx6)^k8NA6*2pxefB4KukEPOcAT}IYduas>`CVv2ykgqUibg-bV(4m zp0Ng=v7RpqY>F?QsYPgXt|ortG>}nhg=^(v<@+@u&*P&!#)|!<)+&b?eN$vD7$$UW zu)W1T>hsC=Eba3xR8;P_&8rP@n+|XKbjy(~ZT-9BIrZV|`VZU3di>3Cw(qsP#(I9Z z^?hUfMvDdpo2ip;t7X;I)nrJv^dmOn&sk@Ucp}c65o{BOYIhE2s86mg63>h(yr$dw zGosTUX@AWx%hqfVT~`ujJ!`dnr`-)6P6wVX;g4#pXNLzKsX^VTo!j~{7js;n@PW_vN1_c zjhR}TNgFVqJ3po`yD5*(i6NfyIvNR#LPeb>w8b8`UlU_1a>He{-fb0+oE|MY%;W?| z3hea$5NfbG$9ReUIY+)>qF?@K7hS{o^KNuMy5fKz>)e@RSj~q_a<~E}InrFZNsg4v ztUjuyPBRh}ygD~MqkjOo82f|ngooU@LC<#=qZ%0A==<(A+vSuzzpTvp|K76M(tqd= zdOpr!yBv^XsJ1zAnqu7XlBl!0N{)TlUcJuKpc|2UfoO(^aRV16eiQX;OkI9fOIS}m z#JK(W1|5${xmcWX@xJ@cUT_WXsb_d4iBd<3q)SbDmU~N+-qXX80}AjlWc=v+&UQ)# z2tO)B!WUCu^RkPZpXj$g>c*y_CH4VZ%+~=^PUdzh%b(Mn!;}-PNO))STHarB^8?nt z(YZI4_?NU>`;0u-zxA~H@GRHGjbk5vV9LoHerw5Bl=tCj*LNk2pNr9tb97eQdRfu1W&^%gp<&H4+}PX*S=S2}E~eQ? ziCRkZ_&3k!W5&&EdlR^$rl!Vuv%dIIx8Uy8ku)xX@d?zA7%iS80v8D9O!e3^aIRy7 z1@0hd>6o)qmvF@IiY^I<6HEMgQlg33Q+tP|_6$w!vW&I!)qR@_`wr-tJ$%Z?IfmBr zJPBbD`%HItSIya;1V?uluW^3p-kjIBxrop@cUt(!B%8^tN3l9)tVwXx@R}O?CG@QG zPES&^=^|sqPFIpWy(h_@*PCQ7?Bh8>M7H(&)-PH=Z9S3jPMGameUqV1AByV%JvX+V z!M@?~){k31Nl5LA$%yHRS=}2`)R#Ybx;yxQKGt$3sdzTCeXC7)#~oa!kFfmNdB6MW zlDgEc5gE}vBUbm0DC%4Du2k^sfPyiW_nl#GbzVz-C&^WvGtw=(j&_HJxphazU(prM zK$j)zM`CUSFzWC_`}MrD#{O{Extr`WC>mqvJ`++L(V&aA&*;PB@a{7jLxV0PB%)Ry zVvBe~kBx_id(PcwpV5O{BXW&EMoz6hlu>>RljvMikTO(?AQl2-l-nmL_MTg0pV0-1 z;nz|my88rOsxs_qhP>ItzNprh`haRtV+d%WS~MFC={vVjs&*t*JD{BsS-S2YShp{6 zZ?;;uZxu@2fy6Va4FRnYo7eU=pmvg0+nt;G#L!_RLWQ12yo)u@bPv_rzSq-4q?zda zm5MYF2WNi#x=-M&l2yS5a&n*0^Y)n+n`dI;S_`_YO*6X~&q=flfwJ|pKGdx_YMt55 zHMY4u%r>_dzdoS#^U*oOJu}^{PxrOX?`@sm)5_;}9mQ!MoYlhH8ni%V84SfOaT%ju z|Bg8rXR`viywlR;N36V1^Fpj(zQ%d*N_qwfD?~>sYW2p7H}KnsA36Y&6q-K&!D*9O zZYnw;r1?;-o+o^!22UQS!@058u97+Z8^crYE9~xWD@Whst2nsCVcMJvXm!!rJKNKx zx0?OCIUNrBlx1Z?aU>ka4OXW8O2Zq>c;Fxizu&nHY3Uhpn?BuicuQN@mLrJlD48F0 zZsW)m(nzP#L5$(NBTj($>G2O5jN87^mbQIWda}@6T9WCpp5v)qM^m7*S_0Oc8_p(_ zJiq66{H65{I&D(=*}2j-f86-F(#ZliR~k?Ewh{iNC*$_9$QDXhKx7G!;%t$nlttJ0 zw#YEtP8xt-+Qwxt3b_i5SeAfM+exbJ950Q`k#bA2%?vb?`}Y z1(#6C_J{_;sZC8=zJO@J;VOG4NyzPF!;~U&))I$01bgBtad%ST2;8YKMcR=5xIgs< zs(c0oUmhGQD~H zwH&|I{*xRnupRJAX$dX;JboV=(Ng+3hJkLArCabm7SdAj7P%n}IFZ9jKQrKgQo^aZ zr<5lWq{3IxzzTr&B7a99Opwt9f+#~2P(#~_NDJ=)K9h4$y_R2FF wi!kARU0dfin#(8eEt<8 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/M87SLC.LIB b/Manx Aztec C86 v42b/LIB/M87SLC.LIB new file mode 100644 index 0000000000000000000000000000000000000000..78bc303385bd1bd4e2d1b544bc387935c87a9437 GIT binary patch literal 26624 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 F{~O2*$}<1} literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/M87SLD.LIB b/Manx Aztec C86 v42b/LIB/M87SLD.LIB new file mode 100644 index 0000000000000000000000000000000000000000..776c0ce49c6ac7dd90012494dcc5c249551a636a GIT binary patch literal 26624 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/ML.LIB b/Manx Aztec C86 v42b/LIB/ML.LIB new file mode 100644 index 0000000000000000000000000000000000000000..59b4631cc3125293eae27b54554f167241ce655c GIT binary patch literal 25088 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 Z2jMo$%;6co>v(}9S4bn_68=pu{|$olG{*n{ literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/MLC.LIB b/Manx Aztec C86 v42b/LIB/MLC.LIB new file mode 100644 index 0000000000000000000000000000000000000000..14464d7e640ad5ba23cc919439bd865dbf160303 GIT binary patch literal 25088 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 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/OVBGN.O b/Manx Aztec C86 v42b/LIB/OVBGN.O new file mode 100644 index 0000000000000000000000000000000000000000..c9a448383681bcdb256e2231e5de9f5911adf9aa GIT binary patch literal 256 zcmYcbVSoZV1}-40fq|QWff2}H1d(69O2VXp9Kn9J5(c5jPPI}7!A`w0AYoPxBD)>;|dq2I=VrDend<7Yh8ZR>JV*TQLIz zyB7mPd}w}AdOVbwnwJ7(dN45Lm*pmA=EXBG0of|~Wl8CI49rd(48@6MsqsarB|r`f vgi~AqWV1ooNgy@@R6G;NW`eL&G8vd0)EM&elZuOhCTaprPp!x-iDv)+NUK8O literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/OVLD.O b/Manx Aztec C86 v42b/LIB/OVLD.O new file mode 100644 index 0000000000000000000000000000000000000000..7d1c83db5401f104c632a1a0d44010f2a3268491 GIT binary patch literal 674 zcmYjO&ui0Q7=D`SbOT4V*+#9-iW_(m@!-Ka5XC57?7=BLXiS^52HK>2$v)RPtFtEw zJNXwlPhLhZLhtq;@F;ljB2(&KK{NM{OS&NA3cn(GN{|yZfQ97k?jtS^v^%V<++lS z){qwxFo`*G6u;FDSK@drG@$lpK$XvNrre(uroB?k4~OG*%y$P z%=eR-o5{?g7P7F8T+Bx?kN#VxsExev8P#5qwJO!prZ17B4aQIO;K$?72kIr4Geir? zb$a49*_hKwY~96PbdyQffKrbM7`{E-NgXg@$XGwo^Y_ zaJj`AM*CV}*;_(HzXZqb0!tOEZaYwjx?FfIrepf1h#aG7=}>N*fKDk>PyC+Gs;%}v zZupYBEz1$+pAb!qipwSmW*MUN9-ucXt`G&iWjTM3lR!|N-2+NkSsdhmx*ZLz`5t#d*0bfkdlQ#7MGs^rl_n8vLI~ zy&m4J)ZH0|z*4JILTJ0$Cz@wQ61z&B25gKA3Fy_&5vBUAax&+-C7wd4I*SrdBitAQ zwXY+Rq(BmjJR{6_iR%a`2ULx|>)Yv9<`4J^B47GZt<_yl|Ls?UPog zjM44pz}ztTIZ6(D$)m~5${{E132Em&Z9G|19G}wmDZk?bFW|TNQ!=l3W{3ukUc%3K z9>L9u^9p{8uaQ6N`D01f=B|CzeRHGxW?bQn8;H7g+qIqlmWeBEi<>li&6^F=ENxmr zls4!*R%`o@J|B-IZY|scu9`N36X_m*Puw=-+TyCxw7BXXo$0l>>S@6ngCegWMZ}de zfSmBBf_@24te9EqZmP zV(_-83~fzUA>TX;m8^`~?a%5(-LO4w6QbV$IXInh`~#e2-H$0>lsYfM9h6a zT}zol6!ea6{8bk{O3SEetJh6MI&WIEirCjGu$)m`@rqQ&v^=J-=P1s%1<2LQgdKuT i*dUY$tAvLH`s-Ie5Iz#V621|B5{4wX8kBrnXYdF9IwK4K literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/ROM.O b/Manx Aztec C86 v42b/LIB/ROM.O new file mode 100644 index 0000000000000000000000000000000000000000..16d88bbebdcd4ed831aa52cf82835cfc891777c4 GIT binary patch literal 443 zcmYMsze@sP7zgn0nVB_+dRm)t;1D$V(N!>HT19D;1yDEk!p z=1}4KYW7dzR68o;>b3eO=zX366FY!Eycyozr?f&)6j36SHjub_$Y)I3L1JUifMlbR zX2uQ>bwoEvM#|@TO;8A?=$B+eQj%i|VtmBNe;OI4+q8Fmm=5@tX8Dvzr)cO;WVDo+ q(qJ(!Q6ZTUF}()FRE>|NVOd##D8(eXK)GZxBk&5f1Ug8hG=2dcA&E%< literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/S.LIB b/Manx Aztec C86 v42b/LIB/S.LIB new file mode 100644 index 0000000000000000000000000000000000000000..440f784126f5a67e729f5c983d9a6b783a9400ff GIT binary patch literal 5632 zcmeHLOKTff6h3-HQk6QjNg_*rNN!8|h_Wm;#BN$jkwq8rKvTJ1)Ptjr8-rpwqmi{S zu8c}>GkBGamk#*@ffzEO(7KgTHZc@Rw zoqO*2?sik7~VRiT^9*^COkLc~SHK;^e%>>653(?zz*YzD`^%H&Jg z%V_E~CQnVzYC1mpI@2<89jCY|*YPG((|H>C7QdCnsow^5!Z7ryizEsx@N%4wo*;{@ zPYZz-0xbku2(%FRKOr!AAw8944*kr2qY!}WC|!r53&5R>%6^C))1CZ~Yl0oPlPc3C zKX51SFkLbPck&yiOOD`A0)IYF{hYMPtbTa{`GNl<*lxk$Ps~RtbJm-xZsnnCtW*!? z16CU-q{ha^&0jw&ixI^kh#76>FNtgZWu0b|iwWDT-1Wjw502iuS%A*cd=QMl!m$FJEW)O5;f(@B zzJ$_zKwb@qtH+-L-R!a9TEbo)S816y3eZh!MI+=8&VK^u|GFP1TV@MD1TGNYAl|eh z@IL|?N}9l*Bi7(m62c787O8MP)6f`SaUdFFYp9K;mJ&5(DN$G2t6NtH2K2hNnKbXc zuh_Ho>Xr_@c+CP(6vcu7f|Y|vX+2>6IV$ecGj!i_fnrv!J~-X|5dTlv&;~ED;W!{L zT(U>>+tvustY}Jyo~Fm_egjTeeSA30ZqL@l?A?4A2amz=um1@Akswmk14Lm*{3U^u zAipU5zZ(Ie|Cx-0sKcK~^`g{C*&GY?#4h8q0 zPPiXnWbg=&ZQ)4=z~k^LY=o+PP&{`FPv1uH z-6G_U@CyBDdDXQM%6l!_E>~Spj(xRecuqeoUtLEbIONH9dE#s3my2bqZtpj&o40sR znfp%({fgLsH=IT3tRw$K!pmyF&hIBFpwS~tLEbj@wN`GQ-X266_6JcKbl8_~7aS#r zx~k;^MnsP&j z2oo%qkA+DWFAKae8AJo9@gJblG54PN5&mO;-P8Y_`|s{G@F4#C58r>tfjywkum>Nu?4|4VobQizbqpOWEHNeN<(&Kd zalYqsetz$TdjNjOru5`=&d4SutxrxF7bTa~j0r=R+~*CPu4UO+E88RWnU>ZJEeY+M zot(;Qx{-tsXVcmQZqvyaEp;iAgf32J(n$yl5)aW0Nj}`o-l4=4y=14%q;c+PMqkQY zMp3UadU7hS>A3VY#--&sdN?c3@djg4Ihy$dO|lNqMaHhYG_1K%KpKg9(~j8|IT8z`|4d36-sffAcyyzCE@ zSefy%Lr`KrGhX%x?ild(IjZNxUCij0C$K+oe*pCo-0`t_FK*^t@oSHA5E?I4y*aOS z6jWj(;|cS(Pd9PKdcxIHd>2B7-;TO^uDTa-dzyMT%LQmJ&H2Fa z%pWU2TM>3#^F0L!egUO9uYBtfZ%;l18tk&+YSdm#Bx(Qa1?Z$xqYzRJ_ix4hzZ$^J z7MVsb%BOq^^*hwJeJkw$5@<+iP;_|E{@h}L88ct2I+SijU@(FoJLG8RWm zR8)MNs3Q6^gucg|tL&)e#(QX>>a|BYoGPuiSOBW3THwK1SqRdszsAHku3_Vr15~qo zQHbCtr4I;>AcAMy5}wGR*Pf7(>wk2jN7 z1pX}$M=B0QQ0n;en~OxBUpyLITn?p}_oK_rK#<(n`o*o<1A5)x0$k%waS$$_ZaaP< zUx7iS22nnyU=e@(HpB#SGJp|fMqSG@5I`xEVc6bP`_-Efp#re~Vg@Wr(H|%rh?|`@Py8RvCBr9`|ldi}w<4TO*;-}elTq1*Q z0+xjb#{uqltiV>_?rA8Vy$L}ueD4$?>*o3Slg$;!Rv_16+4kmL2W&>ZTs54%+iO?W zk?_9l%!QnNt82dEnpL&e_HEezxRC2l0gb1|zc8Xek#Gj%&ryp%5%97avhN3N$PqKRBE< z{cGP-q^18Y2IM^68tjn~Mmtn9TE#NHs$SP2$Oy~fVxAHbDTCE!gZcof{0B&OOvA>9 z&>!pTp8D@zf1jQM52!znl*7}X%yd@Re>eZ%t-~XuV#Cb(<&v$=IwROhl&Zm5=MNpg zIepF!zi&pVUhA=xfl3nQVa1#P%nYXCe44`AzUL8YZ(DTu`&GO-21-SlHxZ7*^_aoKcfPcNP$H%bk XFcThg#B0U_zAb+;u|MFMG=RSWUGJVe literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/LIB/SLC.LIB b/Manx Aztec C86 v42b/LIB/SLC.LIB new file mode 100644 index 0000000000000000000000000000000000000000..627ecc5905af6964f2c4443df027f958fdccbceb GIT binary patch literal 5760 zcmeHLUrbwN6hHSC+uC)ro2*d&J9SYY@eRzFi&0Y=v#d87i#$lf>YXDgl-=Ia7lI`< z3+{#|UkFc-J?@1E67PIa3|L|aiHYxKiPOx$gAZHwQhGh#cfPM(2h0p6OH7-zJ?DOZ z&Ub$2?{_b60|X$QFyiAGGaZ+-F*0Uekz86ghfPCrUsQ31p5|lqe2>KEdQvy_I5ZGD zGM3g2GY(C}CiP+5rkOK(;%X`mEkvi1acC1H9-;%{G~B_Tp~M7x$WNI{;@mTwzM2|E zQLl1(WNbn=aOrEDOUiScC03r}4bCPqZ04IZl)|k$AwF!H#>izx3M}w(H_aYq5^J9t z0yP9`2-Fa$A@F}fz^^7oQe2_m`EMI|;TxpztGYprP^G2bK#g3a>L|JcH8RS1*&nEp zpExf&1U2$A=Vg!Ji2$w7uzJq8D=A}i82bayhfpcOjh|TCF>Asdo8QSm(_p^j%lPc$ zpfR?6aLD@OvkfsLcOF9KOV)4U8=g5FUVw(dt!>-KrY<}-bvEohrN!(82z>X}0-X8? zr%XV5e$6ZQ%deFNVnGyZO?elx&@vNttitU&`1Q`Q^_y8}$WQsf^iH41!s#4rxu?%& zA@n8Wr+o6MS3G_BA+W&~2X2I&xuG~a?_w63*`ZMg(+u~o$Nj(V!OiCQ0iK&n`Bm2M zu)b|c*#8C4kFh<%8T#e8zew<&&B{JA1U|D!@65xL0GHeF# zoq^niB?y7(exU~ton1S zcF9?-Sn9u_NPia4cxwE#Aqwa4{~X4jQjR|n@Uj~6_Xnq$L!(9*f>bsR6oMq5y}byP z<@X`gR~7&A?M79~VO7=kU<={~(`Aptfsz5qXYWfc3i-1BgW@XdUw)q=E&XpXAm>qQ zuwO=qHfmP5gjIY+TQnfV30rYH5AAcyHFaa%>&@IE)e- zR30h23%XC9`DNH)bB%T+%WXXb3_U(usO;{kCVja z(?p<&Kofx`0!;+|PY6t$O;2W-LcgnPE-f(_?L{A z^?^HXF(?)XoPmoLo(=aa2I(R%m^P-l+~mtyu}GDY)WD?&Fd7KM;TIR6ox|GNR4Y>_Df z6KAR3pt|V?f&T%}kkSPH9I-}SB_YgE*&-QU&onqzuQ(8muqD(+6M@UInu@PC>j=XP z!QeCJY8!EL^)y0MUw^7YZ+S(r08~}Az=xx95Ta3kjf#H!hV@%6P|fPad&j!(FZ>-QF1ymq`qAWOAVg+t{pwZi0e#cn0$k$?lZFw9`5&D&+E_~%+%SmL zphG@CjWB_n44_AuG3ELU1W*dOx|r`}|AhQ(1_p$D1wKUze=PoT|JUe%Bvs_Lw>4tQ z9Cp1 z@_MOa)$QGybz^^DL~#Adq2Cbu?}igdopAV{aCjLF*!jJKtQj>z7vxD}S8L_+>GmMh zkUxafkVC$_U2udP@-xeerGNs4$C`#+1p_Xh?ki9^e8M2}|5pER+-Jz0evuEzalACx zAtHtN%hkdxrAveimYWT#11R(FA=ohuoiCw3=GPtd-#-67KL+km zfA2o)Pup~o0YmxcS^M9v!lO;a%9RzaWm}!~M6i@7*F&?OpM$_Ev)<){t60UMmssFt zp7LzE7x-t>c)vzZ7|kw<|51niGjk(>;U&+Hu-0}bsVodu!^1APlk_cgR*{J8E(LP= z6u3@__~(IPl#f5me=PpVt2r3~d6aAHFiZH4+r99J7D#~1|7jx-eX~Jc0brqO58Qx& zS>+`v76WM5jiy#a1}z_r+pO}MoN(B$hwD#?yOW6|{Es7b+=2gQVo!`>* 1k.) */ diff --git a/Manx Aztec C86 v42b/MAKEFILE b/Manx Aztec C86 v42b/MAKEFILE new file mode 100644 index 0000000..9ac1daf --- /dev/null +++ b/Manx Aztec C86 v42b/MAKEFILE @@ -0,0 +1,11 @@ +# --------------------------------------------------------------------- +# makefile by bill buckels 1997 +# --------------------------------------------------------------------- + +exmpl.exe: exmpl.o + ln exmpl.o c.lib + rm exmpl.o + @echo All Done! + +exmpl.o: exmpl.c + cc exmpl.c diff --git a/Manx Aztec C86 v42b/README.txt b/Manx Aztec C86 v42b/README.txt new file mode 100644 index 0000000..2a6f07a --- /dev/null +++ b/Manx Aztec C86 v42b/README.txt @@ -0,0 +1,104 @@ + C86 v4.2 README + 9/29/89 + +INSTALLATION: + +Version 4.2b of the Aztec C86 compiler now includes an installation utility. +To perform a full installation, follow these steps: + + - If you haven't already done so, insert disk 1 into a floppy drive. + - Type install + +From this point, follow the installation prompts to complete the installation. +Please note the following approximate hard-disk space requirements: + + Minimum Maximum + Professional Package 800K 1.3MB + Developer Package 970K 1.5MB + Commericial Package 970K 1.8MB + +The minimum configuration omits source-archive files (in the case of the +commercial version), as well as all library files except the small code/ +small data model libraries (all versions). + +The installation utility may also be invokved with the /p (for partial) option +if you wish to install only a portion of the package. For example, if your +original installation did not copy archive files, you may invoke Install with +/p to copy ONLY the archive files. The same may be done for the various +models of libraries. To perform a partial-install, follow these steps: + + - If you haven't already done so, insert disk 1 into a floppy drive. + - Type install /p + +From this point, follow the installation prompts to complete the installation. + +LATE-ADDITIONS TO V4.2B +In addition to the changes listed in the 4.2 release document, the hex86 +utility has also been changed. This version fixes two problems that existed +in the 4.1d version, as well as adding support for Intel extended address +records. One problem with the 4.1d compiler was fixed, as well as early bugs +in obji. + + HEX86 Changes + +HEX86 Bug Fixes: + +1. In previous versions, there was a bug in using the -j option (specify +up to 16 bytes of startup code) and the -e & -o options (even & odd). If +an odd number of bytes was specified with the -j option and -e and -o was +used, the last byte of reset data would be omitted. + +2. Previous versions of hex86 did not always include the last item of +initialized data in the hex file. + +3. Early versions of v4.2 hex86 did not always generate correct checksums for +extended address records. + +4. When extended address records were used, early versions of v4.2 hex86 +placed the jump to $begin at the end of the initialized data segment instead of +at absolute address ffff:0. + +EXTENDED ADDRESS RECORD SUPPORT + +This version now supports Intel extended address records within the +hex file. This allows >64K of data to occur in each file, and also allows +code & data to be placed at different locations, but still be contained within +the same physical file. If extended address records are required, then a +symbol table MUST be generated by the linker, using the -t option. The hex86 +utility needs this file in order for it to correctly locate code & data. Two +command line options enable the extended address record feature: + + -x: This option enables the use of extended address records within the Intel + Hex files generated by hex86. This option may be specified with or + without an explicit segment address. If a segment address is specified + (in hexadecimal), then that address will be the address used in the first + extended address record, and following address records will be + adjusted accordingly. If no address is specified, then the value of + _Corg_ in the program's symbol table will be used. + + Data will follow the code within the hexfile, and no special extended + address record will be emitted for it. If code or data goes past 64K, + an extended address record will be emitted to select a new segment. + + -i: This option is identical to -x, except that a seperate extended address + record will be emitted for initialzed data, with an address of _Dorg_ + (the start of initialized data). An explicit segment for code cannot be + specified with this option, as can be with -x. + + + OBJI Changes + +OBJI Bug Fixes: + +1. Early versions of obji occasionally did not generate a BLKEND record for +the last BLKDEF record within the output file. This would cause the Intel +linker to terminate with a "bad object file" error message. + + COMPILER Changes + +CGEN (Pass 2) Bug fixes: + +1. Version 4.1d of pass 2 of the C compiler did not generate correct code when +dealing with Huge pointers. Specifically, segments were bumped by 1000 decimal +instead of 1000 hex when crossing segment boundaries. + diff --git a/Manx Aztec C86 v42b/SAMPLES/BATCH/BATCH.C b/Manx Aztec C86 v42b/SAMPLES/BATCH/BATCH.C new file mode 100644 index 0000000..bee1151 --- /dev/null +++ b/Manx Aztec C86 v42b/SAMPLES/BATCH/BATCH.C @@ -0,0 +1,451 @@ +/* demo for embedded .BSV files in aztec C */ +/* BATCH.c by bill buckels 1990 */ +/* these files can be created in the THEDRAW or in GWBASIC, etc. */ +/* arrays are encoded using my utility bsaveinc */ + +#include + +unsigned char BATCH000[]={ +255, 32,255, 32,242, 32,193,218,231,196,193,194,197,196,191,225, 32, +179,198, 32,199,220,195, 32,199,220,195, 32,199,220,198, 32,179,197, 32, +179,225, 32,179,199, 32,194,220,195, 32,194,220,195, 32,194,220,195, 32, +194,220,195, 32,194,220,195, 32,194,220,197, 32,179, 32,194, 66, 80, + 32,179,225, 32,179,199, 32,198,220,196, 32,198,220,196, 32,198,220, +198, 32,179, 32,195,219, 32,179,225, 32,179,199, 32,194,220,195, 32, +194,220,195, 32,194,220,195, 32,194,220,195, 32,194,220,202, 32,179, +197, 32,179,225, 32,179,198, 32,199,220,195, 32,199,220,196, 32,194,220, +202, 32,179,197, 32,179,225, 32,179,231, 32,179,194, 32,193,249,194, 32, +179,225, 32,179,197, 32, 66,105,194,108, 32, 66,117, 99,107,101,108, +115, 32, 80,114,111,100,117, 99,116,105,111,110,115, 32, 49, 57,194, 56, +197, 32,179,194, 32,111,194, 32,179,225, 32,179,205, 32, 99,111,112, +121,114,105,116,101, 32, 49, 57, 56, 57,205, 32,179,197, 32,179,225, 32, +179,231, 32,179,194, 32,111,194, 32,179,225, 32,179,231, 32,179,197, 32, +179,225, 32,179,231, 32,179,194, 32,111,194, 32,179,225, 32,193,192, +231,196,193,193,197,196,193,217,234, 32,193,219,219, 32,193,219,231, 32, +193,218,244,196,191,218, 32,179,194, 32,193,218,195,196,191,202, 32, +193,218,207,196,191,193,218,207,196,191, 32,179,218, 32,179,194, 32, +179,194, 66, 80,179,202, 32,179,195, 32,196,196, 18,196,196, 32,193,254, + 32,194,179,207, 32,179, 32,179,218, 32,179,194, 32,193,192,195,196, +193,217,202, 32,193,195,207,196,180,179,203, 32,193,254, 32,193,254, + 32,179, 32,179,218, 32,179, 32,206,186,194, 32,179,195, 32,196,196, + 18,196,196, 32,193,254, 32,194,179,207, 32,179, 32,179,218, 32,179, + 32,206,186,194, 32,193,192,207,196,193,217,193,192,207,196,193,217, + 32,179,218, 32,193,192,244,196,193,217,255, 32,255, 32,239, 32,255, 7, +255, 7,242, 7,239, 96,225, 7, 96,198, 7,219, 3,198, 7,199, 96, +225, 7, 96,199, 7,224, 3,199, 96,225, 7, 96,199, 7,218, 3,198, 7, +199, 96,225, 7, 96,199, 7,214, 3,202, 7,199, 96,225, 7, 96,198, 7, +215, 3,202, 7,199, 96,225, 7, 96,231, 7,199, 96,225, 7, 96,197, 7, +226, 14,199, 96,225, 7, 96,205, 7,205, 14,205, 7,199, 96,225, 7, + 96,231, 7,199, 96,225, 7, 96,231, 7,199, 96,225, 7, 96,231, 7, +199, 96,225, 7,239, 96,234, 7, 4,219, 7, 4,231, 7,246, 96,218, 7, +195, 96,197, 3,202, 96,226, 4,194, 96,218, 7,195, 96,197, 3,202, 96, +210, 4,207, 7, 4,194, 96,218, 7,195, 96,197, 3,202, 96,210, 4, +203, 7,197, 4,194, 96,218, 7,194, 96,206, 3,194, 96,210, 4,207, 7, + 4,194, 96,218, 7,194, 96,206, 3,194, 96,226, 4,194, 96,218, 7, +246, 96,255, 7,255, 7,239, 7, +0}; /* terminator */ + +unsigned char BATCH001[]={ +194, 32,193,201,255,205,202,205,187,197, 32,186,203, 32,204,220,197, 32, +204,220,197, 32,204,220,208, 32,186,197, 32,186,203, 32,206,220,195, 32, +206,220,195, 32,206,220,206, 32,186,197, 32,186,205, 32,196,220,196, 32, +196,220,197, 32,196,220,196, 32,196,220,197, 32,196,220,196, 32,196,220, +206, 32,186,197, 32,186,205, 32,203,220,198, 32,203,220,198, 32,203,220, +207, 32,186,197, 32,186,205, 32,203,220,198, 32,203,220,198, 32,202,220, +208, 32,186,197, 32,186,205, 32,196,220,196, 32,196,220,197, 32,196,220, +196, 32,196,220,197, 32,196,220,214, 32,186,197, 32,186,203, 32,206,220, +195, 32,206,220,195, 32,200,220,212, 32,186,197, 32,186,203, 32,204,220, +197, 32,204,220,197, 32,200,220,212, 32,186,197, 32,193,204,255,205, +202,205,185,197, 32,186,207, 32, 66,105,194,108, 32, 66,117, 99,107, +101,108,115, 32, 80,114,111,100,117, 99,116,105,111,110,115, 32, 49, + 57,194, 56, 32,112,114,101,115,101,110,116,115,212, 32,186,197, 32, +186,207, 32, 79, 98,115,101,114,118, 97,116,105,111,110,115, 32,111, +110, 32, 80, 67, 68, 79, 83, 32, 66, 97,116, 99,104, 32, 80,114,111, + 99,101,194,115,105,110,103,212, 32,186,197, 32,186,212, 32, 79,110, + 32,116,104,101, 32, 73, 66, 77, 32, 80, 67, 32, 97,110,100, 32, 67, +111,109,112, 97,116, 97, 98,108,101,115,216, 32,186,197, 32,193,204, +255,205,202,205,185,197, 32,186,204, 32,200,220,194, 32,204,220,196, 32, +199,220,199, 32,199,220,206, 32,186,197, 32,186,204, 32,200,220,194, 32, +206,220,194, 32,200,220,197, 32,200,220,206, 32,186,197, 32,186,206, 32, +196,220,198, 32,196,220,196, 32,196,220,196, 32,199,220,195, 32,199,220, +208, 32,186,197, 32,186,206, 32,196,220,198, 32,203,220,197, 32,200,220, + 32,200,220,208, 32,186,197, 32,186,206, 32,196,220,198, 32,203,220, +197, 32,196,220, 32,199,220, 32,196,220,208, 32,186,197, 32,186,206, 32, +196,220,198, 32,196,220,196, 32,196,220,196, 32,196,220,194, 32,197,220, +194, 32,196,220,208, 32,186,197, 32,186,204, 32,200,220,194, 32,206,220, +194, 32,198,220,195, 32,195,220,195, 32,198,220,206, 32,186,197, 32, +186,204, 32,200,220,194, 32,204,220,196, 32,198,220,196, 32,193,220, +196, 32,198,220,206, 32,186,197, 32,193,200,255,205,202,205,188,255, 32, +255, 32,229, 32,194, 23,255, 4,204, 4,197, 23, 4,203, 7,238, 1, +208, 7, 4,197, 23, 4,203, 7,240, 1,206, 7, 4,197, 23, 4,205, 7, +238, 1,206, 7, 4,197, 23, 4,205, 7,203, 1,198, 7,203, 1,198, 7, +203, 1,207, 7, 4,197, 23, 4,205, 7,203, 1,198, 7,203, 1,198, 7, +202, 1,208, 7, 4,197, 23, 4,205, 7,230, 1,214, 7, 4,197, 23, + 4,203, 7,234, 1,212, 7, 4,197, 23, 4,203, 7,234, 1,212, 7, + 4,197, 23,255, 4,204, 4,197, 23, 4,255, 71,202, 71, 4,197, 23, + 4,255, 71,202, 71, 4,197, 23, 4,255, 71,202, 71, 4,197, 23,255, 4, +204, 4,197, 23, 4,204, 7,225, 1,199, 7,199, 1,206, 7, 4,197, 23, + 4,204, 7,239, 1,206, 7, 4,197, 23, 4,206, 7,196, 1,198, 7, +225, 1,208, 7, 4,197, 23, 4,206, 7,196, 1,198, 7,225, 1,208, 7, + 4,197, 23, 4,206, 7,196, 1,198, 7,225, 1,208, 7, 4,197, 23, + 4,206, 7,196, 1,198, 7,225, 1,208, 7, 4,197, 23, 4,204, 7, +239, 1,206, 7, 4,197, 23, 4,204, 7,239, 1,206, 7, 4,197, 23, +255, 4,204, 4,195, 23,255, 7,255, 7,226, 7, +0}; /* terminator */ + +unsigned char BATCH002[]={ +194, 32,193,201,255,205,202,205,187,197, 32,186,255, 32,202, 32,186, +197, 32,186,195, 32, 84,104,101, 32, 73, 66, 77, 32, 80, 67, 32,111, +112,101,114, 97,116,105,110,103, 32,115,121,115,116,101,109, 32, 40, + 68, 79, 83, 41, 32,105,115, 32,116,104,101, 32,109,111,115,116, 32, +101,194,102,105, 99,105,101,110,116, 32,119, 97,121, 32,102,111,114, +199, 32,186,197, 32,186,195, 32,116,104,101, 32, 97,118,101,114, 97, +103,101, 32,117,115,101,114, 32,116,111, 32,105,194,115,117,101, 32, +105,110,115,116,114,117, 99,116,105,111,110,115, 32,116,111, 32,116, +104,101, 32,112,114,111, 99,101,194,115,111,114, 44, 32, 98,117,116, + 32,105,116, 32,105,115,196, 32,186,197, 32,186,195, 32, 97,108,115, +111, 32,116,104,101, 32,109,111,115,116, 32,111,118,101,114,108,194,111, +107,101,100, 32,119,104,101,110, 32,105,116, 32, 99,111,109,101,115, + 32,116,105,109,101, 32,102,111,114, 32,109,111,115,116, 32,111,102, + 32,117,115, 32,116,111,201, 32,186,197, 32,186,195, 32, 99,111,110, +115,105,100,101,114, 32,119, 97,121,115, 32, 97,110,100, 32,109,101, + 97,110,115, 32,116,111, 32,112,114,111, 99,101,194,115, 32,111,117, +114, 32,118, 97,114,105,111,117,115, 32, 99,111,109,112,117,116,105, +110,103, 32,116, 97,115,107,115, 46,199, 32,186,197, 32,186,255, 32, +202, 32,186,197, 32,186,195, 32, 65,194,108, 32,116,194,111, 32,111, +102,116,101,110, 32,119,101, 32,111,112,116, 32,102,111,114, 32, 97, + 32,109,101,109,111,114,121, 32,104,111,103, 32,111,102, 32, 97, 32, +102, 97,109,105,108,105, 97,114, 32, 97,194,112,108,105, 99, 97,116, +105,111,110,115,198, 32,186,197, 32,186,195, 32,112,114,111,103,114, + 97,109, 32,111,114, 32, 97, 32,114,111,117,116,105,110,101, 32,115, +101,118,101,114, 97,108, 32,108, 97,121,101,114,115, 32,116,104,105, + 99,107, 32,105,110, 32, 66, 65, 83, 73, 67, 39,115, 32, 34, 98,111, +103, 32, 97,110,100, 32,109,105,114,101, 34,195, 32,186,197, 32,186, +195, 32,116,111, 32,105,194,115,117,101, 32,111,110,101, 32,111,114, + 32,116,119,111, 32,108,105,194,116,108,101, 32,105,110,115,116,114, +117, 99,116,105,111,110,115, 32,116,104, 97,116, 32, 97,114,101, 32, +112,114,111, 98, 97, 98,108,121, 32, 97,118, 97,105,108, 97, 98,108, +101,195, 32,186,197, 32,186,195, 32,105,110, 32, 97, 32,116,105,110, +121, 32, 46, 67,111,109, 32,112,114,111,103,114, 97,109, 32,116,104, + 97,116, 32, 99, 97,109,101, 32,119,105,116,104, 32,116,104, 97,116, + 32, 99,111,110,102,117,115,105,110,103, 32,112,105,108,101, 32,111, +102, 32,115,116,117,194,102,196, 32,186,197, 32,186,195, 32,111,110, + 32,111,117,114, 32, 68,111,115, 32, 68,105,115,107, 46, 32, 40, 73, +102, 32,119,101, 32,104, 97,100, 32,116, 97,107,101,110, 32,116,104, +101, 32,116,105,109,101, 32,116,111, 32,119, 97,100,101, 32,116,104, +114,111,117,103,104, 32,116,104,101,200, 32,186,197, 32,186,195, 32, +109,111,117,110,100,115, 32,111,102, 32,100,111, 99,117,109,101,110, +116, 97,116,105,111,110, 32,119,101, 32,119,111,117,108,100, 32,117, +110,100,101,114,115,116, 97,110,100, 32,116,104, 97,116, 32,116,104, +101, 32, 77, 97,110,121, 32, 70,101, 97,116,117,114,101,115,196, 32, +186,197, 32,186,195, 32,111,110, 32,116,104,101, 32, 70, 97, 99,101, + 32,111,102, 32, 68,111,115, 32, 97,114,101, 32, 97, 32,100,101,108, +105, 98,101,114, 97,116,101, 32,101,194,102,111,114,116, 32,116,111, + 32,109, 97,107,101, 32,116,104,101, 32,115,121,115,116,101,109, 32, +109,111,114,101,196, 32,186,197, 32,186,195, 32,102,114,105,101,110, +100,108,121, 32, 97,110,100, 32,101,194,102,105, 99,105,101,110,116, + 32,116,104, 97,110, 32, 99,111,110,102,117,115,105,110,103, 32, 97, +110,100, 32,116,105,109,101, 45, 99,111,110,115,117,109,105,110,103, + 46, 41,204, 32,186,197, 32,186,255, 32,202, 32,186,197, 32,186,195, 32, + 84,104,105,115, 32,105,115, 32,119,104,101,114,101, 32,109,111,115, +116, 32,111,102, 32,117,115, 32, 97,115, 32,117,115,101,114,115, 32, +102, 97,105,108, 44, 32, 97,110,100, 32, 97,102,116,101,114, 32, 34, +119,101, 97,114,105,110,103, 32,111,117,114,200, 32,186,197, 32,186, +195, 32,102,105,110,103,101,114,115, 32,116,111, 32,116,104,101, 32, + 98,111,110,101, 34, 32,116,121,112,105,110,103, 32,101, 97, 99,104, + 32, 97,110,100, 32,101,118,101,114,121, 32, 99,111,194,109, 97,110, +100, 32,105,110, 32,115,111,114,116, 32,111,102, 32, 97,110,198, 32, +186,197, 32,186,195, 32,101,109,117,108, 97,116,105,111,110, 32,111, +102, 32, 34,104,117,110,116, 32, 97,110,100, 32,112,101, 99,107, 34, + 32,111,110, 32,116,104,101, 32,109, 97,110,117, 97,108, 32,116,121, +112,101,119,114,105,116,101,114, 44, 32,119,101, 32,115,112,114,105, +110,103, 32,102,111,114,194, 32,186,197, 32,186,195, 32,116,104,101, + 32,108, 97,116,101,115,116, 32,118,101,114,115,105,111,110, 32,111, +102, 32, 34, 84,104,101, 32, 70, 97,107,101,119, 97,114,101, 32, 87, +105,110,100,111,119, 32, 77,101,110,117, 32, 77,111,117,115,101, 32, + 67,111,194,109, 97,110,100,111, 34,199, 32,186,197, 32,186,195, 32, + 97,110,100, 32, 98,101, 99,111,109,101, 32,102,111,114,101,118,101, +114, 32,105,110,101,194,102,101, 99,116,105,118,101, 32,119,104,105, +110,105,110,103, 32, 34,109,101,109,111,114,121, 32,106,117,110,107, +105,101,115, 46, 34,206, 32,186,197, 32,186,255, 32,202, 32,186,197, 32, +193,200,255,205,202,205,188,255, 32,255, 32,229, 32,194, 23,255, 6, +204, 6,197, 23, 6,255, 7,202, 7, 6,197, 23,196, 6,255, 3,199, 7, + 6,197, 23,196, 6,255, 3,199, 3, 6,197, 23,196, 6,253, 3,201, 7, + 6,197, 23,196, 6,255, 3,199, 7, 6,197, 23, 6,255, 7,202, 7, + 6,197, 23,196, 6,255, 4, 4,198, 7, 6,197, 23,196, 6,255, 4, +199, 4, 6,197, 23,196, 6,255, 4,199, 4, 6,197, 23,196, 6,255, 4, +199, 4, 6,197, 23,196, 6,254, 4,200, 7, 6,197, 23,196, 6,255, 4, +199, 4, 6,197, 23,196, 6,255, 4,199, 4, 6,197, 23,196, 6,250, 4, +204, 7, 6,197, 23, 6,255, 7,202, 7, 6,197, 23,196, 6,254, 3, +200, 7, 6,197, 23,196, 6,255, 3, 3,198, 7, 6,197, 23,196, 6, +255, 3,199, 3, 6,197, 23,196, 6,255, 3,199, 7, 6,197, 23,196, 6, +248, 3,206, 7, 6,197, 23, 6,255, 7,202, 7, 6,197, 23,255, 6, +204, 6,195, 23,255, 7,255, 7,226, 7, +0}; /* terminator */ + +unsigned char BATCH003[]={ +194, 32,193,201,255,205,202,205,187,197, 32,186,211, 32, 67,111,194,109, + 97,110,100, 46, 67,111,109, 32, 97,110,100, 32,116,104,101, 32, 34, + 84,114, 97,105,110, 32,111,102, 32, 67,111,194,109, 97,110,100, 34, +208, 32,186,197, 32,186,199, 32,195,219,196, 32,193,219,194,223,193,219, +247, 32,186,197, 32,186,200, 32,193,219,197, 32,193,219,194, 32,193,219, + 32,198,219,200, 32,198,219,200, 32,198,219, 32,198,219,196, 32,193,219, +193,223,193,219,198, 32,186,197, 32,186,199, 32,203,219, 95,198,219, + 95,198, 32, 95,198,219, 95,198, 32, 95,198,219, 95,198,219, 95,193,223, +199,219,193,223,195, 32,186,197, 32,186,199, 32,203,219, 32,198,219, + 32,198,219, 32,198,219, 32,198,219, 32,198,219, 32,198,219, 32,193,192, +199,219,193,217,195, 32,186,197, 32,186,198, 32,193,219,194, 32, 79, +197, 32, 79,196, 32, 79,194, 32, 79,195, 32, 79,194, 32, 79,195, 32, + 79,194, 32, 79,195, 32, 79,194, 32, 79,195, 32, 79,194, 32, 79,195, 32, + 79,194, 32, 79,196, 32, 79,195, 32, 79,197, 32,186,197, 32,186,255, 32, +202, 32,186,197, 32,186,195, 32, 66,117,116, 32,105,109, 97,103,105, +110,101, 32,102,111,114, 32, 97, 32,109,111,109,101,110,116, 32,105, +102, 32,121,111,117, 32,107,110,101,119, 32,116,104,101, 32,109,111, +100,117,108,101,115, 32,111,102, 32, 68, 79, 83, 32,119,101,194,108, + 32,101,110,111,117,103,104,195, 32,186,197, 32,186,195, 32,116,104, + 97,116, 32,121,111,117, 32, 99,111,117,108,100, 32, 99,111,109, 98, +105,110,101, 32,101, 97, 99,104, 32,111,110,101, 32,116,104, 97,116, + 32,100,111,101,115, 32,111,110,101, 32,106,111, 98, 32,119,101,194,108, + 32,105,110,116,111, 32, 97, 32, 98, 97,116, 99,104,195, 32,186,197, 32, +186,195, 32,106,111, 98, 32, 40,111,114, 32, 99,104, 97,105,110, 32, +111,102, 32, 99,111,194,109, 97,110,100, 32, 97,115, 32,105,116, 32, +119,101,114,101, 41, 32, 97,110,100, 32,116,111, 32,115, 97,118,101, + 32, 97,194,108, 32,116,104, 97,116, 32,116,101,100,105,111,117,115, +197, 32,186,197, 32,186,195, 32,116,121,112,105,110,103, 44, 32,121, +111,117, 32,108,101,116, 32,116,104,101, 32,115,104,111,114,116, 32, + 34,112,114,111,103,114, 97,109, 34, 32,116,104, 97,116, 32,121,111, +117, 32,104, 97,118,101, 32, 99,114,101, 97,116,101,100, 32,105,110, + 32,121,111,117,114,197, 32,186,197, 32,186,195, 32,119,111,114,100, + 45,112,114,111, 99,101,194,115,111,114, 32,115,105,109,112,108,121, + 32, 34,100,117,109,112, 34, 32,101, 97, 99,104, 32, 99,111,194,109, + 97,110,100, 32,111,110,101, 45, 98,121, 45,111,110,101, 32,111,110, + 32,116,104,101, 32,115,121,115,116,101,109,196, 32,186,197, 32,186, +195, 32, 97,110,100, 32,119,105,116,104, 32,110,111, 32, 34, 98,101, +194,108,115, 32, 97,110,100, 32,119,104,105,115,116,108,101,115, 34, + 32,116,104,101, 32,106,111, 98, 32,105,115, 32,100,111,110,101, 46, +213, 32,186,197, 32,186,255, 32,202, 32,186,197, 32,186,195, 32, 87, +105,116,104,111,117,116, 32, 97,194,108, 32,116,104,101, 32, 34,111, +118,101,114,104,101, 97,100, 34, 32,111,102, 32,114,117,194,110,105, +110,103, 32, 97,110, 32,105,110,116,101,114, 97, 99,116,105,118,101, + 32, 99,111,194,109, 97,110,100,202, 32,186,197, 32,186,195, 32,105, +110,116,101,114,112,114,101,116,101,114, 32, 98, 97,116, 99,104, 32, +106,111, 98,115, 32,114,117,110, 32,105,110, 32, 97, 32,102,114, 97, + 99,116,105,111,110, 32,111,102, 32,116,104,101, 32,116,105,109,101, +195, 46,119,105,116,104, 32, 97, 98,105,116, 32,111,102,195, 32,186, +197, 32,186,195, 32,102,111,114,101,116,104,111,117,103,104,116, 32, + 97,110,100, 32,107,110,111,119,108,101,100,103,101, 32,111,110, 32, +116,104,101, 32,112, 97,114,116, 32,111,102, 32,116,104,101, 32,117, +115,101,114, 46,212, 32,186,197, 32,186,255, 32,202, 32,186,197, 32, +186,195, 32, 70,111,114, 32,109, 97,110,121, 32,116, 97,115,107,115, + 32,116,104,101, 32, 98, 97,116, 99,104, 32,106,111, 98, 32,105,115, + 32,116,104,101, 32,115,104,111,114,116,101,115,116, 32,100,105,115, +116, 97,110, 99,101, 32, 98,101,116,119,194,101,110, 32,112,111,105, +110,116,115,194, 32,186,197, 32,186,195, 32, 97,110,100, 32, 97,194,108, + 32,115,101,114,105,111,117,115, 32, 68, 79, 83, 32,117,115,101,114, +115, 32,115,104,111,117,108,100, 32, 98,101, 32,102,117,194,108,121, + 32,102, 97,109,105,108,105, 97,114, 32,119,105,116,104, 32,105,116, +115, 32,117,115, 97,103,101, 46,196, 32,186,197, 32,186,255, 32,202, 32, +186,197, 32,193,200,255,205,202,205,188,255, 32,255, 32,229, 32,194, 23, +255, 6,204, 6,197, 23, 6,211, 7,230, 4,208, 7, 6,197, 23, 6, +199, 7,203, 2,247, 7, 6,197, 23, 6,200, 7,209, 2,200, 7,198, 2, +200, 7,212, 2,198, 7, 6,197, 23, 6,199, 7,211, 2,198, 7,200, 2, +198, 7,219, 2, 6,197, 23, 6,199, 7,255, 2,195, 2, 6,197, 23, + 6,198, 7,255, 2,196, 2, 6,197, 23, 6,255, 7,202, 7, 6,197, 23, +196, 6,255, 4,199, 4, 6,197, 23,196, 6,255, 4,199, 4, 6,197, 23, +196, 6,255, 4,199, 4, 6,197, 23,196, 6,255, 4,199, 4, 6,197, 23, +196, 6,255, 4,199, 4, 6,197, 23,196, 6,241, 4,213, 7, 6,197, 23, + 6,255, 7,202, 7, 6,197, 23,196, 6,252, 2,202, 7, 6,197, 23, +196, 6,255, 2,199, 2, 6,197, 23,196, 6,242, 2,212, 7, 6,197, 23, + 6,255, 7,202, 7, 6,197, 23,196, 6,255, 4,199, 4, 6,197, 23, +196, 6,255, 4,199, 4, 6,197, 23, 6,255, 7,202, 7, 6,197, 23, +255, 6,204, 6,195, 23,255, 7,255, 7,226, 7, +0}; /* terminator */ + +unsigned char BATCH004[]={ +193,201,255,205,206,205,187, 32,186,210, 32,193,201,234,205,187,207, 32, +186, 32,186,210, 32,186,234, 32,186,207, 32,186, 32,186,210, 32,186, +194, 32, 66, 97,116, 99,104,101,115, 32, 97,114,101, 32,110,111,116, + 32,116,104,101, 32, 85,110,105,118,101,114,115, 97,108, 32, 80, 97, +110, 97, 99,101, 97,195, 32,186,207, 32,186, 32,186,210, 32,186,194, 32, + 98,117,116, 32, 97,114,101, 32, 97, 32,109,111,115,116, 32,101,194,102, +105, 99,105,101,110,116, 32,119, 97,121, 32,116,111, 32, 98,101,103, +105,110,195, 32,186,207, 32,186, 32,186,210, 32,186,194, 32,109, 97, +107,105,110,103, 32, 98,101,115,116, 32,117,115,101, 32,111,102, 32, +116,104,101, 32,101,110,118,105,114,111,110,109,101,110,116, 46,197, 32, +186,207, 32,186, 32,186,210, 32,186,234, 32,186,207, 32,186, 32,186, +210, 32,186,194, 32, 87,105,116,104, 32,116,104,101, 32, 80, 67, 32, + 99, 97,109,101, 32,116,104,101, 32, 97, 98,105,108,105,116,121, 32, +111,102, 32,116,104,101,197, 32,186,207, 32,186, 32,186,210, 32,186, +194, 32, 97,194,112,108,105, 99, 97,116,105,111,110,115, 32,111,112, +101,114, 97,116,111,114, 32,116,111, 32,109, 97,110, 97,103,101, 32, +116,104,101,197, 32,186,207, 32,186, 32,186,210, 32,186,194, 32,101, +110,118,105,114,111,110,109,101,110,116, 32, 97,115, 32,119,101,194,108, + 32, 97,115, 32,116,104,101, 32, 68, 97,116, 97, 46,200, 32,186,207, 32, +186, 32,186,210, 32,186,234, 32,186,207, 32,186, 32,186,210, 32,186, +194, 32, 87,105,116,104, 32,116,104, 97,116, 32, 97, 98,105,108,105, +116,121, 32, 99,111,109,101,115, 32,116,104,101, 32,111, 98,108,105, +103, 97,116,105,111,110,194, 32,186,207, 32,186, 32,186,210, 32,186, +194, 32,116,111, 32,117,115,101, 32,116,104, 97,116, 32,112,111,119, +101,114, 32,119,105,115,101,108,121, 46,207, 32,186,207, 32,186, 32, +186,210, 32,186,234, 32,186,207, 32,186, 32,186,210, 32,186,194, 32, + 77, 97,121, 32, 84,104,101, 32, 70,111,114, 99,101, 32, 66,101, 32, + 87,105,116,104, 32, 89,111,117, 46,206, 32,186,207, 32,186, 32,186, +210, 32,186,234, 32,186,207, 32,186, 32,186,210, 32,186,212, 32, 45, + 66,105,194,108, 32, 66,117, 99,107,101,108,115,194, 32, 49, 57,194, 56, +195, 32,186,207, 32,186, 32,186,210, 32,193,200,234,205,188,207, 32, +186, 32,186,209, 32,238,220,206, 32,186, 32,186,226, 32,193,218,205,196, +191,193,218,205,196,191,205, 32,186, 32,186,209, 32,198,221,203, 32, +179,196,205,193,192,195,196,193,217,196,205,194,179,196,205,193,192, +195,196,193,217,196,205,179,205, 32,186, 32,186,226, 32,193,192,205,196, +193,217,193,192,205,196,193,217,205, 32,186, 32,193,200,255,205,206,205, +188,255, 32,255, 32,227, 32,255, 6,208, 6, 7, 6,210, 7,236,113, +207, 7, 6, 7, 6,210, 7,113,234, 7,113,207, 7, 6, 7, 6,210, 7, +113,194, 7,199, 4, 7,195, 4, 7,195, 4, 7,195, 4, 7,201, 4, + 7,199, 4,195, 7,113,207, 7, 6, 7, 6,210, 7,113,194, 7,195, 4, + 7,195, 4, 7, 4, 7,196, 4, 7,201, 4, 7,195, 4, 7,194, 4, + 7,197, 4,195, 7,113,207, 7, 6, 7, 6,210, 7,113,194, 7,198, 4, + 7,196, 4, 7,195, 4, 7,194, 4, 7,195, 4, 7,204, 4,197, 7, +113,207, 7, 6, 7, 6,210, 7,113,234, 7,113,207, 7, 6, 7, 6, +210, 7,113,194, 7,196, 2, 7,195, 2, 7,194, 2, 7,196, 2, 7, +195, 2, 7,199, 2, 7,194, 2, 7,195, 2,197, 7,113,207, 7, 6, + 7, 6,210, 7,113,194, 7,204, 2, 7,200, 2, 7,194, 2, 7,198, 2, + 7,195, 2,197, 7,113,207, 7, 6, 7, 6,210, 7,113,194, 7,203, 2, + 7,194, 2, 7,196, 2, 7,194, 2, 7,195, 2, 7,197, 2,200, 7, +113,207, 7, 6, 7, 6,210, 7,113,234, 7,113,207, 7, 6, 7, 6, +210, 7,113,194, 7,196, 3, 7,196, 3, 7,199, 3, 7,197, 3, 7, +195, 3, 7,202, 3,194, 7,113,207, 7, 6, 7, 6,210, 7,113,194, 7, +194, 3, 7,195, 3, 7,196, 3, 7,197, 3, 7,199, 3,207, 7,113, +207, 7, 6, 7, 6,210, 7,113,234, 7,113,207, 7, 6, 7, 6,210, 7, +113,194, 7,195, 6, 7,195, 6, 7,197, 6, 7,194, 6, 7,196, 6, + 7,196, 6,206, 7,113,207, 7, 6, 7, 6,210, 7,113,234, 7,113, +207, 7, 6, 7, 6,210, 7,113,212, 7,197, 2, 7,199, 2,194, 7, +196, 2,195, 7,113,207, 7, 6, 7, 6,210, 7,236,113,207, 7, 6, + 7, 6,208, 7,240,112,205, 7, 6, 7, 6,208, 7,203,112,229,117, +205, 7, 6, 7, 6,208, 7,203,112,229,117,205, 7, 6, 7, 6,208, 7, +203,112,229,117,205, 7, 6, 7,255, 6,208, 6,255, 7,255, 7,227, 7, +0}; /* terminator */ + + +struct regs{ + int AX; + int BX; + int CX; + int DX; + int SI; + int DI; + int DS; + int ES; +}inregs,outregs; + +#define SCREENSIZE 4000 +unsigned int SCREENSEG= 0xb000; + +#define TERMINATOR 1 + +void showpic(int argc, unsigned char *argv) +{ + + unsigned int byteoff=0,secondoff=1,packet; + unsigned char byte,bytecount; + int wordcount,target; + unsigned char *databuf; + unsigned int segregs[4]; + + target = argc-TERMINATOR; + databuf = malloc(SCREENSIZE); + + wordcount=0; + do{ bytecount=1; /* start with a seed count */ + byte=argv[wordcount]; + wordcount++; + /* check to see if its raw */ + if(0xC0 == (0xC0 &byte)){ /* if its not, run encoded */ + bytecount= 0x3f &byte; + byte=argv[wordcount]; + wordcount++; + } + for(packet=0;packet +#include +#include +#include + +#define SCREENSIZE 4000 + +FILE *incfile; + +/* a microsoft compatible bsaved memory image format descriptor */ +unsigned char BSV_header[7]={ + + '\xfd', /* ID Flag = file descriptor identifier bsaved file */ + + /* afew words about what BASIC does with this header */ + /* and afew words about extending BASIC's ability to */ + /* read and use BINARY files created in this manner. */ + + /* BASIC will use original segment and offset information */ + /* to reload a memory image unless "DEF SEG" has been used */ + /* and then an explicit offset is used as the second arg */ + /* of the bload command. */ + + /* subsequently, once DEF SEG is invoked */ + /* If an offset is specified without then */ + /* first calling DEF SEG, The image will then be loaded to */ + /* the segment specified in the last segment pointed to */ + /* by the last call to DEF SEG. DEF SEG without args returns */ + /* to DGROUP (the default data segment) and resets the thing.*/ + + /* we can also implement and store an array in memory by use of */ + /* VARSEG and VARPTR to obtain the window for the array's */ + /* memory location, i.e. override the defaults by windowing */ + /* to the array base using DEF SEG = VARSEG(arrayname) then to */ + /* fill the array we would use BLOAD bsaved.bsv, VARPTR(arrayname) */ + /* using VARPTR to point to the offset from the memory base segment*/ + + '\x00', '\xb8', /* base address = MSB | LSB original segment */ + '\x00', '\x00', /* offset from base = MSB | LSB original offset */ + + '\xA0', '\x0F' /* file size = MSB | LSB of bytes to be loaded + */ + /* size of descriptors in bytes (8) */ + }; + +unsigned char BSAVED_tailer[1]={ /* for reference only */ + '\x1A' + }; + + +int encline(inbuff,inlen)/* encodes a raw line and writes it out */ +unsigned char *inbuff; +int inlen; +{ + unsigned char this,last; + int srcindex,i; + register int total; + register unsigned char runcount; + total=0; + last = *(inbuff); runcount=1; + +for(srcindex=1;srcindex!=inlen;srcindex++){ + this= *(++inbuff); + if(this==last){ + runcount++; + if(runcount==63){ + if(!(i=encput(last,runcount))) + return(0); + total+=i; + runcount=0; + } + } + else{ + if(runcount){ + if(!(i=encput(last,runcount))) + return(0); + total+=i; + } + last=this; + runcount=1; + } + } + +if(runcount){ + if(!(i=encput(last,runcount))) + return(0); + return(total+i); + } + return (total); + +} + + +int linelen=0; +int encput(byt,cnt) /* the writer for the encline function */ +unsigned char byt,cnt; +{ + if(linelen>16){ + fprintf(incfile,"\n"); + linelen=0; + } + + if(cnt){ + if((cnt==1)&& (0xc0 != (0xc0 &byt))){ + fprintf(incfile,"%3d,",(int)byt); + linelen++; + return(1); + } + else{ + fprintf(incfile,"%3d,",(int)(0xc0|cnt)); + fprintf(incfile,"%3d,",(int)byt); + linelen+=2; + return(2); + } + } + return(0); +} + + + + +int BSV2INC(char *name1, char *name2, char *name3) +{ + unsigned char *scratchbuffer; + unsigned char *buf; + + unsigned char header[7]; + int i,j,k; + + int fh; + + if((fh = open(name1,O_RDONLY)) == -1)return -1; + read(fh,header,7); + + /* make sure that we have a valid BSAVED file format */ + /* we can only check the first 2-bytes since it may */ + /* have been made on the HERCULES */ + + if(header[0]!=BSV_header[0] || header[1]!=BSV_header[1]) + { + close(fh); + return -2; + } + + printf("BSAVEINC(C) Copyright by Bill Buckels\n\n"); + printf("Input File: %s\n",name1); + printf("Output File: %s\n",name2); + + scratchbuffer= malloc(SCREENSIZE); + buf=malloc(SCREENSIZE/2); + + read(fh,scratchbuffer,SCREENSIZE); + close(fh); + + /* seperate the attribute bytes */ + /* use the two-tank system. */ + + incfile=fopen(name2,"w"); + fprintf(incfile,"unsigned char %s[]={\n",name3); + + for(k=0;k!=2;k++) + { + j=0; + for(i=k;i@IP?m`9RlN(xY zK`yC2haiJA@m+wtM=8xIqAA)by~i`7kLU;V68)4up*5yN?1#`t6hreGmY8NVk&%1Q z_=UaH2$S7`F9cmcBls#(4nUPbo6rZ?--72{MuzkSx`6sQy&2(W1fP(UpLgTqC^11O zUPtInLG}%rheE-zoJbTy5N6PwAim80h!)QGbj*)1I>ESr9{iQ{`L4FG`j&LPB7W_6 zfp0~ZGqhRXiD|q7sOB4-tO`} zr6-79U-syj&ajHPo(!=+b(KhEcNp#}pZ4x2T*vP6Y0rJ^ycvC#eW!_dzmC!8+*>L0 zS?~3P>)ES(mY}&+hkGd z@2ODjt7CN_tI%DC#-6IViqzC&AF4$02s4If=<;cb17vrBS{oq_8J-I#r!J@EtInO{ zV`H?5y~^h@G_@_?t?~=k6~FaXYEhHj<$EsqJw$eAd0zWy&5`eOyt7gyT|Qmi*xNlh z2ee-%(|p!mY^}Dtd`;1++KPP4#oqSlF?}a)8I7T|Z`*3eH=wWB7ZXH^tKcy{_H>VN z8{q0_#pN>@V!l%$wHl@|qN7*V7^|k$5jQ$FekaH(lkrV1$ +#include +#include +#include + + +main(int argc, char **argv) +{ + FILE *fp; + int fh; + unsigned char *bigbuffer; + char buffer[128]; + char header[7]; + int limit = 24; + int ptr=0,rows,columns; + + + + switch(argc){ + case 4: limit=atoi(argv[3]); + if(limit<1||limit>25)limit==24; + case 3: + + if((fh = open(argv[1],O_RDONLY)) == -1)break; + read(fh,header,7); + bigbuffer= malloc(4000); + read(fh,bigbuffer,4000) ; + close(fh); + + if((fp=fopen(argv[2],"w"))!=NULL){ + for(rows=0;rows!=limit;rows++){ + for(columns=0;columns!=80;columns++){ + buffer[columns]=bigbuffer[ptr]; + ptr+=2; + } + columns=79; + buffer[columns]=0x00; + while(columns!=0){if(buffer[columns]==' '){ + buffer[columns]=0x00; + columns--; + } + else columns=0; + } + fprintf(fp,"%s\n",buffer); + } + fclose(fp); + } + free(bigbuffer); + break; + + default :printf( + "USAGE is \"BSV2TXT [infile] [outfile] [numberoflines-optional]\"\n"); + } + exit(0); +} + \ No newline at end of file diff --git a/Manx Aztec C86 v42b/SAMPLES/BSV2TXT/DOZY.BSV b/Manx Aztec C86 v42b/SAMPLES/BSV2TXT/DOZY.BSV new file mode 100644 index 0000000000000000000000000000000000000000..adfd869f06c11137525d9c8c6ed49b46151c0cff GIT binary patch literal 4008 zcmeH|%Zd|06owNBeISeKy{mFHu6zYSMu-bH&bV+Hm^d>KjYMS_pTFBwqeg)m`0Pm+mBv#DyHF+o?MB)!!#4KU(Ll){9h%b!^dD!WNzQnKL@0xc6^* zm`!FDW84;j?!eNWpx$Z7CT}Hlj5crpuHy^qum!Hw0l_LwfmSo)AJ*Y z#^NdVpJKiXZy$5S!_2oZo4>ET!aA1uu8Xos!MqP~*IjWe4#g2zcS=vPh|Ez>@WQ@+aX%fWgH)!ch|XW;0R1r{ABr3NT9{#+MzilC>hUx7yN+mn zjX4|FxOj9whFRfTi)fk=^daNeb$Rcc0pTyPNxoI%__x+Gu1rYGrV^PM*Ee0^f^V0i z&OasV)!#)WamMMY8fKAlKCW+Wg)1vn@3-DOYUGt1(artxEv0cDDbtVZTd2b2C+hvy zn@6qT%Q6Bx7wwDv;9?^_dTQ(tpb1-7Lokm!SqTjVR)u4U>37}w>;j +#include +#include +#include + +#define SCREENSIZE 4000 + +FILE *ptxfile; + +/* type conversion functions */ +unsigned char lsb(unsigned int word){ return word &0xff;} +unsigned char msb(unsigned int word){ return word >>8;} + +unsigned char ptxheader[128]; + +/* a microsoft compatible bsaved memory image format descriptor */ +unsigned char BSV_header[7]={ + + '\xfd', /* ID Flag = file descriptor identifier bsaved file */ + + /* afew words about what BASIC does with this header */ + /* and afew words about extending BASIC's ability to */ + /* read and use BINARY files created in this manner. */ + + /* BASIC will use original segment and offset information */ + /* to reload a memory image unless "DEF SEG" has been used */ + /* and then an explicit offset is used as the second arg */ + /* of the bload command. */ + + /* subsequently, once DEF SEG is invoked */ + /* If an offset is specified without then */ + /* first calling DEF SEG, The image will then be loaded to */ + /* the segment specified in the last segment pointed to */ + /* by the last call to DEF SEG. DEF SEG without args returns */ + /* to DGROUP (the default data segment) and resets the thing.*/ + + /* we can also implement and store an array in memory by use of */ + /* VARSEG and VARPTR to obtain the window for the array's */ + /* memory location, i.e. override the defaults by windowing */ + /* to the array base using DEF SEG = VARSEG(arrayname) then to */ + /* fill the array we would use BLOAD bsaved.bsv, VARPTR(arrayname) */ + /* using VARPTR to point to the offset from the memory base segment*/ + + '\x00', '\xb8', /* base address = MSB | LSB original segment */ + '\x00', '\x00', /* offset from base = MSB | LSB original offset */ + + '\xA0', '\x0F' /* file size = MSB | LSB of bytes to be loaded + */ + /* size of descriptors in bytes (8) */ + }; + +unsigned char BSAVED_tailer[1]={ /* for reference only */ + '\x1A' + }; + + +int encline(inbuff,inlen)/* encodes a raw line and writes it out */ +unsigned char *inbuff; +int inlen; +{ + unsigned char this,last; + int srcindex,i; + register int total; + register unsigned char runcount; + total=0; + last = *(inbuff); runcount=1; + +for(srcindex=1;srcindex!=inlen;srcindex++){ + this= *(++inbuff); + if(this==last){ + runcount++; + if(runcount==63){ + if(!(i=encput(last,runcount))) + return(0); + total+=i; + runcount=0; + } + } + else{ + if(runcount){ + if(!(i=encput(last,runcount))) + return(0); + total+=i; + } + last=this; + runcount=1; + } + } + +if(runcount){ + if(!(i=encput(last,runcount))) + return(0); + return(total+i); + } + return (total); + +} + +int encput(byt,cnt) /* the writer for the encline function */ +unsigned char byt,cnt; +{ + if(cnt){ + if((cnt==1)&& (0xc0 != (0xc0 &byt))){ + if(EOF == fputc((int)byt,ptxfile)) + return(0); + return(1); + } + else{ + if(EOF ==fputc((int)0xc0|cnt,ptxfile)) + return(0); + if(EOF ==fputc((int)byt,ptxfile)) + return(0); + return(2); + } + } + return(0); + +} + + +/* the zsoft technical reference manual details the */ +/* structure of the following header */ +int makeheader() +{ + /* makes a standard header for a .PTX CGA FULL-SCREEN TEXT FILE */ + /* since this info is not really intended for text mode, we fudge */ + /* some portions of the info, but we try to be faithful as possible*/ + + int i; + unsigned char notzsoft=0,version=3,codetype=1,pixbits=16; + unsigned int xmin=0, ymin=0, xmax=79, ymax=24; + unsigned int hres=80, vres=25; + unsigned char no_planes=1; + unsigned int bytesperline=160; + + for(i=0;i!=128;i++)ptxheader[i]=0;/* pad the header with nulls */ + + ptxheader[0]=notzsoft; + ptxheader[1]=version; + ptxheader[2]=codetype; + ptxheader[3]=pixbits; + ptxheader[4] =lsb(xmin); + ptxheader[5] =msb(xmin); + ptxheader[6] =lsb(ymin); + ptxheader[7] =msb(ymin); + ptxheader[8] =lsb(xmax); + ptxheader[9] =msb(xmax); + ptxheader[10]=lsb(ymax); + ptxheader[11]=msb(ymax); + ptxheader[12]=lsb(hres); + ptxheader[13]=msb(hres); + ptxheader[14]=lsb(vres); + ptxheader[15]=msb(vres); + ptxheader[65]=no_planes; + ptxheader[66]=lsb(bytesperline); + ptxheader[67]=msb(bytesperline); + return 0; + +} + +int BSV2PTX(char *name1, char *name2) +{ + unsigned char *scratchbuffer; + unsigned char *buf; + + unsigned char header[7]; + int i,j,k; + + int fh; + + if((fh = open(name1,O_RDONLY)) == -1)return -1; + read(fh,header,7); + + /* make sure that we have a valid BSAVED file format */ + /* we can only check the first 2-bytes since it may */ + /* have been made on the HERCULES */ + + if(header[0]!=BSV_header[0] || header[1]!=BSV_header[1]) + { + close(fh); + return -2; + } + + printf("BSV2PTX(C) Copyright by Bill Buckels\n\n"); + printf("Input File: %s\n",name1); + printf("Output File: %s\n",name2); + + scratchbuffer= malloc(SCREENSIZE); + buf=malloc(SCREENSIZE/2); + + read(fh,scratchbuffer,SCREENSIZE); + close(fh); + + /* seperate the attribute bytes */ + /* use the two-tank system. */ + + makeheader(); + ptxfile=fopen(name2,"w"); + for(i=0;i!=128;i++)fputc(ptxheader[i],ptxfile);/* write the header */ + + for(k=0;k!=2;k++) + { + j=0; + for(i=k;ieNT$uV-A>?6C$E2P!cCN)^95c+1Js3foKnmcvd`u|KOkiSrh zPHm$;W|=!n^S902I?r8Z-~l;BE|5#)Bk~?OL*60h$+x67?``R&x#Mb$S^r+NwpaE7 z8AM(K8M4_;?_W(k*><|qHL!xhuPHuB$3JytcDi;QdXDdk*X?>6v)4Kg6mZYY-ZGab z$KCHY-BF&qTqGySfV@FYlQ+p*(VtRaM9^aYAcjoCe*q+J*8HPWQ z5!;*UD@Y=deec%iqBqG)9Dkk^H`i%n%r;Z2-;|p1Y~A&??lhZSX@7m(5%t@cHiObD z%k;kE&L5Kx$pU$woFM1O+vH{PDtV3Ei8YTCNyPpe@Ac2RfBpg)<@t{7I^Qqurl@7N z#&7ciNA{4tZkA-RI$efbHrRK-% zG?t;bqE@MWlXQLA4q|0gQI)ux6);g-V2C*ybE}wPBiorF;@J#@7;kGms2>(<_w#-N z3;nWhP{zLYizu}}?QgkVt067e#;L!KbEn>I}% zg*GWaiDW3^fCNIEK;>Y@PErEurF+<&*`05`Z@$&8=|sb|rCrxb+KnW<+R|TLt^U92 z1IYVQ!2@r%#uaSY{1EQ)rm!1OVD%=*r%-8fho@Bz1q-<3s?d?Qs+Ukk)pelT83f(z$;0{!nZ$X}^9Voks+1p$t z=!YJ{tu{Pnws4vtY*&Jd(yLf4_Z&pepo4o9Btz%9(_%tpzu*OQhN-&Yyc=Dnuc>_A zgEF^x-Gw?1h9?r?m{BSzNJVe8gtv=*Z3xgH6s@2rmFwXYY@Dl`Dvmq^h4CTURAy zHS$f&^=xV;Pbn~@2j*x|x`2+zw-u~U$)~lrNBbtS9Il{aI!5Sw%6LM-El6Q;je03RXv392Y0cc&3%m4rY literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/FAREWELL.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/FAREWELL.PTX new file mode 100644 index 0000000000000000000000000000000000000000..14624cb001deb70075f55f9aef44d8bc3bbd0cbf GIT binary patch literal 1144 zcmb7BK~BRk5Ol={xET(P`~tp0zkm>eUZ~U*^*j6_4`^dMiNgiu*ye`BjX#)K$8nlA zAT^2CJG(pUS%+QCt{I+tcEjfEmfXvp+52VnC)G|i(wgmPDYMlQ#s{%m0;RNVHd?C9 zP!@vNQPyT9OnxX#z9-b>kDT+=5E=M8oM)!_XQ@0!0>5Z86Loq3MH(F;Lk4`TRYB|c zFh4@xjgTK=9(-y+^Tk-yoK+*eJ;-+j?ooqA3sjG3FA)zIU8mS|-*i~MSJckWRCha_ z4+<>(D7x$3X#BK*L(1ctg5){V7$=?lk@JVudhz-!7pY9&9$#d-QBP}`F4bze(RWny z*ZVCUZ+I<+PYcbp$68o;CAWzfEtQ}I#s{%m0wqi($m?=P&N$qm$T7l9l1}0Q23nDT z)ywigB}U*#9>AdKqz@^?bX4xo1&3%6M_r;C$?5^r>qH6dIervN?25WfF-W8WK~V!Q gx%Rt3b+~EBArJpxxcU#loj3@`|9d~VV~%~XUrU4%X#fBK literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/FRANK.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/FRANK.PTX new file mode 100644 index 0000000000000000000000000000000000000000..c1161fea8265a8bf26b0c701e7ce6429703deb45 GIT binary patch literal 1251 zcmb7B&1xH06jrD>o4c4U+ugyNrqHU7P+H?AfsmHQ&`rT(S5{>Lnh-gqd7HdK7z$Z6 z+~4`rM2@gkr&q3^p?QJ?vQxe@PBz^|gP1$#`#Ik^xA)PNk9+ui-}|KZL+?{Le%SBI z!w=*CkG4UZ1o6 zTe~8fj!=W-P&a#RH10X)fprv9!`f+pHgX{x7=>t|dGdn2)6dy-aErQN5Fv|$hvodG zFdzbWffN7>SF%1^wvTHrJE#F9X-o$@S98w0<3s-T#x>r#xwF0dV{ar8(!I;ekan;X{7`B33l;^3rSD7Gi$;@ZN7n zlV5S3v1#E44SM0fb_|v@9OySLR;_m8yfeK2%l`3EHsSrr5S6OSCrd#ZXv@oXlFPb^ z^MbEu=HS86^mrP&#Y9|I*8`IT+&{vgoo&4X{%(Ld?hh#$w}e}ixfj^=)=%T?vnk)q zc=zzm*IS^sTq7~=1ov_(y|!*;$9#YK1s`N)y2W_|LLn`%t)=jt*_4GN8Jgiq4glx=#x#l59a< z1zLh+Q%45HI`M!_I;X$D3@WYYBq;zF^a7TPV4`jq?J6GI9No zSbB=@xiU0L4W;r}a(xRMLt{fTprxvijK(xVDG=JHV@g{}f@%`45~FO=(5MgtPok4o zph7`fBzVmb-HgVVXNC@AM22pWR4^7dgh2qn249teqJlS4(nzXsEc!#3H<X>1 zfJkQ8w?i6@X`!BptQA*eqR=;VDsCs(ag8{kzZAIcc2RbpGF^k7q5m51M!Eh*ZIo4; J-lq3&?=AE=U3LHf literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/GEORGE.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/GEORGE.PTX new file mode 100644 index 0000000000000000000000000000000000000000..21437a6ded6c878970f1439ce17489d8cd13ade1 GIT binary patch literal 959 zcmb7BO=}ZD7~WQd64)7!dV6lR#Xv|xtsugLY~01T6LvRU^6&f)`vbB&U5ST$6wxFN zR%(hDZ=MCmcV`<+JQO=~nCE%k?{};RdygzS(t2$5tS1G$-`RV2KmUKcHI~R$Iv>uE zObFfN!wC{Y5_~%@#0@*nR#*9OS4!YIqTP}rXv6a(C-6n&NndoKS|O5M=PbR-v&$WA zyF!-Ukh!dMfu0B=$PQvp`CiX?t#Bww_uG)FbA*lzMkcTfpCfV| ziU}h`vBba;LAcnm=Lq^fD1nN-Gla4e#UgMhdE}Z%*Xj0(YQl%tdJ7TZ@U&JxJvquv zk}0k0+ANONMR=Sis%TiKu8c8|eT7J(ACl7bMEEpRw9R~IVv&rIrPt-Wx5~K*rUqn> zhOIZ@1|iMd7K3MaUOWYhmGcG-RjbyUs)m;6x6i3~@kL1HrimeqSPEJCDSw5eUTaqC zCoihaMzfLNVWUxeHGtwURSmV zSCucka)Rzl?O(j;e#+LIo*7g21^>E#QHaXsW0EIK imF)MeIA>G7*oaF$uB=RoCCQgXiefb%n6|XFw*CMMT|Z#} literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/HAL.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/HAL.PTX new file mode 100644 index 0000000000000000000000000000000000000000..a672f36a17facaf30ee2f5b2ccee06950d9ad82b GIT binary patch literal 918 zcmb7BF>c#16jjh6V>>q6J3!GZG~F^3NQPd3R+(6UBnlE0K)2~Nns%`*i;`o-9a#S-dWX&6k_(^QM_bBvd%RJ=klzwrl25li!#NBy zW|-smvrI$dW|x_*-5q}LFuqPDQjtiUeEx!5X1Oe6stbq|BFt4`+#oP;)YTCFnl62Y&?I=Tzf9*PeDGhaj(3OZ)IwlEE(JE z&bpz&g3&xG%9YwMW`6bM&RX|+zbq{7Vf9~av4VN=Z1t^vYY)3a^JsCfJzgDC=!LV@ Lf3yv3a2NaoMQEzf literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/HAROLD.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/HAROLD.PTX new file mode 100644 index 0000000000000000000000000000000000000000..f4ffa62574f3a6362bfdbaef63f7064c6cb0f7ca GIT binary patch literal 1318 zcmb7CU279T6y3#T2l6obsBhP&`qaN5NQLG>l(s(j7)aU_(yYWvslUdbAPm($HJ#bn zk9;+4OxhR%k-mt6eow+?Mh zvn83Q{M-gDt*@0gDPN_Pa*1B7t74@@!Ky$D_?M%RuA31;5(QcawyKq&P^8sbumSX8 zd+r@-SM|JpEZ`X%;AXK<3o1q0Di=1XP%F_kj1+_Q>e^FyHML0Yx3yFQEx%#@?3DJ0 zU?iCADB93ST|Xu{HG)Y7v-2>ydf#ru7;>PFc0rlYG%~Y*Thj;=@7D+Bd}OSKJ5ZSb z)&yt{NMzZ*>h2+H0RKxyJ;}%>i9RhpUs~>w z$ZiWIVJ0Qf!yP8N-lf@Hh=>;R%TZ=Fwm!2lgglnLFJ!+0w>+DvL*@ic2^=%(&E`T! znaGpRWWPo~o6qWTG3Fo1g30cfT?-zsKYw(bz+-tB?&RW1jys-fdEXFMI%sN4F*5>+t6Y9|W ziCW*8^4dUs)Q56{WsKMc{K}Dwd~J5HCQq5KJd|cVXs+lMPndteZ{s2sx-A~M{u%cV z(c6VZ3%WdVHCJvj!>|vbawCI#yy17bZ*ZJTc}}?@Xw$CAee_CA!w&D}pw8W(bq*u` WFNGea61sFCzS?jbJ9Vbcsq+`sVRYXB literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/KEYBORED.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/KEYBORED.PTX new file mode 100644 index 0000000000000000000000000000000000000000..8550f6df00c19fdbbd52052693b8ebec0ac47239 GIT binary patch literal 1531 zcmbVK+j7%Z6gATyP@WFFFsp@fE#ZFcHFj*`CbomE6autJP84vX>S$!S9#0G3(tpSg z)ayv82MP?sFbu=Byz#~tAdZ|1N-smGbfnojd#$zC-bcBQwir2m)pA>N)46SF_+i(U z-#!fgH}pMxOngJ^Aa)X;5{Oc37^ zle#u>hWLcIp)k^aq}D9oMd>(7Ct?)Bz=?h`9U^pAnrH?^d3s5^^kQq=7ukaLyJ)M+6v>2n}QQ8qwd)AniDt+9lE_pAL5<~*+sQx!jw24 zv_dE4gh6L6Y)P-ZH^E;puQ_PCEpM^qUB#l)YeRYn^=2r21ez`vhMzjsly)!=t^Wko znM%G`$7FG~F^XB)fgi}G-E@1}pFYU>9wt4ftHtdQ`A&$2e1?kc^)S;Y)*Hz0Fbfl~ zn^LFJTCQWaL%1!5t}c8nwGyV(uJahaYJI`H4W29}5|v25Mk!0f;F#b%zB3TqmPxV2G9E5Fx+@{KG^*%>F<#D57XKW$(= ztE@Nr`{BE8mNUt9)IWpRGU%_Zh3q&sEs!;lh&%cOR$HN<5pBYT#%ydQGm8Jk&$vi` z2jdS*Jn_ZAG9te#x=O!RJt~Wa__u5#())pUzI`Q1#9a}u#uVEhh$NTfUgq8cr`kg5 literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/MSW.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/MSW.PTX new file mode 100644 index 0000000000000000000000000000000000000000..25b321a09235d8211c2c887270bfa28a6ff511f0 GIT binary patch literal 2037 zcmcIj%}(1u5O&nukfI_k?QM?jfhrEyjBLt1A;W zsB-RyBO4^dyUc9n4dDNS&go6>+wS4P=RFF0Uk?wy^mg`XW9QS0Gp~~iTHV&0Yu%0a zw7T`W^OnMoVR!A_&kXpJ)i_}_f^S&K+Xg%!GQk&L0 z`#-#lN+z0YZQd-jR&JDDNf%5_&;7%LOzC>VMr@9wtlr=~%IggSqa!DtRVl96WYOuv zfEH+>=*S=j8#C$GvNv89*J1?CK%jk;RIykHPH~+9cs~V5b_f!yI)N$Igr-#eMcb&4 z5d1A@;X9QPba~qcUSyZi9JE0l%g6(~i1w*yjyP6|dLxG#jr@xmOayQ!{3!_-RJo|M zk8;}{7975Uz>#AquFPF>@F}6fl-Ly9_21qbK&V5GFDjWtVWylRuZR#WVk9q(DJI_~ z#LfO#Vt$pXh%i!r2F?%@i;A%JNqoVCzNshaP|WmX5>3pk!sHCuVrGbyK7dRs{fX@W z@V@0FrGuQb)cO0%wcO&3%pF75$#f^SLtq9X^G9k^U_ z(iJhNbEVisg6RsHvy$X(&GAHn;^L!_2@&ur$B=OO6SzX^;_CSmD+DbYLh^EzWjlD! zL`QHEe+4|A4G|Sp6lwn}5Z~ zJQYJT6CJUKc3-s7?utIzuIQodiEe4xQ|(pJbH<)lhGtmFw)@*HGZdH21M|;~%se)~ O37j$$lN*_FZ2Sl2RKIrs literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/SOUP.PTX b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/PICTURES/SOUP.PTX new file mode 100644 index 0000000000000000000000000000000000000000..f1a38baaf49273b95893722dcbb4a98fd45fddd4 GIT binary patch literal 668 zcmbtP%SyvQ6rJJ^xQmtw*Hvj3g1QqC+FGIDqcrUYOs2PHXp#vt6QO_Ow*)Psbkjwb z6_l(p+$FRA(pb%}I1pi09H2GLu}W-rHZTxl59$3EEH<4gq5 zaCxZ4Yo?RRmE^|K;F3jLtI3*rTCtg=zT+9kC09d?HL5H-OUZDPl@iE$3N2k$pt#RH zDnSciZY&fJ?!oz8hH4mzNWy?V2+1{qM5SpYX`qiLaDI3JZ4aqJ2tCR$^9tEV3C;*Y ziE%nly9hz#JBA+OXbw!oW=<%A{wmERry0x@oZ(sizx-8f$SR7^ePP60eEIT3n*|#|Vnf{yF4j0A_7$rb@2^7W+YuFmV7@M|Xr~w{< zy{V(AqBAafOidnbm&1{WH)TYCiJgtM&y5|S>RohQl>(SW*V~9xmY9`{1;C{|29P;0 z{#gcUI|RU|VjeNVb(5WRjL&7hl9}jY(L-&xGNdThbb*V*H>IL5`eZcuu!!xrKQ1!; zr){KgK@H2&bZw7*QN72((IBHQ0W^XL+BGHJ!GykDLAt_#lm^ljq$@}h_okpb7|hxw zv`Y+VX`o#~yM#7zXz4~-fX6s&Q@e?7KzV|^v}y1PxgUB7-gq%va+FU;e3kfg)OX;Y z$Ih3*Icxksn!ovIM#JBm(HG+MM)alVLiAN4sQf@1YJwbR?4}dN?(hX UQt!m;7x~q8N4b$P8?(pk1E~Q9+W-In literal 0 HcmV?d00001 diff --git a/Manx Aztec C86 v42b/SAMPLES/TEXTVU/TEXTVU.C b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/TEXTVU.C new file mode 100644 index 0000000..ab5d59e --- /dev/null +++ b/Manx Aztec C86 v42b/SAMPLES/TEXTVU/TEXTVU.C @@ -0,0 +1,136 @@ +/* loader and demo for .ANS, .TXT, .PTX, or .BSV files in aztec C */ +/* TEXTVU.c by bill buckels 1990 */ + +/* these files can be created in the THEDRAW or in GWBASIC, etc. */ +/* this program turns off the cursor, loads the file, waits for a */ +/* key press then turns the cursor on and returns the key value as */ +/* an exit code. can be used as a slide show driver or batch menu. */ + +#include +#include +#include +#include + +#define SCREENSIZE 4000 +unsigned int SCREENSEG= 0xb000; + +/* this macro converts a base and offset to a far pointer */ +#define MK_FP(seg,off) ((char far *)(((long)(seg) << 16) | (off))) + +struct regs{ + int AX; + int BX; + int CX; + int DX; + int SI; + int DI; + int DS; + int ES; +}inregs,outregs; + +main(int argc, char **argv) +{ + int fh,i; + static char far *crt; + + unsigned int byteoff=0,secondoff=1,packet; + unsigned char byte,bytecount; + int wordcount,target; + unsigned char *databuf; + char combuffer[128]; + unsigned int status = 0; + + + sysint(0x11,&inregs,&outregs); /* get equipment list from the bios */ + /* get display type (bits 4 and 5 of ax) */ + if ((outregs.AX & 0x30) < 0x30)SCREENSEG=0xb800; + + +switch(argc) +{ + case 2: + + crt = MK_FP(SCREENSEG,0x0000); + databuf=malloc(SCREENSIZE); + + /* clearscreen and turn cursor off */ + system("cls"); + inregs.AX = 0x0100; + inregs.CX = 0x2000; + sysint(0x10,&inregs,&outregs); + + fh = open(argv[1],O_RDONLY); + read(fh,databuf,7); + + /********************* beginning of run raw ******************/ + if(databuf[0]== '\xfd' && databuf[1]== 0) + { + read(fh,databuf,SCREENSIZE); + close(fh); + i=SCREENSIZE+1; + while(i-->0)*crt++=*databuf++; + status++ ; + } + + /******************** beginning of run length encoded *************/ + + if(databuf[0]==0 && databuf[1]==3 && databuf[2]==1 && databuf[3]==16) + { + status++; + read(fh,databuf,121);/* blow the rest of the header */ + target = read(fh,databuf,SCREENSIZE); + close(fh); + + wordcount=0; + do{ bytecount=1; /* start with a seed count */ + byte=databuf[wordcount]; + wordcount++; + /* check to see if its raw */ + if(0xC0 == (0xC0 &byte)){ /* if its not, run encoded */ + bytecount= 0x3f &byte; + byte=databuf[wordcount]; + wordcount++; + } + for(packet=0;packet + +#ifndef MWC +#include +#include +#endif + +#define DIGITS_TO_FIND 200 /*9009*/ + +int main() { + + int N = DIGITS_TO_FIND; + int x = 0; + int a[ DIGITS_TO_FIND ]; + int n; + + for (n = N - 1; n > 0; --n) { + a[n] = 1; + } + + a[1] = 2, a[0] = 0; + while (N > 9) { + n = N--; + while (--n) { + a[n] = x % n; + + x = 10 * a[n-1] + x/n; + } + printf("%d", x); + } + + printf( "\ndone\n" ); + + return 0; +} diff --git a/Manx Aztec C86 v42b/code/SIEVE.C b/Manx Aztec C86 v42b/code/SIEVE.C new file mode 100644 index 0000000..236f1d4 --- /dev/null +++ b/Manx Aztec C86 v42b/code/SIEVE.C @@ -0,0 +1,35 @@ +/* sieve.c */ + +/* Eratosthenes Sieve Prime Number Program in C from Byte Jan 1983 + to compare the speed. */ + +#include + +#define TRUE 1 +#define FALSE 0 +#define SIZE 8190 +typedef int bool; + +char flags[SIZE+1]; + +int main() + { + int i,k; + int prime,count,iter; + + for (iter = 1; iter <= 10; iter++) { /* do program 10 times */ + count = 0; /* initialize prime counter */ + for (i = 0; i <= SIZE; i++) /* set all flags TRUE */ + flags[i] = TRUE; + for (i = 0; i <= SIZE; i++) { + if (flags[i]) { /* found a prime */ + prime = i + i + 3; /* twice index + 3 */ + for (k = i + prime; k <= SIZE; k += prime) + flags[k] = FALSE; /* kill all multiples */ + count++; /* primes found */ + } + } + } + printf("%d primes.\n",count); /*primes found in 10th pass */ + return 0; + } diff --git a/Manx Aztec C86 v42b/code/TM.C b/Manx Aztec C86 v42b/code/TM.C new file mode 100644 index 0000000..003a95c --- /dev/null +++ b/Manx Aztec C86 v42b/code/TM.C @@ -0,0 +1,165 @@ +#include + +#ifdef AZTEC86 +#include +#endif + +#ifdef HISOFTC +#include +#endif + +#ifdef WATCOM +#include +#include +#endif + + +#ifdef powerc +#define allocs 50 +#else +#ifdef HISOFTC +#define allocs 66 /* not enough RAM with hisoft to go higher */ +#else +/* most c runtimes work up to 69, but use 66 to have a consistent benchmark */ +#define allocs 66 +#endif +#endif + +int logging = 1; + +char * memset_x( p, v, c ) char * p; int v; int c; +{ + unsigned char * pc = (unsigned char *) p; + unsigned char val = (unsigned char) ( v & 0xff ); + int i; + + if ( 0 == p ) + { + printf( "request to memset a null pointer\n" ); + exit( 1 ); + } + + if ( logging ) +#ifdef CPMTIME + printf( " memset p %u, v %d, val %x, c %d\n", p, v, val, c ); +#else + +#ifdef HISOFTC + printf( " memset p %u, v %d, val %x, c %d\n", p, v, val, c ); +#else + printf( " memset p %p, v %d, val %x, c %d\n", p, v, val, c ); +#endif +#endif + + for ( i = 0; i < c; i++ ) + *pc++ = val; + return p; +} + +void chkmem( p, v, c ) char * p; int v; int c; +{ + unsigned char * pc = (unsigned char *) p; + unsigned char val = (unsigned char) ( v & 0xff ); + int i; + + if ( 0 == p ) + { + printf( "request to chkmem a null pointer\n" ); + exit( 1 ); + } + + for ( i = 0; i < c; i++ ) + { + if ( *pc != val ) + { +#ifdef CPMTIME + printf( "memory isn't as expected! p %u, v %d, c %d, *pc %d\n",p, v, c, *pc ); +#else + printf( "memory isn't as expected! p %p, v %d, c %d, *pc %d\n",p, v, c, *pc ); +#endif + exit( 1 ); + } + pc++; + } +} + +int main( argc, argv ) int argc; char * argv[]; +{ + int i, cb, c_cb, j; + char * pc; + char * ap[ allocs ]; + + logging = ( argc > 1 ); + pc = argv[ 0 ]; /* evade compiler warning */ + + for ( j = 0; j < 10; j++ ) + { + if ( logging ) + printf( "in alloc mode\n" ); + + for ( i = 0; i < allocs; i++ ) + { + cb = 8 + ( i * 10 ); + c_cb = cb + 5; + if ( logging ) + printf( " i, cb: %d %d\n", i, cb ); + + pc = (char *) calloc( c_cb, 1 ); + chkmem( pc, 0, c_cb ); + memset_x( pc, 0xcc, c_cb ); + + ap[ i ] = (char *) malloc( cb ); + memset_x( ap[ i ], 0xaa, cb ); + + chkmem( pc, 0xcc, c_cb ); + free( pc ); + } + + if ( logging ) + printf( "in free mode, even first\n" ); + + for ( i = 0; i < allocs; i += 2 ) + { + cb = 8 + ( i * 10 ); + c_cb = cb + 3; + if ( logging ) + printf( " i, cb: %d %d\n", i, cb ); + + pc = (char *) calloc( c_cb, 1 ); + chkmem( pc, 0, c_cb ); + memset_x( pc, 0xcc, c_cb ); + + chkmem( ap[ i ], 0xaa, cb ); + memset_x( ap[ i ], 0xff, cb ); + free( ap[ i ] ); + + chkmem( pc, 0xcc, c_cb ); + free( pc ); + } + + if ( logging ) + printf( "in free mode, now odd\n" ); + + for ( i = 1; i < allocs; i += 2 ) + { + cb = 8 + ( i * 10 ); + c_cb = cb + 7; + if ( logging ) + printf( " i, cb: %d %d\n", i, cb ); + + pc = (char *) calloc( c_cb, 1 ); + chkmem( pc, 0, c_cb ); + memset_x( pc, 0xcc, c_cb ); + + chkmem( ap[ i ], 0xaa, cb ); + memset_x( ap[ i ], 0xff, cb ); + free( ap[ i ] ); + + chkmem( pc, 0xcc, c_cb ); + free( pc ); + } + } + + printf( "success\n" ); + return 0; +} diff --git a/Manx Aztec C86 v42b/code/TTT.C b/Manx Aztec C86 v42b/code/TTT.C new file mode 100644 index 0000000..fec9a6b --- /dev/null +++ b/Manx Aztec C86 v42b/code/TTT.C @@ -0,0 +1,537 @@ +/* + This version builds with old compilers including: + Aztec C 1.06 for 8080 & Z80 on CP/M. + Microsoft C Compiler V1.04 for 8086 on DOS. (This is Lattice C) + Microsoft C Compiler V2.03 for 8086 on DOS. (Still Lattice C) + Microsoft C Compiler V3.00 for 8086 on DOS. + QuickC 1.0 + Turbo C 2.0 + The syntax is old and reminds me of 7th grade summer vacation. + Much of this code is awkward to satisfy the lowest common denominator of many compilers. + unsigned long isn't supported in many older compilers, so long is used instead. + Early DOS and CP/M require register variabes to be int, not char or other types. + The perf improvement of using register-int instead of stack-char is worth it. +*/ + +#define LINT_ARGS + +#include +#include + +#ifdef DOSTIME +#include +#include +#endif + +#define true 1 +#define false 0 + +/* Function Pointers are the fastest implementation for almost every compiler */ +#define UseFunPointers 1 +#define UseWinner2 2 +#define UseLookForWinner 3 +#define WinMethod UseFunPointers + +#define ABPrune true /* alpha beta pruning */ +#define WinLosePrune true /* stop early on win/lose */ +#define ScoreWin 6 +#define ScoreTie 5 +#define ScoreLose 4 +#define ScoreMax 9 +#define ScoreMin 2 +#define DefaultIterations 100 + +#define PieceX 1 +#define PieceO 2 +#define PieceBlank 0 + +typedef char ttype; /* 8-bit and 16-bit cpus do best with char aside from register in locals */ + +int g_Iterations = DefaultIterations; +ttype g_board[ 9 ]; + +#if WinMethod == UseFunPointers + +ttype pos0func() +{ + /* using "register int" instead of "ttype" for x is faster on 8086 and Z80 */ + register int x = g_board[0]; + + if ( ( x == g_board[1] && x == g_board[2] ) || + ( x == g_board[3] && x == g_board[6] ) || + ( x == g_board[4] && x == g_board[8] ) ) + return x; + return PieceBlank; +} + +ttype pos1func() +{ + register int x = g_board[1]; + + if ( ( x == g_board[0] && x == g_board[2] ) || + ( x == g_board[4] && x == g_board[7] ) ) + return x; + return PieceBlank; +} + +ttype pos2func() +{ + register int x = g_board[2]; + + if ( ( x == g_board[0] && x == g_board[1] ) || + ( x == g_board[5] && x == g_board[8] ) || + ( x == g_board[4] && x == g_board[6] ) ) + return x; + return PieceBlank; +} + +ttype pos3func() +{ + register int x = g_board[3]; + + if ( ( x == g_board[4] && x == g_board[5] ) || + ( x == g_board[0] && x == g_board[6] ) ) + return x; + return PieceBlank; +} + +ttype pos4func() +{ + register int x = g_board[4]; + + if ( ( x == g_board[0] && x == g_board[8] ) || + ( x == g_board[2] && x == g_board[6] ) || + ( x == g_board[1] && x == g_board[7] ) || + ( x == g_board[3] && x == g_board[5] ) ) + return x; + return PieceBlank; +} + +ttype pos5func() +{ + register int x = g_board[5]; + + if ( ( x == g_board[3] && x == g_board[4] ) || + ( x == g_board[2] && x == g_board[8] ) ) + return x; + return PieceBlank; +} + +ttype pos6func() +{ + register int x = g_board[6]; + + if ( ( x == g_board[7] && x == g_board[8] ) || + ( x == g_board[0] && x == g_board[3] ) || + ( x == g_board[4] && x == g_board[2] ) ) + return x; + return PieceBlank; +} + +ttype pos7func() +{ + register int x = g_board[7]; + + if ( ( x == g_board[6] && x == g_board[8] ) || + ( x == g_board[1] && x == g_board[4] ) ) + return x; + return PieceBlank; +} + +ttype pos8func() +{ + register int x = g_board[8]; + + if ( ( x == g_board[6] && x == g_board[7] ) || + ( x == g_board[2] && x == g_board[5] ) || + ( x == g_board[0] && x == g_board[4] ) ) + return x; + return PieceBlank; +} + +typedef ttype pfunc_t(); + +pfunc_t * winner_functions[9] = +{ + pos0func, + pos1func, + pos2func, + pos3func, + pos4func, + pos5func, + pos6func, + pos7func, + pos8func, +}; + +#endif + +#if WinMethod == UseWinner2 + +ttype winner2( move ) ttype move; +{ + register int x; /* faster than ttype x on the stack */ + + switch( move ) /* msc v3 from 1985 generates a jump table! */ + { + case 0: + { + x = g_board[ 0 ]; + if ( ( ( x == g_board[1] ) && ( x == g_board[2] ) ) || + ( ( x == g_board[3] ) && ( x == g_board[6] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[8] ) ) ) + return x; + break; + } + case 1: + { + x = g_board[ 1 ]; + if ( ( ( x == g_board[0] ) && ( x == g_board[2] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[7] ) ) ) + return x; + break; + } + case 2: + { + x = g_board[ 2 ]; + if ( ( ( x == g_board[0] ) && ( x == g_board[1] ) ) || + ( ( x == g_board[5] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[6] ) ) ) + return x; + break; + } + case 3: + { + x = g_board[ 3 ]; + if ( ( ( x == g_board[4] ) && ( x == g_board[5] ) ) || + ( ( x == g_board[0] ) && ( x == g_board[6] ) ) ) + return x; + break; + } + case 4: + { + x = g_board[ 4 ]; + if ( ( ( x == g_board[0] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[2] ) && ( x == g_board[6] ) ) || + ( ( x == g_board[1] ) && ( x == g_board[7] ) ) || + ( ( x == g_board[3] ) && ( x == g_board[5] ) ) ) + return x; + break; + } + case 5: + { + x = g_board[ 5 ]; + if ( ( ( x == g_board[3] ) && ( x == g_board[4] ) ) || + ( ( x == g_board[2] ) && ( x == g_board[8] ) ) ) + return x; + break; + } + case 6: + { + x = g_board[ 6 ]; + if ( ( ( x == g_board[7] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[0] ) && ( x == g_board[3] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[2] ) ) ) + return x; + break; + } + case 7: + { + x = g_board[ 7 ]; + if ( ( ( x == g_board[6] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[1] ) && ( x == g_board[4] ) ) ) + return x; + break; + } + case 8: + { + x = g_board[ 8 ]; + if ( ( ( x == g_board[6] ) && ( x == g_board[7] ) ) || + ( ( x == g_board[2] ) && ( x == g_board[5] ) ) || + ( ( x == g_board[0] ) && ( x == g_board[4] ) ) ) + return x; + break; + } + } + + return PieceBlank; +} /*winner2*/ + +#endif + +#if WinMethod == UseLookForWinner + +ttype LookForWinner() +{ + register int p = g_board[0]; /* faster as register int than ttype on 8086 and Z80 */ + if ( PieceBlank != p ) + { + if ( p == g_board[1] && p == g_board[2] ) + return p; + + if ( p == g_board[3] && p == g_board[6] ) + return p; + } + + p = g_board[3]; + if ( PieceBlank != p && p == g_board[4] && p == g_board[5] ) + return p; + + p = g_board[6]; + if ( PieceBlank != p && p == g_board[7] && p == g_board[8] ) + return p; + + p = g_board[1]; + if ( PieceBlank != p && p == g_board[4] && p == g_board[7] ) + return p; + + p = g_board[2]; + if ( PieceBlank != p && p == g_board[5] && p == g_board[8] ) + return p; + + p = g_board[4]; + if ( PieceBlank != p ) + { + if ( ( p == g_board[0] ) && ( p == g_board[8] ) ) + return p; + + if ( ( p == g_board[2] ) && ( p == g_board[6] ) ) + return p; + } + + return PieceBlank; +} /*LookForWinner*/ + +#endif + +int g_IMoves = 0; + +ttype MinMax( alpha, beta, depth, move ) ttype alpha; ttype beta; ttype depth; ttype move; +{ + ttype pieceMove, score; /* better perf with char than int. out of registers so use stack */ + register int p, value; /* better perf with these as an int on Z80, 8080, and 8086 */ + + g_IMoves++; + + if ( depth >= 4 ) + { +#if WinMethod == UseFunPointers + p = ( * winner_functions[ move ] )(); +#endif +#if WinMethod == UseWinner2 + p = winner2( move ); +#endif +#if WinMethod == UseLookForWinner + p = LookForWinner(); +#endif + + if ( PieceBlank != p ) + { + if ( PieceX == p ) + return ScoreWin; + + return ScoreLose; + } + + if ( 8 == depth ) + return ScoreTie; + } + + if ( depth & 1 ) + { + value = ScoreMin; + pieceMove = PieceX; + } + else + { + value = ScoreMax; + pieceMove = PieceO; + } + + for ( p = 0; p < 9; p++ ) + { + if ( PieceBlank == g_board[ p ] ) + { + g_board[p] = pieceMove; + score = MinMax( alpha, beta, depth + 1, p ); + g_board[p] = PieceBlank; + + if ( depth & 1 ) + { +#if WinLosePrune /* #if statements must be in first column for MS C 1.0 */ + if ( ScoreWin == score ) + return ScoreWin; +#endif + + if ( score > value ) + { + value = score; + +#if ABPrune + if ( value >= beta ) + return value; + if ( value > alpha ) + alpha = value; +#endif + } + } + else + { +#if WinLosePrune + if ( ScoreLose == score ) + return ScoreLose; +#endif + + if ( score < value ) + { + value = score; + +#if ABPrune + if ( value <= alpha ) + return value; + if ( value < beta ) + beta = value; +#endif + } + } + } + } + + return value; +} /*MinMax*/ + +long g_Moves = 0; + +int FindSolution( position ) ttype position; +{ + register int i; + + for ( i = 0; i < 9; i++ ) + g_board[ i ] = PieceBlank; + + g_board[ position ] = PieceX; + + for ( i = 0; i < g_Iterations; i++ ) + { + g_IMoves = 0; + MinMax( ScoreMin, ScoreMax, 0, position ); + g_Moves += g_IMoves; /* do the 4-byte long addition once per loop to save work */ + } + + return 0; +} /*FindSolution*/ + +#ifdef CPMTIME + +struct CPMTimeValue +{ + int h, m, s, l; +}; + +void print_time_now() +{ + /* This CP/M BDOS call of 105 is only implemented in NTVCM -- it's not a standard CP/M 2.2 call */ + + struct CPMTimeValue t; + t.h = t.m = t.s = t.l = 0; + + bdos( 105, &t ); + printf( "current time: %02d:%02d:%02d.%02d\n", t.h, t.m, t.s, t.l ); +} /*print_time_now*/ + +long get_ms() +{ + /* This CP/M BDOS call of 105 is only implemented in NTVCM -- it's not a standard CP/M 2.2 call */ + + long h, m, s, l; + struct CPMTimeValue t; + t.h = t.m = t.s = t.l = 0; + + bdos( 105, &t ); + h = t.h; + m = t.m; + s = t.s; + l = t.l; + + return h * 3600000 + m * 60000 + s * 1000 + l * 10; +} /*get_ms*/ + +#else /* no elif with old compilers */ + +#ifdef DOSTIME + +void print_time_now() +{ + /* Make a DOS interrupt call to get the time */ + + union REGS wrIn, wrOut; + + wrIn.h.ah = 0x2c; + intdos( &wrIn, &wrOut ); + printf( "current time: %02d:%02d:%02d.%02d\n", wrOut.h.ch, wrOut.h.cl, wrOut.h.dh, wrOut.h.dl ); + fflush( stdout ); +} /*print_time_now*/ + +long get_ms() +{ + /* this function takes about 3 milliseconds on the original IBM PC */ + + long h, m, s, l; + union REGS wrIn, wrOut; + + wrIn.h.ah = 0x2c; + intdos( &wrIn, &wrOut ); + + h = wrOut.h.ch; + m = wrOut.h.cl; + s = wrOut.h.dh; + l = wrOut.h.dl; + + return h * 3600000 + m * 60000 + s * 1000 + l * 10; +} /*get_ms*/ + +#else + +int print_time_now() { return 0; } + +long get_ms() +{ + struct tm t; + long hs = 0; + + dostime( &t ); + + hs = t.tm_hsec + (long) t.tm_sec * 100 + (long) t.tm_min * 60 * 100 + (long) t.tm_hour * 24 * 60 * 100; + + return hs * 10; +} + +#endif +#endif + +int main( argc, argv ) int argc; char * argv[]; +{ + long start_time, end_time; + + if ( 2 == argc ) + sscanf( argv[ 1 ], "%d", &g_Iterations ); /* no atoi in MS C 1.0 */ + + start_time = get_ms(); + + FindSolution( 0 ); + FindSolution( 1 ); + FindSolution( 4 ); + + end_time = get_ms(); + + printf( "runtime in ms: %ld\n", end_time - start_time ); + printf( "move count: %ld\n", g_Moves ); /* 6493 * g_Iterations */ + printf( "iteration count: %d\n", g_Iterations ); + printf( "method: %s\n", + ( WinMethod == UseFunPointers ) ? "function pointers" : + ( WinMethod == UseWinner2 ) ? "winner2" : + ( WinMethod == UseLookForWinner ) ? "look for winner" : + "invalid method" ); + return 0; +} /*main*/ + diff --git a/Manx Aztec C86 v42b/code/m.bat b/Manx Aztec C86 v42b/code/m.bat new file mode 100644 index 0000000..a8206fd --- /dev/null +++ b/Manx Aztec C86 v42b/code/m.bat @@ -0,0 +1,4 @@ +ntvdm -e:include=c:\include,path=c:\bin -r:.. ..\bin\cc -DAZTEC86 +F +A %1.c +del ctmp* 1>nul 2>nul +ntvdm -r:.. -e:lib=c:\lib ..\bin\ln %1 c:\lib\m.lib c:\lib\c.lib +