From 7f63992386042fe0fedb001fe29fca546895439f Mon Sep 17 00:00:00 2001 From: mothcompute Date: Tue, 30 Jan 2024 23:10:15 -0800 Subject: [PATCH] fixes --- build | 1 + inc/mz.h | 36 + it/IT.EXE | Bin 468905 -> 462050 bytes it/IT.MAP | 2270 ++++++++++++++++++++++++++--------------------------- src/mz.c | 59 ++ src/vm.c | 127 +++ 6 files changed, 1358 insertions(+), 1135 deletions(-) create mode 100755 build create mode 100644 inc/mz.h create mode 100644 src/mz.c create mode 100644 src/vm.c diff --git a/build b/build new file mode 100755 index 0000000..1bc3c95 --- /dev/null +++ b/build @@ -0,0 +1 @@ +cc -Iinc src/*.c -o dpvm diff --git a/inc/mz.h b/inc/mz.h new file mode 100644 index 0000000..1e05b0b --- /dev/null +++ b/inc/mz.h @@ -0,0 +1,36 @@ +#ifndef MZ_H +#define MZ_H + +#include +#include + +typedef struct { // pointer into program data into which load segment is added + uint16_t offset, + segment; +} __attribute__((packed)) reloc; + +typedef struct { // no endian checks - this will only work on x86+vm anyway + uint16_t mz, + bytes, + pages, + relsz, + len, + minalloc, // can easily ignore - we have 895k free + maxalloc, + ss, + sp, + sum, + ip, + cs, + rel, // pointer to + overlay; // zero if main binary + reloc r[]; +} __attribute__((packed)) mz; + +typedef struct { + uint16_t ss, sp, ip, cs; +} mz_start; + +uint32_t loadmz(mz*, uint8_t*, uint32_t, uint32_t, mz_start*); + +#endif diff --git a/it/IT.EXE b/it/IT.EXE index f34f4226859197a6c664291e0fcae26c7a445791..71d2ebb685e82c8dae724849107e5e308a06b62d 100644 GIT binary patch delta 31011 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 E0F9;0aR2}S diff --git a/it/IT.MAP b/it/IT.MAP index 32609c4..dc13518 100644 --- a/it/IT.MAP +++ b/it/IT.MAP @@ -7,120 +7,120 @@ 275C0H 36FBFH 0FA00H PATTERNDATA DATA 36FC0H 3D01FH 06060H SCREENDATA DATA 3D020H 3D34BH 0032CH INFOLINE CODE - 3D34CH 459B2H 08667H DISK CODE - 459B3H 466CBH 00D19H SCREEN CODE - 466D0H 475C6H 00EF7H MOUSE CODE - 475C8H 47936H 0036FH MAIN CODE - 47937H 484B9H 00B83H STARTUP CODE - 484BAH 4DE41H 05988H PATTERN CODE - 4DE44H 5B402H 0D5BFH MUSIC CODE - 5B403H 5B899H 00497H GLBL CODE - 5B89AH 5D736H 01E9DH INFOPAGE CODE - 5D738H 5DB2BH 003F4H EMS CODE - 5DB2CH 5DCDAH 001AFH ERROR CODE - 5DCDCH 61361H 03686H INST CODE - 61362H 6315BH 01DFAH FUNCTIONS CODE - 6315CH 654E3H 02388H HELP CODE - 654E4H 65FD0H 00AEDH KEYBOARD CODE - 65FE0H 6681DH 0083EH MMTSR CODE - 6681EH 68BB0H 02393H MESSAGE CODE - 68BB1H 68E26H 00276H VESA CODE - 68E30H 69E2FH 01000H STACKSEG STACK + 3D34CH 459BEH 08673H DISK CODE + 459BFH 466D7H 00D19H SCREEN CODE + 466E0H 475D6H 00EF7H MOUSE CODE + 475D8H 47946H 0036FH MAIN CODE + 47947H 484C9H 00B83H STARTUP CODE + 484CAH 4DE51H 05988H PATTERN CODE + 4DE54H 5B412H 0D5BFH MUSIC CODE + 5B413H 5B8A9H 00497H GLBL CODE + 5B8AAH 5D746H 01E9DH INFOPAGE CODE + 5D748H 5DB3BH 003F4H EMS CODE + 5DB3CH 5DCEAH 001AFH ERROR CODE + 5DCECH 61371H 03686H INST CODE + 61372H 6316BH 01DFAH FUNCTIONS CODE + 6316CH 654F3H 02388H HELP CODE + 654F4H 65FE0H 00AEDH KEYBOARD CODE + 65FF0H 6682DH 0083EH MMTSR CODE + 6682EH 68BC0H 02393H MESSAGE CODE + 68BC1H 68E36H 00276H VESA CODE + 68E40H 69E3FH 01000H STACKSEG STACK Detailed map of segments - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT.ASM ACBP=29 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_DISK.ASM ACBP=29 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_DISPL.ASM ACBP=28 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_EMS.ASM ACBP=29 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_F.ASM ACBP=29 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_G.ASM ACBP=28 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_H.ASM ACBP=29 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_I.ASM ACBP=29 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_M.ASM ACBP=28 - 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_NET.ASM ACBP=29 - 0000:0000 63DC C=DATA S=OBJECT1 G=(none) M=IT_OBJ1.ASM ACBP=28 - 0000:63DC 0000 C=DATA S=OBJECT1 G=(none) M=IT_PE.ASM ACBP=29 - 0000:63DC 0000 C=DATA S=OBJECT1 G=(none) M=IT_FOUR.ASM ACBP=29 - 063E:0000 00010000 C=DATA S=DISKDATA G=(none) M=IT_DISK.ASM ACBP=6B - 163E:0000 0000 C=DATA S=DISKDATA G=(none) M=IT_I.ASM ACBP=69 - 163E:0000 0000 C=DATA S=DISKDATA G=(none) M=IT_NET.ASM ACBP=69 - 163E:0000 0000 C=DATA S=DISKDATA G=(none) M=IT_FOUR.ASM ACBP=69 - 163E:0000 0000 C=DATA S=SONGDATA G=(none) M=IT_MUSIC.ASM ACBP=69 - 163E:0000 0000 C=DATA S=SONGDATA G=(none) M=IT_NET.ASM ACBP=69 - 163E:0000 000111E0 C=DATA S=SONGDATA G=(none) M=IT_MDATA.ASM ACBP=68 - 275C:0000 FA00 C=DATA S=PATTERNDATA G=(none) M=IT_PE.ASM ACBP=69 - 36FC:0000 6060 C=DATA S=SCREENDATA G=(none) M=IT_S.ASM ACBP=69 - 3D02:0000 0000 C=CODE S=INFOLINE G=(none) M=IT.ASM ACBP=28 - 3D02:0000 032C C=CODE S=INFOLINE G=(none) M=IT_L.ASM ACBP=A8 - 3D34:000C 0000 C=CODE S=DISK G=(none) M=IT.ASM ACBP=28 - 3D34:000C 77B1 C=CODE S=DISK G=(none) M=IT_DISK.ASM ACBP=28 - 3D34:77BD 0000 C=CODE S=DISK G=(none) M=IT_F.ASM ACBP=29 - 3D34:77C0 0EB3 C=CODE S=DISK G=(none) M=IT_NET.ASM ACBP=A8 - 3D34:8673 0000 C=CODE S=DISK G=(none) M=IT_PE.ASM ACBP=29 - 459B:0003 0000 C=CODE S=SCREEN G=(none) M=IT.ASM ACBP=29 - 459B:0003 0000 C=CODE S=SCREEN G=(none) M=IT_F.ASM ACBP=29 - 459B:0003 0D19 C=CODE S=SCREEN G=(none) M=IT_S.ASM ACBP=28 - 466D:0000 0000 C=CODE S=MOUSE G=(none) M=IT.ASM ACBP=29 - 466D:0000 0000 C=CODE S=MOUSE G=(none) M=IT_S.ASM ACBP=29 - 466D:0000 0EF7 C=CODE S=MOUSE G=(none) M=IT_MOUSE.ASM ACBP=68 - 475C:0008 0000 C=CODE S=MAIN G=(none) M=IT.ASM ACBP=A8 - 475C:0008 036F C=CODE S=MAIN G=(none) M=IT_M.ASM ACBP=A8 - 4793:0007 0B83 C=CODE S=STARTUP G=(none) M=IT.ASM ACBP=28 - 484B:000A 0000 C=CODE S=PATTERN G=(none) M=IT_DISK.ASM ACBP=29 - 484B:000A 0000 C=CODE S=PATTERN G=(none) M=IT_DISPL.ASM ACBP=48 - 484B:000A 0000 C=CODE S=PATTERN G=(none) M=IT_F.ASM ACBP=29 - 484B:000A 0000 C=CODE S=PATTERN G=(none) M=IT_G.ASM ACBP=28 - 484B:000A 0000 C=CODE S=PATTERN G=(none) M=IT_I.ASM ACBP=29 - 484B:000A 0000 C=CODE S=PATTERN G=(none) M=IT_NET.ASM ACBP=28 - 484B:000A 5988 C=CODE S=PATTERN G=(none) M=IT_PE.ASM ACBP=48 - 4DE4:0004 0000 C=CODE S=MUSIC G=(none) M=IT_DISK.ASM ACBP=29 - 4DE4:0004 0000 C=CODE S=MUSIC G=(none) M=IT_F.ASM ACBP=29 - 4DE4:0004 D5BF C=CODE S=MUSIC G=(none) M=IT_MUSIC.ASM ACBP=A8 - 4DE4:D5C3 0000 C=CODE S=MUSIC G=(none) M=IT_NET.ASM ACBP=28 - 5B40:0003 0000 C=CODE S=GLBL G=(none) M=IT_DISPL.ASM ACBP=28 - 5B40:0003 0497 C=CODE S=GLBL G=(none) M=IT_G.ASM ACBP=28 - 5B40:049A 0000 C=CODE S=GLBL G=(none) M=IT_L.ASM ACBP=29 - 5B89:000A 1B7C C=CODE S=INFOPAGE G=(none) M=IT_DISPL.ASM ACBP=28 - 5B89:1B86 0321 C=CODE S=INFOPAGE G=(none) M=IT_FOUR.ASM ACBP=28 - 5D73:0008 03F4 C=CODE S=EMS G=(none) M=IT_EMS.ASM ACBP=48 - 5DB2:000C 01AF C=CODE S=ERROR G=(none) M=IT_ERR.ASM ACBP=28 - 5DCD:000C 0000 C=CODE S=INST G=(none) M=IT_F.ASM ACBP=29 - 5DCD:000C 0000 C=CODE S=INST G=(none) M=IT_G.ASM ACBP=28 - 5DCD:000C 3686 C=CODE S=INST G=(none) M=IT_I.ASM ACBP=48 - 5DCD:3692 0000 C=CODE S=INST G=(none) M=IT_PE.ASM ACBP=29 - 6136:0002 1DFA C=CODE S=FUNCTIONS G=(none) M=IT_F.ASM ACBP=28 - 6315:000C 2388 C=CODE S=HELP G=(none) M=IT_H.ASM ACBP=28 - 654E:0004 0AED C=CODE S=KEYBOARD G=(none) M=IT_K.ASM ACBP=28 - 65FE:0000 083E C=CODE S=MMTSR G=(none) M=IT_MMTSR.ASM ACBP=68 - 6681:000E 2393 C=CODE S=MESSAGE G=(none) M=IT_MSG.ASM ACBP=28 - 68BB:0001 0276 C=CODE S=VESA G=(none) M=IT_VESA.ASM ACBP=28 - 68E3:0000 1000 C=STACK S=STACKSEG G=(none) M=IT.ASM ACBP=75 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT.ASM ACBP=29 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_DISK.ASM ACBP=29 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_DISPL.ASM ACBP=28 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_EMS.ASM ACBP=29 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_F.ASM ACBP=29 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_G.ASM ACBP=28 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_H.ASM ACBP=29 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_I.ASM ACBP=29 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_M.ASM ACBP=28 + 0000:0000 0000 C=DATA S=OBJECT1 G=(none) M=IT_NET.ASM ACBP=29 + 0000:0000 63DC C=DATA S=OBJECT1 G=(none) M=IT_OBJ1.ASM ACBP=28 + 0000:63DC 0000 C=DATA S=OBJECT1 G=(none) M=IT_PE.ASM ACBP=29 + 0000:63DC 0000 C=DATA S=OBJECT1 G=(none) M=IT_FOUR.ASM ACBP=29 + 063E:0000 00010000 C=DATA S=DISKDATA G=(none) M=IT_DISK.ASM ACBP=6B + 163E:0000 0000 C=DATA S=DISKDATA G=(none) M=IT_I.ASM ACBP=69 + 163E:0000 0000 C=DATA S=DISKDATA G=(none) M=IT_NET.ASM ACBP=69 + 163E:0000 0000 C=DATA S=DISKDATA G=(none) M=IT_FOUR.ASM ACBP=69 + 163E:0000 0000 C=DATA S=SONGDATA G=(none) M=IT_MUSIC.ASM ACBP=69 + 163E:0000 0000 C=DATA S=SONGDATA G=(none) M=IT_NET.ASM ACBP=69 + 163E:0000 000111E0 C=DATA S=SONGDATA G=(none) M=IT_MDATA.ASM ACBP=68 + 275C:0000 FA00 C=DATA S=PATTERNDATA G=(none) M=IT_PE.ASM ACBP=69 + 36FC:0000 6060 C=DATA S=SCREENDATA G=(none) M=IT_S.ASM ACBP=69 + 3D02:0000 0000 C=CODE S=INFOLINE G=(none) M=IT.ASM ACBP=28 + 3D02:0000 032C C=CODE S=INFOLINE G=(none) M=IT_L.ASM ACBP=A8 + 3D34:000C 0000 C=CODE S=DISK G=(none) M=IT.ASM ACBP=28 + 3D34:000C 77B1 C=CODE S=DISK G=(none) M=IT_DISK.ASM ACBP=28 + 3D34:77BD 0000 C=CODE S=DISK G=(none) M=IT_F.ASM ACBP=29 + 3D34:77CC 0EB3 C=CODE S=DISK G=(none) M=IT_NET.ASM ACBP=A8 + 3D34:867F 0000 C=CODE S=DISK G=(none) M=IT_PE.ASM ACBP=29 + 459B:000F 0000 C=CODE S=SCREEN G=(none) M=IT.ASM ACBP=29 + 459B:000F 0000 C=CODE S=SCREEN G=(none) M=IT_F.ASM ACBP=29 + 459B:000F 0D19 C=CODE S=SCREEN G=(none) M=IT_S.ASM ACBP=28 + 466E:0000 0000 C=CODE S=MOUSE G=(none) M=IT.ASM ACBP=29 + 466E:0000 0000 C=CODE S=MOUSE G=(none) M=IT_S.ASM ACBP=29 + 466E:0000 0EF7 C=CODE S=MOUSE G=(none) M=IT_MOUSE.ASM ACBP=68 + 475D:0008 0000 C=CODE S=MAIN G=(none) M=IT.ASM ACBP=A8 + 475D:0008 036F C=CODE S=MAIN G=(none) M=IT_M.ASM ACBP=A8 + 4794:0007 0B83 C=CODE S=STARTUP G=(none) M=IT.ASM ACBP=28 + 484C:000A 0000 C=CODE S=PATTERN G=(none) M=IT_DISK.ASM ACBP=29 + 484C:000A 0000 C=CODE S=PATTERN G=(none) M=IT_DISPL.ASM ACBP=48 + 484C:000A 0000 C=CODE S=PATTERN G=(none) M=IT_F.ASM ACBP=29 + 484C:000A 0000 C=CODE S=PATTERN G=(none) M=IT_G.ASM ACBP=28 + 484C:000A 0000 C=CODE S=PATTERN G=(none) M=IT_I.ASM ACBP=29 + 484C:000A 0000 C=CODE S=PATTERN G=(none) M=IT_NET.ASM ACBP=28 + 484C:000A 5988 C=CODE S=PATTERN G=(none) M=IT_PE.ASM ACBP=48 + 4DE5:0004 0000 C=CODE S=MUSIC G=(none) M=IT_DISK.ASM ACBP=29 + 4DE5:0004 0000 C=CODE S=MUSIC G=(none) M=IT_F.ASM ACBP=29 + 4DE5:0004 D5BF C=CODE S=MUSIC G=(none) M=IT_MUSIC.ASM ACBP=A8 + 4DE5:D5C3 0000 C=CODE S=MUSIC G=(none) M=IT_NET.ASM ACBP=28 + 5B41:0003 0000 C=CODE S=GLBL G=(none) M=IT_DISPL.ASM ACBP=28 + 5B41:0003 0497 C=CODE S=GLBL G=(none) M=IT_G.ASM ACBP=28 + 5B41:049A 0000 C=CODE S=GLBL G=(none) M=IT_L.ASM ACBP=29 + 5B8A:000A 1B7C C=CODE S=INFOPAGE G=(none) M=IT_DISPL.ASM ACBP=28 + 5B8A:1B86 0321 C=CODE S=INFOPAGE G=(none) M=IT_FOUR.ASM ACBP=28 + 5D74:0008 03F4 C=CODE S=EMS G=(none) M=IT_EMS.ASM ACBP=48 + 5DB3:000C 01AF C=CODE S=ERROR G=(none) M=IT_ERR.ASM ACBP=28 + 5DCE:000C 0000 C=CODE S=INST G=(none) M=IT_F.ASM ACBP=29 + 5DCE:000C 0000 C=CODE S=INST G=(none) M=IT_G.ASM ACBP=28 + 5DCE:000C 3686 C=CODE S=INST G=(none) M=IT_I.ASM ACBP=48 + 5DCE:3692 0000 C=CODE S=INST G=(none) M=IT_PE.ASM ACBP=29 + 6137:0002 1DFA C=CODE S=FUNCTIONS G=(none) M=IT_F.ASM ACBP=28 + 6316:000C 2388 C=CODE S=HELP G=(none) M=IT_H.ASM ACBP=28 + 654F:0004 0AED C=CODE S=KEYBOARD G=(none) M=IT_K.ASM ACBP=28 + 65FF:0000 083E C=CODE S=MMTSR G=(none) M=IT_MMTSR.ASM ACBP=68 + 6682:000E 2393 C=CODE S=MESSAGE G=(none) M=IT_MSG.ASM ACBP=28 + 68BC:0001 0276 C=CODE S=VESA G=(none) M=IT_VESA.ASM ACBP=28 + 68E4:0000 1000 C=STACK S=STACKSEG G=(none) M=IT.ASM ACBP=75 Address Publics by Name - 466D:00DCA ADDMOUSEQUEUE - 484B:002D8 AMPLIFICATION - 484B:00030 BASEOCTAVE - 484B:00D78 CENTRALISECURSOR - 459B:006A3 CHARACTERGENERATIONOFFSET + 466E:00DCA ADDMOUSEQUEUE + 484C:002D8 AMPLIFICATION + 484C:00030 BASEOCTAVE + 484C:00D78 CENTRALISECURSOR + 459B:006AF CHARACTERGENERATIONOFFSET 3D02:00243 CLEARINFOLINE - 466D:00EDA CMDLINEDISABLEMOUSE - 484B:00D77 COMMANDTOVALUE - 4793:00A9F CRASHRECOVERY - 5B40:00003 CURRENTMODE - 4DE4:00352 CURRENTPATTERN + 466E:00EDA CMDLINEDISABLEMOUSE + 484C:00D77 COMMANDTOVALUE + 4794:00A9F CRASHRECOVERY + 5B41:00003 CURRENTMODE + 4DE5:00352 CURRENTPATTERN 3D34:00010 DISKDATAAREA 3D34:00F34 DISKOPTIONS - 5B89:01881 DISPLAYMINUS - 5B89:01878 DISPLAYPLUS - 5B89:01A40 DISPLAYUPDATESCREEN - 5B89:01AAC DISPLAY_GETDISPLAYWINDOWDATA - 5B89:01B11 DISPLAY_SELECTDISPLAYLIST - 4793:00B0F DOSSHELL - 5B89:0179F DRAWDISPLAYDATA - 466D:00B86 DRAWMOUSE + 5B8A:01881 DISPLAYMINUS + 5B8A:01878 DISPLAYPLUS + 5B8A:01A40 DISPLAYUPDATESCREEN + 5B8A:01AAC DISPLAY_GETDISPLAYWINDOWDATA + 5B8A:01B11 DISPLAY_SELECTDISPLAYLIST + 4794:00B0F DOSSHELL + 5B8A:0179F DRAWDISPLAYDATA + 466E:00B86 DRAWMOUSE 3D34:06753 D_CLEARFILENAME 3D34:03466 D_CLEARFILESPECIFIER 3D34:06403 idle D_DELETESAMPLEFILE @@ -200,421 +200,421 @@ Detailed map of segments 0000:0100A EMSERRORVALUE6 0000:01008 EMSERRORVALUE7 0000:01010 EMSERRORVALUE8 - 5DB2:0018F ERROR_INITHANDLER - 5DB2:001AA ERROR_UNINITHANDLER - 5D73:001FD E_ALLOCATEBLOCKEMS - 5D73:00374 E_ALLOCATEEMS - 5D73:003BA E_EMSAVAILABLE - 5D73:001D5 E_GETEMSPAGEFRAME - 5D73:003F2 E_GETEMSVERSION - 5D73:000EB E_GETFREEEMS - 5D73:003F7 E_GETINTERNALEMSHANDLE - 5D73:0002A E_INITEMS - 5D73:001DA E_MAPALIGNEDBLOCKEMS - 5D73:00180 E_MAPAVAILABLEEMSMEMORY - 5D73:0019B E_MAPEMSMEMORY - 5D73:002E7 E_RELEASEBLOCKEMS - 5D73:00109 E_RELEASEEMS - 5D73:003DC E_RESTOREEMSPAGEFRAME - 5D73:003C1 E_SAVEEMSPAGEFRAME - 5D73:001C4 E_UNINITEMS - 484B:00D7B FASTVOLUMEAMPLIFICATION + 5DB3:0018F ERROR_INITHANDLER + 5DB3:001AA ERROR_UNINITHANDLER + 5D74:001FD E_ALLOCATEBLOCKEMS + 5D74:00374 E_ALLOCATEEMS + 5D74:003BA E_EMSAVAILABLE + 5D74:001D5 E_GETEMSPAGEFRAME + 5D74:003F2 E_GETEMSVERSION + 5D74:000EB E_GETFREEEMS + 5D74:003F7 E_GETINTERNALEMSHANDLE + 5D74:0002A E_INITEMS + 5D74:001DA E_MAPALIGNEDBLOCKEMS + 5D74:00180 E_MAPAVAILABLEEMSMEMORY + 5D74:0019B E_MAPEMSMEMORY + 5D74:002E7 E_RELEASEBLOCKEMS + 5D74:00109 E_RELEASEEMS + 5D74:003DC E_RESTOREEMSPAGEFRAME + 5D74:003C1 E_SAVEEMSPAGEFRAME + 5D74:001C4 E_UNINITEMS + 484C:00D7B FASTVOLUMEAMPLIFICATION 3D34:00066 FILENAME 3D34:000C4 FILESPECIFIER - 484B:00D7D FLAGS - 466D:00EE2 FORCEMOUSERESTORE - 5B89:01C8A FOURIER_CHANGEPALETTE - 5B89:01B86 FOURIER_CREATETABLE - 5B89:01DA5 FOURIER_DRAWSCREEN - 5B89:01E96 FOURIER_IDLELIST - 5B89:01E9A FOURIER_POSTFUNCTION - 5B89:01DA2 FOURIER_PREDRAWSCREEN - 5B89:01D40 FOURIER_START - 5B89:01BB1 FOURIER_TRANSFORM - 6136:01C35 F_CALCULATELENGTH - 6136:00369 F_CALLFARFUNCTION - 6136:00363 F_CALLFARPOSTFUNCTION - 6136:0035F F_CALLFARPREFUNCTION - 6136:003E0 F_CHARACTERDEFINITIONS - 6136:0195C F_CONFIGBUTTONSETUP - 6136:01518 F_DRAW3NUM - 6136:01700 F_DRAW5NUM - 6136:0036D F_DRAWBOXOBJECT - 6136:00427 F_DRAWBUTTONOBJECT - 6136:018B8 F_DRAWHEADER - 6136:00D61 F_DRAWINFOLINE - 6136:008D6 F_DRAWSCALABLETHUMBBAR - 6136:0191D F_DRAWSMCCHANNELS - 6136:00F92 F_DRAWSTRINGINPUT - 6136:00383 F_DRAWTEXTOBJECT - 6136:0080B F_DRAWTHUMBBAR - 6136:01346 F_DRAWTOGGLE - 6136:01C4C F_DRIVERSCREEN - 6136:01D44 F_FILEDOSSHELL - 6136:01CF4 F_FILELOAD - 6136:01CE0 F_FILEMENU - 6136:01D06 F_FILENEW - 6136:01D5B F_FILEQUIT - 6136:01D32 F_FILESAVEAS - 6136:01D1B F_FILESAVECURRENT - 6136:010E1 F_GOTOEMPTYLIST - 6136:01B91 F_HELP - 6136:01BB7 F_INFOPAGE - 6136:00344 F_INSTRUMENTBUTTONHANDLER - 6136:01CAA F_INSTRUMENTLIBRARY - 6136:01C98 F_INSTRUMENTLIST - 6136:01C72 F_INSTRUMENTMENU - 6136:01B44 F_MAINMENU - 6136:01B84 F_MESSAGEEDITOR - 6136:01DB2 F_MIDI_DOWN - 6136:01DDC F_MIDI_PGDN - 6136:01DC4 F_MIDI_PGUP - 6136:01D99 F_MIDI_UP - 6136:01A9E F_NEWSONG - 6136:00341 F_NOTHING - 6136:01BA3 F_PLAYBACKMENU - 6136:01BFF F_PLAYMARK - 6136:01BED F_PLAYORDER - 6136:01BDB F_PLAYPATTERN - 6136:01BC9 F_PLAYSONG - 6136:015B1 F_POST3NUM - 6136:01798 F_POST5NUM - 6136:00505 F_POSTBUTTONOBJECT - 6136:003C8 F_POSTEXITOBJECT - 6136:00B22 F_POSTSCALABLETHUMBBAR - 6136:0102A F_POSTSTRINGINPUT - 6136:00B6E F_POSTTHUMBBAR - 6136:013EF F_POSTTOGGLE - 6136:01592 F_PRE3NUM - 6136:01779 F_PRE5NUM - 6136:004CC F_PREBUTTONOBJECT - 6136:00A71 F_PRESCALABLETHUMBBAR - 6136:01006 F_PRESTRINGINPUT - 6136:009BF F_PRETHUMBBAR - 6136:013BC F_PRETOGGLE - 6136:00DE8 F_REDRAWSCREEN - 6136:01C23 F_REINITSOUNDCARD - 6136:01CBC F_RELOADGRAVIS - 6136:01A96 F_RESET5NUMINPUTPOS - 6136:00DEC F_RETURN0 - 6136:00EDD F_RETURN1 - 6136:00DF9 F_RETURN192 - 6136:00DF2 F_RETURN64 - 6136:01CCE F_SAMPLELIBRARY - 6136:01C86 F_SAMPLELIST - 6136:01C5E F_SAMPLEMENU - 6136:01A86 F_SETAMIGA - 6136:019DF F_SETCONTROLINSTRUMENT - 6136:019CF F_SETCONTROLSAMPLE - 6136:003D8 F_SETDIRECTMODE - 6136:01A76 F_SETLINEAR - 6136:01A61 F_SETMONO - 6136:01A4C F_SETSTEREO - 6136:00DA6 F_SHOWCHANNELS - 6136:01D72 F_SHOWMIDIZXXINPUT - 6136:01C11 F_STOP - 6136:01B77 F_VIEWORDERPAN - 6136:01B5D F_VIEWPATTERN - 6136:01B6A F_VIEWVARIABLES - 4793:00ACB GETENVIRONMENT - 466D:00DC5 GETKEYBOARDLOCK - 4793:00A28 GETSTARTUPKEYLIST + 484C:00D7D FLAGS + 466E:00EE2 FORCEMOUSERESTORE + 5B8A:01C8A FOURIER_CHANGEPALETTE + 5B8A:01B86 FOURIER_CREATETABLE + 5B8A:01DA5 FOURIER_DRAWSCREEN + 5B8A:01E96 FOURIER_IDLELIST + 5B8A:01E9A FOURIER_POSTFUNCTION + 5B8A:01DA2 FOURIER_PREDRAWSCREEN + 5B8A:01D40 FOURIER_START + 5B8A:01BB1 FOURIER_TRANSFORM + 6137:01C35 F_CALCULATELENGTH + 6137:00369 F_CALLFARFUNCTION + 6137:00363 F_CALLFARPOSTFUNCTION + 6137:0035F F_CALLFARPREFUNCTION + 6137:003E0 F_CHARACTERDEFINITIONS + 6137:0195C F_CONFIGBUTTONSETUP + 6137:01518 F_DRAW3NUM + 6137:01700 F_DRAW5NUM + 6137:0036D F_DRAWBOXOBJECT + 6137:00427 F_DRAWBUTTONOBJECT + 6137:018B8 F_DRAWHEADER + 6137:00D61 F_DRAWINFOLINE + 6137:008D6 F_DRAWSCALABLETHUMBBAR + 6137:0191D F_DRAWSMCCHANNELS + 6137:00F92 F_DRAWSTRINGINPUT + 6137:00383 F_DRAWTEXTOBJECT + 6137:0080B F_DRAWTHUMBBAR + 6137:01346 F_DRAWTOGGLE + 6137:01C4C F_DRIVERSCREEN + 6137:01D44 F_FILEDOSSHELL + 6137:01CF4 F_FILELOAD + 6137:01CE0 F_FILEMENU + 6137:01D06 F_FILENEW + 6137:01D5B F_FILEQUIT + 6137:01D32 F_FILESAVEAS + 6137:01D1B F_FILESAVECURRENT + 6137:010E1 F_GOTOEMPTYLIST + 6137:01B91 F_HELP + 6137:01BB7 F_INFOPAGE + 6137:00344 F_INSTRUMENTBUTTONHANDLER + 6137:01CAA F_INSTRUMENTLIBRARY + 6137:01C98 F_INSTRUMENTLIST + 6137:01C72 F_INSTRUMENTMENU + 6137:01B44 F_MAINMENU + 6137:01B84 F_MESSAGEEDITOR + 6137:01DB2 F_MIDI_DOWN + 6137:01DDC F_MIDI_PGDN + 6137:01DC4 F_MIDI_PGUP + 6137:01D99 F_MIDI_UP + 6137:01A9E F_NEWSONG + 6137:00341 F_NOTHING + 6137:01BA3 F_PLAYBACKMENU + 6137:01BFF F_PLAYMARK + 6137:01BED F_PLAYORDER + 6137:01BDB F_PLAYPATTERN + 6137:01BC9 F_PLAYSONG + 6137:015B1 F_POST3NUM + 6137:01798 F_POST5NUM + 6137:00505 F_POSTBUTTONOBJECT + 6137:003C8 F_POSTEXITOBJECT + 6137:00B22 F_POSTSCALABLETHUMBBAR + 6137:0102A F_POSTSTRINGINPUT + 6137:00B6E F_POSTTHUMBBAR + 6137:013EF F_POSTTOGGLE + 6137:01592 F_PRE3NUM + 6137:01779 F_PRE5NUM + 6137:004CC F_PREBUTTONOBJECT + 6137:00A71 F_PRESCALABLETHUMBBAR + 6137:01006 F_PRESTRINGINPUT + 6137:009BF F_PRETHUMBBAR + 6137:013BC F_PRETOGGLE + 6137:00DE8 F_REDRAWSCREEN + 6137:01C23 F_REINITSOUNDCARD + 6137:01CBC F_RELOADGRAVIS + 6137:01A96 F_RESET5NUMINPUTPOS + 6137:00DEC F_RETURN0 + 6137:00EDD F_RETURN1 + 6137:00DF9 F_RETURN192 + 6137:00DF2 F_RETURN64 + 6137:01CCE F_SAMPLELIBRARY + 6137:01C86 F_SAMPLELIST + 6137:01C5E F_SAMPLEMENU + 6137:01A86 F_SETAMIGA + 6137:019DF F_SETCONTROLINSTRUMENT + 6137:019CF F_SETCONTROLSAMPLE + 6137:003D8 F_SETDIRECTMODE + 6137:01A76 F_SETLINEAR + 6137:01A61 F_SETMONO + 6137:01A4C F_SETSTEREO + 6137:00DA6 F_SHOWCHANNELS + 6137:01D72 F_SHOWMIDIZXXINPUT + 6137:01C11 F_STOP + 6137:01B77 F_VIEWORDERPAN + 6137:01B5D F_VIEWPATTERN + 6137:01B6A F_VIEWVARIABLES + 4794:00ACB GETENVIRONMENT + 466E:00DC5 GETKEYBOARDLOCK + 4794:00A28 GETSTARTUPKEYLIST 3D02:00326 GETTIMERCOUNTER - 5B40:00341 GLBL_ALT_F1 - 5B40:0034D GLBL_ALT_F2 - 5B40:00359 GLBL_ALT_F3 - 5B40:00365 GLBL_ALT_F4 - 5B40:00371 GLBL_ALT_F5 - 5B40:0037D GLBL_ALT_F6 - 5B40:00389 GLBL_ALT_F7 - 5B40:00395 GLBL_ALT_F8 - 5B40:0029A GLBL_CTRL_F1 - 5B40:002ED GLBL_CTRL_F12 - 5B40:002AD GLBL_CTRL_F3 - 5B40:002C5 GLBL_CTRL_F4 - 5B40:002DD GLBL_CTRL_F5 - 5B40:0048C GLBL_DRIVERSCREEN - 5B40:00231 GLBL_F10 - 5B40:00256 GLBL_F11 - 5B40:0025E GLBL_F11_2 - 5B40:00287 GLBL_F12 - 5B40:00069 GLBL_F2 - 5B40:00074 GLBL_F2_2 - 5B40:000DC GLBL_F3 - 5B40:000F4 GLBL_F4 - 5B40:00112 GLBL_F4_2 - 5B40:00132 GLBL_F5 - 5B40:00182 GLBL_F6 - 5B40:00208 GLBL_F8 - 5B40:00211 GLBL_F9 - 5B40:0033C GLBL_GETCURRENTMODE - 5B40:00300 GLBL_GETHEADERMODE - 5B40:003A1 GLBL_LEFTBRACE - 5B40:003C7 GLBL_LEFTSQUAREBRACKET - 5B40:001AF GLBL_LOADINSTRUMENT - 5B40:00197 GLBL_LOADSAMPLE - 5B40:00411 GLBL_RESTOREMODE - 5B40:003B4 GLBL_RIGHTBRACE - 5B40:003DA GLBL_RIGHTSQUAREBRACKET - 5B40:003ED GLBL_SAVEMODE - 5B40:00337 GLBL_SETCURRENTMODE - 5B40:001C7 GLBL_SHIFT_F1 - 5B40:001F2 GLBL_SHIFT_F6 - 5B40:001DA GLBL_SHIFT_F9 - 5B40:00479 GLBL_TIMERSCREEN + 5B41:00341 GLBL_ALT_F1 + 5B41:0034D GLBL_ALT_F2 + 5B41:00359 GLBL_ALT_F3 + 5B41:00365 GLBL_ALT_F4 + 5B41:00371 GLBL_ALT_F5 + 5B41:0037D GLBL_ALT_F6 + 5B41:00389 GLBL_ALT_F7 + 5B41:00395 GLBL_ALT_F8 + 5B41:0029A GLBL_CTRL_F1 + 5B41:002ED GLBL_CTRL_F12 + 5B41:002AD GLBL_CTRL_F3 + 5B41:002C5 GLBL_CTRL_F4 + 5B41:002DD GLBL_CTRL_F5 + 5B41:0048C GLBL_DRIVERSCREEN + 5B41:00231 GLBL_F10 + 5B41:00256 GLBL_F11 + 5B41:0025E GLBL_F11_2 + 5B41:00287 GLBL_F12 + 5B41:00069 GLBL_F2 + 5B41:00074 GLBL_F2_2 + 5B41:000DC GLBL_F3 + 5B41:000F4 GLBL_F4 + 5B41:00112 GLBL_F4_2 + 5B41:00132 GLBL_F5 + 5B41:00182 GLBL_F6 + 5B41:00208 GLBL_F8 + 5B41:00211 GLBL_F9 + 5B41:0033C GLBL_GETCURRENTMODE + 5B41:00300 GLBL_GETHEADERMODE + 5B41:003A1 GLBL_LEFTBRACE + 5B41:003C7 GLBL_LEFTSQUAREBRACKET + 5B41:001AF GLBL_LOADINSTRUMENT + 5B41:00197 GLBL_LOADSAMPLE + 5B41:00411 GLBL_RESTOREMODE + 5B41:003B4 GLBL_RIGHTBRACE + 5B41:003DA GLBL_RIGHTSQUAREBRACKET + 5B41:003ED GLBL_SAVEMODE + 5B41:00337 GLBL_SETCURRENTMODE + 5B41:001C7 GLBL_SHIFT_F1 + 5B41:001F2 GLBL_SHIFT_F6 + 5B41:001DA GLBL_SHIFT_F9 + 5B41:00479 GLBL_TIMERSCREEN 0000:01E1D GLOBALKEYLIST 0000:01E1E HELPKEYVALUE - 6315:0228C H_DRAWHELP - 6315:022FD H_HELP - 6315:0232F H_HELPDOWN - 6315:02377 H_HELPESC - 6315:0236D H_HELPPGDN - 6315:0235A H_HELPPGUP - 6315:0231F H_HELPUP - 6315:0238C H_SETHELPCONTEXT + 6316:0228C H_DRAWHELP + 6316:022FD H_HELP + 6316:0232F H_HELPDOWN + 6316:02377 H_HELPESC + 6316:0236D H_HELPPGDN + 6316:0235A H_HELPPGUP + 6316:0231F H_HELPUP + 6316:0238C H_SETHELPCONTEXT 3D02:00227 IDLEUPDATEINFOLINE - 466D:00C8F INITMOUSE + 466E:00C8F INITMOUSE 3D02:00110 INITTIMERHANDLER - 5DCD:0000C INSTRUMENTAMPLIFICATION + 5DCE:0000C INSTRUMENTAMPLIFICATION 3D34:00264 INSTRUMENTDIRECTORY - 5DCD:0013D INSTRUMENTEDIT - 5DCD:0000E INSTRUMENTSCREEN - 4793:00A23 ISSTARTUPKEYLIST - 5DCD:01AB6 I_AMPLIFYSAMPLE - 5DCD:01116 I_CALCULATEC5SPEED - 5DCD:019CF I_CENTERSAMPLE - 5DCD:00E8D I_CHECKLOOPVALUES - 5DCD:00ECB I_CHECKSUSLOOPVALUES - 5DCD:01372 idle I_CLEARSAMPLENAME - 5DCD:034BD I_CLEARTABLES - 5DCD:01174 I_CONVERTSAMPLE - 5DCD:028EF I_COPYINSTRUMENT - 5DCD:01320 I_CUTSAMPLE - 5DCD:0124F I_CUTSAMPLEBEFORELOOP - 5DCD:0353D I_DECREASEPLAYCHANNEL - 5DCD:01131 I_DELETEINSTRUMENT - 5DCD:010DE I_DELETESAMPLE - 5DCD:027C1 I_DOUBLESAMPLESPEED - 5DCD:029F5 I_DRAWENVELOPE - 5DCD:01F7A I_DRAWINSTRUMENTWINDOW - 5DCD:0233F I_DRAWNOTEWINDOW - 5DCD:035A1 I_DRAWPITCHPANCENTER - 5DCD:00A71 I_DRAWSAMPLELIST - 5DCD:00F09 I_DRAWWAVEFORM - 5DCD:02781 I_EXCHANGEINSTRUMENTS - 5DCD:015D7 I_EXCHANGESAMPLES - 5DCD:00987 I_GETINSTRUMENTOFFSET - 5DCD:00981 I_GETINSTRUMENTSCREEN - 5DCD:0368C I_GETPRESETENVELOPEOFFSET - 5DCD:0099A I_GETSAMPLEOFFSET - 5DCD:027E1 I_HALVESAMPLESPEED - 5DCD:03635 I_IDLEUPDATEENVELOPE - 5DCD:03522 I_INCREASEPLAYCHANNEL - 5DCD:033D6 I_INSTRUMENTLISTNOTEOFF - 5DCD:033A9 I_INSTRUMENTLISTSPACE - 5DCD:011DC I_INVERTSAMPLE - 5DCD:02B39 I_MAPENVELOPE - 5DCD:02157 I_PLAYNOTE - 5DCD:03505 I_PLAYSAMPLE - 5DCD:02A8D I_POSTENVELOPE - 5DCD:021EA I_POSTINSTRUMENTWINDOW - 5DCD:02437 I_POSTNOTEWINDOW - 5DCD:035E3 I_POSTPITCHPANCENTER - 5DCD:00BC3 I_POSTSAMPLELIST - 5DCD:02A85 I_PREENVELOPE - 5DCD:02035 I_PREINSTRUMENTWINDOW - 5DCD:023FB I_PRENOTEWINDOW - 5DCD:035D3 I_PREPITCHPANCENTER - 5DCD:00B68 I_PRESAMPLELIST - 5DCD:0111A I_PRINTC5FREQUENCY - 5DCD:0282E I_REPLACEINSTRUMENT - 5DCD:016A0 I_REPLACESAMPLE - 5DCD:0196A I_RESIZESAMPLE - 5DCD:01972 I_RESIZESAMPLENOINT - 5DCD:01BEE I_REVERSESAMPLE - 5DCD:03675 I_SAMPLEBUTTONHANDLER - 5DCD:00D5D I_SAMPLEDOWN - 5DCD:02813 I_SAMPLESPEEDSEMIDOWN - 5DCD:027F2 I_SAMPLESPEEDSEMIUP - 5DCD:00D7A I_SAMPLEUP - 5DCD:028A5 I_SCALEINSTRUMENTVOLUMES - 5DCD:0285B I_SCALESAMPLEVOLUMES - 5DCD:009C2 I_SELECTSCREEN - 5DCD:0343E I_SHOWINSTRUMENTPLAY - 5DCD:00E25 I_SHOWSAMPLEINFO - 5DCD:033F2 I_SHOWSAMPLEPLAY - 5DCD:02917 I_SWAPINSTRUMENTS - 5DCD:0161C I_SWAPSAMPLES - 5DCD:034CA I_TAGINSTRUMENT - 5DCD:034D1 I_TAGSAMPLE - 5DCD:03589 I_TOGGLEMULTICHANNEL - 5DCD:01DA6 I_TOGGLESAMPLEQUALITY - 5DCD:02966 I_UPDATEINSTRUMENT - 654E:00966 K_CLEARKEYBOARDQUEUE - 654E:009A6 K_DRAWTABLES - 654E:0070B K_GETKEY - 654E:005EA K_INITKEYBOARD - 654E:00693 K_INSTALLDOSHANDLER - 654E:00A46 K_INSTALLKEYBOARDTYPE - 654E:00977 K_ISANYKEYDOWN - 654E:0098F K_ISKEYDOWN - 654E:006D7 K_ISKEYWAITING - 654E:00A9B K_REMOVEKEYBOARDTYPE - 654E:00996 K_RESETKEYBOARDTABLES - 654E:00AAD K_SETSCROLLLOCK - 654E:00A23 K_SHOWMIDIINPUT - 654E:00651 K_UNINITKEYBOARD - 654E:006B3 K_UNINSTALLDOSHANDLER - 484B:00FEF LASTINSTRUMENT - 484B:00086 idle LASTKEYBOARD1 + 5DCE:0013D INSTRUMENTEDIT + 5DCE:0000E INSTRUMENTSCREEN + 4794:00A23 ISSTARTUPKEYLIST + 5DCE:01AB6 I_AMPLIFYSAMPLE + 5DCE:01116 I_CALCULATEC5SPEED + 5DCE:019CF I_CENTERSAMPLE + 5DCE:00E8D I_CHECKLOOPVALUES + 5DCE:00ECB I_CHECKSUSLOOPVALUES + 5DCE:01372 idle I_CLEARSAMPLENAME + 5DCE:034BD I_CLEARTABLES + 5DCE:01174 I_CONVERTSAMPLE + 5DCE:028EF I_COPYINSTRUMENT + 5DCE:01320 I_CUTSAMPLE + 5DCE:0124F I_CUTSAMPLEBEFORELOOP + 5DCE:0353D I_DECREASEPLAYCHANNEL + 5DCE:01131 I_DELETEINSTRUMENT + 5DCE:010DE I_DELETESAMPLE + 5DCE:027C1 I_DOUBLESAMPLESPEED + 5DCE:029F5 I_DRAWENVELOPE + 5DCE:01F7A I_DRAWINSTRUMENTWINDOW + 5DCE:0233F I_DRAWNOTEWINDOW + 5DCE:035A1 I_DRAWPITCHPANCENTER + 5DCE:00A71 I_DRAWSAMPLELIST + 5DCE:00F09 I_DRAWWAVEFORM + 5DCE:02781 I_EXCHANGEINSTRUMENTS + 5DCE:015D7 I_EXCHANGESAMPLES + 5DCE:00987 I_GETINSTRUMENTOFFSET + 5DCE:00981 I_GETINSTRUMENTSCREEN + 5DCE:0368C I_GETPRESETENVELOPEOFFSET + 5DCE:0099A I_GETSAMPLEOFFSET + 5DCE:027E1 I_HALVESAMPLESPEED + 5DCE:03635 I_IDLEUPDATEENVELOPE + 5DCE:03522 I_INCREASEPLAYCHANNEL + 5DCE:033D6 I_INSTRUMENTLISTNOTEOFF + 5DCE:033A9 I_INSTRUMENTLISTSPACE + 5DCE:011DC I_INVERTSAMPLE + 5DCE:02B39 I_MAPENVELOPE + 5DCE:02157 I_PLAYNOTE + 5DCE:03505 I_PLAYSAMPLE + 5DCE:02A8D I_POSTENVELOPE + 5DCE:021EA I_POSTINSTRUMENTWINDOW + 5DCE:02437 I_POSTNOTEWINDOW + 5DCE:035E3 I_POSTPITCHPANCENTER + 5DCE:00BC3 I_POSTSAMPLELIST + 5DCE:02A85 I_PREENVELOPE + 5DCE:02035 I_PREINSTRUMENTWINDOW + 5DCE:023FB I_PRENOTEWINDOW + 5DCE:035D3 I_PREPITCHPANCENTER + 5DCE:00B68 I_PRESAMPLELIST + 5DCE:0111A I_PRINTC5FREQUENCY + 5DCE:0282E I_REPLACEINSTRUMENT + 5DCE:016A0 I_REPLACESAMPLE + 5DCE:0196A I_RESIZESAMPLE + 5DCE:01972 I_RESIZESAMPLENOINT + 5DCE:01BEE I_REVERSESAMPLE + 5DCE:03675 I_SAMPLEBUTTONHANDLER + 5DCE:00D5D I_SAMPLEDOWN + 5DCE:02813 I_SAMPLESPEEDSEMIDOWN + 5DCE:027F2 I_SAMPLESPEEDSEMIUP + 5DCE:00D7A I_SAMPLEUP + 5DCE:028A5 I_SCALEINSTRUMENTVOLUMES + 5DCE:0285B I_SCALESAMPLEVOLUMES + 5DCE:009C2 I_SELECTSCREEN + 5DCE:0343E I_SHOWINSTRUMENTPLAY + 5DCE:00E25 I_SHOWSAMPLEINFO + 5DCE:033F2 I_SHOWSAMPLEPLAY + 5DCE:02917 I_SWAPINSTRUMENTS + 5DCE:0161C I_SWAPSAMPLES + 5DCE:034CA I_TAGINSTRUMENT + 5DCE:034D1 I_TAGSAMPLE + 5DCE:03589 I_TOGGLEMULTICHANNEL + 5DCE:01DA6 I_TOGGLESAMPLEQUALITY + 5DCE:02966 I_UPDATEINSTRUMENT + 654F:00966 K_CLEARKEYBOARDQUEUE + 654F:009A6 K_DRAWTABLES + 654F:0070B K_GETKEY + 654F:005EA K_INITKEYBOARD + 654F:00693 K_INSTALLDOSHANDLER + 654F:00A46 K_INSTALLKEYBOARDTYPE + 654F:00977 K_ISANYKEYDOWN + 654F:0098F K_ISKEYDOWN + 654F:006D7 K_ISKEYWAITING + 654F:00A9B K_REMOVEKEYBOARDTYPE + 654F:00996 K_RESETKEYBOARDTABLES + 654F:00AAD K_SETSCROLLLOCK + 654F:00A23 K_SHOWMIDIINPUT + 654F:00651 K_UNINITKEYBOARD + 654F:006B3 K_UNINSTALLDOSHANDLER + 484C:00FEF LASTINSTRUMENT + 484C:00086 idle LASTKEYBOARD1 0000:02184 idle LOGOCHARACTER 3D34:05FB5 LSWINDOW_DOWN 3D34:05FA1 LSWINDOW_UP - 5DCD:00127 MAXNODE - 484B:00024 MAXROW - 484B:00D79 MIDIAMPLIFICATION - 654E:00AB6 MIDIBUFFEREMPTY - 484B:00D7A MIDICENTRALNOTE - 4DE4:09966 MIDIDATAAREA - 654E:00ABD MIDISEND - 5DCD:0207B MIDI_ALLOCATECHANNEL - 5DCD:020CD MIDI_CLEARTABLE - 5DCD:020C3 MIDI_FINDCHANNEL - 5DCD:020BB MIDI_GETCHANNEL - 5DCD:020E2 MIDI_NOTEOFF - 5DCD:0210F MIDI_PLAYNOTE - 5DCD:034D8 MIDI_PLAYSAMPLE - 484B:056C4 MIDI_SETINSTRUMENT - 65FE:00001 MMTSR_INSTALLMMTSR - 65FE:0006F MMTSR_UNINSTALLMMTSR - 484B:0060B MODIFIED - 466D:00E3D MOUSEADDEVENT - 466D:00000 MOUSECHARACTERGENERATIONOFFSET - 466D:00E61 MOUSECLEAREVENTS - 466D:00E73 MOUSEGETSTATUS - 466D:00DF5 MOUSEINPUT - 466D:00E6A MOUSEREMOVEEVENTS - 466D:00D9B MOUSERESTOREEVENTS - 466D:00D76 MOUSESAVEEVENTS - 466D:00CF1 MOUSESECONDSETDISABLE - 466D:00CEA MOUSESECONDSETENABLE - 466D:00D27 MOUSESETXY - 466D:00CF8 MOUSETOGGLE - 466D:00E86 MOUSEUPDATEDISABLE - 466D:00E7F MOUSEUPDATEENABLE - 6681:01FE5 MSG_DRAWMESSAGE - 6681:0237D MSG_GETMESSAGELENGTH - 6681:02392 MSG_GETMESSAGEOFFSET - 6681:020BE MSG_POSTMESSAGE - 6681:0208F MSG_PREMESSAGE - 6681:01FCB MSG_RESETMESSAGE - 484B:00034 MULTICHANNELINFO - 4DE4:0BDDD MUSIC_ALLOCATEPATTERN - 4DE4:0BEA5 MUSIC_ALLOCATESAMPLE - 4DE4:0D1D6 MUSIC_ASSIGNSAMPLETOINSTRUMENT - 4DE4:0C17E MUSIC_AUTODETECTSOUNDCARD - 4DE4:0C056 MUSIC_CLEARALLINSTRUMENTS - 4DE4:0C001 MUSIC_CLEARALLSAMPLENAMES - 4DE4:0C034 MUSIC_CLEARINSTRUMENT - 4DE4:0BFDE MUSIC_CLEARSAMPLENAME - 4DE4:0D165 MUSIC_DECREASESPEED - 4DE4:0D27F MUSIC_DECREASEVOLUME - 4DE4:0D3B5 MUSIC_GETDELAY - 4DE4:0D1C5 MUSIC_GETDISPLAYVARIABLES - 4DE4:0D3A0 MUSIC_GETDRIVERSCREEN - 4DE4:0D3A5 MUSIC_GETDRIVERVARIABLE - 4DE4:0D336 MUSIC_GETFREESOUNDCARDMEMORY - 4DE4:0CF8F MUSIC_GETHOSTCHANNELINFORMATIONTABLE - 4DE4:0C254 MUSIC_GETINSTRUMENTMODE - 4DE4:0D37C MUSIC_GETLASTCHANNEL - 4DE4:0D546 MUSIC_GETMIDIDATAAREA - 4DE4:0CBEC MUSIC_GETNUMBEROFINSTRUMENTS - 4DE4:0CBC4 MUSIC_GETNUMBEROFSAMPLES - 4DE4:0D33C MUSIC_GETNUMCHANNELS - 4DE4:0BD38 MUSIC_GETPATTERN - 4DE4:0D518 MUSIC_GETPATTERNLENGTH - 4DE4:0BD80 MUSIC_GETPATTERNLOCATION - 4DE4:0BD89 MUSIC_GETPATTERNLOCATIONNOCOUNT - 4DE4:0D341 MUSIC_GETPITCHTABLE - 4DE4:0CC9A MUSIC_GETPLAYMODE - 4DE4:0CCB2 MUSIC_GETPLAYMODE2 - 4DE4:0CC22 MUSIC_GETSAMPLELOCATION - 4DE4:0CF95 MUSIC_GETSLAVECHANNELINFORMATIONTABLE - 4DE4:0C082 MUSIC_GETSONGSEGMENT - 4DE4:0BC51 MUSIC_GETWAVEFORM - 4DE4:0D14C MUSIC_INCREASESPEED - 4DE4:0D263 MUSIC_INCREASEVOLUME - 4DE4:0D360 MUSIC_INITMIXTABLE - 4DE4:0BCAF MUSIC_INITMUSIC - 4DE4:0D115 MUSIC_INITMUTETABLE - 4DE4:0D134 MUSIC_INITSTEREO - 4DE4:0CD6D MUSIC_KBPLAYSONG - 4DE4:0CFCA MUSIC_LASTORDER - 4DE4:0CF9E MUSIC_NEXTORDER - 4DE4:0D35B MUSIC_PATTERNSTORAGE - 4DE4:0CEB7 MUSIC_PLAYNOTE - 4DE4:0CD2C MUSIC_PLAYPARTSONG - 4DE4:0CCCB MUSIC_PLAYPATTERN - 4DE4:0CF39 MUSIC_PLAYSAMPLE - 4DE4:0CCF5 MUSIC_PLAYSONG - 4DE4:0BC61 MUSIC_POLL - 4DE4:0D298 MUSIC_REGETLOOPINFORMATION - 4DE4:0BC9F MUSIC_REINITSOUNDCARD - 4DE4:0C023 MUSIC_RELEASEALLPATTERNS - 4DE4:0C012 MUSIC_RELEASEALLSAMPLES - 4DE4:0BCF4 MUSIC_RELEASEPATTERN - 4DE4:0BF62 MUSIC_RELEASESAMPLE - 4DE4:0D25C MUSIC_REVERSECHANNELS - 4DE4:0D51D MUSIC_SAVEMIDICONFIG - 4DE4:0D1BF MUSIC_SETADDRESS - 4DE4:0D1AC MUSIC_SETDMA - 4DE4:0D3AA MUSIC_SETDRIVERVARIABLE - 4DE4:0D006 MUSIC_SETGLOBALVOLUME - 4DE4:0D1B9 MUSIC_SETIRQ - 4DE4:0D256 MUSIC_SETLIMIT - 4DE4:0D1B3 MUSIC_SETMIXSPEED - 4DE4:0D3AF MUSIC_SETNEXTORDER - 4DE4:0D17E MUSIC_SETSOUNDCARD - 4DE4:0D1A1 MUSIC_SETSOUNDCARDDRIVER - 4DE4:0C232 MUSIC_SHOWAUTODETECTSOUNDCARD - 4DE4:0D4FA MUSIC_SHOWTIME - 4DE4:0D0B1 MUSIC_SOLOCHANNEL - 4DE4:0D2E5 MUSIC_SOUNDCARDLOADALLSAMPLES - 4DE4:0D2CE MUSIC_SOUNDCARDLOADSAMPLE - 4DE4:0CDC0 MUSIC_STOP - 4DE4:0D421 MUSIC_TIMESONG - 4DE4:0D079 MUSIC_TOGGLECHANNEL - 4DE4:0D54C MUSIC_TOGGLEORDERUPDATE - 4DE4:0D347 MUSIC_TOGGLEREVERSE - 4DE4:0D561 MUSIC_TOGGLESOLOINSTRUMENT - 4DE4:0D56C MUSIC_TOGGLESOLOSAMPLE - 4DE4:0C061 MUSIC_UNINITMUSIC - 4DE4:0D0AA MUSIC_UNMUTEALL - 4DE4:0CEAF MUSIC_UPDATEPATTERNOFFSET - 475C:000F1 M_FUNCTIONDIVIDER - 475C:00169 M_FUNCTIONHANDLER - 475C:00363 M_OBJECT1LIST - 475C:00360 M_OBJECT1LISTDEFAULT - 3D34:085C9 NETWORK_ADDWORDTOQUEUE - 3D34:07B02 NETWORK_DRAWDRIVERSCREEN - 3D34:07A63 NETWORK_DRIVERSCREEN - 3D34:08613 NETWORK_ENSURENONETWORK - 3D34:08496 NETWORK_FINISHEDSENDQUEUE - 3D34:0846A NETWORK_GETSENDQUEUE - 3D34:07D45 NETWORK_POLL - 3D34:07BD5 NETWORK_POSTDRIVERSCREEN - 3D34:07B7F NETWORK_PREDRIVERSCREEN - 3D34:084D6 NETWORK_QUEUESAMPLEDATA - 3D34:08647 NETWORK_SENDINSTRUMENTHEADER - 3D34:08630 NETWORK_SENDSAMPLEHEADER - 3D34:0865E NETWORK_SENDSONGDATAINFORMATION - 3D34:07D7B NETWORK_SHUTDOWN - 3D34:085EF NETWORK_UPDATEPATTERN - 3D34:085DA NETWORK_UPDATEPATTERNIFIDLE - 466D:00E78 NEWCHARACTERSET - 5DCD:00121 NEWSAMPLESIZE - 5DCD:00135 NODEHELD - 484B:00026 NUMBEROFROWS + 5DCE:00127 MAXNODE + 484C:00024 MAXROW + 484C:00D79 MIDIAMPLIFICATION + 654F:00AB6 MIDIBUFFEREMPTY + 484C:00D7A MIDICENTRALNOTE + 4DE5:09966 MIDIDATAAREA + 654F:00ABD MIDISEND + 5DCE:0207B MIDI_ALLOCATECHANNEL + 5DCE:020CD MIDI_CLEARTABLE + 5DCE:020C3 MIDI_FINDCHANNEL + 5DCE:020BB MIDI_GETCHANNEL + 5DCE:020E2 MIDI_NOTEOFF + 5DCE:0210F MIDI_PLAYNOTE + 5DCE:034D8 MIDI_PLAYSAMPLE + 484C:056C4 MIDI_SETINSTRUMENT + 65FF:00001 MMTSR_INSTALLMMTSR + 65FF:0006F MMTSR_UNINSTALLMMTSR + 484C:0060B MODIFIED + 466E:00E3D MOUSEADDEVENT + 466E:00000 MOUSECHARACTERGENERATIONOFFSET + 466E:00E61 MOUSECLEAREVENTS + 466E:00E73 MOUSEGETSTATUS + 466E:00DF5 MOUSEINPUT + 466E:00E6A MOUSEREMOVEEVENTS + 466E:00D9B MOUSERESTOREEVENTS + 466E:00D76 MOUSESAVEEVENTS + 466E:00CF1 MOUSESECONDSETDISABLE + 466E:00CEA MOUSESECONDSETENABLE + 466E:00D27 MOUSESETXY + 466E:00CF8 MOUSETOGGLE + 466E:00E86 MOUSEUPDATEDISABLE + 466E:00E7F MOUSEUPDATEENABLE + 6682:01FE5 MSG_DRAWMESSAGE + 6682:0237D MSG_GETMESSAGELENGTH + 6682:02392 MSG_GETMESSAGEOFFSET + 6682:020BE MSG_POSTMESSAGE + 6682:0208F MSG_PREMESSAGE + 6682:01FCB MSG_RESETMESSAGE + 484C:00034 MULTICHANNELINFO + 4DE5:0BDDD MUSIC_ALLOCATEPATTERN + 4DE5:0BEA5 MUSIC_ALLOCATESAMPLE + 4DE5:0D1D6 MUSIC_ASSIGNSAMPLETOINSTRUMENT + 4DE5:0C17E MUSIC_AUTODETECTSOUNDCARD + 4DE5:0C056 MUSIC_CLEARALLINSTRUMENTS + 4DE5:0C001 MUSIC_CLEARALLSAMPLENAMES + 4DE5:0C034 MUSIC_CLEARINSTRUMENT + 4DE5:0BFDE MUSIC_CLEARSAMPLENAME + 4DE5:0D165 MUSIC_DECREASESPEED + 4DE5:0D27F MUSIC_DECREASEVOLUME + 4DE5:0D3B5 MUSIC_GETDELAY + 4DE5:0D1C5 MUSIC_GETDISPLAYVARIABLES + 4DE5:0D3A0 MUSIC_GETDRIVERSCREEN + 4DE5:0D3A5 MUSIC_GETDRIVERVARIABLE + 4DE5:0D336 MUSIC_GETFREESOUNDCARDMEMORY + 4DE5:0CF8F MUSIC_GETHOSTCHANNELINFORMATIONTABLE + 4DE5:0C254 MUSIC_GETINSTRUMENTMODE + 4DE5:0D37C MUSIC_GETLASTCHANNEL + 4DE5:0D546 MUSIC_GETMIDIDATAAREA + 4DE5:0CBEC MUSIC_GETNUMBEROFINSTRUMENTS + 4DE5:0CBC4 MUSIC_GETNUMBEROFSAMPLES + 4DE5:0D33C MUSIC_GETNUMCHANNELS + 4DE5:0BD38 MUSIC_GETPATTERN + 4DE5:0D518 MUSIC_GETPATTERNLENGTH + 4DE5:0BD80 MUSIC_GETPATTERNLOCATION + 4DE5:0BD89 MUSIC_GETPATTERNLOCATIONNOCOUNT + 4DE5:0D341 MUSIC_GETPITCHTABLE + 4DE5:0CC9A MUSIC_GETPLAYMODE + 4DE5:0CCB2 MUSIC_GETPLAYMODE2 + 4DE5:0CC22 MUSIC_GETSAMPLELOCATION + 4DE5:0CF95 MUSIC_GETSLAVECHANNELINFORMATIONTABLE + 4DE5:0C082 MUSIC_GETSONGSEGMENT + 4DE5:0BC51 MUSIC_GETWAVEFORM + 4DE5:0D14C MUSIC_INCREASESPEED + 4DE5:0D263 MUSIC_INCREASEVOLUME + 4DE5:0D360 MUSIC_INITMIXTABLE + 4DE5:0BCAF MUSIC_INITMUSIC + 4DE5:0D115 MUSIC_INITMUTETABLE + 4DE5:0D134 MUSIC_INITSTEREO + 4DE5:0CD6D MUSIC_KBPLAYSONG + 4DE5:0CFCA MUSIC_LASTORDER + 4DE5:0CF9E MUSIC_NEXTORDER + 4DE5:0D35B MUSIC_PATTERNSTORAGE + 4DE5:0CEB7 MUSIC_PLAYNOTE + 4DE5:0CD2C MUSIC_PLAYPARTSONG + 4DE5:0CCCB MUSIC_PLAYPATTERN + 4DE5:0CF39 MUSIC_PLAYSAMPLE + 4DE5:0CCF5 MUSIC_PLAYSONG + 4DE5:0BC61 MUSIC_POLL + 4DE5:0D298 MUSIC_REGETLOOPINFORMATION + 4DE5:0BC9F MUSIC_REINITSOUNDCARD + 4DE5:0C023 MUSIC_RELEASEALLPATTERNS + 4DE5:0C012 MUSIC_RELEASEALLSAMPLES + 4DE5:0BCF4 MUSIC_RELEASEPATTERN + 4DE5:0BF62 MUSIC_RELEASESAMPLE + 4DE5:0D25C MUSIC_REVERSECHANNELS + 4DE5:0D51D MUSIC_SAVEMIDICONFIG + 4DE5:0D1BF MUSIC_SETADDRESS + 4DE5:0D1AC MUSIC_SETDMA + 4DE5:0D3AA MUSIC_SETDRIVERVARIABLE + 4DE5:0D006 MUSIC_SETGLOBALVOLUME + 4DE5:0D1B9 MUSIC_SETIRQ + 4DE5:0D256 MUSIC_SETLIMIT + 4DE5:0D1B3 MUSIC_SETMIXSPEED + 4DE5:0D3AF MUSIC_SETNEXTORDER + 4DE5:0D17E MUSIC_SETSOUNDCARD + 4DE5:0D1A1 MUSIC_SETSOUNDCARDDRIVER + 4DE5:0C232 MUSIC_SHOWAUTODETECTSOUNDCARD + 4DE5:0D4FA MUSIC_SHOWTIME + 4DE5:0D0B1 MUSIC_SOLOCHANNEL + 4DE5:0D2E5 MUSIC_SOUNDCARDLOADALLSAMPLES + 4DE5:0D2CE MUSIC_SOUNDCARDLOADSAMPLE + 4DE5:0CDC0 MUSIC_STOP + 4DE5:0D421 MUSIC_TIMESONG + 4DE5:0D079 MUSIC_TOGGLECHANNEL + 4DE5:0D54C MUSIC_TOGGLEORDERUPDATE + 4DE5:0D347 MUSIC_TOGGLEREVERSE + 4DE5:0D561 MUSIC_TOGGLESOLOINSTRUMENT + 4DE5:0D56C MUSIC_TOGGLESOLOSAMPLE + 4DE5:0C061 MUSIC_UNINITMUSIC + 4DE5:0D0AA MUSIC_UNMUTEALL + 4DE5:0CEAF MUSIC_UPDATEPATTERNOFFSET + 475D:000F1 M_FUNCTIONDIVIDER + 475D:00169 M_FUNCTIONHANDLER + 475D:00363 M_OBJECT1LIST + 475D:00360 M_OBJECT1LISTDEFAULT + 3D34:085D5 NETWORK_ADDWORDTOQUEUE + 3D34:07B0E NETWORK_DRAWDRIVERSCREEN + 3D34:07A6F NETWORK_DRIVERSCREEN + 3D34:0861F NETWORK_ENSURENONETWORK + 3D34:084A2 NETWORK_FINISHEDSENDQUEUE + 3D34:08476 NETWORK_GETSENDQUEUE + 3D34:07D51 NETWORK_POLL + 3D34:07BE1 NETWORK_POSTDRIVERSCREEN + 3D34:07B8B NETWORK_PREDRIVERSCREEN + 3D34:084E2 NETWORK_QUEUESAMPLEDATA + 3D34:08653 NETWORK_SENDINSTRUMENTHEADER + 3D34:0863C NETWORK_SENDSAMPLEHEADER + 3D34:0866A NETWORK_SENDSONGDATAINFORMATION + 3D34:07D87 NETWORK_SHUTDOWN + 3D34:085FB NETWORK_UPDATEPATTERN + 3D34:085E6 NETWORK_UPDATEPATTERNIFIDLE + 466E:00E78 NEWCHARACTERSET + 5DCE:00121 NEWSAMPLESIZE + 5DCE:00135 NODEHELD + 484C:00026 NUMBEROFROWS 0000:00000 O1_AUTODETECTLIST 0000:00325 O1_C5FREQUENCYLIST 0000:0373C O1_CONFIGUREITLIST @@ -711,118 +711,118 @@ Detailed map of segments 0000:05AF5 O1_UNDOLIST 0000:05A7B O1_VIEWINSTRUMENTLIBRARY 0000:003B9 O1_VIEWSAMPLELIBRARY - 484B:0001A ORDER + 484C:0001A ORDER 0000:01E87 ORDERKEYVALUE - 459B:00028 PALETTEDEFS - 484B:0000A PATTERNDATAAREA - 484B:0087E PATTERNLENGTHEND - 484B:0087C PATTERNLENGTHSTART - 484B:0060C PATTERNMODIFIED - 484B:0001E PATTERNNUMBER - 484B:0087A PATTERNSETLENGTH - 484B:05625 PECHECKMODIFIED - 484B:02769 PEFUNCTION_DECREASEOCTAVE - 484B:05524 PEFUNCTION_DRAWUNDO - 484B:02779 PEFUNCTION_INCREASEOCTAVE - 484B:031B4 PEFUNCTION_OUTOFMEMORYMESSAGE - 484B:05577 PEFUNCTION_POSTUNDO - 484B:0555A PEFUNCTION_PREUNDO - 484B:03A6D PEFUNCTION_STORECURRENTPATTERN - 484B:05643 PERESETMODIFIED - 484B:054EB idle PE_CLEARUNDOBUFFER - 484B:01054 PE_CONVAX2NUM - 484B:0513F PE_DELETEINSTRUMENT - 484B:012E6 PE_DRAWORDERLIST - 484B:01673 PE_DRAWPATTERNEDIT - 484B:05372 PE_F7 - 484B:011E0 PE_FILLHEADER - 484B:012C9 PE_FILLSPEEDTEMPO - 484B:046A4 PE_GETCURRENTPATTERN - 484B:04FBC PE_GETLASTINSTRUMENT - 484B:0109C PE_GETMAXORDER - 484B:011B9 PE_GETMAXPATTERN - 484B:0543D PE_GETPATTERNCONFIGOFFSET - 484B:03A97 PE_GOTOPATTERN - 484B:015DB PE_INITPATTERNEDIT - 484B:0508C PE_INSERTINSTRUMENT - 484B:0597F PE_NEWPATTERN - 484B:013BA PE_POSTORDERLIST - 484B:01D00 PE_POSTPATTERNEDIT - 484B:01376 PE_PREORDERLIST - 484B:01B41 PE_PREPATTERNEDIT - 484B:0114E PE_RESETORDERPATTERN - 484B:05966 PE_RESTORECURRENTPATTERN - 484B:058FC PE_RESTOREMIDINOTE - 484B:05948 PE_SAVECURRENTPATTERN - 484B:02A4C PE_SETCOMMANDCURSOR - 484B:05940 PE_SETPATTERNMODIFIED - 484B:052FE PE_SHOWORDER - 484B:04FC4 PE_SWAPINSTRUMENTS - 484B:041C6 PE_TRANSLATE669PATTERN - 484B:058C0 PE_TRANSLATEMIDI - 484B:0414C PE_TRANSLATEMODPATTERN - 484B:040EC PE_TRANSLATEMTMPATTERN - 484B:042D9 PE_TRANSLATES3MPATTERN - 484B:03E98 PE_TRANSLATEXMPATTERN - 484B:015A4 PE_UNINITPATTERNEDIT - 484B:051ED PE_UPDATEINSTRUMENTS - 5B89:0184A POSTDISPLAYDATA - 4793:009C5 QUIT - 4793:00AF2 REFRESH - 475C:000F0 RELEASETIMESLICE - 466D:008C8 RESTOREMOUSE - 466D:00922 RESTOREMOUSEGRAPHICS - 484B:00CA8 ROWHILIGHT1 - 484B:00CA9 ROWHILIGHT2 - 5DCD:00145 SAMPLEAMPLIFICATION + 459B:00034 PALETTEDEFS + 484C:0000A PATTERNDATAAREA + 484C:0087E PATTERNLENGTHEND + 484C:0087C PATTERNLENGTHSTART + 484C:0060C PATTERNMODIFIED + 484C:0001E PATTERNNUMBER + 484C:0087A PATTERNSETLENGTH + 484C:05625 PECHECKMODIFIED + 484C:02769 PEFUNCTION_DECREASEOCTAVE + 484C:05524 PEFUNCTION_DRAWUNDO + 484C:02779 PEFUNCTION_INCREASEOCTAVE + 484C:031B4 PEFUNCTION_OUTOFMEMORYMESSAGE + 484C:05577 PEFUNCTION_POSTUNDO + 484C:0555A PEFUNCTION_PREUNDO + 484C:03A6D PEFUNCTION_STORECURRENTPATTERN + 484C:05643 PERESETMODIFIED + 484C:054EB idle PE_CLEARUNDOBUFFER + 484C:01054 PE_CONVAX2NUM + 484C:0513F PE_DELETEINSTRUMENT + 484C:012E6 PE_DRAWORDERLIST + 484C:01673 PE_DRAWPATTERNEDIT + 484C:05372 PE_F7 + 484C:011E0 PE_FILLHEADER + 484C:012C9 PE_FILLSPEEDTEMPO + 484C:046A4 PE_GETCURRENTPATTERN + 484C:04FBC PE_GETLASTINSTRUMENT + 484C:0109C PE_GETMAXORDER + 484C:011B9 PE_GETMAXPATTERN + 484C:0543D PE_GETPATTERNCONFIGOFFSET + 484C:03A97 PE_GOTOPATTERN + 484C:015DB PE_INITPATTERNEDIT + 484C:0508C PE_INSERTINSTRUMENT + 484C:0597F PE_NEWPATTERN + 484C:013BA PE_POSTORDERLIST + 484C:01D00 PE_POSTPATTERNEDIT + 484C:01376 PE_PREORDERLIST + 484C:01B41 PE_PREPATTERNEDIT + 484C:0114E PE_RESETORDERPATTERN + 484C:05966 PE_RESTORECURRENTPATTERN + 484C:058FC PE_RESTOREMIDINOTE + 484C:05948 PE_SAVECURRENTPATTERN + 484C:02A4C PE_SETCOMMANDCURSOR + 484C:05940 PE_SETPATTERNMODIFIED + 484C:052FE PE_SHOWORDER + 484C:04FC4 PE_SWAPINSTRUMENTS + 484C:041C6 PE_TRANSLATE669PATTERN + 484C:058C0 PE_TRANSLATEMIDI + 484C:0414C PE_TRANSLATEMODPATTERN + 484C:040EC PE_TRANSLATEMTMPATTERN + 484C:042D9 PE_TRANSLATES3MPATTERN + 484C:03E98 PE_TRANSLATEXMPATTERN + 484C:015A4 PE_UNINITPATTERNEDIT + 484C:051ED PE_UPDATEINSTRUMENTS + 5B8A:0184A POSTDISPLAYDATA + 4794:009C5 QUIT + 4794:00AF2 REFRESH + 475D:000F0 RELEASETIMESLICE + 466E:008C8 RESTOREMOUSE + 466E:00922 RESTOREMOUSEGRAPHICS + 484C:00CA8 ROWHILIGHT1 + 484C:00CA9 ROWHILIGHT2 + 5DCE:00145 SAMPLEAMPLIFICATION 3D34:0021E SAMPLEDIRECTORY 3D34:002AB SAMPLENAME - 5DCD:00011 SAMPLENUMBER - 5DCD:0011D SAMPLENUMBERINPUT + 5DCE:00011 SAMPLENUMBER + 5DCE:0011D SAMPLENUMBERINPUT 3D02:0024E SETINFOLINE 3D02:00264 SETINFOLINE2 - 466D:00DC0 SETKEYBOARDLOCK - 466D:00E8D SETMOUSECURSORTYPE + 466E:00DC0 SETKEYBOARDLOCK + 466E:00E8D SETMOUSECURSORTYPE 3D02:000F8 SHOWUSAGETIME - 484B:00032 SKIPVALUE - 4DE4:09964 SONGDATAAREA + 484C:00032 SKIPVALUE + 4DE5:09964 SONGDATAAREA 3D34:001D8 SONGDIRECTORY 3D02:00317 STARTCLOCK - 459B:00975 S_CLEARSCREEN - 459B:00CA5 S_DEFINEHIASCII - 459B:008B7 S_DEFINESMALLNUMBERS - 459B:00AA8 S_DIRECTDRAWSTRING - 459B:0098A S_DRAWBOX - 459B:00C62 S_DRAWSMALLBOX - 459B:00ABD S_DRAWSTRING - 459B:00BE2 S_GENERATECHARACTERS - 459B:00960 S_GETDESTINATION - 459B:00BD9 S_GETGENERATIONTABLEOFFSET - 459B:00C7E S_GETPALETTEOFFSET - 459B:00A99 S_HILIGHT - 459B:006B7 S_INITSCREEN - 459B:00CE5 S_INVERTCURSOR - 459B:00871 S_REDEFINECHARACTERS - 459B:0084B S_RESETSEQUENCER - 459B:0078C S_RESTORESCREEN - 459B:0076A S_SAVESCREEN - 459B:00A59 S_SETDIRECTMODE - 459B:007FD S_SETPALETTE - 459B:007F9 S_SETPALETTE2 - 459B:00825 S_SETSEQUENCER - 459B:0094F S_UNINITSCREEN - 459B:009F8 S_UPDATESCREEN - 459B:00C84 S_USEPRESETPALETTE - 6136:000D8 THUMBSTRINGENTER - 466D:00CE5 UNINITMOUSE + 459B:00981 S_CLEARSCREEN + 459B:00CB1 S_DEFINEHIASCII + 459B:008C3 S_DEFINESMALLNUMBERS + 459B:00AB4 S_DIRECTDRAWSTRING + 459B:00996 S_DRAWBOX + 459B:00C6E S_DRAWSMALLBOX + 459B:00AC9 S_DRAWSTRING + 459B:00BEE S_GENERATECHARACTERS + 459B:0096C S_GETDESTINATION + 459B:00BE5 S_GETGENERATIONTABLEOFFSET + 459B:00C8A S_GETPALETTEOFFSET + 459B:00AA5 S_HILIGHT + 459B:006C3 S_INITSCREEN + 459B:00CF1 S_INVERTCURSOR + 459B:0087D S_REDEFINECHARACTERS + 459B:00857 S_RESETSEQUENCER + 459B:00798 S_RESTORESCREEN + 459B:00776 S_SAVESCREEN + 459B:00A65 S_SETDIRECTMODE + 459B:00809 S_SETPALETTE + 459B:00805 S_SETPALETTE2 + 459B:00831 S_SETSEQUENCER + 459B:0095B S_UNINITSCREEN + 459B:00A04 S_UPDATESCREEN + 459B:00C90 S_USEPRESETPALETTE + 6137:000D8 THUMBSTRINGENTER + 466E:00CE5 UNINITMOUSE 3D02:0012C UNINITTIMERHANDLER 3D02:00152 UPDATEINFOLINE - 5DCD:03671 UPDATEWAVEFORM - 68BB:00201 VESA_DETECT - 68BB:00244 idle VESA_GETINFO - 68BB:0025B VESA_SETBLOCK - 68BB:00221 VESA_SETMODE - 459B:006A5 VGAFLAGS + 5DCE:03671 UPDATEWAVEFORM + 68BC:00201 VESA_DETECT + 68BC:00244 idle VESA_GETINFO + 68BC:0025B VESA_SETBLOCK + 68BC:00221 VESA_SETMODE + 459B:006B1 VGAFLAGS Address Publics by Value @@ -944,22 +944,22 @@ Detailed map of segments 3D02:0012C UNINITTIMERHANDLER 3D02:00110 INITTIMERHANDLER 3D02:000F8 SHOWUSAGETIME - 3D34:0865E NETWORK_SENDSONGDATAINFORMATION - 3D34:08647 NETWORK_SENDINSTRUMENTHEADER - 3D34:08630 NETWORK_SENDSAMPLEHEADER - 3D34:08613 NETWORK_ENSURENONETWORK - 3D34:085EF NETWORK_UPDATEPATTERN - 3D34:085DA NETWORK_UPDATEPATTERNIFIDLE - 3D34:085C9 NETWORK_ADDWORDTOQUEUE - 3D34:084D6 NETWORK_QUEUESAMPLEDATA - 3D34:08496 NETWORK_FINISHEDSENDQUEUE - 3D34:0846A NETWORK_GETSENDQUEUE - 3D34:07D7B NETWORK_SHUTDOWN - 3D34:07D45 NETWORK_POLL - 3D34:07BD5 NETWORK_POSTDRIVERSCREEN - 3D34:07B7F NETWORK_PREDRIVERSCREEN - 3D34:07B02 NETWORK_DRAWDRIVERSCREEN - 3D34:07A63 NETWORK_DRIVERSCREEN + 3D34:0866A NETWORK_SENDSONGDATAINFORMATION + 3D34:08653 NETWORK_SENDINSTRUMENTHEADER + 3D34:0863C NETWORK_SENDSAMPLEHEADER + 3D34:0861F NETWORK_ENSURENONETWORK + 3D34:085FB NETWORK_UPDATEPATTERN + 3D34:085E6 NETWORK_UPDATEPATTERNIFIDLE + 3D34:085D5 NETWORK_ADDWORDTOQUEUE + 3D34:084E2 NETWORK_QUEUESAMPLEDATA + 3D34:084A2 NETWORK_FINISHEDSENDQUEUE + 3D34:08476 NETWORK_GETSENDQUEUE + 3D34:07D87 NETWORK_SHUTDOWN + 3D34:07D51 NETWORK_POLL + 3D34:07BE1 NETWORK_POSTDRIVERSCREEN + 3D34:07B8B NETWORK_PREDRIVERSCREEN + 3D34:07B0E NETWORK_DRAWDRIVERSCREEN + 3D34:07A6F NETWORK_DRIVERSCREEN 3D34:07712 D_SLOWINSTRUMENTSORT 3D34:07670 D_SLOWSAMPLESORT 3D34:0755A D_DRAWTIMER @@ -1041,514 +1041,514 @@ Detailed map of segments 3D34:000C4 FILESPECIFIER 3D34:00066 FILENAME 3D34:00010 DISKDATAAREA - 459B:00CE5 S_INVERTCURSOR - 459B:00CA5 S_DEFINEHIASCII - 459B:00C84 S_USEPRESETPALETTE - 459B:00C7E S_GETPALETTEOFFSET - 459B:00C62 S_DRAWSMALLBOX - 459B:00BE2 S_GENERATECHARACTERS - 459B:00BD9 S_GETGENERATIONTABLEOFFSET - 459B:00ABD S_DRAWSTRING - 459B:00AA8 S_DIRECTDRAWSTRING - 459B:00A99 S_HILIGHT - 459B:00A59 S_SETDIRECTMODE - 459B:009F8 S_UPDATESCREEN - 459B:0098A S_DRAWBOX - 459B:00975 S_CLEARSCREEN - 459B:00960 S_GETDESTINATION - 459B:0094F S_UNINITSCREEN - 459B:008B7 S_DEFINESMALLNUMBERS - 459B:00871 S_REDEFINECHARACTERS - 459B:0084B S_RESETSEQUENCER - 459B:00825 S_SETSEQUENCER - 459B:007FD S_SETPALETTE - 459B:007F9 S_SETPALETTE2 - 459B:0078C S_RESTORESCREEN - 459B:0076A S_SAVESCREEN - 459B:006B7 S_INITSCREEN - 459B:006A5 VGAFLAGS - 459B:006A3 CHARACTERGENERATIONOFFSET - 459B:00028 PALETTEDEFS - 466D:00EE2 FORCEMOUSERESTORE - 466D:00EDA CMDLINEDISABLEMOUSE - 466D:00E8D SETMOUSECURSORTYPE - 466D:00E86 MOUSEUPDATEDISABLE - 466D:00E7F MOUSEUPDATEENABLE - 466D:00E78 NEWCHARACTERSET - 466D:00E73 MOUSEGETSTATUS - 466D:00E6A MOUSEREMOVEEVENTS - 466D:00E61 MOUSECLEAREVENTS - 466D:00E3D MOUSEADDEVENT - 466D:00DF5 MOUSEINPUT - 466D:00DCA ADDMOUSEQUEUE - 466D:00DC5 GETKEYBOARDLOCK - 466D:00DC0 SETKEYBOARDLOCK - 466D:00D9B MOUSERESTOREEVENTS - 466D:00D76 MOUSESAVEEVENTS - 466D:00D27 MOUSESETXY - 466D:00CF8 MOUSETOGGLE - 466D:00CF1 MOUSESECONDSETDISABLE - 466D:00CEA MOUSESECONDSETENABLE - 466D:00CE5 UNINITMOUSE - 466D:00C8F INITMOUSE - 466D:00B86 DRAWMOUSE - 466D:00922 RESTOREMOUSEGRAPHICS - 466D:008C8 RESTOREMOUSE - 466D:00000 MOUSECHARACTERGENERATIONOFFSET - 475C:00363 M_OBJECT1LIST - 475C:00360 M_OBJECT1LISTDEFAULT - 475C:00169 M_FUNCTIONHANDLER - 475C:000F1 M_FUNCTIONDIVIDER - 475C:000F0 RELEASETIMESLICE - 4793:00B0F DOSSHELL - 4793:00AF2 REFRESH - 4793:00ACB GETENVIRONMENT - 4793:00A9F CRASHRECOVERY - 4793:00A28 GETSTARTUPKEYLIST - 4793:00A23 ISSTARTUPKEYLIST - 4793:009C5 QUIT - 484B:0597F PE_NEWPATTERN - 484B:05966 PE_RESTORECURRENTPATTERN - 484B:05948 PE_SAVECURRENTPATTERN - 484B:05940 PE_SETPATTERNMODIFIED - 484B:058FC PE_RESTOREMIDINOTE - 484B:058C0 PE_TRANSLATEMIDI - 484B:056C4 MIDI_SETINSTRUMENT - 484B:05643 PERESETMODIFIED - 484B:05625 PECHECKMODIFIED - 484B:05577 PEFUNCTION_POSTUNDO - 484B:0555A PEFUNCTION_PREUNDO - 484B:05524 PEFUNCTION_DRAWUNDO - 484B:054EB idle PE_CLEARUNDOBUFFER - 484B:0543D PE_GETPATTERNCONFIGOFFSET - 484B:05372 PE_F7 - 484B:052FE PE_SHOWORDER - 484B:051ED PE_UPDATEINSTRUMENTS - 484B:0513F PE_DELETEINSTRUMENT - 484B:0508C PE_INSERTINSTRUMENT - 484B:04FC4 PE_SWAPINSTRUMENTS - 484B:04FBC PE_GETLASTINSTRUMENT - 484B:046A4 PE_GETCURRENTPATTERN - 484B:042D9 PE_TRANSLATES3MPATTERN - 484B:041C6 PE_TRANSLATE669PATTERN - 484B:0414C PE_TRANSLATEMODPATTERN - 484B:040EC PE_TRANSLATEMTMPATTERN - 484B:03E98 PE_TRANSLATEXMPATTERN - 484B:03A97 PE_GOTOPATTERN - 484B:03A6D PEFUNCTION_STORECURRENTPATTERN - 484B:031B4 PEFUNCTION_OUTOFMEMORYMESSAGE - 484B:02A4C PE_SETCOMMANDCURSOR - 484B:02779 PEFUNCTION_INCREASEOCTAVE - 484B:02769 PEFUNCTION_DECREASEOCTAVE - 484B:01D00 PE_POSTPATTERNEDIT - 484B:01B41 PE_PREPATTERNEDIT - 484B:01673 PE_DRAWPATTERNEDIT - 484B:015DB PE_INITPATTERNEDIT - 484B:015A4 PE_UNINITPATTERNEDIT - 484B:013BA PE_POSTORDERLIST - 484B:01376 PE_PREORDERLIST - 484B:012E6 PE_DRAWORDERLIST - 484B:012C9 PE_FILLSPEEDTEMPO - 484B:011E0 PE_FILLHEADER - 484B:011B9 PE_GETMAXPATTERN - 484B:0114E PE_RESETORDERPATTERN - 484B:0109C PE_GETMAXORDER - 484B:01054 PE_CONVAX2NUM - 484B:00FEF LASTINSTRUMENT - 484B:00D7D FLAGS - 484B:00D7B FASTVOLUMEAMPLIFICATION - 484B:00D7A MIDICENTRALNOTE - 484B:00D79 MIDIAMPLIFICATION - 484B:00D78 CENTRALISECURSOR - 484B:00D77 COMMANDTOVALUE - 484B:00CA9 ROWHILIGHT2 - 484B:00CA8 ROWHILIGHT1 - 484B:0087E PATTERNLENGTHEND - 484B:0087C PATTERNLENGTHSTART - 484B:0087A PATTERNSETLENGTH - 484B:0060C PATTERNMODIFIED - 484B:0060B MODIFIED - 484B:002D8 AMPLIFICATION - 484B:00086 idle LASTKEYBOARD1 - 484B:00034 MULTICHANNELINFO - 484B:00032 SKIPVALUE - 484B:00030 BASEOCTAVE - 484B:00026 NUMBEROFROWS - 484B:00024 MAXROW - 484B:0001E PATTERNNUMBER - 484B:0001A ORDER - 484B:0000A PATTERNDATAAREA - 4DE4:0D56C MUSIC_TOGGLESOLOSAMPLE - 4DE4:0D561 MUSIC_TOGGLESOLOINSTRUMENT - 4DE4:0D54C MUSIC_TOGGLEORDERUPDATE - 4DE4:0D546 MUSIC_GETMIDIDATAAREA - 4DE4:0D51D MUSIC_SAVEMIDICONFIG - 4DE4:0D518 MUSIC_GETPATTERNLENGTH - 4DE4:0D4FA MUSIC_SHOWTIME - 4DE4:0D421 MUSIC_TIMESONG - 4DE4:0D3B5 MUSIC_GETDELAY - 4DE4:0D3AF MUSIC_SETNEXTORDER - 4DE4:0D3AA MUSIC_SETDRIVERVARIABLE - 4DE4:0D3A5 MUSIC_GETDRIVERVARIABLE - 4DE4:0D3A0 MUSIC_GETDRIVERSCREEN - 4DE4:0D37C MUSIC_GETLASTCHANNEL - 4DE4:0D360 MUSIC_INITMIXTABLE - 4DE4:0D35B MUSIC_PATTERNSTORAGE - 4DE4:0D347 MUSIC_TOGGLEREVERSE - 4DE4:0D341 MUSIC_GETPITCHTABLE - 4DE4:0D33C MUSIC_GETNUMCHANNELS - 4DE4:0D336 MUSIC_GETFREESOUNDCARDMEMORY - 4DE4:0D2E5 MUSIC_SOUNDCARDLOADALLSAMPLES - 4DE4:0D2CE MUSIC_SOUNDCARDLOADSAMPLE - 4DE4:0D298 MUSIC_REGETLOOPINFORMATION - 4DE4:0D27F MUSIC_DECREASEVOLUME - 4DE4:0D263 MUSIC_INCREASEVOLUME - 4DE4:0D25C MUSIC_REVERSECHANNELS - 4DE4:0D256 MUSIC_SETLIMIT - 4DE4:0D1D6 MUSIC_ASSIGNSAMPLETOINSTRUMENT - 4DE4:0D1C5 MUSIC_GETDISPLAYVARIABLES - 4DE4:0D1BF MUSIC_SETADDRESS - 4DE4:0D1B9 MUSIC_SETIRQ - 4DE4:0D1B3 MUSIC_SETMIXSPEED - 4DE4:0D1AC MUSIC_SETDMA - 4DE4:0D1A1 MUSIC_SETSOUNDCARDDRIVER - 4DE4:0D17E MUSIC_SETSOUNDCARD - 4DE4:0D165 MUSIC_DECREASESPEED - 4DE4:0D14C MUSIC_INCREASESPEED - 4DE4:0D134 MUSIC_INITSTEREO - 4DE4:0D115 MUSIC_INITMUTETABLE - 4DE4:0D0B1 MUSIC_SOLOCHANNEL - 4DE4:0D0AA MUSIC_UNMUTEALL - 4DE4:0D079 MUSIC_TOGGLECHANNEL - 4DE4:0D006 MUSIC_SETGLOBALVOLUME - 4DE4:0CFCA MUSIC_LASTORDER - 4DE4:0CF9E MUSIC_NEXTORDER - 4DE4:0CF95 MUSIC_GETSLAVECHANNELINFORMATIONTABLE - 4DE4:0CF8F MUSIC_GETHOSTCHANNELINFORMATIONTABLE - 4DE4:0CF39 MUSIC_PLAYSAMPLE - 4DE4:0CEB7 MUSIC_PLAYNOTE - 4DE4:0CEAF MUSIC_UPDATEPATTERNOFFSET - 4DE4:0CDC0 MUSIC_STOP - 4DE4:0CD6D MUSIC_KBPLAYSONG - 4DE4:0CD2C MUSIC_PLAYPARTSONG - 4DE4:0CCF5 MUSIC_PLAYSONG - 4DE4:0CCCB MUSIC_PLAYPATTERN - 4DE4:0CCB2 MUSIC_GETPLAYMODE2 - 4DE4:0CC9A MUSIC_GETPLAYMODE - 4DE4:0CC22 MUSIC_GETSAMPLELOCATION - 4DE4:0CBEC MUSIC_GETNUMBEROFINSTRUMENTS - 4DE4:0CBC4 MUSIC_GETNUMBEROFSAMPLES - 4DE4:0C254 MUSIC_GETINSTRUMENTMODE - 4DE4:0C232 MUSIC_SHOWAUTODETECTSOUNDCARD - 4DE4:0C17E MUSIC_AUTODETECTSOUNDCARD - 4DE4:0C082 MUSIC_GETSONGSEGMENT - 4DE4:0C061 MUSIC_UNINITMUSIC - 4DE4:0C056 MUSIC_CLEARALLINSTRUMENTS - 4DE4:0C034 MUSIC_CLEARINSTRUMENT - 4DE4:0C023 MUSIC_RELEASEALLPATTERNS - 4DE4:0C012 MUSIC_RELEASEALLSAMPLES - 4DE4:0C001 MUSIC_CLEARALLSAMPLENAMES - 4DE4:0BFDE MUSIC_CLEARSAMPLENAME - 4DE4:0BF62 MUSIC_RELEASESAMPLE - 4DE4:0BEA5 MUSIC_ALLOCATESAMPLE - 4DE4:0BDDD MUSIC_ALLOCATEPATTERN - 4DE4:0BD89 MUSIC_GETPATTERNLOCATIONNOCOUNT - 4DE4:0BD80 MUSIC_GETPATTERNLOCATION - 4DE4:0BD38 MUSIC_GETPATTERN - 4DE4:0BCF4 MUSIC_RELEASEPATTERN - 4DE4:0BCAF MUSIC_INITMUSIC - 4DE4:0BC9F MUSIC_REINITSOUNDCARD - 4DE4:0BC61 MUSIC_POLL - 4DE4:0BC51 MUSIC_GETWAVEFORM - 4DE4:09966 MIDIDATAAREA - 4DE4:09964 SONGDATAAREA - 4DE4:00352 CURRENTPATTERN - 5B40:0048C GLBL_DRIVERSCREEN - 5B40:00479 GLBL_TIMERSCREEN - 5B40:00411 GLBL_RESTOREMODE - 5B40:003ED GLBL_SAVEMODE - 5B40:003DA GLBL_RIGHTSQUAREBRACKET - 5B40:003C7 GLBL_LEFTSQUAREBRACKET - 5B40:003B4 GLBL_RIGHTBRACE - 5B40:003A1 GLBL_LEFTBRACE - 5B40:00395 GLBL_ALT_F8 - 5B40:00389 GLBL_ALT_F7 - 5B40:0037D GLBL_ALT_F6 - 5B40:00371 GLBL_ALT_F5 - 5B40:00365 GLBL_ALT_F4 - 5B40:00359 GLBL_ALT_F3 - 5B40:0034D GLBL_ALT_F2 - 5B40:00341 GLBL_ALT_F1 - 5B40:0033C GLBL_GETCURRENTMODE - 5B40:00337 GLBL_SETCURRENTMODE - 5B40:00300 GLBL_GETHEADERMODE - 5B40:002ED GLBL_CTRL_F12 - 5B40:002DD GLBL_CTRL_F5 - 5B40:002C5 GLBL_CTRL_F4 - 5B40:002AD GLBL_CTRL_F3 - 5B40:0029A GLBL_CTRL_F1 - 5B40:00287 GLBL_F12 - 5B40:0025E GLBL_F11_2 - 5B40:00256 GLBL_F11 - 5B40:00231 GLBL_F10 - 5B40:00211 GLBL_F9 - 5B40:00208 GLBL_F8 - 5B40:001F2 GLBL_SHIFT_F6 - 5B40:001DA GLBL_SHIFT_F9 - 5B40:001C7 GLBL_SHIFT_F1 - 5B40:001AF GLBL_LOADINSTRUMENT - 5B40:00197 GLBL_LOADSAMPLE - 5B40:00182 GLBL_F6 - 5B40:00132 GLBL_F5 - 5B40:00112 GLBL_F4_2 - 5B40:000F4 GLBL_F4 - 5B40:000DC GLBL_F3 - 5B40:00074 GLBL_F2_2 - 5B40:00069 GLBL_F2 - 5B40:00003 CURRENTMODE - 5B89:01E9A FOURIER_POSTFUNCTION - 5B89:01E96 FOURIER_IDLELIST - 5B89:01DA5 FOURIER_DRAWSCREEN - 5B89:01DA2 FOURIER_PREDRAWSCREEN - 5B89:01D40 FOURIER_START - 5B89:01C8A FOURIER_CHANGEPALETTE - 5B89:01BB1 FOURIER_TRANSFORM - 5B89:01B86 FOURIER_CREATETABLE - 5B89:01B11 DISPLAY_SELECTDISPLAYLIST - 5B89:01AAC DISPLAY_GETDISPLAYWINDOWDATA - 5B89:01A40 DISPLAYUPDATESCREEN - 5B89:01881 DISPLAYMINUS - 5B89:01878 DISPLAYPLUS - 5B89:0184A POSTDISPLAYDATA - 5B89:0179F DRAWDISPLAYDATA - 5D73:003F7 E_GETINTERNALEMSHANDLE - 5D73:003F2 E_GETEMSVERSION - 5D73:003DC E_RESTOREEMSPAGEFRAME - 5D73:003C1 E_SAVEEMSPAGEFRAME - 5D73:003BA E_EMSAVAILABLE - 5D73:00374 E_ALLOCATEEMS - 5D73:002E7 E_RELEASEBLOCKEMS - 5D73:001FD E_ALLOCATEBLOCKEMS - 5D73:001DA E_MAPALIGNEDBLOCKEMS - 5D73:001D5 E_GETEMSPAGEFRAME - 5D73:001C4 E_UNINITEMS - 5D73:0019B E_MAPEMSMEMORY - 5D73:00180 E_MAPAVAILABLEEMSMEMORY - 5D73:00109 E_RELEASEEMS - 5D73:000EB E_GETFREEEMS - 5D73:0002A E_INITEMS - 5DB2:001AA ERROR_UNINITHANDLER - 5DB2:0018F ERROR_INITHANDLER - 5DCD:0368C I_GETPRESETENVELOPEOFFSET - 5DCD:03675 I_SAMPLEBUTTONHANDLER - 5DCD:03671 UPDATEWAVEFORM - 5DCD:03635 I_IDLEUPDATEENVELOPE - 5DCD:035E3 I_POSTPITCHPANCENTER - 5DCD:035D3 I_PREPITCHPANCENTER - 5DCD:035A1 I_DRAWPITCHPANCENTER - 5DCD:03589 I_TOGGLEMULTICHANNEL - 5DCD:0353D I_DECREASEPLAYCHANNEL - 5DCD:03522 I_INCREASEPLAYCHANNEL - 5DCD:03505 I_PLAYSAMPLE - 5DCD:034D8 MIDI_PLAYSAMPLE - 5DCD:034D1 I_TAGSAMPLE - 5DCD:034CA I_TAGINSTRUMENT - 5DCD:034BD I_CLEARTABLES - 5DCD:0343E I_SHOWINSTRUMENTPLAY - 5DCD:033F2 I_SHOWSAMPLEPLAY - 5DCD:033D6 I_INSTRUMENTLISTNOTEOFF - 5DCD:033A9 I_INSTRUMENTLISTSPACE - 5DCD:02B39 I_MAPENVELOPE - 5DCD:02A8D I_POSTENVELOPE - 5DCD:02A85 I_PREENVELOPE - 5DCD:029F5 I_DRAWENVELOPE - 5DCD:02966 I_UPDATEINSTRUMENT - 5DCD:02917 I_SWAPINSTRUMENTS - 5DCD:028EF I_COPYINSTRUMENT - 5DCD:028A5 I_SCALEINSTRUMENTVOLUMES - 5DCD:0285B I_SCALESAMPLEVOLUMES - 5DCD:0282E I_REPLACEINSTRUMENT - 5DCD:02813 I_SAMPLESPEEDSEMIDOWN - 5DCD:027F2 I_SAMPLESPEEDSEMIUP - 5DCD:027E1 I_HALVESAMPLESPEED - 5DCD:027C1 I_DOUBLESAMPLESPEED - 5DCD:02781 I_EXCHANGEINSTRUMENTS - 5DCD:02437 I_POSTNOTEWINDOW - 5DCD:023FB I_PRENOTEWINDOW - 5DCD:0233F I_DRAWNOTEWINDOW - 5DCD:021EA I_POSTINSTRUMENTWINDOW - 5DCD:02157 I_PLAYNOTE - 5DCD:0210F MIDI_PLAYNOTE - 5DCD:020E2 MIDI_NOTEOFF - 5DCD:020CD MIDI_CLEARTABLE - 5DCD:020C3 MIDI_FINDCHANNEL - 5DCD:020BB MIDI_GETCHANNEL - 5DCD:0207B MIDI_ALLOCATECHANNEL - 5DCD:02035 I_PREINSTRUMENTWINDOW - 5DCD:01F7A I_DRAWINSTRUMENTWINDOW - 5DCD:01DA6 I_TOGGLESAMPLEQUALITY - 5DCD:01BEE I_REVERSESAMPLE - 5DCD:01AB6 I_AMPLIFYSAMPLE - 5DCD:019CF I_CENTERSAMPLE - 5DCD:01972 I_RESIZESAMPLENOINT - 5DCD:0196A I_RESIZESAMPLE - 5DCD:016A0 I_REPLACESAMPLE - 5DCD:0161C I_SWAPSAMPLES - 5DCD:015D7 I_EXCHANGESAMPLES - 5DCD:01372 idle I_CLEARSAMPLENAME - 5DCD:01320 I_CUTSAMPLE - 5DCD:0124F I_CUTSAMPLEBEFORELOOP - 5DCD:011DC I_INVERTSAMPLE - 5DCD:01174 I_CONVERTSAMPLE - 5DCD:01131 I_DELETEINSTRUMENT - 5DCD:0111A I_PRINTC5FREQUENCY - 5DCD:01116 I_CALCULATEC5SPEED - 5DCD:010DE I_DELETESAMPLE - 5DCD:00F09 I_DRAWWAVEFORM - 5DCD:00ECB I_CHECKSUSLOOPVALUES - 5DCD:00E8D I_CHECKLOOPVALUES - 5DCD:00E25 I_SHOWSAMPLEINFO - 5DCD:00D7A I_SAMPLEUP - 5DCD:00D5D I_SAMPLEDOWN - 5DCD:00BC3 I_POSTSAMPLELIST - 5DCD:00B68 I_PRESAMPLELIST - 5DCD:00A71 I_DRAWSAMPLELIST - 5DCD:009C2 I_SELECTSCREEN - 5DCD:0099A I_GETSAMPLEOFFSET - 5DCD:00987 I_GETINSTRUMENTOFFSET - 5DCD:00981 I_GETINSTRUMENTSCREEN - 5DCD:00145 SAMPLEAMPLIFICATION - 5DCD:0013D INSTRUMENTEDIT - 5DCD:00135 NODEHELD - 5DCD:00127 MAXNODE - 5DCD:00121 NEWSAMPLESIZE - 5DCD:0011D SAMPLENUMBERINPUT - 5DCD:00011 SAMPLENUMBER - 5DCD:0000E INSTRUMENTSCREEN - 5DCD:0000C INSTRUMENTAMPLIFICATION - 6136:01DDC F_MIDI_PGDN - 6136:01DC4 F_MIDI_PGUP - 6136:01DB2 F_MIDI_DOWN - 6136:01D99 F_MIDI_UP - 6136:01D72 F_SHOWMIDIZXXINPUT - 6136:01D5B F_FILEQUIT - 6136:01D44 F_FILEDOSSHELL - 6136:01D32 F_FILESAVEAS - 6136:01D1B F_FILESAVECURRENT - 6136:01D06 F_FILENEW - 6136:01CF4 F_FILELOAD - 6136:01CE0 F_FILEMENU - 6136:01CCE F_SAMPLELIBRARY - 6136:01CBC F_RELOADGRAVIS - 6136:01CAA F_INSTRUMENTLIBRARY - 6136:01C98 F_INSTRUMENTLIST - 6136:01C86 F_SAMPLELIST - 6136:01C72 F_INSTRUMENTMENU - 6136:01C5E F_SAMPLEMENU - 6136:01C4C F_DRIVERSCREEN - 6136:01C35 F_CALCULATELENGTH - 6136:01C23 F_REINITSOUNDCARD - 6136:01C11 F_STOP - 6136:01BFF F_PLAYMARK - 6136:01BED F_PLAYORDER - 6136:01BDB F_PLAYPATTERN - 6136:01BC9 F_PLAYSONG - 6136:01BB7 F_INFOPAGE - 6136:01BA3 F_PLAYBACKMENU - 6136:01B91 F_HELP - 6136:01B84 F_MESSAGEEDITOR - 6136:01B77 F_VIEWORDERPAN - 6136:01B6A F_VIEWVARIABLES - 6136:01B5D F_VIEWPATTERN - 6136:01B44 F_MAINMENU - 6136:01A9E F_NEWSONG - 6136:01A96 F_RESET5NUMINPUTPOS - 6136:01A86 F_SETAMIGA - 6136:01A76 F_SETLINEAR - 6136:01A61 F_SETMONO - 6136:01A4C F_SETSTEREO - 6136:019DF F_SETCONTROLINSTRUMENT - 6136:019CF F_SETCONTROLSAMPLE - 6136:0195C F_CONFIGBUTTONSETUP - 6136:0191D F_DRAWSMCCHANNELS - 6136:018B8 F_DRAWHEADER - 6136:01798 F_POST5NUM - 6136:01779 F_PRE5NUM - 6136:01700 F_DRAW5NUM - 6136:015B1 F_POST3NUM - 6136:01592 F_PRE3NUM - 6136:01518 F_DRAW3NUM - 6136:013EF F_POSTTOGGLE - 6136:013BC F_PRETOGGLE - 6136:01346 F_DRAWTOGGLE - 6136:010E1 F_GOTOEMPTYLIST - 6136:0102A F_POSTSTRINGINPUT - 6136:01006 F_PRESTRINGINPUT - 6136:00F92 F_DRAWSTRINGINPUT - 6136:00EDD F_RETURN1 - 6136:00DF9 F_RETURN192 - 6136:00DF2 F_RETURN64 - 6136:00DEC F_RETURN0 - 6136:00DE8 F_REDRAWSCREEN - 6136:00DA6 F_SHOWCHANNELS - 6136:00D61 F_DRAWINFOLINE - 6136:00B6E F_POSTTHUMBBAR - 6136:00B22 F_POSTSCALABLETHUMBBAR - 6136:00A71 F_PRESCALABLETHUMBBAR - 6136:009BF F_PRETHUMBBAR - 6136:008D6 F_DRAWSCALABLETHUMBBAR - 6136:0080B F_DRAWTHUMBBAR - 6136:00505 F_POSTBUTTONOBJECT - 6136:004CC F_PREBUTTONOBJECT - 6136:00427 F_DRAWBUTTONOBJECT - 6136:003E0 F_CHARACTERDEFINITIONS - 6136:003D8 F_SETDIRECTMODE - 6136:003C8 F_POSTEXITOBJECT - 6136:00383 F_DRAWTEXTOBJECT - 6136:0036D F_DRAWBOXOBJECT - 6136:00369 F_CALLFARFUNCTION - 6136:00363 F_CALLFARPOSTFUNCTION - 6136:0035F F_CALLFARPREFUNCTION - 6136:00344 F_INSTRUMENTBUTTONHANDLER - 6136:00341 F_NOTHING - 6136:000D8 THUMBSTRINGENTER - 6315:0238C H_SETHELPCONTEXT - 6315:02377 H_HELPESC - 6315:0236D H_HELPPGDN - 6315:0235A H_HELPPGUP - 6315:0232F H_HELPDOWN - 6315:0231F H_HELPUP - 6315:022FD H_HELP - 6315:0228C H_DRAWHELP - 654E:00ABD MIDISEND - 654E:00AB6 MIDIBUFFEREMPTY - 654E:00AAD K_SETSCROLLLOCK - 654E:00A9B K_REMOVEKEYBOARDTYPE - 654E:00A46 K_INSTALLKEYBOARDTYPE - 654E:00A23 K_SHOWMIDIINPUT - 654E:009A6 K_DRAWTABLES - 654E:00996 K_RESETKEYBOARDTABLES - 654E:0098F K_ISKEYDOWN - 654E:00977 K_ISANYKEYDOWN - 654E:00966 K_CLEARKEYBOARDQUEUE - 654E:0070B K_GETKEY - 654E:006D7 K_ISKEYWAITING - 654E:006B3 K_UNINSTALLDOSHANDLER - 654E:00693 K_INSTALLDOSHANDLER - 654E:00651 K_UNINITKEYBOARD - 654E:005EA K_INITKEYBOARD - 65FE:0006F MMTSR_UNINSTALLMMTSR - 65FE:00001 MMTSR_INSTALLMMTSR - 6681:02392 MSG_GETMESSAGEOFFSET - 6681:0237D MSG_GETMESSAGELENGTH - 6681:020BE MSG_POSTMESSAGE - 6681:0208F MSG_PREMESSAGE - 6681:01FE5 MSG_DRAWMESSAGE - 6681:01FCB MSG_RESETMESSAGE - 68BB:0025B VESA_SETBLOCK - 68BB:00244 idle VESA_GETINFO - 68BB:00221 VESA_SETMODE - 68BB:00201 VESA_DETECT + 459B:00CF1 S_INVERTCURSOR + 459B:00CB1 S_DEFINEHIASCII + 459B:00C90 S_USEPRESETPALETTE + 459B:00C8A S_GETPALETTEOFFSET + 459B:00C6E S_DRAWSMALLBOX + 459B:00BEE S_GENERATECHARACTERS + 459B:00BE5 S_GETGENERATIONTABLEOFFSET + 459B:00AC9 S_DRAWSTRING + 459B:00AB4 S_DIRECTDRAWSTRING + 459B:00AA5 S_HILIGHT + 459B:00A65 S_SETDIRECTMODE + 459B:00A04 S_UPDATESCREEN + 459B:00996 S_DRAWBOX + 459B:00981 S_CLEARSCREEN + 459B:0096C S_GETDESTINATION + 459B:0095B S_UNINITSCREEN + 459B:008C3 S_DEFINESMALLNUMBERS + 459B:0087D S_REDEFINECHARACTERS + 459B:00857 S_RESETSEQUENCER + 459B:00831 S_SETSEQUENCER + 459B:00809 S_SETPALETTE + 459B:00805 S_SETPALETTE2 + 459B:00798 S_RESTORESCREEN + 459B:00776 S_SAVESCREEN + 459B:006C3 S_INITSCREEN + 459B:006B1 VGAFLAGS + 459B:006AF CHARACTERGENERATIONOFFSET + 459B:00034 PALETTEDEFS + 466E:00EE2 FORCEMOUSERESTORE + 466E:00EDA CMDLINEDISABLEMOUSE + 466E:00E8D SETMOUSECURSORTYPE + 466E:00E86 MOUSEUPDATEDISABLE + 466E:00E7F MOUSEUPDATEENABLE + 466E:00E78 NEWCHARACTERSET + 466E:00E73 MOUSEGETSTATUS + 466E:00E6A MOUSEREMOVEEVENTS + 466E:00E61 MOUSECLEAREVENTS + 466E:00E3D MOUSEADDEVENT + 466E:00DF5 MOUSEINPUT + 466E:00DCA ADDMOUSEQUEUE + 466E:00DC5 GETKEYBOARDLOCK + 466E:00DC0 SETKEYBOARDLOCK + 466E:00D9B MOUSERESTOREEVENTS + 466E:00D76 MOUSESAVEEVENTS + 466E:00D27 MOUSESETXY + 466E:00CF8 MOUSETOGGLE + 466E:00CF1 MOUSESECONDSETDISABLE + 466E:00CEA MOUSESECONDSETENABLE + 466E:00CE5 UNINITMOUSE + 466E:00C8F INITMOUSE + 466E:00B86 DRAWMOUSE + 466E:00922 RESTOREMOUSEGRAPHICS + 466E:008C8 RESTOREMOUSE + 466E:00000 MOUSECHARACTERGENERATIONOFFSET + 475D:00363 M_OBJECT1LIST + 475D:00360 M_OBJECT1LISTDEFAULT + 475D:00169 M_FUNCTIONHANDLER + 475D:000F1 M_FUNCTIONDIVIDER + 475D:000F0 RELEASETIMESLICE + 4794:00B0F DOSSHELL + 4794:00AF2 REFRESH + 4794:00ACB GETENVIRONMENT + 4794:00A9F CRASHRECOVERY + 4794:00A28 GETSTARTUPKEYLIST + 4794:00A23 ISSTARTUPKEYLIST + 4794:009C5 QUIT + 484C:0597F PE_NEWPATTERN + 484C:05966 PE_RESTORECURRENTPATTERN + 484C:05948 PE_SAVECURRENTPATTERN + 484C:05940 PE_SETPATTERNMODIFIED + 484C:058FC PE_RESTOREMIDINOTE + 484C:058C0 PE_TRANSLATEMIDI + 484C:056C4 MIDI_SETINSTRUMENT + 484C:05643 PERESETMODIFIED + 484C:05625 PECHECKMODIFIED + 484C:05577 PEFUNCTION_POSTUNDO + 484C:0555A PEFUNCTION_PREUNDO + 484C:05524 PEFUNCTION_DRAWUNDO + 484C:054EB idle PE_CLEARUNDOBUFFER + 484C:0543D PE_GETPATTERNCONFIGOFFSET + 484C:05372 PE_F7 + 484C:052FE PE_SHOWORDER + 484C:051ED PE_UPDATEINSTRUMENTS + 484C:0513F PE_DELETEINSTRUMENT + 484C:0508C PE_INSERTINSTRUMENT + 484C:04FC4 PE_SWAPINSTRUMENTS + 484C:04FBC PE_GETLASTINSTRUMENT + 484C:046A4 PE_GETCURRENTPATTERN + 484C:042D9 PE_TRANSLATES3MPATTERN + 484C:041C6 PE_TRANSLATE669PATTERN + 484C:0414C PE_TRANSLATEMODPATTERN + 484C:040EC PE_TRANSLATEMTMPATTERN + 484C:03E98 PE_TRANSLATEXMPATTERN + 484C:03A97 PE_GOTOPATTERN + 484C:03A6D PEFUNCTION_STORECURRENTPATTERN + 484C:031B4 PEFUNCTION_OUTOFMEMORYMESSAGE + 484C:02A4C PE_SETCOMMANDCURSOR + 484C:02779 PEFUNCTION_INCREASEOCTAVE + 484C:02769 PEFUNCTION_DECREASEOCTAVE + 484C:01D00 PE_POSTPATTERNEDIT + 484C:01B41 PE_PREPATTERNEDIT + 484C:01673 PE_DRAWPATTERNEDIT + 484C:015DB PE_INITPATTERNEDIT + 484C:015A4 PE_UNINITPATTERNEDIT + 484C:013BA PE_POSTORDERLIST + 484C:01376 PE_PREORDERLIST + 484C:012E6 PE_DRAWORDERLIST + 484C:012C9 PE_FILLSPEEDTEMPO + 484C:011E0 PE_FILLHEADER + 484C:011B9 PE_GETMAXPATTERN + 484C:0114E PE_RESETORDERPATTERN + 484C:0109C PE_GETMAXORDER + 484C:01054 PE_CONVAX2NUM + 484C:00FEF LASTINSTRUMENT + 484C:00D7D FLAGS + 484C:00D7B FASTVOLUMEAMPLIFICATION + 484C:00D7A MIDICENTRALNOTE + 484C:00D79 MIDIAMPLIFICATION + 484C:00D78 CENTRALISECURSOR + 484C:00D77 COMMANDTOVALUE + 484C:00CA9 ROWHILIGHT2 + 484C:00CA8 ROWHILIGHT1 + 484C:0087E PATTERNLENGTHEND + 484C:0087C PATTERNLENGTHSTART + 484C:0087A PATTERNSETLENGTH + 484C:0060C PATTERNMODIFIED + 484C:0060B MODIFIED + 484C:002D8 AMPLIFICATION + 484C:00086 idle LASTKEYBOARD1 + 484C:00034 MULTICHANNELINFO + 484C:00032 SKIPVALUE + 484C:00030 BASEOCTAVE + 484C:00026 NUMBEROFROWS + 484C:00024 MAXROW + 484C:0001E PATTERNNUMBER + 484C:0001A ORDER + 484C:0000A PATTERNDATAAREA + 4DE5:0D56C MUSIC_TOGGLESOLOSAMPLE + 4DE5:0D561 MUSIC_TOGGLESOLOINSTRUMENT + 4DE5:0D54C MUSIC_TOGGLEORDERUPDATE + 4DE5:0D546 MUSIC_GETMIDIDATAAREA + 4DE5:0D51D MUSIC_SAVEMIDICONFIG + 4DE5:0D518 MUSIC_GETPATTERNLENGTH + 4DE5:0D4FA MUSIC_SHOWTIME + 4DE5:0D421 MUSIC_TIMESONG + 4DE5:0D3B5 MUSIC_GETDELAY + 4DE5:0D3AF MUSIC_SETNEXTORDER + 4DE5:0D3AA MUSIC_SETDRIVERVARIABLE + 4DE5:0D3A5 MUSIC_GETDRIVERVARIABLE + 4DE5:0D3A0 MUSIC_GETDRIVERSCREEN + 4DE5:0D37C MUSIC_GETLASTCHANNEL + 4DE5:0D360 MUSIC_INITMIXTABLE + 4DE5:0D35B MUSIC_PATTERNSTORAGE + 4DE5:0D347 MUSIC_TOGGLEREVERSE + 4DE5:0D341 MUSIC_GETPITCHTABLE + 4DE5:0D33C MUSIC_GETNUMCHANNELS + 4DE5:0D336 MUSIC_GETFREESOUNDCARDMEMORY + 4DE5:0D2E5 MUSIC_SOUNDCARDLOADALLSAMPLES + 4DE5:0D2CE MUSIC_SOUNDCARDLOADSAMPLE + 4DE5:0D298 MUSIC_REGETLOOPINFORMATION + 4DE5:0D27F MUSIC_DECREASEVOLUME + 4DE5:0D263 MUSIC_INCREASEVOLUME + 4DE5:0D25C MUSIC_REVERSECHANNELS + 4DE5:0D256 MUSIC_SETLIMIT + 4DE5:0D1D6 MUSIC_ASSIGNSAMPLETOINSTRUMENT + 4DE5:0D1C5 MUSIC_GETDISPLAYVARIABLES + 4DE5:0D1BF MUSIC_SETADDRESS + 4DE5:0D1B9 MUSIC_SETIRQ + 4DE5:0D1B3 MUSIC_SETMIXSPEED + 4DE5:0D1AC MUSIC_SETDMA + 4DE5:0D1A1 MUSIC_SETSOUNDCARDDRIVER + 4DE5:0D17E MUSIC_SETSOUNDCARD + 4DE5:0D165 MUSIC_DECREASESPEED + 4DE5:0D14C MUSIC_INCREASESPEED + 4DE5:0D134 MUSIC_INITSTEREO + 4DE5:0D115 MUSIC_INITMUTETABLE + 4DE5:0D0B1 MUSIC_SOLOCHANNEL + 4DE5:0D0AA MUSIC_UNMUTEALL + 4DE5:0D079 MUSIC_TOGGLECHANNEL + 4DE5:0D006 MUSIC_SETGLOBALVOLUME + 4DE5:0CFCA MUSIC_LASTORDER + 4DE5:0CF9E MUSIC_NEXTORDER + 4DE5:0CF95 MUSIC_GETSLAVECHANNELINFORMATIONTABLE + 4DE5:0CF8F MUSIC_GETHOSTCHANNELINFORMATIONTABLE + 4DE5:0CF39 MUSIC_PLAYSAMPLE + 4DE5:0CEB7 MUSIC_PLAYNOTE + 4DE5:0CEAF MUSIC_UPDATEPATTERNOFFSET + 4DE5:0CDC0 MUSIC_STOP + 4DE5:0CD6D MUSIC_KBPLAYSONG + 4DE5:0CD2C MUSIC_PLAYPARTSONG + 4DE5:0CCF5 MUSIC_PLAYSONG + 4DE5:0CCCB MUSIC_PLAYPATTERN + 4DE5:0CCB2 MUSIC_GETPLAYMODE2 + 4DE5:0CC9A MUSIC_GETPLAYMODE + 4DE5:0CC22 MUSIC_GETSAMPLELOCATION + 4DE5:0CBEC MUSIC_GETNUMBEROFINSTRUMENTS + 4DE5:0CBC4 MUSIC_GETNUMBEROFSAMPLES + 4DE5:0C254 MUSIC_GETINSTRUMENTMODE + 4DE5:0C232 MUSIC_SHOWAUTODETECTSOUNDCARD + 4DE5:0C17E MUSIC_AUTODETECTSOUNDCARD + 4DE5:0C082 MUSIC_GETSONGSEGMENT + 4DE5:0C061 MUSIC_UNINITMUSIC + 4DE5:0C056 MUSIC_CLEARALLINSTRUMENTS + 4DE5:0C034 MUSIC_CLEARINSTRUMENT + 4DE5:0C023 MUSIC_RELEASEALLPATTERNS + 4DE5:0C012 MUSIC_RELEASEALLSAMPLES + 4DE5:0C001 MUSIC_CLEARALLSAMPLENAMES + 4DE5:0BFDE MUSIC_CLEARSAMPLENAME + 4DE5:0BF62 MUSIC_RELEASESAMPLE + 4DE5:0BEA5 MUSIC_ALLOCATESAMPLE + 4DE5:0BDDD MUSIC_ALLOCATEPATTERN + 4DE5:0BD89 MUSIC_GETPATTERNLOCATIONNOCOUNT + 4DE5:0BD80 MUSIC_GETPATTERNLOCATION + 4DE5:0BD38 MUSIC_GETPATTERN + 4DE5:0BCF4 MUSIC_RELEASEPATTERN + 4DE5:0BCAF MUSIC_INITMUSIC + 4DE5:0BC9F MUSIC_REINITSOUNDCARD + 4DE5:0BC61 MUSIC_POLL + 4DE5:0BC51 MUSIC_GETWAVEFORM + 4DE5:09966 MIDIDATAAREA + 4DE5:09964 SONGDATAAREA + 4DE5:00352 CURRENTPATTERN + 5B41:0048C GLBL_DRIVERSCREEN + 5B41:00479 GLBL_TIMERSCREEN + 5B41:00411 GLBL_RESTOREMODE + 5B41:003ED GLBL_SAVEMODE + 5B41:003DA GLBL_RIGHTSQUAREBRACKET + 5B41:003C7 GLBL_LEFTSQUAREBRACKET + 5B41:003B4 GLBL_RIGHTBRACE + 5B41:003A1 GLBL_LEFTBRACE + 5B41:00395 GLBL_ALT_F8 + 5B41:00389 GLBL_ALT_F7 + 5B41:0037D GLBL_ALT_F6 + 5B41:00371 GLBL_ALT_F5 + 5B41:00365 GLBL_ALT_F4 + 5B41:00359 GLBL_ALT_F3 + 5B41:0034D GLBL_ALT_F2 + 5B41:00341 GLBL_ALT_F1 + 5B41:0033C GLBL_GETCURRENTMODE + 5B41:00337 GLBL_SETCURRENTMODE + 5B41:00300 GLBL_GETHEADERMODE + 5B41:002ED GLBL_CTRL_F12 + 5B41:002DD GLBL_CTRL_F5 + 5B41:002C5 GLBL_CTRL_F4 + 5B41:002AD GLBL_CTRL_F3 + 5B41:0029A GLBL_CTRL_F1 + 5B41:00287 GLBL_F12 + 5B41:0025E GLBL_F11_2 + 5B41:00256 GLBL_F11 + 5B41:00231 GLBL_F10 + 5B41:00211 GLBL_F9 + 5B41:00208 GLBL_F8 + 5B41:001F2 GLBL_SHIFT_F6 + 5B41:001DA GLBL_SHIFT_F9 + 5B41:001C7 GLBL_SHIFT_F1 + 5B41:001AF GLBL_LOADINSTRUMENT + 5B41:00197 GLBL_LOADSAMPLE + 5B41:00182 GLBL_F6 + 5B41:00132 GLBL_F5 + 5B41:00112 GLBL_F4_2 + 5B41:000F4 GLBL_F4 + 5B41:000DC GLBL_F3 + 5B41:00074 GLBL_F2_2 + 5B41:00069 GLBL_F2 + 5B41:00003 CURRENTMODE + 5B8A:01E9A FOURIER_POSTFUNCTION + 5B8A:01E96 FOURIER_IDLELIST + 5B8A:01DA5 FOURIER_DRAWSCREEN + 5B8A:01DA2 FOURIER_PREDRAWSCREEN + 5B8A:01D40 FOURIER_START + 5B8A:01C8A FOURIER_CHANGEPALETTE + 5B8A:01BB1 FOURIER_TRANSFORM + 5B8A:01B86 FOURIER_CREATETABLE + 5B8A:01B11 DISPLAY_SELECTDISPLAYLIST + 5B8A:01AAC DISPLAY_GETDISPLAYWINDOWDATA + 5B8A:01A40 DISPLAYUPDATESCREEN + 5B8A:01881 DISPLAYMINUS + 5B8A:01878 DISPLAYPLUS + 5B8A:0184A POSTDISPLAYDATA + 5B8A:0179F DRAWDISPLAYDATA + 5D74:003F7 E_GETINTERNALEMSHANDLE + 5D74:003F2 E_GETEMSVERSION + 5D74:003DC E_RESTOREEMSPAGEFRAME + 5D74:003C1 E_SAVEEMSPAGEFRAME + 5D74:003BA E_EMSAVAILABLE + 5D74:00374 E_ALLOCATEEMS + 5D74:002E7 E_RELEASEBLOCKEMS + 5D74:001FD E_ALLOCATEBLOCKEMS + 5D74:001DA E_MAPALIGNEDBLOCKEMS + 5D74:001D5 E_GETEMSPAGEFRAME + 5D74:001C4 E_UNINITEMS + 5D74:0019B E_MAPEMSMEMORY + 5D74:00180 E_MAPAVAILABLEEMSMEMORY + 5D74:00109 E_RELEASEEMS + 5D74:000EB E_GETFREEEMS + 5D74:0002A E_INITEMS + 5DB3:001AA ERROR_UNINITHANDLER + 5DB3:0018F ERROR_INITHANDLER + 5DCE:0368C I_GETPRESETENVELOPEOFFSET + 5DCE:03675 I_SAMPLEBUTTONHANDLER + 5DCE:03671 UPDATEWAVEFORM + 5DCE:03635 I_IDLEUPDATEENVELOPE + 5DCE:035E3 I_POSTPITCHPANCENTER + 5DCE:035D3 I_PREPITCHPANCENTER + 5DCE:035A1 I_DRAWPITCHPANCENTER + 5DCE:03589 I_TOGGLEMULTICHANNEL + 5DCE:0353D I_DECREASEPLAYCHANNEL + 5DCE:03522 I_INCREASEPLAYCHANNEL + 5DCE:03505 I_PLAYSAMPLE + 5DCE:034D8 MIDI_PLAYSAMPLE + 5DCE:034D1 I_TAGSAMPLE + 5DCE:034CA I_TAGINSTRUMENT + 5DCE:034BD I_CLEARTABLES + 5DCE:0343E I_SHOWINSTRUMENTPLAY + 5DCE:033F2 I_SHOWSAMPLEPLAY + 5DCE:033D6 I_INSTRUMENTLISTNOTEOFF + 5DCE:033A9 I_INSTRUMENTLISTSPACE + 5DCE:02B39 I_MAPENVELOPE + 5DCE:02A8D I_POSTENVELOPE + 5DCE:02A85 I_PREENVELOPE + 5DCE:029F5 I_DRAWENVELOPE + 5DCE:02966 I_UPDATEINSTRUMENT + 5DCE:02917 I_SWAPINSTRUMENTS + 5DCE:028EF I_COPYINSTRUMENT + 5DCE:028A5 I_SCALEINSTRUMENTVOLUMES + 5DCE:0285B I_SCALESAMPLEVOLUMES + 5DCE:0282E I_REPLACEINSTRUMENT + 5DCE:02813 I_SAMPLESPEEDSEMIDOWN + 5DCE:027F2 I_SAMPLESPEEDSEMIUP + 5DCE:027E1 I_HALVESAMPLESPEED + 5DCE:027C1 I_DOUBLESAMPLESPEED + 5DCE:02781 I_EXCHANGEINSTRUMENTS + 5DCE:02437 I_POSTNOTEWINDOW + 5DCE:023FB I_PRENOTEWINDOW + 5DCE:0233F I_DRAWNOTEWINDOW + 5DCE:021EA I_POSTINSTRUMENTWINDOW + 5DCE:02157 I_PLAYNOTE + 5DCE:0210F MIDI_PLAYNOTE + 5DCE:020E2 MIDI_NOTEOFF + 5DCE:020CD MIDI_CLEARTABLE + 5DCE:020C3 MIDI_FINDCHANNEL + 5DCE:020BB MIDI_GETCHANNEL + 5DCE:0207B MIDI_ALLOCATECHANNEL + 5DCE:02035 I_PREINSTRUMENTWINDOW + 5DCE:01F7A I_DRAWINSTRUMENTWINDOW + 5DCE:01DA6 I_TOGGLESAMPLEQUALITY + 5DCE:01BEE I_REVERSESAMPLE + 5DCE:01AB6 I_AMPLIFYSAMPLE + 5DCE:019CF I_CENTERSAMPLE + 5DCE:01972 I_RESIZESAMPLENOINT + 5DCE:0196A I_RESIZESAMPLE + 5DCE:016A0 I_REPLACESAMPLE + 5DCE:0161C I_SWAPSAMPLES + 5DCE:015D7 I_EXCHANGESAMPLES + 5DCE:01372 idle I_CLEARSAMPLENAME + 5DCE:01320 I_CUTSAMPLE + 5DCE:0124F I_CUTSAMPLEBEFORELOOP + 5DCE:011DC I_INVERTSAMPLE + 5DCE:01174 I_CONVERTSAMPLE + 5DCE:01131 I_DELETEINSTRUMENT + 5DCE:0111A I_PRINTC5FREQUENCY + 5DCE:01116 I_CALCULATEC5SPEED + 5DCE:010DE I_DELETESAMPLE + 5DCE:00F09 I_DRAWWAVEFORM + 5DCE:00ECB I_CHECKSUSLOOPVALUES + 5DCE:00E8D I_CHECKLOOPVALUES + 5DCE:00E25 I_SHOWSAMPLEINFO + 5DCE:00D7A I_SAMPLEUP + 5DCE:00D5D I_SAMPLEDOWN + 5DCE:00BC3 I_POSTSAMPLELIST + 5DCE:00B68 I_PRESAMPLELIST + 5DCE:00A71 I_DRAWSAMPLELIST + 5DCE:009C2 I_SELECTSCREEN + 5DCE:0099A I_GETSAMPLEOFFSET + 5DCE:00987 I_GETINSTRUMENTOFFSET + 5DCE:00981 I_GETINSTRUMENTSCREEN + 5DCE:00145 SAMPLEAMPLIFICATION + 5DCE:0013D INSTRUMENTEDIT + 5DCE:00135 NODEHELD + 5DCE:00127 MAXNODE + 5DCE:00121 NEWSAMPLESIZE + 5DCE:0011D SAMPLENUMBERINPUT + 5DCE:00011 SAMPLENUMBER + 5DCE:0000E INSTRUMENTSCREEN + 5DCE:0000C INSTRUMENTAMPLIFICATION + 6137:01DDC F_MIDI_PGDN + 6137:01DC4 F_MIDI_PGUP + 6137:01DB2 F_MIDI_DOWN + 6137:01D99 F_MIDI_UP + 6137:01D72 F_SHOWMIDIZXXINPUT + 6137:01D5B F_FILEQUIT + 6137:01D44 F_FILEDOSSHELL + 6137:01D32 F_FILESAVEAS + 6137:01D1B F_FILESAVECURRENT + 6137:01D06 F_FILENEW + 6137:01CF4 F_FILELOAD + 6137:01CE0 F_FILEMENU + 6137:01CCE F_SAMPLELIBRARY + 6137:01CBC F_RELOADGRAVIS + 6137:01CAA F_INSTRUMENTLIBRARY + 6137:01C98 F_INSTRUMENTLIST + 6137:01C86 F_SAMPLELIST + 6137:01C72 F_INSTRUMENTMENU + 6137:01C5E F_SAMPLEMENU + 6137:01C4C F_DRIVERSCREEN + 6137:01C35 F_CALCULATELENGTH + 6137:01C23 F_REINITSOUNDCARD + 6137:01C11 F_STOP + 6137:01BFF F_PLAYMARK + 6137:01BED F_PLAYORDER + 6137:01BDB F_PLAYPATTERN + 6137:01BC9 F_PLAYSONG + 6137:01BB7 F_INFOPAGE + 6137:01BA3 F_PLAYBACKMENU + 6137:01B91 F_HELP + 6137:01B84 F_MESSAGEEDITOR + 6137:01B77 F_VIEWORDERPAN + 6137:01B6A F_VIEWVARIABLES + 6137:01B5D F_VIEWPATTERN + 6137:01B44 F_MAINMENU + 6137:01A9E F_NEWSONG + 6137:01A96 F_RESET5NUMINPUTPOS + 6137:01A86 F_SETAMIGA + 6137:01A76 F_SETLINEAR + 6137:01A61 F_SETMONO + 6137:01A4C F_SETSTEREO + 6137:019DF F_SETCONTROLINSTRUMENT + 6137:019CF F_SETCONTROLSAMPLE + 6137:0195C F_CONFIGBUTTONSETUP + 6137:0191D F_DRAWSMCCHANNELS + 6137:018B8 F_DRAWHEADER + 6137:01798 F_POST5NUM + 6137:01779 F_PRE5NUM + 6137:01700 F_DRAW5NUM + 6137:015B1 F_POST3NUM + 6137:01592 F_PRE3NUM + 6137:01518 F_DRAW3NUM + 6137:013EF F_POSTTOGGLE + 6137:013BC F_PRETOGGLE + 6137:01346 F_DRAWTOGGLE + 6137:010E1 F_GOTOEMPTYLIST + 6137:0102A F_POSTSTRINGINPUT + 6137:01006 F_PRESTRINGINPUT + 6137:00F92 F_DRAWSTRINGINPUT + 6137:00EDD F_RETURN1 + 6137:00DF9 F_RETURN192 + 6137:00DF2 F_RETURN64 + 6137:00DEC F_RETURN0 + 6137:00DE8 F_REDRAWSCREEN + 6137:00DA6 F_SHOWCHANNELS + 6137:00D61 F_DRAWINFOLINE + 6137:00B6E F_POSTTHUMBBAR + 6137:00B22 F_POSTSCALABLETHUMBBAR + 6137:00A71 F_PRESCALABLETHUMBBAR + 6137:009BF F_PRETHUMBBAR + 6137:008D6 F_DRAWSCALABLETHUMBBAR + 6137:0080B F_DRAWTHUMBBAR + 6137:00505 F_POSTBUTTONOBJECT + 6137:004CC F_PREBUTTONOBJECT + 6137:00427 F_DRAWBUTTONOBJECT + 6137:003E0 F_CHARACTERDEFINITIONS + 6137:003D8 F_SETDIRECTMODE + 6137:003C8 F_POSTEXITOBJECT + 6137:00383 F_DRAWTEXTOBJECT + 6137:0036D F_DRAWBOXOBJECT + 6137:00369 F_CALLFARFUNCTION + 6137:00363 F_CALLFARPOSTFUNCTION + 6137:0035F F_CALLFARPREFUNCTION + 6137:00344 F_INSTRUMENTBUTTONHANDLER + 6137:00341 F_NOTHING + 6137:000D8 THUMBSTRINGENTER + 6316:0238C H_SETHELPCONTEXT + 6316:02377 H_HELPESC + 6316:0236D H_HELPPGDN + 6316:0235A H_HELPPGUP + 6316:0232F H_HELPDOWN + 6316:0231F H_HELPUP + 6316:022FD H_HELP + 6316:0228C H_DRAWHELP + 654F:00ABD MIDISEND + 654F:00AB6 MIDIBUFFEREMPTY + 654F:00AAD K_SETSCROLLLOCK + 654F:00A9B K_REMOVEKEYBOARDTYPE + 654F:00A46 K_INSTALLKEYBOARDTYPE + 654F:00A23 K_SHOWMIDIINPUT + 654F:009A6 K_DRAWTABLES + 654F:00996 K_RESETKEYBOARDTABLES + 654F:0098F K_ISKEYDOWN + 654F:00977 K_ISANYKEYDOWN + 654F:00966 K_CLEARKEYBOARDQUEUE + 654F:0070B K_GETKEY + 654F:006D7 K_ISKEYWAITING + 654F:006B3 K_UNINSTALLDOSHANDLER + 654F:00693 K_INSTALLDOSHANDLER + 654F:00651 K_UNINITKEYBOARD + 654F:005EA K_INITKEYBOARD + 65FF:0006F MMTSR_UNINSTALLMMTSR + 65FF:00001 MMTSR_INSTALLMMTSR + 6682:02392 MSG_GETMESSAGEOFFSET + 6682:0237D MSG_GETMESSAGELENGTH + 6682:020BE MSG_POSTMESSAGE + 6682:0208F MSG_PREMESSAGE + 6682:01FE5 MSG_DRAWMESSAGE + 6682:01FCB MSG_RESETMESSAGE + 68BC:0025B VESA_SETBLOCK + 68BC:00244 idle VESA_GETINFO + 68BC:00221 VESA_SETMODE + 68BC:00201 VESA_DETECT -Program entry point at 4793:0637 +Program entry point at 4794:0637 diff --git a/src/mz.c b/src/mz.c new file mode 100644 index 0000000..c500f83 --- /dev/null +++ b/src/mz.c @@ -0,0 +1,59 @@ +#include +#include + +#define m8 ((uint8_t*)m) // access mz by byte +uint32_t loadmz(mz* m, uint8_t* mem, uint32_t xsz, uint32_t seg, mz_start* z) { + + /*printf( + "mz\t%04X\n" + "bytes\t%u\n" + "pages\t%u\n" + "relsz\t%u\n" + "len\t%u\n" + "minall\t%u\n" + "maxall\t%u\n" + "ss\t%04X\n" + "sp\t%04X\n" + "sum\t%04X\n" + "ip\t%04X\n" + "cs\t%04X\n" + "rel*\t%04X\n" + "overlay\t%u\n" + ,m->mz + ,m->bytes + ,m->pages + ,m->relsz + ,m->len + ,m->minalloc + ,m->maxalloc + ,m->ss + ,m->sp + ,m->sum + ,m->ip + ,m->cs + ,m->rel + ,m->overlay + );*/ + + uint32_t sz = (((uint32_t)m->pages-1) << 9) + (m->bytes ? m->bytes : 512) - (m->len << 4); + + memcpy( // copy mz to memory + mem + (seg << 4), + m8 + (m->len << 4), + sz + ); + + for(int i = 0; i < m->relsz; i++) *(uint16_t*)( + mem + + (seg << 4) + + ((uint32_t)m->r[i].segment << 4) + + (uint32_t)m->r[i].offset + ) += seg; + + *z = (mz_start) { + m->ss+seg, + m->sp, + m->ip, + m->cs+seg + }; +} diff --git a/src/vm.c b/src/vm.c new file mode 100644 index 0000000..97ba3f2 --- /dev/null +++ b/src/vm.c @@ -0,0 +1,127 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define MSIZE 0x100000 // size of conventional memory + +/* x86 memory map + 0x00000 - 0x003FF IVT 0x400 + 0x00400 - 0x9FFFF FREE 0x9FC00 + 0xA0000 - 0xBFFFF VGA 0x20000 + 0xC0000 - 0xFFFFF FREE 0x40000 + + total freemem - 0xDFC00 - 916480 bytes/895.0K +*/ + +int main(int argc, char** argv) { + + struct stat s; + int ret = stat(argv[1], &s); + if(ret) exit(!!printf("invalid file!\n")); + + int kvm = open("/dev/kvm", O_RDWR | O_CLOEXEC); + + assert((ioctl(kvm, KVM_CHECK_EXTENSION, KVM_CAP_USER_MEMORY) ^ ioctl(kvm, KVM_GET_API_VERSION, NULL)) == 13); + + int vmfd = ioctl(kvm, KVM_CREATE_VM, (unsigned long)0), + vcpufd = ioctl(vmfd, KVM_CREATE_VCPU, (unsigned long)0), + codefd = open(argv[1], O_RDONLY); // load boot sector from file + + uint8_t* mem = mmap(NULL, MSIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); // allocate conventional memory for vm + + mz* mzbuf = malloc(s.st_size); + read(codefd, mzbuf, s.st_size); + close(codefd); + + mz_start ms; + uint32_t mzsz = loadmz(mzbuf, mem, s.st_size, 0x40, &ms); + free(mzbuf); + + printf("done\n"); + + struct kvm_userspace_memory_region memmap[2] = { + { + .guest_phys_addr = 0, + .memory_size = 0xA0000, + .userspace_addr = (uint64_t)mem, + }, + /*{ // implied map + .guest_phys_addr = 0xA0000, + .memory_size = 0x20000, + .userspace_addr = (uint64_t)mem, + },*/ + { + .guest_phys_addr = 0xC0000, + .memory_size = 0x40000, + .userspace_addr = (uint64_t)mem + 0xC0000, + }, + }; + + for(int i = 0; i < 2; i++) { + memmap[i].slot = i; // id of memory mapping + ioctl(vmfd, KVM_SET_USER_MEMORY_REGION, memmap + i); + } + + struct kvm_sregs sregs; + struct kvm_run* run; + size_t run_size = ioctl(kvm, KVM_GET_VCPU_MMAP_SIZE, NULL); // size of struct is. determined at runtime for some reason? + run = mmap(NULL, run_size, PROT_READ | PROT_WRITE, MAP_SHARED, vcpufd, 0); + + ioctl(vcpufd, KVM_GET_SREGS, &sregs); + + sregs.cs.base = ms.cs; + sregs.ss.base = ms.ss; + + sregs.cr0 = 0; + + sregs.cs.selector = 0; // probably protected mode related? + sregs.ss.selector = 0; + + ioctl(vcpufd, KVM_SET_SREGS, &sregs); + + struct kvm_regs regs = { + .rip = ms.ip, + .rsp = ms.sp, + .rflags = 0x2, + }; + + mem[((uint32_t)ms.cs << 4) + ms.ip] = 0xF4; // hlt + + ioctl(vcpufd, KVM_SET_REGS, ®s); + + printf("begin vm\n"); + + while(1) { + errno = 0; + ret = ioctl(vcpufd, KVM_RUN, NULL); + if(ret == -1) exit(!!printf("kvm error: %s\n", strerror(errno))); + switch (run->exit_reason) { + case KVM_EXIT_HLT: + exit(!printf("got instruction `hlt`, exiting\n")); + break; + case KVM_EXIT_IO: + + break; + case KVM_EXIT_INTR: + break; + case KVM_EXIT_INTERNAL_ERROR: + exit(printf("internal error %u\n", run->internal.suberror)); + break; + default: + exit(printf("vmexit %u\n", run->exit_reason)); + break; + } + } +}