├── DISK1 ├── BIN │ ├── CV.EX$ │ ├── CV.IC$ │ ├── CVPACK.EX$ │ ├── CVW.EX$ │ ├── CVW1.38$ │ ├── CVW4.EX$ │ ├── DMW0.DL$ │ ├── DOSXNT.38$ │ ├── DOSXNT.EX$ │ ├── EED1CXX.DL$ │ ├── EEW0CXX.DL$ │ ├── EMD1D1.DL$ │ ├── ML.ER$ │ └── ML.EX$ ├── CV.TX$ ├── DECOMP.EXE ├── ERRMSG.TX$ ├── PACKING.TXT ├── PENTIUM.TX$ ├── README.TXT ├── SETUP.EXE ├── SETUP.INF └── SUPPORT.TX$ ├── DISK2 └── BIN │ ├── BSCMAKE.EX$ │ ├── BSCMAKEV.EX$ │ ├── CREF.DO$ │ ├── CREF.EX$ │ ├── EMD1W0.DL$ │ ├── EMM386.EX$ │ ├── EMW0W0.DL$ │ ├── EXEHDR.EX$ │ ├── EXP.EX$ │ ├── H2INC.ER$ │ ├── H2INC.EX$ │ ├── HELPMAKE.EX$ │ ├── HIMEM.SY$ │ ├── IMPLIB.EX$ │ ├── LIB.EX$ │ └── LINK.EX$ ├── DISK3 └── BIN │ ├── MASM.EX$ │ ├── MASM.GR$ │ ├── MOUSE.CO$ │ ├── MSD.EX$ │ ├── MSD.TX$ │ ├── NEW-SYS.IN$ │ ├── NMAKE.EX$ │ ├── NMAKER.EX$ │ ├── OEM08.FO$ │ ├── OEM10.FO$ │ ├── PWB.EX$ │ ├── PWB.IC$ │ ├── PWB.PI$ │ ├── PWBBASIC.XX$ │ ├── PWBC.XX$ │ ├── PWBFORT.XX$ │ ├── PWBHELP.MX$ │ ├── PWBMASM.MX$ │ ├── PWBPROF.XX$ │ ├── PWBRMAKE.EX$ │ ├── PWBROWSE.MX$ │ ├── PWBUTILS.MX$ │ ├── QH.EX$ │ ├── QH.IC$ │ ├── RAMDRIVE.SY$ │ ├── RC.BA$ │ ├── RCVCOM.EX$ │ ├── RCVWCOM.EX$ │ ├── RM.EX$ │ ├── SBRPACK.EX$ │ ├── SHD1.DL$ │ ├── SHW0.DL$ │ ├── SMARTDRV.DO$ │ ├── SMARTDRV.EX$ │ └── TLD1COM.DL$ ├── DISK4 ├── BIN │ ├── TLD1LOC.DL$ │ ├── TLW0LOC.DL$ │ ├── TOOLHELP.DL$ │ ├── UNDEL.EX$ │ ├── VMB.38$ │ ├── WX.EX$ │ └── WXSRVR.EX$ ├── HELP │ ├── CV.HL$ │ └── ML.HL$ ├── INCLUDE │ ├── ASMTHRED.IN$ │ ├── BIOS.IN$ │ ├── CMACROS.IN$ │ ├── CMACROS.NE$ │ ├── DOS.IN$ │ ├── MACROS.IN$ │ ├── PROLOGUE.IN$ │ ├── THREADS.H$ │ └── WIN.IN$ ├── INIT │ ├── BRIEF.IN$ │ └── TOOLS.PR$ ├── LIB │ ├── APPENTRY.AS$ │ ├── CNOCRTDW.LI$ │ ├── DLLENTRY.AS$ │ ├── LIBW.LI$ │ ├── LNOCRTDW.LI$ │ ├── MNOCRTDW.LI$ │ └── SNOCRTDW.LI$ └── SAMPLES │ ├── DEMOS │ ├── COMMON.AS$ │ ├── DEMO.H$ │ ├── DEMO.IN$ │ ├── FILE.AS$ │ ├── FILEDEMO.C$ │ ├── FILEDEMO.MA$ │ ├── MATH.AS$ │ ├── MATHDEMO.C$ │ ├── MATHDEMO.MA$ │ ├── MISC.AS$ │ ├── MISCDEMO.AS$ │ └── MISCDEMO.MA$ │ ├── DOSDEV │ ├── ATOMS.AS$ │ ├── ATOMS.TX$ │ ├── ATOMTEST.AS$ │ ├── CTEST.C$ │ └── MAKEATOM.BA$ │ ├── MIXED │ ├── BASIC.AS$ │ ├── BASMAIN.BA$ │ ├── C.AS$ │ ├── CMAIN.C$ │ ├── FMAIN.FO$ │ └── FORTRAN.AS$ │ ├── NTSAMPLE │ ├── HELLO │ │ ├── HELLO.AS$ │ │ └── HELLO.MA$ │ ├── NTDLL │ │ ├── ASMDLL.AS$ │ │ ├── ASMDLL.DE$ │ │ ├── CASMDLL.MA$ │ │ └── CMAIN.C$ │ ├── NTSAMPLE.TX$ │ ├── SZSEARCH │ │ ├── MAIN.C$ │ │ ├── MAIN.MA$ │ │ └── SZSEARCH.AS$ │ └── THREADS │ │ ├── ASMTHRED.AS$ │ │ ├── THREADS.C$ │ │ └── THREADS.MA$ │ ├── PWBTUTOR │ ├── EXTRA.TX$ │ └── RND.AS$ │ ├── SAMPLES.TX$ │ ├── SHOW │ ├── PAGER.AS$ │ ├── SHOW.AS$ │ ├── SHOW.IN$ │ ├── SHOW.MA$ │ └── SHOWUTIL.AS$ │ ├── TSR │ ├── ALARM.AS$ │ ├── ALARM.MA$ │ ├── BELL.C$ │ ├── BELL.MA$ │ ├── HANDLERS.AS$ │ ├── INSTALL.AS$ │ ├── SNAP.AS$ │ ├── SNAP.MA$ │ ├── TSR.H$ │ └── TSR.IN$ │ ├── WINCLOCK │ ├── APPENTRY.AS$ │ ├── WINCLOCK.AS$ │ ├── WINCLOCK.DE$ │ ├── WINCLOCK.IC$ │ ├── WINCLOCK.MA$ │ └── WINCLOCK.RC$ │ └── WINDLL │ ├── APPENTRY.AS$ │ ├── DLL.IN$ │ ├── DLLENTRY.AS$ │ ├── SYSDATA.AS$ │ ├── SYSDATA.DE$ │ ├── SYSDATA.EX$ │ ├── SYSDATA.H$ │ ├── SYSDATA.IC$ │ ├── SYSDATA.MA$ │ ├── SYSDATA.RC$ │ ├── SYSINFO.AS$ │ ├── SYSINFO.DE$ │ └── SYSINFO.MA$ ├── DISK5 └── HELP │ ├── ADVISOR.HL$ │ ├── ALANG.HL$ │ ├── LINK.HL$ │ ├── PWB.HL$ │ ├── QH.HL$ │ └── UTILS.HL$ ├── Docs ├── DOC │ ├── Environment and Tools │ │ ├── LMAET02A.DOC │ │ ├── LMAET02B.DOC │ │ ├── LMAET05A.DOC │ │ ├── LMAET05B.DOC │ │ ├── LMAETAPA.DOC │ │ ├── LMAETAPB.DOC │ │ ├── LMAETAPX.DOC │ │ ├── LMAETC01.DOC │ │ ├── LMAETC03.DOC │ │ ├── LMAETC04.DOC │ │ ├── LMAETC06.DOC │ │ ├── LMAETC07.DOC │ │ ├── LMAETC08.DOC │ │ ├── LMAETC09.DOC │ │ ├── LMAETC10.DOC │ │ ├── LMAETC11.DOC │ │ ├── LMAETC12.DOC │ │ ├── LMAETC13.DOC │ │ ├── LMAETC14.DOC │ │ ├── LMAETC15.DOC │ │ ├── LMAETC16.DOC │ │ ├── LMAETC17.DOC │ │ ├── LMAETC18.DOC │ │ ├── LMAETC19.DOC │ │ ├── LMAETC20.DOC │ │ ├── LMAETC21.DOC │ │ ├── LMAETCPY.DOC │ │ ├── LMAETGLO.DOC │ │ ├── LMAETINT.DOC │ │ ├── LMAETINX.DOC │ │ ├── LMAETP01.DOC │ │ ├── LMAETP02.DOC │ │ ├── LMAETP03.DOC │ │ ├── LMAETP04.DOC │ │ ├── LMAETP05.DOC │ │ ├── LMAETTOC.DOC │ │ └── LMAETTTL.DOC │ ├── Getting Started │ │ ├── LMATUC01.DOC │ │ ├── LMATUC02.DOC │ │ ├── LMATUC03.DOC │ │ └── LMATUTTL.DOC │ ├── Programmer's Guide │ │ ├── LMAPGAPA.DOC │ │ ├── LMAPGAPB.DOC │ │ ├── LMAPGAPC.DOC │ │ ├── LMAPGAPD.DOC │ │ ├── LMAPGAPE.DOC │ │ ├── LMAPGC01.DOC │ │ ├── LMAPGC02.DOC │ │ ├── LMAPGC03.DOC │ │ ├── LMAPGC04.DOC │ │ ├── LMAPGC05.DOC │ │ ├── LMAPGC06.DOC │ │ ├── LMAPGC07.DOC │ │ ├── LMAPGC08.DOC │ │ ├── LMAPGC09.DOC │ │ ├── LMAPGC10.DOC │ │ ├── LMAPGC11.DOC │ │ ├── LMAPGC12.DOC │ │ ├── LMAPGC13.DOC │ │ ├── LMAPGCPY.DOC │ │ ├── LMAPGDFD.DOC │ │ ├── LMAPGGLO.DOC │ │ ├── LMAPGINT.DOC │ │ ├── LMAPGINX.DOC │ │ ├── LMAPGTOC.DOC │ │ └── LMAPGTTL.DOC │ └── Reference │ │ ├── LMARFC01.DOC │ │ ├── LMARFC02.DOC │ │ ├── LMARFC03.DOC │ │ ├── LMARFC04.DOC │ │ ├── LMARFC05.DOC │ │ ├── LMARFC06.DOC │ │ ├── LMARFC07.DOC │ │ ├── LMARFCPY.DOC │ │ ├── LMARFINT.DOC │ │ ├── LMARFTOC.DOC │ │ └── LMARFTTL.DOC └── PDF │ ├── Environment and Tools.pdf │ ├── Getting Started.pdf │ ├── Programmer's Guide.pdf │ └── Reference.pdf ├── MASM ├── INCLUDE │ ├── BIOS.INC │ ├── DOS.INC │ ├── MIXED.INC │ └── MIXED │ │ ├── BA.ASM │ │ ├── BAMAIN.BAS │ │ ├── CA.ASM │ │ ├── CAMAIN.C │ │ ├── FA.ASM │ │ ├── FAMAIN.FOR │ │ ├── MIXED.DOC │ │ ├── PA.ASM │ │ ├── PAMAIN.PAS │ │ └── POWER2.ASM ├── MACRO.DOC ├── PACKING.LST ├── PAGERR.ASM ├── README.DOC └── SHOWR.ASM ├── Patches ├── ML611D.EXE ├── ML614.EXE └── README.TXT ├── README.DOC └── phatcode.exe /DISK1/BIN/CV.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/CV.EX$ -------------------------------------------------------------------------------- /DISK1/BIN/CV.IC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/CV.IC$ -------------------------------------------------------------------------------- /DISK1/BIN/CVPACK.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/CVPACK.EX$ -------------------------------------------------------------------------------- /DISK1/BIN/CVW.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/CVW.EX$ -------------------------------------------------------------------------------- /DISK1/BIN/CVW1.38$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/CVW1.38$ -------------------------------------------------------------------------------- /DISK1/BIN/CVW4.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/CVW4.EX$ -------------------------------------------------------------------------------- /DISK1/BIN/DMW0.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/DMW0.DL$ -------------------------------------------------------------------------------- /DISK1/BIN/DOSXNT.38$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/DOSXNT.38$ -------------------------------------------------------------------------------- /DISK1/BIN/DOSXNT.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/DOSXNT.EX$ -------------------------------------------------------------------------------- /DISK1/BIN/EED1CXX.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/EED1CXX.DL$ -------------------------------------------------------------------------------- /DISK1/BIN/EEW0CXX.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/EEW0CXX.DL$ -------------------------------------------------------------------------------- /DISK1/BIN/EMD1D1.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/EMD1D1.DL$ -------------------------------------------------------------------------------- /DISK1/BIN/ML.ER$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/ML.ER$ -------------------------------------------------------------------------------- /DISK1/BIN/ML.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/BIN/ML.EX$ -------------------------------------------------------------------------------- /DISK1/CV.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/CV.TX$ -------------------------------------------------------------------------------- /DISK1/DECOMP.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/DECOMP.EXE -------------------------------------------------------------------------------- /DISK1/ERRMSG.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/ERRMSG.TX$ -------------------------------------------------------------------------------- /DISK1/PACKING.TXT: -------------------------------------------------------------------------------- 1 | Packing List for Microsoft Macro Assembler Version 6.11 2 | Copyright (C) Microsoft Corp. 1986, 1993. All rights reserved. 3 | 4 | 5 | 6 | DISK 1 : Setup disk 7 | 8 | Files Description 9 | ----- ----------- 10 | 11 | BIN\CV.EXE MS-DOS CodeView debugger for MS-DOS 12 | BIN\CV.ICO MS-DOS CodeView Icon 13 | BIN\CVPACK.EXE DOS CV4 information optimization utility 14 | BIN\CVW.EXE CodeView for Windows - Single Monitor 15 | BIN\CVW1.386 CodeView for Windows Driver 16 | BIN\CVW4.EXE CodeView for Windows 17 | BIN\DMW0.DLL Debugging monitor 18 | BIN\DOSXNT.386 MS-DOS extender component for Windows 19 | BIN\DOSXNT.EXE MS-DOS extender component 20 | BIN\EED1CXX.DLL Expression evaluator for MS-DOS C/C++ 21 | BIN\EEW0CXX.DLL Windows expression evaluator for C/C++ 22 | BIN\EMD1D1.DLL Execution model for MS-DOS to MS-DOS 23 | BIN\ML.ERR Assembler error file 24 | BIN\ML.EXE Assembler executable 25 | 26 | CV.TXT CodeView configuration doc 27 | DECOMP.EXE Standalone decompression program 28 | ERRMSG.TXT Microsoft MS-DOS Extender Run-Time Errors 29 | PACKING.TXT List of disk contents 30 | PENTIUM.TXT Information for the Intel (R) Pentium (TM) processor 31 | README.TXT Documentation for MASM 6.11 32 | SETUP.EXE Setup program 33 | SETUP.INF Setup program information file 34 | SUPPORT.TXT Documentation about Microsoft Support Services 35 | 36 | 37 | DISK 2 : Disk 2 38 | 39 | Files Description 40 | ----- ----------- 41 | 42 | BIN\BSCMAKE.EXE Browse database creation utility 43 | BIN\BSCMAKEV.EXE Virtual memory version of BSCMAKE 44 | BIN\CREF.DOC Cross-Reference Utility Doc 45 | BIN\CREF.EXE Cross-Reference Utility 46 | BIN\EMD1W0.DLL MS-DOS to WIN3 Execution Model 47 | BIN\EMM386.EXE Expanded memory manager 48 | BIN\EMW0W0.DLL Windows to Windows execution model 49 | BIN\EXEHDR.EXE .EXE file modification utility 50 | BIN\EXP.EXE File expunge program 51 | BIN\H2INC.ERR h2inc.exe error message file 52 | BIN\H2INC.EXE C-header-file to MASM-include-file utility 53 | BIN\HELPMAKE.EXE Help File Maintenance Utility 54 | BIN\HIMEM.SYS Microsoft XMS manager 55 | BIN\IMPLIB.EXE Import library creation utility 56 | BIN\LIB.EXE Library maintenance utility 57 | BIN\LINK.EXE Linker 58 | 59 | 60 | DISK 3 : Disk 3 61 | 62 | Files Description 63 | ----- ----------- 64 | 65 | BIN\MASM.EXE 5.1-compatible command-line driver 66 | BIN\MASM.GRP Windows group file 67 | BIN\MOUSE.COM Mouse driver 68 | BIN\MSD.EXE Configuration reporter 69 | BIN\MSD.TXT Configuration reporter doc 70 | BIN\NEW-SYS.INI SYSTEM.INI settings 71 | BIN\NMAKE.EXE MS-DOS extended driver for NMAKER 72 | BIN\NMAKER.EXE Real-mode program maintenance utility 73 | BIN\OEM08.FON Font 74 | BIN\OEM10.FON Font 75 | BIN\PWB.EXE MS-DOS Programmer's WorkBench 76 | BIN\PWB.ICO Icon for PWB 77 | BIN\PWB.PIF PIF File for PWB 78 | BIN\PWBBASIC.XXT BASIC extension for PWB 79 | BIN\PWBC.XXT C extension for PWB 80 | BIN\PWBFORT.XXT FORTRAN extension for PWB 81 | BIN\PWBHELP.MXT Help extension for PWB 82 | BIN\PWBMASM.MXT MASM extension for PWB 83 | BIN\PWBPROF.XXT Profiler extension for PWB 84 | BIN\PWBRMAKE.EXE BSCMAKE compatibility driver 85 | BIN\PWBROWSE.MXT Browser extension for PWB 86 | BIN\PWBUTILS.MXT Utilities for PWB 87 | BIN\QH.EXE MS-DOS Quick Help program 88 | BIN\QH.ICO QuickHelp Icon 89 | BIN\RAMDRIVE.SYS Virtual RAM disk drive 90 | BIN\RC.BAT Warning of missing RC.EXE 91 | BIN\RCVCOM.EXE MS-DOS Serial Debug Monitor 92 | BIN\RCVWCOM.EXE Windows serial remote debugging monitor 93 | BIN\RM.EXE File deletion program 94 | BIN\SBRPACK.EXE Browse information utility 95 | BIN\SHD1.DLL Symbol handler for MS-DOS 96 | BIN\SHW0.DLL Windows hosted symbol handler 97 | BIN\SMARTDRV.DOC Disk cache doc 98 | BIN\SMARTDRV.EXE Disk cache 99 | BIN\TLD1COM.DLL MS-DOS Serial Transport Layer 100 | 101 | 102 | DISK 4 : Disk 4 103 | 104 | Files Description 105 | ----- ----------- 106 | 107 | BIN\TLD1LOC.DLL Local transport layer for MS-DOS 108 | BIN\TLW0LOC.DLL Windows local transport layer 109 | BIN\TOOLHELP.DLL Windows debugging support 110 | BIN\UNDEL.EXE File restore program 111 | BIN\VMB.386 Windows Spawn Driver 112 | BIN\WX.EXE Windows Spawner 113 | BIN\WXSRVR.EXE Windows Spawn Server 114 | 115 | HELP\CV.HLP Help for CodeView 116 | HELP\ML.HLP Help for Assembler command line 117 | 118 | INCLUDE\ASMTHRED.INC Sample file - 32-bit code 119 | INCLUDE\BIOS.INC BIOS Macros 120 | INCLUDE\CMACROS.INC MASM 6.11 compatible CMACROS.INC 121 | INCLUDE\CMACROS.NEW CMACROS.INC w/MASM 6.x features 122 | INCLUDE\DOS.INC DOS Macros 123 | INCLUDE\MACROS.INC Miscellaneous macros 124 | INCLUDE\PROLOGUE.INC Prologues and Epilogues 125 | INCLUDE\THREADS.H Sample file - 32-bit code 126 | INCLUDE\WIN.INC Windows include file 127 | 128 | INIT\BRIEF.INI Brief emulation macros for PWB 129 | INIT\TOOLS.PRE Sample macros for PWB 130 | 131 | LIB\APPENTRY.ASM Windows app startup code 132 | LIB\CNOCRTDW.LIB Windows DLL Startup Library 133 | LIB\DLLENTRY.ASM Windows DLL startup code 134 | LIB\LIBW.LIB Windows API Import Library 135 | LIB\LNOCRTDW.LIB Windows DLL Startup Library 136 | LIB\MNOCRTDW.LIB Windows DLL Startup Library 137 | LIB\SNOCRTDW.LIB Windows DLL Startup Library 138 | 139 | SAMPLES\DEMOS\COMMON.ASM Sample file - Miscellaneous demos 140 | SAMPLES\DEMOS\DEMO.H Sample file - Miscellaneous demos 141 | SAMPLES\DEMOS\DEMO.INC Sample file - Miscellaneous demos 142 | SAMPLES\DEMOS\FILE.ASM Sample file - Miscellaneous demos 143 | SAMPLES\DEMOS\FILEDEMO.C Sample file - Miscellaneous demos 144 | SAMPLES\DEMOS\FILEDEMO.MAK Sample file - Miscellaneous demos 145 | SAMPLES\DEMOS\MATH.ASM Sample file - Miscellaneous demos 146 | SAMPLES\DEMOS\MATHDEMO.C Sample file - Miscellaneous demos 147 | SAMPLES\DEMOS\MATHDEMO.MAK Sample file - Miscellaneous demos 148 | SAMPLES\DEMOS\MISC.ASM Sample file - Miscellaneous demos 149 | SAMPLES\DEMOS\MISCDEMO.ASM Sample file - Miscellaneous demos 150 | SAMPLES\DEMOS\MISCDEMO.MAK Sample file - Miscellaneous demos 151 | 152 | SAMPLES\DOSDEV\ATOMS.ASM Sample file - DOS Device driver 153 | SAMPLES\DOSDEV\ATOMS.TXT Sample file - DOS Device driver 154 | SAMPLES\DOSDEV\ATOMTEST.ASM Sample file - DOS Device driver 155 | SAMPLES\DOSDEV\CTEST.C Sample file - DOS Device driver 156 | SAMPLES\DOSDEV\MAKEATOM.BAT Sample file - DOS Device driver 157 | 158 | SAMPLES\MIXED\BASIC.ASM Sample file - Mixed language 159 | SAMPLES\MIXED\BASMAIN.BAS Sample file - Mixed language 160 | SAMPLES\MIXED\C.ASM Sample file - Mixed language 161 | SAMPLES\MIXED\CMAIN.C Sample file - Mixed language 162 | SAMPLES\MIXED\FMAIN.FOR Sample file - Mixed language 163 | SAMPLES\MIXED\FORTRAN.ASM Sample file - Mixed language 164 | 165 | SAMPLES\NTSAMPLE\HELLO\HELLO.ASM Sample file - 32-bit code 166 | SAMPLES\NTSAMPLE\HELLO\HELLO.MAK Sample file - 32-bit code 167 | 168 | SAMPLES\NTSAMPLE\NTDLL\ASMDLL.ASM Sample file - 32-bit code 169 | SAMPLES\NTSAMPLE\NTDLL\ASMDLL.DEF Sample file - 32-bit code 170 | SAMPLES\NTSAMPLE\NTDLL\CASMDLL.MAK Sample file - 32-bit code 171 | SAMPLES\NTSAMPLE\NTDLL\CMAIN.C Sample file - 32-bit code 172 | 173 | SAMPLES\NTSAMPLE\NTSAMPLE.TXT Samples text file - 32-bit code 174 | 175 | SAMPLES\NTSAMPLE\SZSEARCH\MAIN.C Sample file - 32-bit code 176 | SAMPLES\NTSAMPLE\SZSEARCH\MAIN.MAK Sample file - 32-bit code 177 | SAMPLES\NTSAMPLE\SZSEARCH\SZSEARCH.ASM Sample file - 32-bit code 178 | 179 | SAMPLES\NTSAMPLE\THREADS\ASMTHRED.ASM Sample file - 32-bit code 180 | SAMPLES\NTSAMPLE\THREADS\THREADS.C Sample file - 32-bit code 181 | SAMPLES\NTSAMPLE\THREADS\THREADS.MAK Sample file - 32-bit code 182 | 183 | SAMPLES\PWBTUTOR\EXTRA.TXT Sample file - PWB Tutorial 184 | SAMPLES\PWBTUTOR\RND.ASM Sample file - PWB Tutorial 185 | 186 | SAMPLES\SAMPLES.TXT Sample file documentation 187 | 188 | SAMPLES\SHOW\PAGER.ASM Sample file - Text file browser 189 | SAMPLES\SHOW\SHOW.ASM Sample file - Text file browser 190 | SAMPLES\SHOW\SHOW.INC Sample file - Text file browser 191 | SAMPLES\SHOW\SHOW.MAK Sample file - Text file browser 192 | SAMPLES\SHOW\SHOWUTIL.ASM Sample file - Text file browser 193 | 194 | SAMPLES\TSR\ALARM.ASM Sample file - TSR 195 | SAMPLES\TSR\ALARM.MAK Sample file - TSR 196 | SAMPLES\TSR\BELL.C Sample file - TSR 197 | SAMPLES\TSR\BELL.MAK Sample file - TSR 198 | SAMPLES\TSR\HANDLERS.ASM Sample file - TSR 199 | SAMPLES\TSR\INSTALL.ASM Sample file - TSR 200 | SAMPLES\TSR\SNAP.ASM Sample file - TSR 201 | SAMPLES\TSR\SNAP.MAK Sample file - TSR 202 | SAMPLES\TSR\TSR.H Sample file - TSR 203 | SAMPLES\TSR\TSR.INC Sample file - TSR 204 | 205 | SAMPLES\WINCLOCK\APPENTRY.ASM Windows app startup code 206 | SAMPLES\WINCLOCK\WINCLOCK.ASM Sample file - Windows clock 207 | SAMPLES\WINCLOCK\WINCLOCK.DEF Sample file - Windows clock 208 | SAMPLES\WINCLOCK\WINCLOCK.ICO Sample file - Windows clock 209 | SAMPLES\WINCLOCK\WINCLOCK.MAK Sample file - Windows clock 210 | SAMPLES\WINCLOCK\WINCLOCK.RC Sample file - Windows clock 211 | 212 | SAMPLES\WINDLL\APPENTRY.ASM Windows app startup code 213 | SAMPLES\WINDLL\DLL.INC Sample file - Windows DLL 214 | SAMPLES\WINDLL\DLLENTRY.ASM Windows DLL startup code 215 | SAMPLES\WINDLL\SYSDATA.ASM Sample file - Windows DLL 216 | SAMPLES\WINDLL\SYSDATA.DEF Sample file - Windows DLL 217 | SAMPLES\WINDLL\SYSDATA.EXE Sample file - Windows DLL 218 | SAMPLES\WINDLL\SYSDATA.H Sample file - Windows DLL 219 | SAMPLES\WINDLL\SYSDATA.ICO Sample file - Windows DLL 220 | SAMPLES\WINDLL\SYSDATA.MAK Sample file - Windows DLL 221 | SAMPLES\WINDLL\SYSDATA.RC Sample file - Windows DLL 222 | SAMPLES\WINDLL\SYSINFO.ASM Sample file - Windows DLL 223 | SAMPLES\WINDLL\SYSINFO.DEF Sample file - Windows DLL 224 | SAMPLES\WINDLL\SYSINFO.MAK Sample file - Windows DLL 225 | 226 | 227 | DISK 5 : Disk 5 228 | 229 | Files Description 230 | ----- ----------- 231 | 232 | HELP\ADVISOR.HLP Help for Microsoft Advisor 233 | HELP\ALANG.HLP Help for Assembly language 234 | HELP\LINK.HLP Help for Linker 235 | HELP\PWB.HLP Help for PWB 236 | HELP\QH.HLP Help for Microsoft QuickHelp 237 | HELP\UTILS.HLP Help for Utilities 238 | -------------------------------------------------------------------------------- /DISK1/PENTIUM.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/PENTIUM.TX$ -------------------------------------------------------------------------------- /DISK1/README.TXT: -------------------------------------------------------------------------------- 1 | 2 | README.TXT File 3 | 4 | Release Notes for the Microsoft(R) MASM 5 | Professional Development System, Version 6.11 6 | 7 | (C) Copyright 1993, Microsoft Corporation. All rights reserved. 8 | 9 | This document contains release notes for the Microsoft MASM 10 | Professional Development System, version 6.11. The information in 11 | this document and in the Microsoft Advisor (online help) is more 12 | up-to-date than that in the manuals. 13 | 14 | The printed documentation for MASM 6.11 has not changed from MASM 6.1. 15 | The MASM 6.11 installation disks provide several important files that 16 | include new or updated information for this release. They are: 17 | 18 | README.TXT =====> Contains documentation errata, system requirements, 19 | information and tips on using MASM 6.11, and known 20 | assembler bugs. 21 | 22 | PENTIUM.TXT ====> Contains .586 and .586P directives information, 23 | descriptions of the new Intel(R) Pentium(TM) 24 | instructions, and a table of Pentium timings for all 25 | instructions. 26 | 27 | CV.TXT =========> Contains release notes for Microsoft CodeView(TM). 28 | 29 | ERRMSG.TXT =====> Contains updated information on 32-bit Linker errors, 30 | ML error messages, and Microsoft DOSXNT MS-DOS 31 | Extender error messages. 32 | 33 | SAMPLES.TXT ====> Contains information about MASM samples for MS-DOS 34 | and Microsoft Windows 3.1. 35 | 36 | NTSAMPLE.TXT ===> Contains information about MASM samples for 37 | Microsoft Windows NT. 38 | 39 | SUPPORT.TXT ====> Contains updated Microsoft Product Support policies. 40 | 41 | 42 | ======================< README.TXT Table of Contents >===================== 43 | 44 | Part 1: Documentation Errata 45 | ---------------------------- 46 | 47 | Part 2: System Requirements 48 | --------------------------- 49 | 50 | Part 3: Tips for Using MASM 6.1x 51 | -------------------------------- 52 | - ALIAS directive 53 | - Assembling Files Generated by Compiler 54 | - Building 32-Bit Applications 55 | - 32-Bit Linking 56 | - GROUP Directive and Flat-Model Programming 57 | - Structure Packing Issues for Mixed Language Programming 58 | - /WIN32 Switch for H2INC 59 | - CD-ROM Not a Valid Target 60 | - CMP Instruction Encoding 61 | - Debugging MASM Applications under Visual C++, 32-Bit 62 | Edition, or Fortran PowerStation, 32-Bit Edition 63 | - .FPO Directive 64 | - INVOKE Command 65 | - LINK and System Resources 66 | - MOUSE.COM 67 | - MS-DOS and Windows NT File Compatibility 68 | - Multi-File Assembly with MASM.EXE 69 | - NMAKE and NMAKER 70 | - Response Files 71 | - SAMPLES.TXT and NTSAMPLE.TXT 72 | - Using Control-C to Halt Operation of MASM 73 | - Using MASM 6.x Structures 74 | - Visual C++ 1.0/Fortran PowerStation 1.0 Compatibility 75 | - Working with MASM 5.1 Code 76 | - Working With Microsoft BASIC Far Strings 77 | 78 | Part 4: Known Assembler Bugs 79 | ---------------------------- 80 | - Exiting from MS-DOS Critical Errors 81 | - Expression Order in High-Level Conditionals 82 | - Hexadecimal Constants 83 | - Initializing Nested Structures 84 | - Intersegment Near Jumps in Flat Model 85 | - Span-Dependent Expressions used in Macros 86 | - Span-Dependent Equates in Macros and EXTERNDEF ABS 87 | - Span-Dependent Text Equates 88 | - STRUCT and RECORD Initialization 89 | - Using The /link /nologo Command Line Options 90 | 91 | 92 | 93 | ====================< Part 1: Documentation Errata >======================= 94 | 95 | 96 | Environment and Tools, Page xxiii: Microsoft Support Services 97 | ------------------------------------------------------------- 98 | Microsoft Support Services information has been updated. See 99 | SUPPORT.TXT, in the directory in which you installed MASM, for 100 | the most current Microsoft support information and policies. 101 | 102 | 103 | Environment and Tools, Page 582: LIB Command Line Sample 104 | -------------------------------------------------------- 105 | The following example, as it appears on page 582, is incorrect: 106 | 107 | LIB FIRST +SECOND, , THIRD 108 | 109 | It should instead read: 110 | 111 | LIB THIRD +FIRST +SECOND 112 | 113 | 114 | Environment and Tools, Page 649, 651: _syscall and __syscall 115 | ------------------------------------------------------------ 116 | The H2INC documentation on pages 649 and 651 lists _syscall and 117 | __syscall as C keywords recognized by H2INC. These are not recognized, 118 | and should be removed. 119 | 120 | 121 | Environment and Tools, Page 819: Error Message A2156 122 | ---------------------------------------------------- 123 | The value range given for the first parameter of the PAGE directive 124 | is incorrect; "...either 0 or a value in the range of 10-255" should 125 | read "...either 0 or a value in the range of 14-255." 126 | 127 | 128 | Reference, Page 12: ML Command-line Options /Cu and /Cx 129 | ------------------------------------------------------- 130 | /Cu is not the default command-line option, but is indicated as such 131 | in the MASM 6.1 Reference. Instead, /Cx should be indicated as the 132 | default. 133 | 134 | 135 | Reference, Page 98: LEA is no longer optimized 136 | ---------------------------------------------- 137 | The MASM 6.1 Reference indicates that the LEA instruction is 138 | encoded as a MOV when the source operand is a direct memory address. 139 | 140 | In response to programmer requests, MASM 6.1x no longer performs this 141 | optimization automatically. The optimization can be performed by 142 | using the OPATTR operator, as shown in the following macro: 143 | 144 | MOVLEA MACRO Dest, Symbol 145 | IF (OPATTR(Symbol)) AND 08h 146 | MOV Dest, OFFSET Symbol 147 | ELSE 148 | LEA Dest, Symbol 149 | ENDIF 150 | ENDM 151 | 152 | 153 | Programmer's Guide, Page 156: Using an Emulator Library 154 | ------------------------------------------------------- 155 | The sample code demonstrating floating-point instructions served 156 | by an emulator contains the directive .STARTUP. This directive 157 | should be removed. 158 | 159 | 160 | Programmer's Guide, Page 202: User-Defined Epilogues & Prologues 161 | ---------------------------------------------------------------- 162 | The documentation for user-defined epilogue and prologue code reads 163 | "Your macro function must return the parmbytes parameter." It 164 | should read "...the localbytes parameter." 165 | 166 | 167 | Programmer's Guide, Page 323: The C++/MASM Interface 168 | ---------------------------------------------------- 169 | The second sentence in the third paragraph reads: "The linkage 170 | specification applies only to called routines, not to external 171 | variables." It should read "The linkage specification applies to 172 | called routines and external variables." The last sentence in the 173 | same paragraph should be removed. 174 | 175 | 176 | Help for Runtime Error R6921 177 | ---------------------------- 178 | The online help for runtime error R6921 reads "...Possibly the 179 | CONFIG.SYS file contained a line such as DEVICE=C:\OS\MM386.EXE..." 180 | The file name should read "C:\DOS\EMM386.EXE". 181 | 182 | 183 | =================< Part 2: MASM 6.11 System Requirements >================= 184 | 185 | The following are system requirements for Microsoft MASM 6.11: 186 | 187 | - Personal computer using a 386 or higher processor running MS-DOS 188 | version 3.3 or later, Windows version 3.1 or later, or Windows NT 189 | version 3.1 or later. 190 | - 4 MB of available memory. 191 | - Hard disk with 10 MB available space. 192 | - One 3.5" high-density (1.44 MB) disk drive (3.5" low-density (720K) 193 | or 5.25" high-density (1.2 MB) disks available separately with 194 | coupon enclosed). 195 | 196 | To target Windows 3.1, you need one of the following: 197 | 198 | - Microsoft Windows Software Development Kit (SDK) 3.1. 199 | - Microsoft Visual C++ Development System, Standard or Professional 200 | Edition. 201 | 202 | To target Windows NT, you need one of the following: 203 | 204 | - Microsoft Windows NT Software Development Kit (SDK). 205 | - Microsoft Visual C++ Development System, 32-Bit Edition. 206 | 207 | 208 | 209 | ====================< Part 3: Tips for Using MASM 6.11 >=================== 210 | 211 | ALIAS directive 212 | --------------- 213 | The ALIAS directive is not included in the printed documentation 214 | for MASM 6.11. The ALIAS directive can be used for creating 215 | libraries that allow the linker (LINK) to map an old function to 216 | a new function. 217 | 218 | Syntax: ALIAS = 219 | 220 | where alias is the alternate or alias name, and actual-name is 221 | the actual name of the function or procedure. The angle brackets 222 | are required. 223 | 224 | The ALIAS directive should be used with LINK 5.3 or later and LIB 225 | 3.2 or later. At this time, ALIAS functions only with the 16-bit 226 | linker. 227 | 228 | 229 | Assembling Files Generated by Compilers 230 | ------------------------------------------ 231 | Many compilers support assembly-language output. If you experience 232 | difficulty assembling the output of such compilers, you may need to 233 | assemble using the /Zm option. In some cases (for instance, if the 234 | compiler inserts nondelimited comments or page numbers) it may be 235 | necessary to edit the assembly-language output by hand. 236 | 237 | 238 | Building 32-bit Applications 239 | ---------------------------- 240 | Following are a number of items you should keep in mind when 241 | building 32-bit applications with MASM 6.11. Examples of how to 242 | create 32-bit applications can be found in the \SAMPLES\NTSAMPLE 243 | subdirectory of the directory in which you installed MASM. 244 | 245 | 32-bit Linking 246 | -------------- 247 | When you are creating a 32-bit application, you must link 248 | separately with a 32-bit linker. To prepare your object files 249 | for 32-bit linking, assemble using the following switches: 250 | 251 | - /c (assembles without linking) 252 | - /coff (causes object files to be created in Windows NT- 253 | compatible common object file format) 254 | 255 | After assembling, link with your 32-bit linker. Refer to the 256 | documentation included with your particular 32-bit linker for 257 | specific information and instructions. In addition, the sample 258 | NT applications in \SAMPLES\NTSAMPLE demonstrate the use of 259 | /c, /coff, and a 32-bit linker. 260 | 261 | GROUP Directive and Flat-Model Programming 262 | ------------------------------------------ 263 | The GROUP directive has no effect when used in 32-bit flat-model 264 | programming. It is recommended that you not use the GROUP 265 | directive when programming in flat model. 266 | 267 | Structure Packing Issues for Mixed Language Programming 268 | ------------------------------------------------------- 269 | Microsoft MASM uses /Zp1 as it's default setting for structure 270 | packing; this means that structures are not packed. Other 271 | languages may use other default settings for packing. For 272 | example, Microsoft C/C++ compilers prior to Visual C++ 32-bit 273 | edition use /Zp2; Visual C++ 32-bit edition uses /Zp8 as the 274 | default. Modules built using different structure packing may not 275 | be able to share structure data items, so care must be taken 276 | when using structures in mixed language programs. 277 | 278 | The packing size is a maximum, not a fixed, packing value. This 279 | means that a member must have a size equal to or larger than the 280 | packing limit before any packing is done. In many cases, using 281 | /Zp4 on assembly modules will allow them to work with other 282 | modules compiled with /Zp8 if none of the members have a size 283 | larger than 4 bytes. Doubles, long doubles, and member structures 284 | larger than 4 bytes will cause problems. If a structure contains 285 | members larger than 4 bytes you will need to pack the structure 286 | yourself by adding "dummy" data items. 287 | 288 | /WIN32 Switch for H2INC 289 | ----------------------- 290 | Use the /WIN32 switch with H2INC to convert C header files to 291 | NT-compatible MASM include files. When you use the /WIN32 switch, 292 | C int data types are converted to the 4-byte assembler equivalent 293 | DWORD (signed int data types are converted to SDWORD). Without 294 | the /WIN32 switch, H2INC converts int data types to 2-byte WORD 295 | (and signed int data types to SWORD). 296 | 297 | 298 | CD-ROM Not a Valid Target 299 | ------------------------- 300 | A CD-ROM drive is not a valid installation target for MASM 6.11. 301 | 302 | 303 | CMP Instruction Encoding 304 | ------------------------ 305 | MASM 6.1x uses a different encoding for the CMP , 306 | instruction than MASM 6.0 did. There is no difference in length or 307 | processor timing. 308 | 309 | 310 | Debugging MASM Applications under Visual C++, 32-bit Edition, 311 | or Fortran PowerStation, 32-bit Edition 312 | ------------------------------------------------------------- 313 | When debugging a pure MASM application under the 32-bit editions of 314 | Visual C++ or Fortran PowerStation, you must link in the library 315 | file (.LIB) provided with these high-level languages (LIBC.LIB in 316 | Visual C++, LIBF.LIB with Fortran PowerStation), instead of the one 317 | included with MASM 6.11. If you do not use the .LIB file included in 318 | the high-level language, you will receive an "Access Violation" 319 | error message when you attempt to run a MASM application in either 320 | the 32-bit Visual C++ or 32-bit Fortran PowerStation integrated 321 | development environment. 322 | 323 | 324 | .FPO Directive 325 | -------------- 326 | The .FPO directive controls the emission of debug records to the 327 | .debug$F segment or section. This directive was originally included 328 | with MASM386 and is not supported by MASM 6.11. If you are using 329 | both MASM 6.11 and MASM386, the following allows you to continue to 330 | implement the .FPO directive: 331 | 332 | IF @version LT 600 333 | .FPO 334 | ENDIF 335 | 336 | 337 | INVOKE Command 338 | -------------- 339 | The MASM 6.x INVOKE command does not support transferring control 340 | between 16-bit and 32-bit code segments. When the assembler 341 | encounters an INVOKE command in a 16-bit segment, it assumes 342 | that the procedure being invoked is also in a 16-bit segment; if 343 | the assembler encounters an INVOKE in a 32-bit segment, it assumes 344 | that the invoked procedure is also in a 32-bit segment. 345 | 346 | To avoid this problem, push the necessary parameters on the stack 347 | and make the appropriate call instead of using INVOKE. 348 | 349 | 350 | LINK and System Resources 351 | ------------------------ 352 | You may encounter the following error message when running LINK on 353 | Windows 3.1: 354 | 355 | System resource exhausted. Abort, Retry, Fail? 356 | 357 | This may occur because LINK opens a large number of files, and the 358 | buffer for SHARE may have been exceeded. To fix this problem, edit 359 | your AUTOEXEC.BAT, setting the following values for SHARE: 360 | 361 | /L:500 /F:4096 362 | 363 | 364 | MOUSE.COM 365 | --------- 366 | Microsoft Mouse Driver (MOUSE.COM) Version 8.20a is included with 367 | MASM 6.11. If you have a later version of the Microsoft Mouse 368 | installed on your system, it is recommended you use it instead of 369 | the Mouse Driver included with MASM 6.11. 370 | 371 | 372 | MS-DOS and Windows NT File Compatibility 373 | ---------------------------------------- 374 | Files installed on the Microsoft Windows NT File System (NTFS) are 375 | accessible only on Microsoft Windows NT. Files installed on the 376 | MS-DOS File System (FAT) are accessible on MS-DOS, Microsoft Windows, 377 | or Microsoft Windows NT. 378 | 379 | 380 | Multi-File Assembly with MASM.EXE 381 | --------------------------------- 382 | When assembling multiple files with MASM.EXE, you must terminate the 383 | command-line with a semi-colon or a comma (for example, MASM *.asm;). 384 | Failure to do this may cause the program to appear to hang if you are 385 | running Microsoft NT. If this does occur, you can terminate the program 386 | with Ctrl+C. 387 | 388 | 389 | NMAKE and NMAKER 390 | ---------------- 391 | MASM 6.11 includes two versions of the NMAKE project management 392 | utility. NMAKER.EXE is a real-mode version of the utility. 393 | NMAKE.EXE is a driver program which first loads the MS-DOS extender 394 | DOSXNT into memory, and then runs NMAKER.EXE. Using the NMAKE.EXE 395 | driver will result in faster build times. Some development tools 396 | from other manufacturers may be incompatible with NMAKE.EXE. If you 397 | encounter incompatibilities, use NMAKER.EXE instead. 398 | 399 | 400 | Response Files 401 | -------------- 402 | Information on response files is not included in the MASM 6.1 manuals; 403 | however, this information can be found in "ML Command Line Options" 404 | in Online help. 405 | 406 | 407 | SAMPLES.TXT and NTSAMPLE.TXT 408 | ---------------------------- 409 | SAMPLES.TXT contains information about the MASM samples for 410 | MS-DOS/Windows; NTSAMPLE.TXT contains information about the 411 | samples given for MASM for Windows NT. Both files include 412 | information about additional tools you may need to build some 413 | of the samples. If you choose to install the sample code during the 414 | setup process, both SAMPLES.TXT and NTSAMPLE.TXT are included. 415 | SAMPLES.TXT can be found in the \MASM611\SAMPLES subdirectory; 416 | NTSAMPLE.TXT can be found in the \MASM611\SAMPLES\NTSAMPLE 417 | subdirectory. 418 | 419 | 420 | Using Control-C to Halt Operation of MASM 421 | ----------------------------------------- 422 | MS-DOS applications running under DPMI, such as ML.EXE, may not 423 | respond immediately to pressing Control-C. If you press Control-C, 424 | and ^C appears on the screen but you are not returned to MS-DOS, 425 | press the Enter key. 426 | 427 | 428 | Using MASM 6.x Structures 429 | ------------------------- 430 | MASM 6.x supports a more powerful syntax for structure definition 431 | and usage than previous versions of MASM. This more powerful 432 | syntax is enabled by default. To use the older syntax, issue 433 | the OPTION OLDSTRUCTS directive (see Appendix A of the MASM 434 | Programmer's Guide for more information). 435 | 436 | Note: use of nested structures requires the new MASM 6.x syntax. 437 | If you use nested structures, the OPTION OLDSTRUCTS directive will 438 | be ignored for the structure which is nested. 439 | 440 | 441 | Visual C++ 1.0/Fortran PowerStation 1.0 Compatibility 442 | ----------------------------------------------------- 443 | There are specific steps you must take to use MASM 6.11 with 444 | Microsoft Visual C++ 1.0 or Microsoft Fortran PowerStation 1.0. 445 | If you wish to do mixed language programming with these products, it 446 | is recommended that: 447 | 448 | - You install Visual C++/Fortran PowerStation and MASM 6.11 in 449 | separate sub-directories. 450 | 451 | - You place \MSVC\BIN or \F32\BIN (your Visual C++ or Fortran 452 | PowerStation sub-directory) first on your path statement before 453 | \MASM611\BIN (your MASM 6.11 sub-directory). 454 | 455 | - You use NMAKE.EXE from MASM 6.11. You can do this using various 456 | methods, such as moving or renaming NMAKE.EXE installed in \MSVC 457 | or \F32 thus causing the system to continue searching your path 458 | and use the NMAKE.EXE in \MASM611. 459 | 460 | Optionally, for MASM 6.11/Visual C++ mixed programming, you may 461 | use NMAKER.EXE which is installed with both products. 462 | 463 | When using the LINK utility included with Visual C++ 1.0, you may 464 | encounter one or both of the following warnings: 465 | 466 | LINK : warning L4017: /r : unrecognized option name; option 467 | ignored 468 | CVPACK : warning CK4007 : unrecognized option /x; option 469 | ignored 470 | 471 | These warnings do not affect the resulting program and should be 472 | ignored. 473 | 474 | 475 | Working with MASM 5.1 Code 476 | -------------------------- 477 | MASM 6.x offers major advances over previous versions of MASM. 478 | Some of these improvements require changes that make MASM 5.1 479 | source code incompatible with MASM 6.x. To provide compatibility 480 | with code written for MASM 5.1, MASM 6.x allows you to access 481 | MASM 5.1 compatibility code in three ways: 482 | 483 | - By using the conversion driver MASM.EXE. MASM.EXE converts 484 | your existing command-line options to the new syntax, adds 485 | the compatibility option /Zm, and invokes ML.EXE. 486 | 487 | - By using ML.EXE with the /Zm option. You also need to 488 | convert command-line options to the new syntax. 489 | 490 | - By placing the statement OPTION M510 at the beginning of 491 | each file. You also need to convert command-line options 492 | to the new syntax. 493 | 494 | In most cases, using the /Zm option or OPTION M510 will be the best 495 | solution for assembling existing code. If you prefer to modify your 496 | code so it can be assembled without /Zm or OPTION M510, do the 497 | following: 498 | 499 | 1. Add the appropriate OPTION directives to your code. 500 | 501 | - Always add the following: 502 | 503 | OPTION OLDSTRUCTS ; Supports old-style structures 504 | OPTION OLDMACROS ; Supports old-style macros 505 | OPTION DOTNAME ; Supports naming identifiers with 506 | ; a leading dot [.] 507 | 508 | - If your code does not specify the .386 or .386P directive, add 509 | the following: 510 | 511 | OPTION EXPR16 ; Use 16-bit precision in expressions 512 | 513 | - If your code does not contain a .MODEL directive, add the 514 | following: 515 | 516 | OPTION OFFSET:SEGMENT ; Specifies that the OFFSET operator 517 | ; defaults to segment-relative rather 518 | ; than group-relative 519 | 520 | - If your code does not contain a .MODEL directive or if the 521 | .MODEL directive does not specify a language, add the following: 522 | 523 | OPTION NOSCOPED ; Makes code labels global rather than 524 | ; local to the procedure in which they 525 | ; appear 526 | OPTION PROC:PRIVATE ; Makes code labels defined with PROC 527 | ; local unless specified otherwise 528 | 529 | 2. Once your code assembles with the OPTION directives, remove each 530 | OPTION directive, one at a time, and reassemble the code after you 531 | remove each one. 532 | 533 | Usually, it is best to remove the OPTION directives in the 534 | opposite order in which you added them. In some cases, you may 535 | decide that you prefer the MASM 5.x compatibility behavior 536 | instead of the new MASM 6.x behavior. When this is true, do not 537 | remove the corresponding OPTION statement from your code. 538 | 539 | For more information on assembling MASM 5.1 code, see Appendix A 540 | of the MASM Programmer's Guide. 541 | 542 | 543 | Working With Microsoft BASIC Far Strings 544 | --------------------------------------------- 545 | The BASIC runtime function StringAssign does not correctly handle 546 | strings of zero length. Instead of calling StringAssign to convert 547 | a zero-length string, simply return a near pointer to a doubleword 548 | with the value 0. 549 | 550 | 551 | 552 | ======================< Part 4: Known Assembler Bugs >==================== 553 | 554 | Exiting from MS-DOS Critical Errors 555 | -------------------------------------------------- 556 | MS-DOS critical errors, such as attempting to assemble a file on 557 | a drive which does not exist or is empty, produce the "Abort, Retry 558 | or Fail?" error message. Selecting "Abort" when running MASM in 559 | MS-DOS may cause memory to be corrupted. This problem does not 560 | occur when running MASM in Windows. To avoid this problem, select 561 | "Retry" or "Fail", as appropriate. 562 | 563 | 564 | Expression Order in High-Level Conditionals 565 | -------------------------------------------------- 566 | Comparisons in high-level conditionals cannot begin with a literal. 567 | For instance, this comparison causes an error: 568 | 569 | .IF 1 == AX 570 | 571 | but this works properly: 572 | 573 | .IF AX == 1 574 | 575 | 576 | Hexadecimal Constants 577 | --------------------- 578 | In some instances, ML might not generate the appropriate error 579 | message if it encounters a hexadecimal constant that does not have 580 | an appending "h". The following will help to ensure that hexadecimal 581 | constants are properly represented: 582 | 583 | - Make sure that all hexadecimal constants have an appending "h". 584 | - Begin all hexadecimal constants with the numeral 0. This ensures 585 | that the compiler will generate the appropriate error message 586 | if it encounters a hexadecimal constant that does not end in "h". 587 | 588 | 589 | Initializing Nested Structures 590 | -------------------------------------------------- 591 | If one structure is nested within another, the inner structure's 592 | initializer list must either be empty or include a comma between 593 | every field. For example, the structure INFO declared on page 123 594 | of the Programmer's Guide contains a structure of type DISKDRIVES, 595 | which in turn contains three BYTE fields. An object of type INFO 596 | could be initialized as: 597 | 598 | Info1 INFO { , , , , { }} ; Inner initializer list is blank 599 | 600 | or as: 601 | 602 | Info1 INFO { , , , , {1, 2, }} ; Commas for all three fields 603 | 604 | but not as: 605 | 606 | Info1 INFO { , , , , {1, 2 }} ; Error: missing last comma 607 | 608 | 609 | Intersegment Near Jumps in Flat Model 610 | ------------------------------------- 611 | Intersegment near jumps do not work across files (externs) in flat 612 | model. When programming in flat mode, make sure that all intersegment 613 | near jumps occur within the same file. 614 | 615 | 616 | Span-Dependent Expressions used in Macros 617 | -------------------------------------------------- 618 | MASM 6.1x evaluates macro expressions only on the first pass of 619 | assembly, but code and data are reevaluated on subsequent passes. 620 | Because of this, macro expressions which depend on the span between 621 | two addresses may not evaluate correctly. For instance, the 622 | following code will not evaluate correctly: 623 | 624 | Label1: 625 | JMP Label2 626 | Label2: 627 | 628 | REPEAT Label2 - Label1 ; Evaluates incorrectly 629 | INC AX 630 | ENDM 631 | 632 | View the listing file to determine if a questionable macro expression 633 | was evaluated as desired. 634 | 635 | 636 | Span-Dependent Equates in Macros and EXTERNDEF ABS 637 | --------------------------------------------------- 638 | The ABS operator causes an identifier to be exported as a relocatable 639 | unsized constant (see Programmer's Guide page 220). If ABS is used 640 | with EXTERNDEF within a macro, and the constant being exported 641 | depends on the difference between two addresses, the constant may not 642 | be exported correctly. In some cases, the listing file will show the 643 | correct value, but the value in the resulting .obj will be incorrect. 644 | For instance, the following code will not evaluate correctly: 645 | 646 | EXTERNDEF TableSize:ABS ; Will not be exported correctly 647 | 648 | MAKETABLE MACRO 649 | Table1 LABEL BYTE 650 | DB 0, 1, 2 651 | TableSize EQU $-Table1 652 | ENDM 653 | 654 | SEG1 SEGMENT 655 | MAKETABLE 656 | SEG1 ENDS 657 | 658 | To avoid this problem, either use the 'PUBLIC' directive in place of 659 | 'EXTERNDEF', or put a label before the equate, within the macro. 660 | 661 | 662 | Span-Dependent Text Equates 663 | -------------------------------------------------- 664 | The TEXTEQU operator is evaluated on the first assembly pass. If 665 | TEXTEQU is used with an expression that depends on the difference 666 | between two addresses, the resulting constant may be incorrect. 667 | For instance, the following code will not evaluate correctly: 668 | 669 | Label1: 670 | JMP Label2 671 | Label2: 672 | WrongNum TEXTEQU %Label2-Label1 ; WrongNum will be incorrect 673 | 674 | 675 | STRUCT and RECORD Initialization 676 | -------------------------------- 677 | If a STRUCT containing a UNION is initialized incorrectly, it is 678 | possible that the compiler might not generate an appropriate error. 679 | If the UNION contains a RECORD, the STRUCT is initialized to the 680 | default value for the original UNION. 681 | 682 | 683 | Using The /link /nologo Command Line Options 684 | --------------------------------------------------------- 685 | The /link command line option for ML causes all following parameters 686 | to be passed to the linker. If the /nologo command line option 687 | is passed to the linker, the linker may parse other parameters 688 | incorrectly. To avoid this problem, use the /nologo command line 689 | switch for ML rather than passing it to the linker. For instance, 690 | replace: 691 | 692 | ML hello.asm /link /nologo MYLIB.LIB 693 | 694 | with: 695 | 696 | ML /nologo hello.asm /link MYLIB.LIB 697 | 698 | Alternately, you may use the NMAKE utility to automate building 699 | your project. 700 | -------------------------------------------------------------------------------- /DISK1/SETUP.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/SETUP.EXE -------------------------------------------------------------------------------- /DISK1/SUPPORT.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK1/SUPPORT.TX$ -------------------------------------------------------------------------------- /DISK2/BIN/BSCMAKE.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/BSCMAKE.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/BSCMAKEV.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/BSCMAKEV.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/CREF.DO$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/CREF.DO$ -------------------------------------------------------------------------------- /DISK2/BIN/CREF.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/CREF.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/EMD1W0.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/EMD1W0.DL$ -------------------------------------------------------------------------------- /DISK2/BIN/EMM386.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/EMM386.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/EMW0W0.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/EMW0W0.DL$ -------------------------------------------------------------------------------- /DISK2/BIN/EXEHDR.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/EXEHDR.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/EXP.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/EXP.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/H2INC.ER$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/H2INC.ER$ -------------------------------------------------------------------------------- /DISK2/BIN/H2INC.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/H2INC.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/HELPMAKE.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/HELPMAKE.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/HIMEM.SY$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/HIMEM.SY$ -------------------------------------------------------------------------------- /DISK2/BIN/IMPLIB.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/IMPLIB.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/LIB.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/LIB.EX$ -------------------------------------------------------------------------------- /DISK2/BIN/LINK.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK2/BIN/LINK.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/MASM.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/MASM.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/MASM.GR$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/MASM.GR$ -------------------------------------------------------------------------------- /DISK3/BIN/MOUSE.CO$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/MOUSE.CO$ -------------------------------------------------------------------------------- /DISK3/BIN/MSD.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/MSD.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/MSD.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/MSD.TX$ -------------------------------------------------------------------------------- /DISK3/BIN/NEW-SYS.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/NEW-SYS.IN$ -------------------------------------------------------------------------------- /DISK3/BIN/NMAKE.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/NMAKE.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/NMAKER.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/NMAKER.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/OEM08.FO$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/OEM08.FO$ -------------------------------------------------------------------------------- /DISK3/BIN/OEM10.FO$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/OEM10.FO$ -------------------------------------------------------------------------------- /DISK3/BIN/PWB.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWB.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWB.IC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWB.IC$ -------------------------------------------------------------------------------- /DISK3/BIN/PWB.PI$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWB.PI$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBBASIC.XX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBBASIC.XX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBC.XX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBC.XX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBFORT.XX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBFORT.XX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBHELP.MX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBHELP.MX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBMASM.MX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBMASM.MX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBPROF.XX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBPROF.XX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBRMAKE.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBRMAKE.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBROWSE.MX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBROWSE.MX$ -------------------------------------------------------------------------------- /DISK3/BIN/PWBUTILS.MX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/PWBUTILS.MX$ -------------------------------------------------------------------------------- /DISK3/BIN/QH.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/QH.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/QH.IC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/QH.IC$ -------------------------------------------------------------------------------- /DISK3/BIN/RAMDRIVE.SY$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/RAMDRIVE.SY$ -------------------------------------------------------------------------------- /DISK3/BIN/RC.BA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/RC.BA$ -------------------------------------------------------------------------------- /DISK3/BIN/RCVCOM.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/RCVCOM.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/RCVWCOM.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/RCVWCOM.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/RM.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/RM.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/SBRPACK.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/SBRPACK.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/SHD1.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/SHD1.DL$ -------------------------------------------------------------------------------- /DISK3/BIN/SHW0.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/SHW0.DL$ -------------------------------------------------------------------------------- /DISK3/BIN/SMARTDRV.DO$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/SMARTDRV.DO$ -------------------------------------------------------------------------------- /DISK3/BIN/SMARTDRV.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/SMARTDRV.EX$ -------------------------------------------------------------------------------- /DISK3/BIN/TLD1COM.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK3/BIN/TLD1COM.DL$ -------------------------------------------------------------------------------- /DISK4/BIN/TLD1LOC.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/TLD1LOC.DL$ -------------------------------------------------------------------------------- /DISK4/BIN/TLW0LOC.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/TLW0LOC.DL$ -------------------------------------------------------------------------------- /DISK4/BIN/TOOLHELP.DL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/TOOLHELP.DL$ -------------------------------------------------------------------------------- /DISK4/BIN/UNDEL.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/UNDEL.EX$ -------------------------------------------------------------------------------- /DISK4/BIN/VMB.38$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/VMB.38$ -------------------------------------------------------------------------------- /DISK4/BIN/WX.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/WX.EX$ -------------------------------------------------------------------------------- /DISK4/BIN/WXSRVR.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/BIN/WXSRVR.EX$ -------------------------------------------------------------------------------- /DISK4/HELP/CV.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/HELP/CV.HL$ -------------------------------------------------------------------------------- /DISK4/HELP/ML.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/HELP/ML.HL$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/ASMTHRED.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/ASMTHRED.IN$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/BIOS.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/BIOS.IN$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/CMACROS.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/CMACROS.IN$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/CMACROS.NE$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/CMACROS.NE$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/DOS.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/DOS.IN$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/MACROS.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/MACROS.IN$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/PROLOGUE.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/PROLOGUE.IN$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/THREADS.H$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/THREADS.H$ -------------------------------------------------------------------------------- /DISK4/INCLUDE/WIN.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INCLUDE/WIN.IN$ -------------------------------------------------------------------------------- /DISK4/INIT/BRIEF.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INIT/BRIEF.IN$ -------------------------------------------------------------------------------- /DISK4/INIT/TOOLS.PR$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/INIT/TOOLS.PR$ -------------------------------------------------------------------------------- /DISK4/LIB/APPENTRY.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/APPENTRY.AS$ -------------------------------------------------------------------------------- /DISK4/LIB/CNOCRTDW.LI$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/CNOCRTDW.LI$ -------------------------------------------------------------------------------- /DISK4/LIB/DLLENTRY.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/DLLENTRY.AS$ -------------------------------------------------------------------------------- /DISK4/LIB/LIBW.LI$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/LIBW.LI$ -------------------------------------------------------------------------------- /DISK4/LIB/LNOCRTDW.LI$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/LNOCRTDW.LI$ -------------------------------------------------------------------------------- /DISK4/LIB/MNOCRTDW.LI$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/MNOCRTDW.LI$ -------------------------------------------------------------------------------- /DISK4/LIB/SNOCRTDW.LI$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/LIB/SNOCRTDW.LI$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/COMMON.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/COMMON.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/DEMO.H$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/DEMO.H$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/DEMO.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/DEMO.IN$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/FILE.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/FILE.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/FILEDEMO.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/FILEDEMO.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/FILEDEMO.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/FILEDEMO.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/MATH.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/MATH.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/MATHDEMO.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/MATHDEMO.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/MATHDEMO.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/MATHDEMO.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/MISC.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/MISC.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/MISCDEMO.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/MISCDEMO.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DEMOS/MISCDEMO.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DEMOS/MISCDEMO.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DOSDEV/ATOMS.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DOSDEV/ATOMS.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DOSDEV/ATOMS.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DOSDEV/ATOMS.TX$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DOSDEV/ATOMTEST.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DOSDEV/ATOMTEST.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DOSDEV/CTEST.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DOSDEV/CTEST.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/DOSDEV/MAKEATOM.BA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/DOSDEV/MAKEATOM.BA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/MIXED/BASIC.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/MIXED/BASIC.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/MIXED/BASMAIN.BA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/MIXED/BASMAIN.BA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/MIXED/C.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/MIXED/C.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/MIXED/CMAIN.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/MIXED/CMAIN.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/MIXED/FMAIN.FO$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/MIXED/FMAIN.FO$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/MIXED/FORTRAN.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/MIXED/FORTRAN.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/HELLO/HELLO.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/HELLO/HELLO.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/HELLO/HELLO.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/HELLO/HELLO.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/NTDLL/ASMDLL.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/NTDLL/ASMDLL.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/NTDLL/ASMDLL.DE$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/NTDLL/ASMDLL.DE$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/NTDLL/CASMDLL.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/NTDLL/CASMDLL.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/NTDLL/CMAIN.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/NTDLL/CMAIN.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/NTSAMPLE.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/NTSAMPLE.TX$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/SZSEARCH/MAIN.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/SZSEARCH/MAIN.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/SZSEARCH/MAIN.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/SZSEARCH/MAIN.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/SZSEARCH/SZSEARCH.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/SZSEARCH/SZSEARCH.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/THREADS/ASMTHRED.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/THREADS/ASMTHRED.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/THREADS/THREADS.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/THREADS/THREADS.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/NTSAMPLE/THREADS/THREADS.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/NTSAMPLE/THREADS/THREADS.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/PWBTUTOR/EXTRA.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/PWBTUTOR/EXTRA.TX$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/PWBTUTOR/RND.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/PWBTUTOR/RND.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/SAMPLES.TX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/SAMPLES.TX$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/SHOW/PAGER.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/SHOW/PAGER.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/SHOW/SHOW.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/SHOW/SHOW.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/SHOW/SHOW.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/SHOW/SHOW.IN$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/SHOW/SHOW.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/SHOW/SHOW.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/SHOW/SHOWUTIL.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/SHOW/SHOWUTIL.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/ALARM.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/ALARM.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/ALARM.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/ALARM.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/BELL.C$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/BELL.C$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/BELL.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/BELL.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/HANDLERS.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/HANDLERS.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/INSTALL.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/INSTALL.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/SNAP.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/SNAP.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/SNAP.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/SNAP.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/TSR.H$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/TSR.H$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/TSR/TSR.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/TSR/TSR.IN$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINCLOCK/APPENTRY.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINCLOCK/APPENTRY.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINCLOCK/WINCLOCK.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINCLOCK/WINCLOCK.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINCLOCK/WINCLOCK.DE$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINCLOCK/WINCLOCK.DE$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINCLOCK/WINCLOCK.IC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINCLOCK/WINCLOCK.IC$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINCLOCK/WINCLOCK.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINCLOCK/WINCLOCK.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINCLOCK/WINCLOCK.RC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINCLOCK/WINCLOCK.RC$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/APPENTRY.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/APPENTRY.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/DLL.IN$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/DLL.IN$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/DLLENTRY.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/DLLENTRY.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.DE$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.DE$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.EX$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.EX$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.H$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.H$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.IC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.IC$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.MA$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSDATA.RC$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSDATA.RC$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSINFO.AS$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSINFO.AS$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSINFO.DE$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSINFO.DE$ -------------------------------------------------------------------------------- /DISK4/SAMPLES/WINDLL/SYSINFO.MA$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK4/SAMPLES/WINDLL/SYSINFO.MA$ -------------------------------------------------------------------------------- /DISK5/HELP/ADVISOR.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK5/HELP/ADVISOR.HL$ -------------------------------------------------------------------------------- /DISK5/HELP/ALANG.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK5/HELP/ALANG.HL$ -------------------------------------------------------------------------------- /DISK5/HELP/LINK.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK5/HELP/LINK.HL$ -------------------------------------------------------------------------------- /DISK5/HELP/PWB.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK5/HELP/PWB.HL$ -------------------------------------------------------------------------------- /DISK5/HELP/QH.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK5/HELP/QH.HL$ -------------------------------------------------------------------------------- /DISK5/HELP/UTILS.HL$: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/DISK5/HELP/UTILS.HL$ -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAET02A.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAET02A.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAET02B.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAET02B.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAET05A.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAET05A.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAET05B.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAET05B.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETAPA.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETAPA.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETAPB.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETAPB.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETAPX.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETAPX.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC01.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC01.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC03.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC03.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC04.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC04.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC06.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC06.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC07.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC07.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC08.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC08.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC09.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC09.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC10.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC10.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC11.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC11.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC12.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC12.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC13.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC13.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC14.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC14.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC15.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC15.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC16.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC16.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC17.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC17.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC18.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC18.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC19.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC19.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC20.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC20.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETC21.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETC21.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETCPY.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETCPY.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETGLO.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETGLO.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETINT.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETINT.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETINX.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETINX.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETP01.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETP01.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETP02.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETP02.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETP03.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETP03.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETP04.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETP04.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETP05.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETP05.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETTOC.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETTOC.DOC -------------------------------------------------------------------------------- /Docs/DOC/Environment and Tools/LMAETTTL.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Environment and Tools/LMAETTTL.DOC -------------------------------------------------------------------------------- /Docs/DOC/Getting Started/LMATUC01.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Getting Started/LMATUC01.DOC -------------------------------------------------------------------------------- /Docs/DOC/Getting Started/LMATUC02.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Getting Started/LMATUC02.DOC -------------------------------------------------------------------------------- /Docs/DOC/Getting Started/LMATUC03.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Getting Started/LMATUC03.DOC -------------------------------------------------------------------------------- /Docs/DOC/Getting Started/LMATUTTL.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Getting Started/LMATUTTL.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGAPA.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGAPA.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGAPB.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGAPB.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGAPC.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGAPC.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGAPD.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGAPD.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGAPE.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGAPE.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC01.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC01.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC02.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC02.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC03.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC03.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC04.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC04.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC05.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC05.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC06.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC06.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC07.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC07.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC08.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC08.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC09.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC09.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC10.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC10.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC11.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC11.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC12.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC12.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGC13.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGC13.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGCPY.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGCPY.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGDFD.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGDFD.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGGLO.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGGLO.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGINT.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGINT.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGINX.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGINX.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGTOC.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGTOC.DOC -------------------------------------------------------------------------------- /Docs/DOC/Programmer's Guide/LMAPGTTL.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Programmer's Guide/LMAPGTTL.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC01.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC01.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC02.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC02.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC03.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC03.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC04.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC04.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC05.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC05.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC06.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC06.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFC07.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFC07.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFCPY.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFCPY.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFINT.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFINT.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFTOC.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFTOC.DOC -------------------------------------------------------------------------------- /Docs/DOC/Reference/LMARFTTL.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/DOC/Reference/LMARFTTL.DOC -------------------------------------------------------------------------------- /Docs/PDF/Environment and Tools.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/PDF/Environment and Tools.pdf -------------------------------------------------------------------------------- /Docs/PDF/Getting Started.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/PDF/Getting Started.pdf -------------------------------------------------------------------------------- /Docs/PDF/Programmer's Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/PDF/Programmer's Guide.pdf -------------------------------------------------------------------------------- /Docs/PDF/Reference.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Docs/PDF/Reference.pdf -------------------------------------------------------------------------------- /MASM/INCLUDE/BIOS.INC: -------------------------------------------------------------------------------- 1 | ; BIOS Interface Macros - Version 1.0 - for Microsoft Macro Assembler 5.0 2 | ; (C) Copyright Microsoft Corporation, 1987. 3 | 4 | .XCREF 5 | .XLIST 6 | IF1 7 | ; 0Fh 8 | @GetMode MACRO 9 | mov ah,0Fh 10 | int 10h 11 | ENDM 12 | ; 00h 13 | @SetMode MACRO mode 14 | mov al,mode 15 | xor ah,ah 16 | int 10h 17 | ENDM 18 | ; 0Bh 19 | @SetColor MACRO color 20 | sub bh,bh 21 | mov bl,color 22 | mov ah,0Bh 23 | int 10h 24 | ENDM 25 | ; 0Bh 26 | @SetPalet MACRO color 27 | mov bh,1 28 | mov bl,color 29 | mov ah,0Bh 30 | int 10h 31 | ENDM 32 | ; 05h 33 | @SetPage MACRO page 34 | mov al,page 35 | mov ah,05h 36 | int 10h 37 | ENDM 38 | ; 03h 39 | @GetCur MACRO page 40 | IFNB 41 | mov bh,page 42 | ELSE 43 | xor bh,bh 44 | ENDIF 45 | mov ah,03h 46 | int 10h 47 | ENDM 48 | ; 02h 49 | @SetCurPos MACRO column,row,page 50 | IFNB 51 | mov dl,column 52 | ENDIF 53 | IFNB 54 | mov dh,row 55 | ENDIF 56 | IFNB 57 | mov bh,page 58 | ELSE 59 | xor bh,bh 60 | ENDIF 61 | mov ah,02h 62 | int 10h 63 | ENDM 64 | ; 01h 65 | @SetCurSz MACRO first,last 66 | mov ch,first 67 | mov cl,last 68 | mov ah,01h 69 | int 10h 70 | ENDM 71 | ; 08h 72 | @GetChAtr MACRO page 73 | IFNB 74 | mov bh,page 75 | ELSE 76 | sub bh,bh 77 | ENDIF 78 | mov ah,08h 79 | int 10h 80 | ENDM 81 | ; 09h 82 | @PutChAtr MACRO char,atrib,page,repeat 83 | IFNB 84 | mov al,char 85 | ENDIF 86 | IFNB 87 | mov bl,atrib 88 | ENDIF 89 | IFNB 90 | mov bh,page 91 | ELSE 92 | xor bh,bh 93 | ENDIF 94 | IFNB 95 | mov cx,repeat 96 | ELSE 97 | mov cx,1 98 | ENDIF 99 | mov ah,09h 100 | int 10h 101 | ENDM 102 | ; 0Ah 103 | @PutCh MACRO char,atrib,page,repeat 104 | IFNB 105 | mov al,char 106 | ENDIF 107 | IFNB 108 | mov bl,atrib 109 | ENDIF 110 | IFNB 111 | mov bh,page 112 | ELSE 113 | xor bh,bh 114 | ENDIF 115 | IFNB 116 | mov cx,repeat 117 | ELSE 118 | mov cx,1 119 | ENDIF 120 | mov ah,0Ah 121 | int 10h 122 | ENDM 123 | ; 06h and 07h 124 | @Scroll MACRO distance,atrib,upcol,uprow,downcol,downrow 125 | IFDEF upcol 126 | mov cl,upcol 127 | ENDIF 128 | IFDEF uprow 129 | mov ch,uprow 130 | ENDIF 131 | IFDEF upcol 132 | mov dl,upcol 133 | ENDIF 134 | IFDEF updownrow 135 | mov dh,downrow 136 | ENDIF 137 | IFDEF atrib 138 | mov bh,atrib 139 | ELSE 140 | mov bh,07h 141 | ENDIF 142 | IF distance LE 0 143 | mov ax,0600h + (-(distance) AND 0FFh) 144 | ELSE 145 | mov ax,0700h + (distance AND 0FFh) 146 | ENDIF 147 | int 10h 148 | ENDM 149 | ; 08h, 06h, and 02h 150 | @Cls MACRO 151 | @GetChAtr 152 | mov bl,bh 153 | mov bh,ah 154 | sub cx,cx 155 | mov dx,184Fh 156 | mov ax,0600h 157 | int 10h 158 | mov bh,bl 159 | sub dx,dx 160 | mov ah,02h 161 | int 10h 162 | ENDM 163 | ENDIF 164 | .CREF 165 | .LIST 166 | 167 | -------------------------------------------------------------------------------- /MASM/INCLUDE/DOS.INC: -------------------------------------------------------------------------------- 1 | ; DOS Interface Macros - Version 1.0 - for Microsoft Macro Assembler 5.0 2 | ; (C) Copyright Microsoft Corporation, 1987, 1988. 3 | 4 | .XCREF 5 | .XLIST 6 | IF1 7 | ; Internal 8 | __LdAdr MACRO reg, adr 9 | IF (.TYPE (adr)) AND 00010000b ;; Register 10 | mov reg, adr 11 | ELSEIF (.TYPE (adr)) AND 00000100b ;; Constant 12 | mov reg, adr 13 | ELSEIF TYPE (adr) EQ 1 ;; Bytes 14 | mov reg, OFFSET adr 15 | ELSEIF TYPE (adr) EQ 2 ;; Near pointer 16 | mov reg, adr 17 | ELSEIF TYPE (adr) EQ 4 ;; Far pointer 18 | lds reg, adr 19 | ELSE 20 | .ERR 21 | %OUT Illegal argument 22 | ENDIF 23 | ENDM 24 | 25 | ; Internal 26 | __LdSeg MACRO dest, src 27 | IFIDNI , ;; Segment register 28 | mov ax, src 29 | mov dest, ax 30 | ELSEIFIDNI , 31 | mov ax, src 32 | mov dest, ax 33 | ELSEIFIDNI , 34 | mov ax, src 35 | mov dest, ax 36 | ELSEIFIDNI , 37 | mov ax, src 38 | mov dest, ax 39 | ELSEIF (.TYPE (src)) AND 00000100b ;; Constant 40 | mov ax, src 41 | mov dest, ax 42 | ELSE ;; Memory or general register 43 | mov dest, src 44 | ENDIF 45 | ENDM 46 | 47 | ; 01h, 07h, 08h, 0Ch 48 | @GetKey MACRO echo, cc, clear 49 | LOCAL funct, disp 50 | IFDIF , <0> 51 | IFDIF , <0> 52 | funct = 01h 53 | ELSE 54 | funct = 07h 55 | disp = 02h 56 | ENDIF 57 | ELSE 58 | IFDIF , <0> 59 | funct = 08h 60 | ELSE 61 | funct = 07h 62 | ENDIF 63 | ENDIF 64 | IFB 65 | mov ah, funct 66 | ELSE 67 | IFIDN , <0> 68 | mov ah, funct 69 | ELSE 70 | mov ah, 0Ch 71 | mov al, funct 72 | ENDIF 73 | ENDIF 74 | int 21h 75 | IFDEF disp 76 | mov dl, al 77 | mov ah, disp 78 | int 21h 79 | ENDIF 80 | ENDM 81 | 82 | ; 0Ah 83 | @GetStr MACRO ofset, terminator, limit, segmnt 84 | __LdAdr dx, 85 | IFNB 86 | __LdSeg ds, 87 | ENDIF 88 | mov ah, 0Ah 89 | mov si, dx 90 | IFNB 91 | mov BYTE PTR [si], limit 92 | ENDIF 93 | int 21h 94 | inc si 95 | mov bl, [si] 96 | sub bh, bh 97 | inc si 98 | IFNB 99 | mov BYTE PTR [bx+si], terminator 100 | ENDIF 101 | ENDM 102 | 103 | ; 02h 104 | @DispCh MACRO ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10 105 | mov ah, 02h 106 | IRP char, 107 | IFB 108 | EXITM 109 | ENDIF 110 | mov dl, char 111 | int 21h 112 | ENDM 113 | ENDM 114 | 115 | ; 05h 116 | @PrtCh MACRO ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10 117 | mov ah, 05h 118 | IRP char, 119 | IFB 120 | EXITM 121 | ENDIF 122 | mov dl, char 123 | int 21h 124 | ENDM 125 | ENDM 126 | 127 | ; 09h 128 | @DispStr MACRO ofset, segmnt 129 | __LdAdr dx, 130 | IFNB 131 | __LdSeg ds, 132 | ENDIF 133 | mov ah, 9 134 | int 21h 135 | ENDM 136 | 137 | ; 3Fh 138 | @Read MACRO ofset, bytes, handle, segmnt 139 | IFNB 140 | mov bx, handle 141 | ELSE 142 | sub bx, bx 143 | ENDIF 144 | mov cx, bytes 145 | __LdAdr dx, 146 | IFNB 147 | __LdSeg ds, 148 | ENDIF 149 | mov ah, 3Fh 150 | int 21h 151 | ENDM 152 | 153 | ; 40h 154 | @Write MACRO ofset, bytes, handle, segmnt 155 | IFNB 156 | mov bx, handle 157 | ELSE 158 | mov bx, 1 159 | ENDIF 160 | mov cx, bytes 161 | __LdAdr dx, 162 | IFNB 163 | __LdSeg ds, 164 | ENDIF 165 | mov ah, 40h 166 | int 21h 167 | ENDM 168 | 169 | ; 3Ch 170 | @MakFil MACRO path, atrib, segmnt, kind 171 | IFB 172 | sub cx, cx 173 | ELSE 174 | mov cx, atrib 175 | ENDIF 176 | __LdAdr dx, 177 | IFNB 178 | __LdSeg ds, 179 | ENDIF 180 | IFIDNI , 181 | mov ah, 5Ah 182 | ELSEIFIDNI , 183 | mov ah, 5Bh 184 | ELSE 185 | mov ah, 3Ch 186 | ENDIF 187 | int 21h 188 | ENDM 189 | 190 | ; 3Dh 191 | @OpenFil MACRO path, access, segmnt 192 | __LdAdr dx, 193 | IFNB 194 | __LdSeg ds, 195 | ENDIF 196 | mov ax, 3D00h + (access AND 0FFh) 197 | int 21h 198 | ENDM 199 | 200 | ; 3Eh 201 | @ClosFil MACRO handle 202 | mov bx, handle 203 | mov ah, 3Eh 204 | int 21h 205 | ENDM 206 | 207 | ; 41h 208 | @DelFil MACRO path, segmnt 209 | __LdAdr dx, 210 | IFNB 211 | __LdSeg ds, 212 | ENDIF 213 | mov ah, 41h 214 | int 21h 215 | ENDM 216 | 217 | ; 56h 218 | @MoveFil MACRO old, new, segold, segnew 219 | __LdAdr dx, 220 | __LdAdr di, 221 | IFNB 222 | __LdSeg ds, 223 | ENDIF 224 | IFNB 225 | __LdSeg es, 226 | ENDIF 227 | mov ah, 56h 228 | int 21h 229 | ENDM 230 | 231 | ; 4Eh 232 | @GetFirst MACRO path, atrib, segmnt 233 | IFNB 234 | mov cx, atrib 235 | ELSE 236 | sub cx, cx 237 | ENDIF 238 | __LdAdr dx, 239 | IFNB 240 | __LdSeg ds, 241 | ENDIF 242 | mov ah, 4Eh 243 | int 21h 244 | ENDM 245 | 246 | ; 4Fh 247 | @GetNext MACRO 248 | mov ah, 4Fh 249 | int 21h 250 | ENDM 251 | 252 | ; 2Fh 253 | @GetDTA MACRO 254 | mov ah, 2Fh 255 | int 21h 256 | ENDM 257 | 258 | ; 1Ah 259 | @SetDTA MACRO buffer, segmnt 260 | __LdAdr dx, 261 | IFNB 262 | __LdSeg ds, 263 | ENDIF 264 | mov ah, 1Ah 265 | int 21h 266 | ENDM 267 | 268 | ; Internal 269 | __LdDub MACRO dub 270 | IF TYPE (dub) EQ 2 271 | sub cx, cx 272 | mov dx, dub 273 | ELSEIF TYPE (dub) EQ 4 274 | mov cx, dub[2] 275 | mov dx, dub[0] 276 | ELSEIF TYPE (dub) EQ 0 277 | sub cx, cx 278 | mov dx, dub 279 | ELSE 280 | .ERR 281 | %OUT Illegal argument 282 | ENDIF 283 | ENDM 284 | 285 | ; 42h 286 | @GetFilSz MACRO handle 287 | mov bx, handle 288 | sub cx, cx 289 | sub dx, dx 290 | mov ax, 4202h 291 | int 21h 292 | push dx 293 | push ax 294 | sub dx, dx 295 | mov ax, 4200h 296 | int 21h 297 | pop ax 298 | pop dx 299 | ENDM 300 | 301 | ; 42h 302 | @MovePtrAbs MACRO handle, distance 303 | IFNB 304 | __LdDub 305 | ENDIF 306 | mov bx, handle 307 | mov ax, 4200h 308 | int 21h 309 | ENDM 310 | 311 | ; 42h 312 | @MovePtrRel MACRO handle, distance 313 | IFNB 314 | __LdDub 315 | ENDIF 316 | mov bx, handle 317 | mov ax, 4201h 318 | int 21h 319 | ENDM 320 | 321 | ; 39h 322 | @MkDir MACRO path, segmnt 323 | __LdAdr dx, 324 | IFNB 325 | __LdSeg ds, 326 | ENDIF 327 | mov ah, 39h 328 | int 21h 329 | ENDM 330 | 331 | ; 3Ah 332 | @RmDir MACRO path, segmnt 333 | __LdAdr dx, 334 | IFNB 335 | __LdSeg ds, 336 | ENDIF 337 | mov ah, 3Ah 338 | int 21h 339 | ENDM 340 | 341 | ; 3Bh 342 | @ChDir MACRO path, segmnt 343 | __LdAdr dx, 344 | IFNB 345 | __LdSeg ds, 346 | ENDIF 347 | mov ah, 3Bh 348 | int 21h 349 | ENDM 350 | 351 | ; 47h 352 | @GetDir MACRO buffer, drive, segmnt 353 | IFNB 354 | mov dl, drive 355 | ELSE 356 | sub dl, dl 357 | ENDIF 358 | __LdAdr si, 359 | IFNB 360 | __LdSeg ds, 361 | ENDIF 362 | mov ah, 47h 363 | int 21h 364 | ENDM 365 | 366 | ; 19h 367 | @GetDrv MACRO 368 | mov ah, 19h 369 | int 21h 370 | ENDM 371 | 372 | ; 0Eh 373 | @SetDrv MACRO drive 374 | mov dl, drive 375 | mov ah, 0Eh 376 | int 21h 377 | ENDM 378 | 379 | ; 36h 380 | @ChkDrv MACRO drive 381 | IFNB 382 | mov dl, drive 383 | ELSE 384 | sub dl, dl 385 | ENDIF 386 | mov ah, 36h 387 | int 21h 388 | ENDM 389 | 390 | ; 4Ch 391 | @Exit MACRO return 392 | IFB 393 | mov ah, 4Ch 394 | ELSE 395 | mov ax, 4C00h + (return AND 0FFh) 396 | ENDIF 397 | int 21h 398 | ENDM 399 | 400 | ; 4Bh 401 | @Exec MACRO path, parms, segpath, segparms, overlay 402 | __LdAdr dx, 403 | __LdAdr bx, 404 | IFNB 405 | __LdSeg ds, 406 | ENDIF 407 | IFNB 408 | __LdSeg es, 409 | ENDIF 410 | IFB 411 | mov ax, 4B00h 412 | ELSE 413 | mov ax, 4B03h 414 | ENDIF 415 | int 21h 416 | ENDM 417 | 418 | ; 4Dh 419 | @GetRet MACRO 420 | mov ah, 4Dh 421 | int 21h 422 | ENDM 423 | 424 | ; 31h 425 | @TSR MACRO paragraphs, return 426 | mov dx, paragraphs 427 | IFB 428 | mov ah, 31h 429 | ELSE 430 | mov ax, 3100h + (return AND 0FFh) 431 | ENDIF 432 | int 21h 433 | ENDM 434 | 435 | ; 49h 436 | @FreeBlok MACRO segmnt 437 | IFNB 438 | __LdSeg es, 439 | ENDIF 440 | mov ah, 49h 441 | int 21h 442 | ENDM 443 | 444 | ; 48h 445 | @GetBlok MACRO graphs 446 | LOCAL tryit 447 | mov bx, graphs 448 | tryit: mov ah, 48h 449 | int 21h 450 | jc tryit 451 | ENDM 452 | 453 | ; 4Ah 454 | @ModBlok MACRO graphs, segmnt 455 | IFNB 456 | __LdSeg es, 457 | ENDIF 458 | mov bx, graphs 459 | mov ah, 4Ah 460 | int 21h 461 | ENDM 462 | 463 | ; 2Ah 464 | @GetDate MACRO 465 | mov ah, 2Ah 466 | int 21h 467 | ENDM 468 | 469 | ; 2Bh 470 | @SetDate MACRO month, day, year 471 | mov cx, year 472 | mov dh, month 473 | mov dl, day 474 | mov ah, 2Bh 475 | int 21h 476 | ENDM 477 | 478 | ; 2Ch 479 | @GetTime MACRO 480 | mov ah, 2Ch 481 | int 21h 482 | ENDM 483 | 484 | ; 2Dh 485 | @SetTime MACRO hour, minutes, seconds, hundredths 486 | mov ch, hour 487 | mov cl, minutes 488 | mov dh, seconds 489 | mov dl, hundredths 490 | mov ah, 2Dh 491 | int 21h 492 | ENDM 493 | 494 | ; 30h 495 | @GetVer MACRO 496 | mov ah, 30h 497 | int 21h 498 | ENDM 499 | 500 | ; 35h 501 | @GetInt MACRO interrupt 502 | mov ax, 3500h + (interrupt AND 0FFh) 503 | int 21h 504 | ENDM 505 | 506 | ; 25h 507 | @SetInt MACRO interrupt, vector, segmnt 508 | IF TYPE (vector) GE 0FFFEh 509 | mov dx, OFFSET vector 510 | mov ax, SEG vector 511 | mov ds, ax 512 | ELSE 513 | __LdAdr dx, 514 | IFNB 515 | __LdSeg ds, 516 | ENDIF 517 | ENDIF 518 | mov ax, 2500h + (interrupt AND 0FFh) 519 | int 21h 520 | ENDM 521 | 522 | ENDIF ; Pass 1 523 | .CREF 524 | .LIST 525 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED.INC: -------------------------------------------------------------------------------- 1 | ; High-Level-Language Interface Macros - Version 2.0 2 | ; for Microsoft Macro Assembler 5.10 3 | ; (C) Copyright Microsoft Corporation, 1987. 4 | 5 | ; Syntax Purpose 6 | ; ------ ------- 7 | ; 8 | ; setModel Sets model from text equate 9 | ; 10 | ; hProc [,] [,arg[:type] [,arg[:type]]]... 11 | ; Starts a procedure with optional stack arguments 12 | ; 13 | ; hLocal var[:type] [,var[:type]]... 14 | ; Defines local stack variables 15 | ; 16 | ; hRet Returns from the current procedure 17 | ; 18 | ; hEndp Ends the current procedure 19 | ; 20 | ; ifFP statement Assembles statement if far data 21 | ; 22 | ; FPoperand Conditionally provides ES override for data 23 | ; 24 | ; pLes register,address Conditionally loads data through ES 25 | ; 26 | ; pLds register,address Conditionally loads data through DS 27 | 28 | ;if1 29 | 30 | ; Translate command-line arguments 31 | 32 | 33 | ; Initialize procName 34 | 35 | procName equ 36 | 37 | ; Set model passed from command line 38 | 39 | setModel macro mod 40 | 41 | ifdef cLang 42 | .model mod, C 43 | lang EQU 44 | elseifdef BASIC 45 | .model mod, Basic 46 | elseifdef FORTRAN 47 | .model mod, FORTRAN 48 | elseifdef Pascal 49 | .model mod, Pascal 50 | endif 51 | 52 | ; FP - supply far pointer ES overide as needed - must be inside for setModel 53 | 54 | if @DataSize 55 | FP equ 56 | else 57 | FP equ <> 58 | endif 59 | 60 | endm 61 | 62 | ; FP - supply far pointer ES overide as needed - must be outside for .MODEL 63 | 64 | ifdef @DataSize 65 | if @DataSize 66 | FP equ 67 | else 68 | FP equ <> 69 | endif 70 | endif 71 | 72 | ; Declare high level routine and parameters 73 | 74 | hProc macro funName, a,b,c,d,e,f,g,h,i,j 75 | ; LOCAL argstr 76 | 77 | ii instr ,< > 78 | if ii 79 | procName subStr ,1,ii 80 | nearFar subStr ,ii 81 | else 82 | procName equ 83 | nearFar equ <> 84 | endif 85 | 86 | argstr equ 87 | irp arg, 88 | ifnb 89 | argstr catstr argstr,<, arg> 90 | else 91 | exitm 92 | endif 93 | endm 94 | defineProc %nearFar, %argstr 95 | endm 96 | 97 | defineProc Macro size,args 98 | procName proc size args 99 | endm 100 | 101 | ; Declare local stack variables 102 | 103 | hLocal macro a,b,c,d,e,f,g,h,i,j 104 | ; LOCAL argstr 105 | argstr EQU 106 | irp arg, 107 | ifnb 108 | argstr catstr argstr,<, arg> 109 | else 110 | exitm 111 | endif 112 | endm 113 | defineLocal %argstr 114 | endm 115 | 116 | defineLocal macro args 117 | &local args 118 | endm 119 | 120 | ; Generate high level return 121 | 122 | hRet macro 123 | ret 124 | endm 125 | 126 | ; End a high level procedure 127 | 128 | hEndp macro 129 | procName endp 130 | endm 131 | 132 | ; Execute instruction if far data 133 | 134 | ifFP macro a,b,c,d,e,f,g,h,i,j 135 | 136 | if @DataSize 137 | a b c d e f g h i j 138 | endif 139 | endm 140 | 141 | ; Load 16/32 bit pointers into [ES:] reg 142 | 143 | pLes macro reg, address 144 | 145 | if @DataSize 146 | 147 | les reg,address 148 | else 149 | mov reg,address 150 | 151 | endif 152 | endm 153 | 154 | ;Load 16/32 bit pointers into [DS:] reg 155 | 156 | pLds macro reg, address 157 | 158 | if @DataSize 159 | 160 | lds reg,address 161 | else 162 | mov reg,address 163 | 164 | endif 165 | endm 166 | 167 | ;endif ; Pass 1 only 168 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/BA.ASM: -------------------------------------------------------------------------------- 1 | 2 | .MODEL medium 3 | .CODE 4 | 5 | ; BASIC function for QuickBASIC, Version 4 and future versions 6 | ; of Microsoft and IBM BASIC Compilers 7 | 8 | PUBLIC Power2 9 | Power2 PROC 10 | push bp ; Entry sequence - save old BP 11 | mov bp,sp ; Set stack framepointer 12 | 13 | mov bx,[bp+8] ; Load Arg1 into 14 | mov ax,[bx] ; AX 15 | mov bx,[bp+6] ; Load Arg2 into 16 | mov cx,[bx] ; CX 17 | shl ax,cl ; AX = AX * (2 to power of CX) 18 | ; Leave return value in AX 19 | 20 | pop bp ; Restore old framepointer 21 | ret 4 ; Exit, and restore 4 bytes of args 22 | Power2 ENDP 23 | 24 | ; BASIC subprogram for QuickBASIC, Versions 1, 2, and 3; 25 | ; for the Microsoft BASIC Compiler through Version 5.36 26 | ; for the IBM BASIC Compiler through Version 2.02 27 | 28 | PUBLIC Power2S 29 | Power2S PROC 30 | push bp ; Entry sequence - save old BP 31 | mov bp,sp ; Set stack framepointer 32 | 33 | mov bx,[bp+10] ; Load Arg1 into 34 | mov ax,[bx] ; AX 35 | mov bx,[bp+8] ; Load Arg2 into 36 | mov cx,[bx] ; CX 37 | shl ax,cl ; AX = AX * (2 to power of CX) 38 | mov bx,[bp+6] ; Store result in 39 | mov [bx],ax ; Arg3 40 | 41 | pop bp ; Restore old framepointer 42 | ret 4 ; Exit, and restore 4 bytes of args 43 | Power2S ENDP 44 | END 45 | 46 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/BAMAIN.BAS: -------------------------------------------------------------------------------- 1 | DEFINT A-Z 2 | 3 | ' Function call for QuickBASIC, Version 4, 4 | ' and for future versions of Microsoft and IBM BASIC Compilers 5 | ' Comment out for older versions 6 | 7 | DECLARE FUNCTION Power2(A AS INTEGER, B AS INTEGER) 8 | PRINT "3 times 2 to the power of 5 is "; 9 | PRINT Power2(3,5) 10 | 11 | ' Subprogram equivalent to function for QuickBASIC, Versions 1, 2, and 3; 12 | ' for the Microsoft BASIC Compiler through Version 5.36 13 | ' for the IBM BASIC Compiler through Version 2.02 14 | 15 | ' A = 3 16 | ' B = 5 17 | ' CALL Power2S(3, 5, C) 18 | ' PRINT "3 times 2 to the power of 5 is "; C 19 | 20 | END 21 | 22 | 23 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/CA.ASM: -------------------------------------------------------------------------------- 1 | 2 | .MODEL SMALL 3 | .CODE 4 | PUBLIC _Power2 5 | _Power2 PROC 6 | push bp ;Entry sequence 7 | mov bp,sp 8 | 9 | mov ax,[bp+4] ; Load Arg1 into AX 10 | mov cx,[bp+6] ; Load Arg2 into CX 11 | shl ax,cl ; AX = AX * (2 to power of CX) 12 | ; Leave return value in AX 13 | 14 | pop bp ; Exit sequence 15 | ret 16 | _Power2 ENDP 17 | END 18 | 19 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/CAMAIN.C: -------------------------------------------------------------------------------- 1 | 2 | extern int Power2(int,int); 3 | 4 | main() 5 | { 6 | printf("3 times 2 to the power of 5 is %d\n", Power2(3,5)); 7 | } 8 | 9 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/FA.ASM: -------------------------------------------------------------------------------- 1 | 2 | .MODEL large 3 | .CODE 4 | PUBLIC Power2 5 | Power2 PROC 6 | push bp ; Entry sequence - save old BP 7 | mov bp,sp ; Set stack framepointer 8 | 9 | les bx,[bp+10] ; Load Arg1 into 10 | mov ax,[bx] ; AX 11 | les bx,[bp+6] ; Load Arg2 into 12 | mov cx,[bx] ; CX 13 | shl ax,cl ; AX = AX * (2 to power of CX) 14 | ; Leave return value in AX 15 | 16 | pop bp ; Restore old framepointer 17 | ret 4 ; Exit, and restore 4 bytes of args 18 | Power2 ENDP 19 | END 20 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/FAMAIN.FOR: -------------------------------------------------------------------------------- 1 | 2 | INTERFACE TO INTEGER*2 FUNCTION POWER2(A,B) 3 | INTEGER*2 A,B 4 | END 5 | C 6 | INTEGER*2 POWER2 7 | INTEGER*2 A,B 8 | A = 3 9 | B = 5 10 | WRITE (*,*) '3 times 2 to the power of 5 is ',POWER2(A,B) 11 | END 12 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/MIXED.DOC: -------------------------------------------------------------------------------- 1 | Converting Mixed-Language Source Files 2 | 3 | This directory contains mixed-language example programs and macros. 4 | 5 | The following source files are the sample programs from Chapter 6, 6 | "Assembly-to-High-Level Interface," of the Mixed-Language Programming 7 | Guide: 8 | 9 | BA.ASM Assembly module to be called from BASIC 10 | CA.ASM Assembly module to be called from C 11 | FA.ASM Assembly module to be called from FORTRAN 12 | PA.ASM Assembly module to be called from Pascal 13 | BAMAIN.BAS BASIC main program that calls assembly module 14 | CAMAIN.C C main program that calls assembly module 15 | FAMAIN.FOR FORTRAN main program that calls assembly module 16 | PAMAIN.PAS Pascal main program that calls assembly module 17 | 18 | In addition, the following files are provided: 19 | 20 | POWER2.ASM Macro version of assembly module that can be called 21 | from BASIC, C, FORTRAN, or Pascal. 22 | MIXED.INC Mixed language macros. 23 | MIXED.DOC This file. 24 | 25 | The version of MIXED.INC provided with MASM 5.1 is smaller than the 26 | MASM 5.0 version because most of the functionality has now been built 27 | into MASM and the macros are no longer needed. The following macros 28 | are still supported in MIXED.INC: 29 | 30 | Macro Purpose 31 | 32 | ifFP Assembles statement if the memory model uses far data 33 | 34 | FP Provides ES override if the memory model uses far data 35 | 36 | pLes Loads data (through ES for far data) 37 | 38 | pLds Loads data (through DS for far data) 39 | 40 | To use these macros with MASM 5.1, you should include MIXED.INC after 41 | using .MODEL. The macro syntax is shown below: 42 | 43 | ifFP statement 44 | 45 | Assembles the statement if the memory model uses far data. This 46 | macro can be used to push segment registers or take other 47 | action that is only required for far data. For example, 48 | 49 | ifFP push ds 50 | 51 | pushes the DS register in compact, large, and huge memory 52 | models, but has no effect in small and medium models. 53 | 54 | FPoperand 55 | 56 | Gives an ES override if the memory model uses far data. In 57 | models that use near data, FP is null. For example, 58 | 59 | mov ax,FP[bx] 60 | 61 | assembles as 62 | 63 | mov ax,es:[bx] 64 | 65 | in compact, large, and huge memory models, but as 66 | 67 | mov ax,[bx] 68 | 69 | in small and medium models. 70 | 71 | pLes register,address 72 | pLds register,address 73 | 74 | Loads a pointer from the specified address to the specified 75 | register. If the memory model uses far data, the segment 76 | portion of the address will be moved into ES or DS, depending 77 | on the macro used. For example, 78 | 79 | pLes bx,arg1 80 | 81 | is assembled as 82 | 83 | les bx,arg1 84 | 85 | in compact, large, and huge memory models, but as 86 | 87 | mov bx,arg1 88 | 89 | in small and medium models. 90 | 91 | The other macros in the MASM 5.0 version of MIXED.INC are provided for 92 | compatibility with MASM 5.0, but are not documented. The rest of this 93 | file discusses compatibility options for source code that uses 5.0 94 | high-level-language macros. If you did not own MASM 5.0, you should 95 | ignore the rest of this file. Do not use the other macros in 96 | MIXED.INC. 97 | 98 | You can use the following macros if you have source code that uses the 99 | macros provided with MASM 5.0. 100 | 101 | Macro Purpose 102 | 103 | setModel Sets memory model passed from a DOS command line. 104 | No longer needed because the expression operator 105 | now enables you to evaluate text macros passed 106 | from the command line directly. 107 | 108 | hProc Initializes a procedure. Replaced by new 109 | attributes of the PROC directive when you 110 | specify a language argument to the .MODEL 111 | directive. 112 | 113 | hLocal Initializes local variables. Replaced by new 114 | functionality of the LOCAL directive. 115 | 116 | hRet Returns from a procedure. Replaced by new 117 | functionality of the RET instruction. 118 | 119 | hEndp Terminates a procedure. Replaced by new 120 | functionality of the ENDP directive. 121 | 122 | The 5.1 versions of these macros are different than the MASM 5.0 123 | versions. The new macros use new MASM features to simulate the same 124 | functionality more efficiently. Do not use the MIXED.INC provided with 125 | MASM 5.0. It will not work under MASM 5.1. 126 | 127 | Rather than use the old macros, you may want to convert your source 128 | files to use the built-in mixed language features of MASM 5.1. The 129 | conversion is straightforward and can be done easily with a text 130 | editor. 131 | 132 | The following changes can be made to source files that use macros from 133 | the 5.0 MIXED.INC. The source file POWER2.ASM on the MASM 5.1 134 | distribution disk is an example of a converted source file. You can 135 | compare it with the POWER2.ASM supplied with MASM 5.0. 136 | 137 | o You must define a a memory model argument and a language argument 138 | to the .MODEL directive to use the new mixed-language features of 139 | MASM 5.1. You can do this within the source file: 140 | 141 | .MODEL small, c 142 | 143 | Alternately, you can pass the arguments in from the command line 144 | using /D. In MASM 5.0, you had to use the setModel macro to 145 | receive a model argument passed on the command line. You only 146 | needed to define the language symbol "cLang" for C; no 147 | definition was needed for other languages. 148 | 149 | The 5.0 source line to accept the argument would be: 150 | 151 | setModel 152 | 153 | For MASM 5.1, change to: 154 | 155 | % .MODEL model,lang 156 | 157 | Notice that the expression operator (%) is required so that MASM 158 | can evaluate text arguments passed from the command line. 159 | 160 | The 5.0 command line to define C small model would be: 161 | 162 | MASM /MX /Dmodel=small /DcLang power2; 163 | 164 | For MASM 5.1, change this to: 165 | 166 | MASM /MX /Dmodel=small /Dlang=C power2; 167 | 168 | o Replace references to the hProc macro with the PROC directive. 169 | Remember, new features of the PROC directive only work when a 170 | language argument is given for the .MODEL directive. The 5.0 171 | macro syntax was: 172 | 173 | hProc [,] [,arglist] 174 | 175 | The 5.1 syntax is: 176 | 177 | name PROC [NEAR|FAR] [,USES reglist] [,arglist] 178 | 179 | The syntax for each MASM 5.0 argument in the arglist was 180 | 181 | argument[:[NEAR|FAR] type] 182 | 183 | where the type could be BYTE, WORD, DWORD, FWORD, QWORD, TBYTE, or 184 | PTR (to indicate that the variable is a pointer). 185 | 186 | The syntax for each MASM 5.1 argument is: 187 | 188 | argument[:[[NEAR|FAR] PTR] type] 189 | 190 | where the type can be BYTE, WORD, DWORD, FWORD, QWORD, TBYTE, or a 191 | structure type. Note that structure types can now be given. Also, 192 | PTR is part of the syntax rather than a type. If PTR is given with 193 | a type, then it means that the variable is a pointer to a variable 194 | of the given type. This information makes no difference in what 195 | MASM assembles, but it can be used by the CodeView debugger. 196 | 197 | For example, consider the following MASM 5.0 source line: 198 | 199 | hProc , , count:BYTE, array:PTR, number 200 | 201 | It should be changed to the following for MASM 5.1: 202 | 203 | doTask PROC FAR USES si di, count:BYTE, array:PTR WORD, number 204 | 205 | Notice that the array is now declared as pointer to a word (or an 206 | array of words). In the 5.0 syntax it was simply a pointer to an 207 | object of undefined size. 208 | 209 | o Replace references to the hLocal macro with the LOCAL directive. 210 | The syntax for the 5.0 hLocal macro was: 211 | 212 | hLocal varlist 213 | 214 | The MASM 5.1 syntax is: 215 | 216 | LOCAL varlist 217 | 218 | The syntax for each 5.0 variable was: 219 | 220 | variable[:[NEAR|FAR] type] 221 | 222 | The syntax for each 5.1 variable is: 223 | 224 | variable[[count]][:[[NEAR|FAR] PTR] type] 225 | 226 | The difference is the same as the difference for arguments to the 227 | PROC directive. In addition, you can allocate local arrays by 228 | specifying a count (in brackets) following the variable name. For 229 | example: 230 | 231 | LOCAL work[20]:WORD, string:PTR BYTE 232 | 233 | This allocates a local array of 20 words called "work" and a 234 | pointer to byte (called "string"). 235 | 236 | o Replace references to the hRet macro with the RET instruction. 237 | 238 | o Replace references to the hEndp macro with the ENDP directive 239 | preceded by the procedure name. For example, change 240 | 241 | hEndp 242 | 243 | to 244 | procname ENDP 245 | 246 | o Under MASM 5.1, labels within a procedure are local to the 247 | procedure if the language argument is given for the .MODEL 248 | directive. For example, if you use the label "exit:" in one 249 | procedure, you can use it again in another procedure. A label 250 | inside a procedure can be made global to the source file by 251 | putting two colons after it (example, "glabel::"). Under MASM 252 | 5.0 all labels were global to the source file. 253 | 254 | o Note that the 5.0 macros did not automatically handle 80386 255 | features such as 32-bit pointers. The 5.1 features do. For 256 | example, if you use the .386 directive before the .MODEL directive 257 | to enable 32-bit segments, near pointers declared with PTR will be 258 | 32 bits wide and far pointers will be 48 bits wide. 259 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/PA.ASM: -------------------------------------------------------------------------------- 1 | 2 | .MODEL medium 3 | .CODE 4 | PUBLIC Power2 5 | Power2 PROC 6 | push bp ; Entry sequence - save old BP 7 | mov bp,sp ; Set stack framepointer 8 | 9 | mov ax,[bp+8] ; Load Arg1 into AX 10 | mov cx,[bp+6] ; Load Arg2 into CX 11 | shl ax,cl ; AX = AX * (2 to power of CX) 12 | ; Leave return value in AX 13 | 14 | pop bp ; Restore old framepointer 15 | ret 4 ; Exit, and restore 4 bytes of args 16 | Power2 ENDP 17 | END 18 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/PAMAIN.PAS: -------------------------------------------------------------------------------- 1 | 2 | program Asmtest(input, output); 3 | function Power2(a:integer; b:integer): integer; extern; 4 | begin 5 | writeln('3 times 2 to the power of 5 is ', Power2(3,5)); 6 | end. 7 | -------------------------------------------------------------------------------- /MASM/INCLUDE/MIXED/POWER2.ASM: -------------------------------------------------------------------------------- 1 | ; Default command line for BASIC: MASM /Dmodel=medium /Dlang=BASIC power2; 2 | ; Default command line for C: MASM /MX /Dmodel=small /Dlang=C power2; 3 | ; Default command line for FORTRAN: MASM /Dmodel=large /Dlang=FORTRAN power2; 4 | ; Default command line for Pascal: MASM /Dmodel=large /Dlang=Pascal power2; 5 | 6 | % .MODEL model,lang 7 | INCLUDE mixed.inc 8 | 9 | % IFIDNI , 10 | reference EQU 1 11 | % ELSEIFIDNI , 12 | reference EQU 1 13 | ENDIF 14 | 15 | .CODE 16 | 17 | ; Function for C, FORTRAN, Pascal, Version 4 of QuickBASIC, and 18 | ; future versions of Microsoft and IBM BASIC Compilers 19 | 20 | IFDEF reference ; Pass by reference for BASIC or FORTRAN 21 | Power2 PROC Value:PTR WORD, Count:PTR WORD 22 | 23 | pLes bx,Value ; Load arguments passed by reference 24 | mov ax,FP[bx] 25 | pLes bx,Count 26 | mov cx,FP[bx] 27 | 28 | ELSE ; Pass by value for C or Pascal 29 | Power2 PROC Value, Count 30 | 31 | mov ax,Value ; Load arguments passed by value 32 | mov cx,Count 33 | ENDIF 34 | 35 | shl ax,cl ; AX = AX * (2 to power of CL) 36 | ; Return result in AX 37 | ret 38 | Power2 ENDP 39 | 40 | IFIDNI , 41 | 42 | ; Subprogram for QuickBASIC, Versions 1, 2, and 3; 43 | ; for the Microsoft BASIC Compiler through Version 5.36 44 | ; for the IBM BASIC Compiler through Version 2.02 45 | 46 | Power2S PROC Value:PTR WORD, Count:PTR WORD, RetVal:PTR WORD 47 | 48 | pLes bx,Value ; Load BASIC arguments 49 | mov ax,FP[bx] ; passed by reference 50 | pLes bx,Count 51 | mov cx,FP[bx] 52 | 53 | shl ax,cl ; AX = AX * (2 to power of CL) 54 | 55 | pLes bx,RetVal ; Load return address 56 | mov FP[bx],ax ; and store result in it 57 | 58 | ret 59 | Power2S ENDP 60 | ENDIF ; BASIC 61 | END 62 | 63 | -------------------------------------------------------------------------------- /MASM/MACRO.DOC: -------------------------------------------------------------------------------- 1 | Calling Macros in DOS.INC and BIOS.INC 2 | 3 | You are responsible for saving and restoring registers used in 4 | macros. The "Registers used" field identifies registers to save. 5 | 6 | Macros that accept address parameters use internal macros that 7 | allow you to specify addresses in several ways. The macro 8 | automatically identifies the type of the argument and handles it 9 | appropriately. For example, assume the following declarations: 10 | 11 | String DB "test$" 12 | pString DW Str 13 | fpString DD Str 14 | 15 | Given these values, the macro @DispStr (which displays the string 16 | at DS:DX) has the following effects: 17 | 18 | Kind of argument Example Value loaded 19 | 20 | Label of byte variable @DispStr String DS:OFFSET String 21 | Near pointer variable @DispStr pString DS:pString 22 | Far pointer variable @DispStr fpString fpString[2]:fpString[0] 23 | Constant @DispStr 0 DS:0 24 | Pointer in register @DispStr si DS:SI 25 | Near Pointer with segment @DispStr pString,es ES:pString 26 | Constant with segment @DispStr 0,es ES:0 27 | Register with segment @DispStr di,es ES:DI 28 | 29 | Note that if a far pointer or a segment is given, DS must be 30 | saved before the macro call and restored afterward. Segments may 31 | be given as registers, constants, or word variables. 32 | 33 | In syntax, parameters enclosed in brackets are optional. 34 | Paramaters sometimes have a leading symbol to indicate that the 35 | argument must have a certain type, as shown below: 36 | 37 | Leading Symbol Example Limitation 38 | 39 | # #return Must be constant 40 | & &vector Must be offset address as described above 41 | $ $terminator May be constant or register, but not memory 42 | 43 | Parameters with no leading symbol may be constants, registers, or 44 | variables. Parameters are 16-bit except where noted in the description. 45 | 46 | Symbols must be previously defined before they can be passed as 47 | arguments to most of the DOS macros. Generally this means that 48 | data must be declared before code in the source file. 49 | 50 | DOS Macro Syntax and Description 51 | 52 | KEYBOARD INPUT 53 | 54 | @GetKey (01h, 07h, 08h, 0Ch) 55 | 56 | Gets a keystroke from the keyboard 57 | 58 | Syntax: @GetKey [#echo] [,[#break] [,#clearbuf]] 59 | 60 | Arguments: echo = nonzero to echo keystroke - default yes 61 | break = nonzero to accept Control-C - default yes 62 | clearbuf = nonzero to clear keyboard buffer - default no 63 | (Arguments may be omitted to get defaults) 64 | Return: ASCII code of key in AL 65 | Registers used: AX used for all, DL used if echo on and ctrl-c off 66 | 67 | 68 | @GetStr (0Ah) 69 | 70 | Gets a string from the keyboard 71 | 72 | Syntax: @GetStr &buffer [,[$terminator] [,[#limit] [,segment]]] 73 | 74 | Arguments: buffer = Offset of buffer where string will be stored 75 | Byte 1 = Maximum length of string (before call) 76 | Byte 2 = Actual length of string (after call) 77 | Byte 3+ = Bytes of string 78 | terminator = Terminating byte - usually null (0) or $ (24h) 79 | limit = Maximum length of string (if not given as 80 | argument, must be in buffer before macro call) 81 | segment = Segment of buffer (DS if not given) 82 | Return: Pointer to string in SI, length of string in BX 83 | Registers used: AX, DX, BX, SI 84 | 85 | OUTPUT 86 | 87 | @DispCh (02h) 88 | 89 | Displays one or more characters to screen 90 | 91 | Syntax: @DispCh char [,char]... 92 | 93 | Arguments: char = 8-bit ASCII code 94 | Return: Code in AL 95 | Registers used: AX and DL 96 | 97 | 98 | @PrtCh (05h) 99 | 100 | Prints one or more characters to LPT1 101 | 102 | Syntax: @PrtCh char [,char]... 103 | 104 | Arguments: char = 8-bit ASCII code 105 | Return: Code in AL 106 | Registers used: AX and DL 107 | 108 | 109 | @DispStr (09h) 110 | 111 | Displays a $-terminated string 112 | 113 | Syntax: @DispStr &address [,segment] 114 | 115 | Arguments: address = Address of string terminated by "$" (24h) 116 | segment = Segment of address string (DS if not given) 117 | Return: None 118 | Registers used: AX and DS 119 | 120 | DEVICE I/O 121 | 122 | @Read (3Fh) 123 | 124 | Reads data from a file or device 125 | 126 | Syntax: @Read &buffer, length [,[handle] [,segment]] 127 | 128 | Arguments: buffer = Offset of buffer where data will be stored 129 | length = Length of data in bytes 130 | handle = File or device handle; if none given, 131 | keyboard (handle 0) is assumed 132 | segment = Segment of address string (DS if not given) 133 | Return: If carry clear, bytes read in AX 134 | Registers used: Always AX, DX, BX, and CX; DS if segment changed 135 | 136 | 137 | @Write (40h) 138 | 139 | Writes data to a file or device 140 | 141 | Syntax: @Write &buffer, length, [,[handle] [,segment]] 142 | 143 | Arguments: buffer = Offset of buffer where data is stored 144 | length = Length of data in bytes 145 | handle = File or device handle; if none given, screen 146 | (handle 1) is assumed 147 | segment = Segment of address string (DS if not given) 148 | Return: If carry clear, bytes written in AX 149 | Registers used: Always AX, DX, BX, and CX; DS if segment changed 150 | 151 | FILE CONTROL 152 | 153 | @MakeFil (3Ch, 5Ah, 5Bh) 154 | 155 | Creates a file 156 | 157 | Syntax: @MakeFil &path [,[attrib] [,[segment] [,#kind]]] 158 | 159 | Arguments: path = ASCIIZ string of file 160 | attrib = File atrribute (0 is default if none given) 161 | segment = Segment of address string (DS if not given) 162 | kind = If none given, a file is always created even if 163 | one already exists. Under DOS 3+ "tmp" can be 164 | given to create a unique file or "new" to create 165 | file only if one doesn't already exist. 166 | Return: If carrry clear, file handle in AX 167 | Registers used: Always AX, DX, and CX; DS if segment changed 168 | 169 | 170 | @OpenFil (3Dh) 171 | 172 | Opens a file for input or output 173 | 174 | Syntax: @OpenFil &path, #access [,segment] 175 | 176 | Arguments: path = ASCIIZ string of file 177 | access = File access code 178 | segment = Segment of address string (DS if not given) 179 | Return: If carrry set, error code in AX 180 | Registers used: Always AX and DX; DS if segment changed 181 | 182 | 183 | @ClosFil (3Eh) 184 | 185 | Closes an open file handle 186 | 187 | Syntax: @ClosFil handle 188 | 189 | Arguments: handle = Previously opened file handle 190 | Return: If carrry set, error code in AX 191 | Registers used: AX and BX 192 | 193 | 194 | @DelFil (41h) 195 | 196 | Deletes a specified file 197 | 198 | Syntax: @DelFil &path [,segment] 199 | 200 | Arguments: path = Offset of ASCIIZ filespec 201 | segment = Segment of path (DS if none given) 202 | Return: If carrry set, error code in AX 203 | Registers used: AX and DX; DS if segment changed 204 | 205 | @MoveFil (56h) 206 | 207 | Moves or renames a file by changing its path specification. 208 | 209 | Syntax: @MoveFil &old, &new [,[segold] [,segnew]] 210 | 211 | Arguments: old = Offset of file spec to be renamed 212 | new = Offset of new file spec 213 | segold = Segment of old name (DS if none given) 214 | segnew = Segment of new name (ES if none given) 215 | Return: If carry set, error code in AX 216 | Registers used: AX, DX, and DI; DS and ES if corresponding segments changed 217 | 218 | 219 | @GetFirst (4Eh) and @GetNext (4Fh) 220 | 221 | Parses file specifications (optionally including wild cards) into 222 | file names 223 | 224 | Syntax: @GetFirst &path [,[attribute] [,segment]] 225 | @GetNext 226 | 227 | Arguments: path = Offset of ASCIIZ filespec (can have wild cards) 228 | attribute = File attribute to search for (0 for normal if 229 | none given) 230 | segment = Segment of path (DS if none given) 231 | Return: If carrry set, error code in AX 232 | Registers used: @GetFirst = AX, CX, and DX; DS if segment changed 233 | @GetNext = AX only 234 | 235 | 236 | @GetDTA (1Ah) and @SetDTA (2Fh) 237 | 238 | Gets or sets the Disk Transfer Address (DTA) 239 | 240 | Syntax: @GetDTA 241 | @SetDTA &buffer [,segment] 242 | 243 | Arguments: buffer = Offset of new DTA buffer 244 | segment = Segment of new DTA buffer (DS if none given) 245 | Return: @GetDTA = ES:BX points to DTA 246 | @SetDTA = None 247 | Registers used: AX for both; DS and DX for @SetDTA; ES and BX for @GetDTA 248 | 249 | @GetFilSz (42h) 250 | 251 | Gets the file size by moving the file pointer to end of the file. 252 | Note that the file pointer is reset to zero. Thus this macro should 253 | not be called during operations that move the pointer. 254 | 255 | Syntax: @GetFilSz handle 256 | 257 | Arguments: handle = Previously opened file handle 258 | Return: If carrry clear, file length in DX:AX 259 | Registers used: AX, BX, CX, and DX 260 | 261 | 262 | @MovePrtAbs and @MovePtrRel (42h) 263 | 264 | Moves the file pointer in an open file. The pointer can be moved to 265 | an absolute position, or relative to its current position. 266 | 267 | Syntax: @MovePrtAbs handle [,distance] 268 | @MovePrtRel handle [,distance] 269 | 270 | Arguments: handle = Previously opened file handle 271 | distance = Distance to move pointer - must be a 16-bit 272 | constant or a 16- or 32-bit variable; or 273 | leave blank and set distance in CX:DX before 274 | macro call 275 | Return: If carrry clear, file pointer position in DX:AX 276 | Registers used: AX, BX, CX, and DX 277 | 278 | DIRECTORY CONTROL 279 | 280 | @MkDir, (39h), @RmDir (3Ah), and @ChDir (3Bh) 281 | 282 | Creates, deletes, or changes to the specified directory 283 | 284 | Syntax: @MkDir &path [,segment] 285 | @RmDir &path [,segment] 286 | @ChDir &path [,segment] 287 | 288 | Arguments: path = Offset of ASCIIZ string to 289 | segment = Segment of path (DS if none given) 290 | Return: If carrry set, error code in AX 291 | Registers used: AX and DX; DS if segment changed 292 | 293 | 294 | @GetDir (47h) 295 | 296 | Returns the current directory of the specified drive 297 | 298 | Syntax: @GetDir &path [,[drive] [,segment]] 299 | 300 | Arguments: buffer = Offset of buffer to receive ASCIIZ directory 301 | drive = 8-bit drive number - 0=current, 1=A, 2=B, etc. 302 | (0 if none given) 303 | segment = Segment of path (DS if none given) 304 | Return: If carrry set, error code in AX 305 | Registers used: AX, SI, and DL; DS if segment changes 306 | 307 | 308 | DRIVE CONTROL 309 | 310 | @GetDrv (0Eh) and @SetDrv (19h) 311 | 312 | Gets or sets the current drive 313 | 314 | Syntax: @GetDrv 315 | @SetDrv drive 316 | 317 | Argument: drive = 8-bit drive number (0=A, 1=B, etc.) 318 | Return: @GetDrv = Drive number in AL (0=A, 1=B, etc.) 319 | @SetDrv = Number of drives in AL 320 | Registers used: AX for both; DL for @SetDrv 321 | 322 | 323 | @ChkDrv (36h) 324 | 325 | Gets various data about a disk 326 | 327 | Syntax: @ChkDrv [drive] 328 | 329 | Argument: drive = 8-bit drive number (0=current,A=1, B=2, etc.); 330 | if none given, current assumed 331 | Return: AX = Sectors per cluster (-1 if drive invalid) 332 | BX = Available clusters 333 | CX = Bytes per sector 334 | DX = Clusters per drive 335 | Registers used: AX, BX, CX, and DX 336 | 337 | PROCESS CONTROL 338 | 339 | @Exit (4Ch) 340 | 341 | Exits to DOS with return code 342 | 343 | Syntax: @Exit [#return] 344 | 345 | Argument: return = 8-bit code to return to DOS; if none given, 346 | AL is used 347 | Return: None 348 | Registers used: AX 349 | 350 | 351 | @Exec (4Bh) 352 | 353 | Executes a child process or an overlay 354 | 355 | Syntax: @Exec path, params [,[segpath] [,[segparams] [,overlay]]] 356 | 357 | Arguments: path = Offset of ASCIIZ filespec to be executed 358 | params = Offset of process parameter block 359 | segpath = Segment of filespec (DS if none given) 360 | segparams = Segment of parameter block (ES if none given) 361 | overlay = If not defined, normal process executed; 362 | if defined, overlay executed 363 | Return: If carry set, error code 364 | Registers used: AX, SI, and DI; DS and ES if corresponding segments given 365 | 366 | 367 | @GetRet (4Dh) 368 | 369 | Gets the return code of a child process 370 | 371 | Syntax: @GetRet 372 | 373 | Argument: None 374 | Return: Return code in AX 375 | Register used: AX 376 | 377 | 378 | @TSR (31h) 379 | 380 | Terminates a program, but leaves it resident in memory 381 | 382 | Syntax: @TSR paragraphs [,#return] 383 | 384 | Arguments: return = Code to return to DOS; if none, AL used 385 | paragraphs = Memory in paragraphs (16 bytes) to 386 | allocate for resident program 387 | Return: None 388 | Registers used: AX and DX 389 | 390 | MEMORY CONTROL 391 | 392 | @FreeBlok (49h) 393 | 394 | Frees a block of memory 395 | 396 | Syntax: @FreeBlok [segment] 397 | 398 | Argument: segment = Starting address of memory to be freed; 399 | if none, ES address assumed 400 | Return: If carry set, error code in AX 401 | Register used: AX; ES if segment given 402 | 403 | 404 | @GetBlok (48h) 405 | 406 | Allocates a block of memory 407 | 408 | Syntax: @GetBlok paragraphs 409 | 410 | Argument: paragraphs = Paragraphs (16 bytes) of memory wanted 411 | Return: AX and ES = Segment address of allocated memory 412 | BX = Paragraphs actually allocated (may be 413 | less than requested if memory is short) 414 | Register used: AX and BX 415 | 416 | 417 | @ModBlok (48h) 418 | 419 | Modifies an allocated block of memory 420 | 421 | Syntax: @ModBlok paragraphs [,segment] 422 | 423 | Argument: paragraphs = Paragraphs (16 bytes) of memory wanted 424 | segment = Starting address of memory to be freed; 425 | if none, ES address assumed 426 | Return: If carry set, error code in AX, else: 427 | ES = Segment address of allocated memory 428 | BX = If carry is clear, paragraphs allocated 429 | Register used: AX and BX; ES if segment given 430 | 431 | MISCELLANEOUS 432 | 433 | @GetDate (2Ah) and @SetDate (2Bh) 434 | 435 | Gets or sets the system date 436 | 437 | Syntax: @GetDate 438 | @SetDate month, day, year 439 | 440 | Arguments: year = 16-bit year (1980-2099) 441 | month = 8-bit month (1-12) 442 | day = 8-bit day (1-31) 443 | Return: For @GetDate: 444 | AL = Day of week (0 = Sunday, 1 = Monday, etc.) 445 | CX = Year (1980-2099) 446 | DL = Month (1-12) 447 | DH = Day (1-31) 448 | For @SetDate: 449 | AL = If date was valid 0, else -1 450 | Registers used: AX, CX, and DX 451 | 452 | 453 | @GetTime (2Ch) and @SetTime (2Dh) 454 | 455 | Gets or sets the system time 456 | 457 | Syntax: @GetTime 458 | @SetTime hour,minute,second,hundredth 459 | 460 | Arguments: hour = 8-bit hour (0-23) 461 | minute = 8-bit hour (0-59) 462 | second = 8-bit hour (0-59) 463 | hundredth = 8-bit hour (0-99) 464 | Return: For @GetTime: 465 | CL = Hour (0-23) 466 | CH = Minute (0-59) 467 | DL = Second (0-59) 468 | DH = Hundredth (0-99) 469 | For @SetTime: 470 | AL = If time was valid 0, else -1 471 | Registers used: AX, CX, and DX 472 | 473 | 474 | @GetVer (30h) 475 | 476 | Gets the DOS version 477 | 478 | Syntax: @GetVer 479 | 480 | Argument: None 481 | Return: AL = Major version (0 for versions prior to 2.0) 482 | AH = Minor version 483 | BH = OEM serial number 484 | BL:CX = 24-bit user number 485 | Register used: AX, BX, and CX 486 | 487 | @GetInt (35h) and @SetInt (25h) 488 | 489 | Gets or sets the vector for a specified interrupt routine 490 | 491 | Syntax: @GetInt #interrupt 492 | @SetInt #interrupt, &vector [,segment] 493 | 494 | Arguments: interrupt = 8-bit interrupt number 495 | vector = Offset of interrupt routine 496 | segment = Segment of routine - if none given, DS assumed 497 | for data; segment ignored for code labels 498 | Return: @GetInt = None 499 | @SetInt = ES:BX points to interrupt routine 500 | Registers used: AX for both; ES and BX for @GetInt; DS and DS for @SetInt 501 | 502 | BIOS Macro Syntax and Description 503 | 504 | 505 | MODE, PAGE, AND COLOR CONTROL 506 | 507 | @GetMode (I 10h F 0Fh) 508 | 509 | Gets the current video mode and page 510 | 511 | Syntax: @GetMode 512 | 513 | Arguments: None 514 | Return: AL = Mode 515 | AH = Width in characters 516 | BH = Page 517 | Registers used: AX and BH 518 | 519 | 520 | @SetMode (I 10h F 00h) 521 | 522 | Gets the current video mode and page 523 | 524 | Syntax: @SetMode mode 525 | 526 | Arguments: mode = 8-bit video mode 527 | Return: none 528 | Registers used: AX 529 | 530 | 531 | @SetColor (I 10h F 0Bh) 532 | 533 | Sets the background color 534 | 535 | Syntax: @SetColor color 536 | 537 | Arguments: color = 8-bit background color (0-15); 538 | border color in text modes 539 | Return: none 540 | Registers used: AX and BX 541 | 542 | 543 | @SetPalet (I 10h F 0Bh) 544 | 545 | Sets the color palette 546 | 547 | Syntax: @SetPalet color 548 | 549 | Arguments: color = 8-bit color palette (0-1 for modes 5 and 6) 550 | Return: none 551 | Registers used: AX and BX 552 | 553 | @SetPage (I 10h F 05h) 554 | 555 | Sets the video page 556 | 557 | Syntax: @SetPage page 558 | 559 | Arguments: page = 8-bit page number; 0-3 for modes 2 and 3 560 | Return: none 561 | Registers used: AX 562 | 563 | 564 | CHARACTER AND CURSOR CONTROL 565 | 566 | @GetCur (I 10h F 04h) 567 | 568 | Gets the cursor position and size 569 | 570 | Syntax: @GetCur [page] 571 | 572 | Arguments: page = 8-bit page with cursor (if none, 0 assumed) 573 | Return: DL = Column 574 | DH = Row 575 | CL = Starting scan line 576 | CH = Ending scan line 577 | Registers used: AX, DX, CX, and BH 578 | 579 | 580 | @SetCurPos (I 10h F 02h) 581 | 582 | Sets the cursor position 583 | 584 | Syntax: @SetCurSz [column] [,[row] [,page]] 585 | 586 | Arguments: column = 8-bit column; if none, DL used 587 | row = 8-bit row; if none, DH used 588 | page = 8-bit page with cursor (if none, 0 assumed) 589 | Return: none 590 | Registers used: AX, DX, and BH 591 | 592 | 593 | @SetCurSz (I 10h F 01h) 594 | 595 | Sets the cursor size and shape by specifying active scan lines. The 596 | CGA adapter the lines are 0-7. The monochrome adapter has lines 0-13. 597 | 598 | Syntax: @SetCurSz startline, endline 599 | 600 | Arguments: startline = 8-bit starting scan line (default CGA=6; MA=12) 601 | endline = 8-bit ending scan line (default CGA=7; MA=13) 602 | Return: none 603 | Registers used: AX and CX 604 | 605 | @GetChAtr (I 10h F 08h) 606 | 607 | Gets the character and attribute at the cursor location 608 | 609 | Syntax: @GetChAtr [page] 610 | 611 | Arguments: page = 8-bit page to check (if none, 0 assumed) 612 | Return: AH = Attribute 613 | AL = ASCII character 614 | Registers used: AX and BH 615 | 616 | 617 | @PutChAtr (I 10h F 09h) and @PutCh (I 10h F 0Ah) 618 | 619 | Puts one or more characters and attributes at the current cursor 620 | position. For @PutCh, the current attribute is used in text modes 621 | and any specified attribute is ignored. 622 | 623 | Syntax: @PutChAtr [character] [,[attrib] [,[page] [,count]]] 624 | 625 | Arguments: character = 8-bit ASCII character to put; if none, AL used 626 | attrib = 8-bit attribute to put; if none, BL used 627 | page = 8-bit page to put on (if none, 0 assumed) 628 | count = Number to put (if none, 1 assumed) 629 | Return: AH = Attribute 630 | AL = ASCII character 631 | Registers used: AX, BX, CX 632 | 633 | 634 | @Scroll (I 10h F 06h and 07h) 635 | 636 | Scrolls a specified window up or down 637 | 638 | Syntax: @Scroll dist [,[attr] [,[uprow [,[upcol [,[dnrow] [,dncol]]]]] 639 | 640 | Arguments: dist = 8-bit number of lines to scroll; positive 641 | scrolls down; negative scrolls up; 0 clears 642 | attr = 8-bit attribute for blank lines (if none, 07h) 643 | uprow = Upper left row (if none, CH used) 644 | upcol = Upper left column (if none, CL used) 645 | dnrow = Lower right row (if none, DH used) 646 | dncol = Lower right column (if none, DL used) 647 | Return: none 648 | Registers used: AX, CX, DX, and BH 649 | 650 | 651 | @Cls (I 10h F 06, 08h, and 02h) 652 | 653 | Clears the screen of the current page 654 | 655 | Syntax: @Cls 656 | 657 | Arguments: None 658 | Return: None 659 | Registers used: AX, BX, CX, and DX 660 | 661 | -------------------------------------------------------------------------------- /MASM/PACKING.LST: -------------------------------------------------------------------------------- 1 | 2 | The following documentation pieces are provided with the Macro 3 | Assembler: 4 | 5 | Microsoft(R) Editor User's Guide 6 | Microsoft CodeView(R) and Utilities Update 7 | Macro Assembler Version 5.10 Update 8 | Macro Assembler Programmer's Guide 9 | Macro Assembler Reference 10 | Microsoft CodeView and Utilities manual 11 | Mixed-Language Programming Guide 12 | 13 | Executable files on the 5 disks are one of the following types: 14 | 15 | DOS Runs in real mode under DOS 2.1 or above 16 | OS/2 Runs in protected mode of OS/2 1.0 17 | Bound Runs in either real or protected mode 18 | 19 | 20 | The following files are provided with the Macro Assembler: 21 | 22 | Disk 1, Root 23 | 24 | SETUP.SUS Setup Script File used by Setup.EXE 25 | RUNME.EXE Setup Script File interpreter (Bound) 26 | SETUP.BAT Batch file specifying RUNME.EXE be used for setup 27 | README.DOC Supplemental information 28 | PACKING.LST List of disk contents 29 | MASM.EXE Macro Assembler executable file (DOS) 30 | CREF.EXE Cross-reference utility (Bound) 31 | SHOW.EXE Sample program executable (Bound) 32 | \MIXED 33 | 34 | Disk 1, Directory MIXED 35 | 36 | BA.ASM BASIC-to-assembly sample source 37 | CA.ASM C-to-assembly sample source 38 | FA.ASM FORTRAN-to-assembly sample source 39 | PA.ASM Pascal-to-assembly sample source 40 | MIXED.DOC Information on mixed-language macros 41 | POWER2.ASM Assembly sample source 42 | BAMAIN.BAS BASIC main program sample source 43 | CAMAIN.C C main program sample source 44 | FAMAIN.FOR FORTRAN main program sample source 45 | PAMAIN.PAS Pascal main program sample source 46 | MIXED.INC Include file for mixed-language macros 47 | 48 | Disk 2 49 | 50 | CVPACK.EXE Debugging information packing utility (Bound) 51 | LIB.EXE Library Manager (Bound) 52 | LINK.EXE Microsoft Overlay Linker (DOS) 53 | EXEHDR.EXE Segmented EXE File Header Utility (Bound) 54 | MAKE.EXE Program Maintenance Utility (Bound) 55 | SETENV.EXE Environment Expansion Utility (DOS) 56 | ERROUT.EXE STDERR Redirection Utility (DOS) 57 | EXEMOD.EXE EXE File Header Utility (DOS) 58 | EXEPACK.EXE EXE File Compression Utility (DOS) 59 | MOUSE.COM Mouse driver 60 | 61 | 62 | Disk 3 63 | 64 | MACRO.DOC Information on macros 65 | BIOS.INC Include file for BIOS calls 66 | DOS.INC Include file for DOS calls 67 | E_AUTO.CV Tutorial script file 68 | M_AUTO.CV Tutorial script file 69 | Q_AUTO.CV Tutorial script file 70 | U_AUTO.CV Tutorial script file 71 | W_AUTO.CV Tutorial script file 72 | SHOWR.ASM Sample program source 73 | SHOWR.EXE Sample program (DOS) 74 | PAGERR.ASM Sample program source (real mode) 75 | CV.HLP Microsoft CodeView Help file 76 | CV.EXE Microsoft CodeView debugger (DOS) 77 | SETUP.SUS Demonstration script file 78 | DEMO.EXE Demonstration program for CodeView (DOS) 79 | 80 | 81 | Disk 4, Root 82 | 83 | CALLTREE.EXE Function labeling utility (Bound) 84 | M.EXE Real-mode Microsoft Editor (DOS) 85 | RM.EXE File removing utility (Bound) 86 | MEGREP.EXE Pattern searching utility (Bound) 87 | UNDEL.EXE Undeletion utility (used with RM) (Bound) 88 | ECH.EXE File used by M.EXE to echo characters (Bound) 89 | EXP.EXE Expunge utility (used with RM) (Bound) 90 | FIXSHIFT.COM Utility to adjust keyboard behavior 91 | \EXT 92 | \INI 93 | 94 | Disk 4, Directory EXT (for use with Microsoft Editor) 95 | 96 | EXTHDR.OBJ Prolog object file for real-mode extensions 97 | EXTHDRP.OBJ Prolog object file for protected-mode extensions 98 | EXT.DOC Documentation on low-level editing functions 99 | EXT.H Include file for ME extensions 100 | SKEL.C Sample extension source code 101 | SKEL.DEF Module-definition file for use with SKEL.C 102 | 103 | Disk 4, Directory INI (for use with Microsoft Editor) 104 | 105 | QUICK.INI Quick-product initialization file 106 | EPSILON.INI EPSILON initialization file 107 | BRIEF.INI BRIEF initialization file 108 | WS.ZXT WordStar DOS extension 109 | WS.DLL WordStar protected-mode extension 110 | 111 | Disk 5 112 | 113 | ILINK.EXE Incremental linker (Bound) 114 | IMPLIB.EXE Import library creation utility (Bound) 115 | CVP.EXE Protected-mode CodeView debugger (OS/2) 116 | CVP.HLP Protected-mode CodeView Help file 117 | API.LIB Family-API emulation library 118 | APILMR.OBJ 64K stack object file (for use with BIND) 119 | DOSCALLS.LIB Import library for API 120 | BIND.EXE Dual-mode binding utility (Bound) 121 | EXEC.EXE File used by ILINK to invoke LINK (DOS) 122 | OS2.INC Root include file for OS/2 calls 123 | OS2.DOC Description of macros and include files 124 | OS2DEF.INC OS/2 common definitions 125 | LINK.EXE Segmented executable linker (Bound) 126 | BSEDOS.INC Base include file for DOSCALLS 127 | BSEERR.INC Base include file for errors 128 | BSESUB.INC Base include file for video, keyboard, & mouse 129 | BSE.INC Base include file for OS/2 calls 130 | MAKESHOW.BAT SHOW-program-creation batch file 131 | MAKESHOW.CMD SHOW-program-creation protected-mode command file 132 | MASM.EXE Protected-mode assembler (OS/2) 133 | MEP.EXE Protected-mode Microsoft Editor (OS/2) 134 | PAGERP.ASM Demonstration source file 135 | SHOWP.ASM Protected-mode source file 136 | SHOWS.DEF Module-definition file for SHOW stub file 137 | SHOW Make file for creating SHOW program 138 | PTRACE87.PAT Patch to debugger's "7" command 139 | OS2PATCH.EXE Executable file which executes patch (OS/2) 140 | -------------------------------------------------------------------------------- /MASM/PAGERR.ASM: -------------------------------------------------------------------------------- 1 | PAGE 60,132 2 | .MODEL small 3 | .DATA 4 | EXTRN statatr:BYTE,scrnatr:BYTE,sbuffer:WORD,pbuffer:WORD 5 | EXTRN fsize:WORD,cell:WORD,statline:BYTE,linenum:WORD 6 | EXTRN rows:WORD,vidadr:WORD,cga:BYTE 7 | 8 | .CODE 9 | PUBLIC Pager,isEGA 10 | 11 | ; Procedure Pager 12 | ; Purpose Displays status and text lines 13 | ; Input Stack variable: lines to scroll (negative up, positive down) 14 | ; Global variables: "sbuffer", "pbuffer", "linenum" 15 | ; Output To screen 16 | 17 | Pager PROC 18 | push bp 19 | mov bp,sp 20 | 21 | mov es,sbuffer ; Initialize buffer position 22 | mov di,pbuffer 23 | 24 | mov cx,[bp+4] ; Get count argument 25 | mov ax,10 ; Search for linefeed 26 | 27 | or cx,cx ; Argument 0? 28 | jg forward ; If above, forward 29 | jl backward ; If below, backward 30 | jmp SHORT show ; If equal, done 31 | 32 | backward: call GoBack ; Adjust backward 33 | jmp SHORT show ; Show screen 34 | forward: call GoForwd ; Adjust forward 35 | 36 | ; Write line number to status line 37 | 38 | show: cld ; Go forward 39 | push di 40 | push es 41 | push ds ; Load DS to ES 42 | pop es 43 | 44 | ; BinToStr (linenum,OFFSET statline[7]) 45 | 46 | push linenum ; Arg 1 47 | mov ax,OFFSET statline[7] 48 | push ax ; Arg 2 49 | call BinToStr ; Convert to string 50 | 51 | ; Fill in status line 52 | 53 | mov cx,7 ; Seven spaces to fill 54 | sub cx,ax ; Subtract those already done 55 | mov al," " ; Fill with space 56 | rep stosb 57 | pop es 58 | 59 | mov bl,statatr ; Load status attribute 60 | mov BYTE PTR cell[1],bl 61 | 62 | ; CellWrt (DS,OFFSET statline,0,cell) 63 | 64 | push ds ; Arg 1 65 | mov ax,OFFSET statline ; Arg 2 66 | push ax 67 | sub ax,ax ; Arg 3 68 | push ax 69 | push cell ; Arg 4 70 | call CellWrt ; Write status line 71 | 72 | pop di 73 | mov bl,scrnatr ; Load screen attribute 74 | mov BYTE PTR cell[1],bl 75 | mov si,di ; Update position 76 | mov cx,rows ; Lines per screen 77 | 78 | show1: mov bx,rows ; Lines of text 79 | inc bx ; Adjust for 0 80 | sub bx,cx ; Calculate current row 81 | push cx ; Save line number 82 | 83 | ; CellWrt (sbuffer,position,line,cell) 84 | 85 | push sbuffer ; Arg 1 86 | push si ; Arg 2 87 | push bx ; Arg 3 88 | push cell ; Arg 4 89 | call cellwrt ; Write line 90 | 91 | push ss ; Restore DS from SS 92 | pop ds 93 | 94 | pop cx ; Restore line number 95 | mov si,ax ; Get returned position 96 | 97 | cmp ax,fsize ; Beyond end of file? 98 | jae fillout ; Yes? Fill screen with spaces 99 | loop show1 ; else next line 100 | jmp SHORT pagedone ; Get out if done 101 | 102 | ; Fill the rest with spaces 103 | 104 | fillout: dec cx ; Adjust 105 | jcxz pagedone 106 | mov al,80 ; Columns times remaining lines 107 | mul cl 108 | 109 | ; CellFil (sbuffer,count,cell) 110 | 111 | push sbuffer ; Arg 1 112 | push ax ; Arg 2 113 | push cell ; Arg 3 114 | call CellFil ; Fill screen with spaces 115 | 116 | push ss ; Restore DS from SS 117 | pop ds 118 | 119 | pagedone: pop bp 120 | ret 2 121 | Pager ENDP 122 | 123 | ; Procedure CellWrt (segment,offset,line,cell) 124 | ; Purpose Writes a line to screen buffer 125 | ; Input Stack variables: 1 - segment of line 126 | ; 2 - offset 127 | ; 3 - line number 128 | ; 4 - attribute 129 | ; Output Line to screen buffer 130 | 131 | CellWrt PROC 132 | push bp 133 | mov bp,sp 134 | sub dx,dx ; Clear as flag for scan 135 | cmp cga,1 ; CGA? 136 | jne noscan 137 | mov dx,03DAh ; Load port # 138 | 139 | noscan: mov es,vidadr ; Load screen buffer segment 140 | mov ds,[bp+10] ; Buffer segment 141 | mov si,[bp+8] ; Buffer position 142 | mov cx,80 ; Cells per row 143 | mov ax,[bp+6] ; Starting row 144 | mov bx,80*2 ; Bytes per row 145 | mul bl ; Figure columns per row 146 | mov di,ax ; Load as destination 147 | mov bx,di ; Save start for tab calculation 148 | mov ax,[bp+4] ; Attribute 149 | movechar: lodsb ; Get character 150 | cmp al,13 ; CR? 151 | je fillspc 152 | cmp al,9 ; Tab? 153 | jne notab 154 | call filltab ; Yes? fill with spaces 155 | jcxz nextline ; If beyond limit done 156 | jmp SHORT movechar 157 | 158 | notab: or dx,dx ; CGA? 159 | je notab2 160 | call Retrace ; Yes? Write during retrace 161 | loop movechar 162 | jmp SHORT nextline 163 | 164 | notab2: stosw ; Write 165 | loop movechar 166 | jmp SHORT nextline ; Done 167 | 168 | fillspc: mov al," " ; Fill with space 169 | 170 | or dx,dx ; CGA? 171 | je space2 172 | space1: call Retrace ; Yes? Write during retrace 173 | loop space1 174 | inc si ; Adjust 175 | jmp SHORT exit ; Done 176 | 177 | space2: rep stosw ; Write 178 | inc si ; Adjust for LF 179 | jmp SHORT exit ; Done 180 | 181 | nextline: mov ah,10 ; Search for next line feed 182 | chklf: lodsb ; Load and compare 183 | cmp al,ah 184 | loopne chklf 185 | 186 | exit: mov ax,si ; Return position 187 | pop bp 188 | ret 8 189 | CellWrt ENDP 190 | 191 | ; Procedure CellFil (segment,count,cell) 192 | ; Purpose Fills screen with character 193 | ; Input Stack variables: 1 - segment of text (offset 0) 194 | ; 2 - number of characters 195 | ; 3 - attribute and character 196 | ; Output Characters to screen buffer 197 | 198 | CellFil PROC 199 | push bp 200 | mov bp,sp 201 | sub dx,dx ; Clear as flag for scan 202 | cmp cga,1 ; CGA? 203 | jne noscan2 204 | mov dx,03DAh ; Load port # 205 | 206 | noscan2: mov es,vidadr ; Load screen buffer segment 207 | mov ds,[bp+8] ; Buffer segment (position 0) 208 | mov cx,[bp+6] ; Characters to fill 209 | mov ax,[bp+4] ; Attribute 210 | or dx,dx ; CGA? 211 | je fillem2 212 | fillem1: call Retrace ; Yes? Write during retrace 213 | loop fillem1 214 | jmp SHORT filled ; Done 215 | fillem2: rep stosw ; Write 216 | 217 | filled: pop bp 218 | ret 6 219 | CellFil ENDP 220 | 221 | ; Procedure FillTab 222 | ; Purpose Writes spaces for tab to screen 223 | ; Input BX points to start of line, DI points to current position 224 | ; Output Spaces to screen buffer 225 | 226 | FillTab PROC 227 | push bx 228 | push cx 229 | 230 | sub bx,di ; Get current position in line 231 | neg bx 232 | shr bx,1 ; Divide by 2 bytes per character 233 | 234 | mov cx,8 ; Default count 8 235 | and bx,7 ; Get modulus 236 | sub cx,bx ; Subtract 237 | mov bx,cx ; Save modulus 238 | 239 | mov al," " ; Spaces 240 | or dx,dx ; CGA? 241 | je tabem2 242 | 243 | tabem1: call Retrace ; Yes? Write during retrace 244 | loop tabem1 245 | jmp SHORT tabbed 246 | tabem2: rep stosw ; Write 247 | 248 | tabbed: pop cx 249 | sub cx,bx ; Adjust count 250 | jns nomore ; Make negative count 0 251 | sub cx,cx 252 | nomore: pop bx 253 | ret 254 | FillTab ENDP 255 | 256 | ; Procedure GoBack 257 | ; Purpose Searches backward through buffer 258 | ; Input CX has number of lines; ES:DI has buffer position 259 | ; Output Updates "linenum" and "pbuffer" 260 | 261 | GoBack PROC 262 | std ; Go backward 263 | neg cx ; Make count positive 264 | mov dx,cx ; Save a copy 265 | inc cx ; One extra to go up one 266 | or di,di ; Start of file? 267 | je exback ; If so, ignore 268 | findb: push cx ; else save count 269 | mov cx,0FFh ; Load maximum character count 270 | cmp cx,di ; Near start of buffer? 271 | jl notnear ; No? Continue 272 | mov cx,di ; else search only to start 273 | notnear: repne scasb ; Find last previous LF 274 | jcxz atstart ; If not found, must be at start 275 | pop cx 276 | loop findb 277 | cmp linenum,0FFFFh ; End of file flag? 278 | jne notend ; No? Continue 279 | add di,2 ; Adjust for cr/lf 280 | mov pbuffer,di ; Save position 281 | call EndCount ; Count back to get line number 282 | ret 283 | 284 | notend: sub linenum,dx ; Calculate line number 285 | jg positive 286 | mov linenum,1 ; Set to 1 if negative 287 | positive: add di,2 ; Adjust for cr/lf 288 | mov pbuffer,di ; Save position 289 | ret 290 | 291 | atstart: pop cx 292 | sub di,di ; Load start of file 293 | mov linenum,1 ; Line 1 294 | mov pbuffer,di ; Save position 295 | exback: ret 296 | GoBack ENDP 297 | 298 | ; Procedure GoForwd 299 | ; Purpose Searches forward through a buffer 300 | ; Input CX has number of lines; ES:DI has buffer position 301 | ; Output Updates "linenum" and "pbuffer" 302 | 303 | GoForwd PROC 304 | cld ; Go forward 305 | mov dx,cx ; Copy count 306 | findf: push cx ; Save count 307 | mov cx,0FFh ; Load maximum character count 308 | repne scasb ; Find next LF 309 | jcxz atend ; If not found, must be at end 310 | cmp di,fsize ; Beyond end? 311 | jae atend 312 | pop cx 313 | loop findf 314 | add linenum,dx ; Calulate line number 315 | mov pbuffer,di ; Save position 316 | ret 317 | 318 | atend: pop cx 319 | mov di,pbuffer ; Restore position 320 | ret 321 | GoForwd ENDP 322 | 323 | ; Procedure EndCount 324 | ; Purpose Counts backward to count lines in file 325 | ; Input ES:DI has buffer position 326 | ; Output Modifies "linenum" 327 | 328 | EndCount PROC 329 | push di 330 | 331 | mov al,13 ; Search for CR 332 | mov linenum,0 ; Initialize 333 | 334 | findstrt: inc linenum ; Adjust count 335 | mov cx,0FFh ; Load maximum character count 336 | cmp cx,di ; Near start of buffer? 337 | jl notnear2 ; No? Continue 338 | mov cx,di ; else search only to start 339 | notnear2: repne scasb ; Find last previous cr 340 | jcxz found ; If not found, must be at start 341 | jmp SHORT findstrt 342 | 343 | found: pop di 344 | ret 345 | EndCount ENDP 346 | 347 | ; Procedure isEGA 348 | ; Purpose Determines if an EGA is active 349 | ; Input None 350 | ; Output 0 if no; lines per screen if yes 351 | 352 | isEGA PROC 353 | push bp 354 | push es 355 | mov ah,12h ; Call EGA status function 356 | mov bl,10h 357 | sub cx,cx ; Clear status bits 358 | int 10h 359 | sub ax,ax ; Segment 0 and assume no EGA 360 | jcxz noega ; If status still clear, no EGA 361 | 362 | mov es,ax ; ES=0 363 | test BYTE PTR es:[487h],1000b ; Test active bit 364 | jnz noega ; If set, not active 365 | mov ax,1130h ; Get EGA information 366 | int 10h 367 | mov al,dl ; Return lines per screen 368 | cbw 369 | 370 | noega: pop es 371 | pop bp 372 | ret 373 | isEGA ENDP 374 | 375 | ; Procedure BinToStr (number,address) 376 | ; Purpose Converts integer to string 377 | ; Input Stack arguments: 1 - Number to convert; 2 - Near address for write 378 | ; Output AX has characters written 379 | 380 | BinToStr PROC 381 | push bp 382 | mov bp,sp 383 | mov ax,[bp+6] ; Arg 1 384 | mov di,[bp+4] ; Arg 2 385 | 386 | sub cx,cx ; Clear counter 387 | mov bx,10 ; Divide by 10 388 | 389 | ; Convert and save on stack backwards 390 | 391 | getdigit: sub dx,dx ; Clear top 392 | div bx ; Divide to get last digit as remainder 393 | add dl,"0" ; Convert to ASCII 394 | push dx ; Save on stack 395 | or ax,ax ; Quotient 0? 396 | loopnz getdigit ; No? Get another 397 | 398 | ; Take off the stack and store forward 399 | 400 | neg cx ; Negate and save count 401 | mov dx,cx 402 | putdigit: pop ax ; Get character 403 | stosb ; Store it 404 | loop putdigit 405 | mov ax,dx ; Return digit count 406 | 407 | pop bp 408 | ret 4 409 | BinToStr ENDP 410 | 411 | ; Procedure Retrace 412 | ; Purpose Writes cell during horizontal retrace (CGA) 413 | ; Input ES:DI has screen buffer position, AX has cell 414 | ; Output Character to screen buffer 415 | 416 | Retrace PROC 417 | push bx 418 | mov bx,ax ; Save character 419 | lscan2: in al,dx ; Look in the port 420 | shr al,1 ; until it goes low 421 | jc lscan2 422 | cli 423 | hscan2: in al,dx ; Look in the port 424 | shr al,1 ; until it goes high 425 | jnc hscan2 426 | mov ax,bx ; Restore and write it 427 | stosw 428 | sti 429 | pop bx 430 | ret 431 | Retrace ENDP 432 | 433 | END 434 | -------------------------------------------------------------------------------- /MASM/SHOWR.ASM: -------------------------------------------------------------------------------- 1 | PAGE 60,132 2 | TITLE SHOW 3 | 4 | ; Program SHOW.ASM 5 | ; Purpose Text file displayer 6 | ; Input File name from command line or prompt 7 | ; Output Display file to screen 8 | 9 | DOSSEG 10 | .MODEL small 11 | 12 | INCLUDE dos.inc 13 | INCLUDE bios.inc 14 | 15 | .STACK 100h 16 | 17 | .DATA 18 | 19 | ; Status line 20 | 21 | PUBLIC statline,linenum 22 | statline DB " Line: " 23 | statfile DB " File: " 24 | stathelp DB " Quit: ESC Move:   PGUP PGDN HOME END " 25 | linenum DW 1 26 | 27 | ; Variables for screen handling 28 | 29 | PUBLIC cell,rows,columns,vidadr,statatr,scrnatr,cga 30 | cell LABEL WORD ; Cell (character and attribute) 31 | char DB " " ; Initialize to space 32 | attr DB ? ; Attribute 33 | 34 | columns EQU 80 ; Number of columns 35 | rows DW 24 ; Number of rows - status line takes one more 36 | mode DB ? ; Initial mode 37 | pag DB ? ; Initial display page 38 | newvid DB 0 ; Video change flag 39 | cga DB 1 ; CGA flag - default yes 40 | 41 | vidadr DW 0B800h ; Video buffer address - default CGA 42 | mono EQU 0B000h ; Monochrome address 43 | statatr DB 030h ; Color default - black on cyan 44 | bwstat EQU 070h ; B&W default - black on white 45 | scrnatr DB 017h ; Color default - white on blue 46 | bwscrn EQU 007h ; B&W default - white on black 47 | 48 | ; Variables for buffer and file handling 49 | 50 | PUBLIC buffer,pbuffer,sbuffer,fsize,namebuf 51 | buffer LABEL DWORD 52 | pbuffer DW 0 ; Position in buffer (offset) 53 | sbuffer DW ? ; Base of buffer (segment) 54 | lbuffer DW ? ; Length of buffer 55 | fhandle DW ? ; Holds file handle on open 56 | fsize DW ? ; File size after dosopen 57 | 58 | prompt DB 13,10,13,10,"Enter filename: $" 59 | prompt2 DB 13,10,"File problem. Try again? $" 60 | namebuf DB 66,? 61 | filename DB 66 DUP (0) ; Buffer for file name 62 | 63 | err1 DB 13,10,"Must have DOS 2.0 or higher",13,10,"$" 64 | err2 DB 13,10,"File too big",13,10,"$" 65 | 66 | ; Call table 67 | 68 | exkeys DB 71,72,73,79,80,81 ; Extended key codes 69 | lexkeys EQU $-exkeys ; Table of keys 70 | extable DW homek 71 | DW upk 72 | DW pgupk 73 | DW endk 74 | DW downk 75 | DW pgdnk 76 | DW nonek 77 | 78 | .CODE 79 | EXTRN pager:PROC,isEGA:PROC ; Routines in other module 80 | start: mov ax,@DATA ; Initialize data segment 81 | mov ds,ax 82 | 83 | cli ; Turn off interrupts 84 | mov ss,ax ; Make SS and 85 | mov sp,OFFSET STACK ; SP relative to DGROUP 86 | sti 87 | 88 | ; Adjust memory allocation 89 | 90 | mov bx,sp ; Convert stack pointer to paragraphs 91 | mov cl,4 ; to get stack size 92 | shr bx,cl 93 | add ax,bx ; Add SS to get end of program 94 | mov bx,es ; Get start of program 95 | sub ax,bx ; Subtract start from end 96 | @ModBlok ax ; Release memory after program 97 | 98 | ; Allocate dynamic memory for file buffer 99 | 100 | @GetBlok 0FFFh ; Try to allocate 64K 101 | mov sbuffer,ax ; Save buffer segment 102 | mov lbuffer,bx ; Save actual length allocated 103 | 104 | ; Check DOS 105 | 106 | @GetVer ; Get DOS version 107 | cmp al,2 ; Requires DOS 2.0 108 | jge video 109 | @DispStr err1 ; else error and quit 110 | int 20h 111 | 112 | ; Adjust for current mode and and video adapter 113 | 114 | video: call isEGA ; EGA (or VGA)? 115 | or ax,ax ; If 0 must be CGA or MA 116 | je modechk ; Leave default 117 | mov rows,ax ; Load rows 118 | dec cga ; Not CGA 119 | 120 | modechk: @GetMode ; Get video mode 121 | mov mode,al ; Save initial mode and page 122 | mov pag,bh 123 | mov dl,al ; Work on copy 124 | cmp dl,7 ; Is it mono 7? 125 | je loadmono ; Yes? Set mono 126 | cmp dl,15 ; Is it mono 15? 127 | jne graphchk ; No? Check graphics 128 | loadmono: mov vidadr,mono ; Load mono address 129 | mov statatr,bwstat ; Set B&W defaults for status line 130 | mov scrnatr,bwscrn ; and screen background 131 | dec cga ; Not CGA 132 | cmp al,15 ; Is it mono 15? 133 | jne cmdchk ; No? Done 134 | mov dl,7 ; Yes? Set standard mono 135 | jmp SHORT chmode 136 | 137 | graphchk: cmp dl,7 ; 7 or higher? 138 | jg color ; 8 to 14 are color (7 and 15 done) 139 | cmp dl,4 ; 4 or higher? 140 | jg bnw ; 5 and 6 are probably black and white 141 | je color ; 4 is color 142 | test dl,1 ; Even? 143 | jz bnw ; 0 and 2 are black and white 144 | color: ; 1 and 3 are color 145 | cmp dl,3 ; 3? 146 | je cmdchk ; Yes? Done 147 | mov dl,3 ; Change mode to 3 148 | jmp SHORT chmode 149 | 150 | bnw: mov statatr,bwstat ; Set B&W defaults for status line 151 | mov scrnatr,bwscrn ; and screen background 152 | cmp dl,2 ; 2? 153 | je cmdchk ; Yes? Done 154 | mov dl,2 ; Make it 2 155 | 156 | chmode: @SetMode dl ; Set video mode 157 | @SetPage 0 ; Set video page 158 | mov newvid,1 ; Set flag 159 | 160 | ; Try to open command line file 161 | 162 | cmdchk: mov bl,es:[80h] ; Get length 163 | sub bh,bh 164 | mov WORD PTR es:[bx+81h],0; Convert to ASCIIZ 165 | push ds 166 | @OpenFil 82h,0,es ; Open argument 167 | pop ds 168 | jc getname ; If error, get from prompt 169 | mov fhandle,ax ; else save handle 170 | push ds 171 | @GetFirst 82h,,es ; Let DOS convert to file name 172 | pop ds 173 | jnc opened ; If OK file is open 174 | 175 | ; Prompt for file 176 | 177 | getname: @DispStr prompt ; Prompt for file 178 | @GetStr namebuf,0 ; Get response as ASCIIZ 179 | @OpenFil filename,0 ; Try to open response 180 | jc badfile ; If successful, continue 181 | mov fhandle,ax ; Save handle 182 | @GetFirst filename ; Let DOS convert to file name 183 | jnc opened ; If OK, file is opened 184 | 185 | badfile: @DispStr prompt2 ; else prompt to try again 186 | @GetKey 0,1,0 187 | and al,11011111b ; Convert key to uppercase 188 | cmp al,"Y" ; If yes, 189 | je getname ; try again 190 | jmp quit ; else quit 191 | 192 | ; Copy file name to status line 193 | 194 | opened: mov si,9Eh ; Load FCB as as source 195 | mov di,OFFSET statfile[7] ; Load status line as destination 196 | mov al,es:[si] ; Load first byte 197 | inc si 198 | copy: mov [di],al ; Save and load bytes until 0 199 | inc di 200 | mov al,es:[si] 201 | inc si 202 | or al,al ; Check for 0 203 | loopne copy 204 | 205 | ; Check file size 206 | 207 | @GetFilSz fhandle ; Get file size 208 | 209 | or dx,dx ; Larger than 64K? 210 | jne big ; Yes? Too big 211 | mov fsize,ax ; Save file size 212 | mov cx,4 ; Convert to paragraphs 213 | shr ax,cl 214 | cmp ax,lbuffer ; Is it larger than buffer 215 | jle fileread ; No? Continue 216 | 217 | big: @DispStr err2 ; else error 218 | @Exit 2 219 | 220 | fileread: push ds 221 | @Read buffer,fsize,fhandle ; Read file 222 | pop ds 223 | jnc readok ; If no read error continue 224 | jmp getname ; else try again 225 | 226 | ; Search back for EOF marker and adjust if necessary 227 | 228 | readok: mov di,ax ; Load file length 229 | push es ; Save ES and load buffer segment 230 | mov es,sbuffer 231 | std ; Look backward for 255 characters 232 | mov cx,0FFh 233 | mov al,1Ah ; Search for EOF marker 234 | repne scasb 235 | cld 236 | jcxz noeof ; If none, we're OK 237 | inc di ; else adjust and save file size 238 | mov fsize,di 239 | 240 | noeof: pop es 241 | @SetCurPos 0,43 ; Turn off cursor by moving off screen 242 | 243 | ; Display first page 244 | 245 | xor ax,ax ; Start at 0 246 | push ax 247 | firstpg: call pager 248 | 249 | ; Handle keys 250 | 251 | nextkey: @GetKey 0,0,0 ; Get a key 252 | nextkey2: cmp al,0 ; Is it a null? 253 | je extended ; Yes? Must be extended code 254 | 255 | cmp al,27 ; Is it ESCAPE? 256 | jne nextkey ; No? Ignore unknown command 257 | 258 | quit: @ClosFil fhandle ; Yes? Close file 259 | @FreeBlok sbuffer ; Release buffer 260 | cmp newvid,1 ; Restore video? 261 | jne thatsall ; No? 262 | @SetMode mode ; Restore video mode, page, and cursor 263 | @SetPage pag 264 | thatsall: mov dx,rows ; Load last row and first column 265 | xchg dl,dh 266 | mov cx,dx ; Make row the same 267 | mov dl,79 268 | @Scroll 0 ; Clear last line 269 | sub dl,dl 270 | @SetCurPos ; Set cursor 271 | 272 | @Exit 0 ; Quit 273 | 274 | extended: @GetKey 0,0,0 ; Get extended code 275 | push es 276 | push ds ; Load DS into ES 277 | pop es 278 | mov di,OFFSET exkeys ; Load address and length of key list 279 | mov cx,lexkeys+1 280 | repne scasb ; Find position 281 | pop es 282 | sub di,(OFFSET exkeys)+1 ; Point to key 283 | shl di,1 ; Adjust pointer for word addresses 284 | call extable[di] ; Call procedure 285 | jmp nextkey 286 | 287 | homek: mov pbuffer,0 ; HOME - set position to 0 288 | push pbuffer 289 | mov linenum,1 290 | call pager 291 | retn 292 | 293 | upk: mov ax,-1 ; UP - scroll back 1 line 294 | push ax 295 | call pager 296 | retn 297 | 298 | pgupk: mov ax,rows ; PGUP - Page back 299 | neg ax 300 | push ax 301 | call pager 302 | retn 303 | 304 | endk: mov ax,fsize ; END - Get last byte of file 305 | mov pbuffer,ax ; Make it the file position 306 | mov linenum,-1 ; Set illegal line number as flag 307 | mov ax,rows ; Page back 308 | neg ax 309 | push ax 310 | call pager 311 | retn 312 | 313 | downk: mov ax,1 ; DOWN - scroll forward 1 line 314 | push ax 315 | call pager 316 | retn 317 | 318 | pgdnk: push rows ; PGDN - page forward 319 | call pager 320 | retn 321 | 322 | nonek: retn ; Ignore unknown key 323 | 324 | END start 325 | 326 | -------------------------------------------------------------------------------- /Patches/ML611D.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Patches/ML611D.EXE -------------------------------------------------------------------------------- /Patches/ML614.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/Patches/ML614.EXE -------------------------------------------------------------------------------- /Patches/README.TXT: -------------------------------------------------------------------------------- 1 | ml611d.exe Q138983 PATCH: MASM 6.11d Patch Available 2 | -------------------------------------------------------------- 3 | Updates a MASM version 6.11 or 6.11a installation to 4 | version 6.11d. 5 | 6 | ml614.exe Q228454 PATCH: MASM 6.14 Patch Available 7 | -------------------------------------------------------------- 8 | Updates a MASM version 6.11, 6.11a, 6.11d, 6.12, or 6.13 9 | installation to version 6.14. 10 | 11 | MASM 6.14 includes support for the Intel Pentium Pro processor, the Intel 12 | MMX architecture, AMD 3D Technology, and Intel Internet Streaming SIMD 13 | Extensions. 14 | 15 | Due to changes in the MS-DOS extender used in earlier versions of MASM, 16 | MASM 6.14 does not run on Windows 3.1x or MS-DOS. Either Windows NT or 17 | Windows 95 is required to run MASM 6.14. If you are working in MS-DOS or 18 | Windows 3.1x, you need to continue using version 6.11d. 19 | 20 | Note that you can use MASM 6.14 to develop applications that run under 21 | MS-DOS or Windows 3.1x. 22 | -------------------------------------------------------------------------------- /phatcode.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qb40/masm/be6dfa6d55dddabbb186db326ee7a50a5ca41c35/phatcode.exe --------------------------------------------------------------------------------