[Scummvm-cvs-logs] SF.net SVN: scummvm: [22476] scummvm/trunk/engines/lure
dreammaster at users.sourceforge.net
dreammaster at users.sourceforge.net
Sun May 14 15:34:09 CEST 2006
Revision: 22476
Author: dreammaster
Date: 2006-05-14 15:11:14 -0700 (Sun, 14 May 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=22476&view=rev
Log Message:
-----------
Disassembled code responsible for making NPCs walk between rooms
Added Paths:
-----------
scummvm/trunk/engines/lure/disassembly/
scummvm/trunk/engines/lure/disassembly/LURE.ASM
scummvm/trunk/engines/lure/disassembly/Lure_notes.txt
Removed Paths:
-------------
scummvm/trunk/engines/lure/disassembly/LURE.ASM
scummvm/trunk/engines/lure/disassembly/Lure_notes.txt
Copied: scummvm/trunk/engines/lure/disassembly (from rev 22372, scummvm/trunk/engines/lure/diassembly)
Deleted: scummvm/trunk/engines/lure/disassembly/LURE.ASM
===================================================================
--- scummvm/trunk/engines/lure/diassembly/LURE.ASM 2006-05-07 00:32:00 UTC (rev 22372)
+++ scummvm/trunk/engines/lure/disassembly/LURE.ASM 2006-05-14 22:11:14 UTC (rev 22476)
@@ -1,39653 +0,0 @@
- lure.asm Sourcer v6.09 17-Nov- 5 5:53 pm Page 1
-
-
- PAGE 59,132
-
- ;\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB
- ;\xDB\xDB \xDB\xDB
- ;\xDB\xDB LURE \xDB\xDB
- ;\xDB\xDB \xDB\xDB
- ;\xDB\xDB Created: 23-Jun-95 \xDB\xDB
- ;\xDB\xDB Passes: 9 Analysis Options on: QRSX \xDB\xDB
- ;\xDB\xDB Copyright Revolution Software 1990-1992 \xDB\xDB
- ;\xDB\xDB \xDB\xDB
- ;\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB
-
- .err Target Assembler set to NONE, re-assembly not recommended
-
-
-VGA_SEGMENT equ 0a000h
-SCREEN_WIDTH equ 320
-SCREEN_HEIGHT equ 200
-
-RECT_SIZE equ 32
-RECTANGLE_SIZE equ 32*32
-NUM_HORIZ_RECTS equ 10
-NUM_VERT_RECTS equ 6
-FULL_HORIZ_RECTS equ 18
-FULL_VERT_RECTS equ 14
-
-ROOM_PATHS_WIDTH equ 40
-ROOM_PATHS_HEIGHT equ 24
-DECODED_PATHS_WIDTH equ 42
-DECODED_PATHS_HEIGHT equ 26
-
-WRITE_BUFFER_SIZE equ 0f010h
-FILE_BUFFER_SIZE equ 0600h
-ENTRY_READ_BUFFER equ 80h
-VIDEO_STYLE_VGA equ 1
-VIDEO_STYLE_EGA equ 2
-TIMER_TICKS_MAX equ 2EE0h
-MUSIC_NOTE equ 80h
-MUSIC_NOTE_OFF equ 7fh
-MUSIC_NOTE_VISIBLE equ 40h
-NOTE_DISPLAY_ADDR equ 185*SCREEN_WIDTH ; (A000:E740) line #186 on screen
-NOTE_IMAGE_WIDTH equ 14
-NOTE_IMAGE_HEIGHT equ 14
-
-MENUBAR_Y_SIZE equ 8
-MENUBAR_BLOCK_SIZE equ MENUBAR_Y_SIZE*SCREEN_WIDTH
-MENUITEM_NUM_MENUS equ 4
-
-STATUS_VIDEO_MODE_SET equ 1
-STATUS_UNKNOWN equ 2
-STATUS_TIMER_SET equ 4
-STATUS_CTRL_BREAK_SET equ 8
-STATUS_CRITICAL_SET equ 10h
-STATUS_UNKNOWN2 equ 20h
-STATUS_KEYBOARD_SET equ 40h
-STATUS_MOUSE_HANDLER_SET equ 80h
-
-SYS_HAS_FLOPPY_DRIVE equ 80h
-
-CURSOR_ARROW equ 0
-CURSOR_DISK equ 1
-CURSOR_TIME_UP equ 2
-CURSOR_TIME_UP_RIGHT equ 3
-CURSOR_TIME_RIGHT equ 4
-CURSOR_TIME_DOWN_RIGHT equ 5
-CURSOR_TIME_DOWN equ 6
-CURSOR_TIME_DOWN_LEFT equ 7
-CURSOR_TIME_LEFT equ 8
-CURSOR_TIME_UP_LEFT equ 9
-CURSOR_CROSS equ 10
-CURSOR_ARROW_UP equ 11
-CURSOR_ARROW_DOWN equ 12
-CURSOR_ARROW_LEFT equ 13
-CURSOR_ARROW_RIGHT equ 14
-CURSOR_CAMERA equ 15
-CURSOR_TALK equ 16
-CURSOR_MENUBAR_AREA equ 17
-CURSOR_ARROW_UP2 equ 18
-CURSOR_ARROW_DOWN2 equ 19
-CURSOR_ARROW_LEFT2 equ 20
-CURSOR_ARROW_RIGHT2 equ 21
-CURSOR_VOICE equ 22
-CURSOR_AXE_1 equ 23
-CURSOR_AXE_2 equ 24
-CURSOR_AXE_3 equ 25
-
-NUM_ACTIONS equ 25
-
-NUM_ANIMATION_SLOTS equ 2dh
-ANIMATION_SLOT_SIZE equ 29h
-
-NUM_HOTSPOT_ACTION_SLOTS equ 14h
-HOTSPOT_ACTION_SLOT_SIZE equ 8
-
-ACTION_GET equ 1
-ACTION_PUSH equ 3
-ACTION_PULL equ 4
-ACTION_OPERATE equ 5
-ACTION_OPEN equ 6
-ACTION_CLOSE equ 7
-ACTION_LOCK equ 8
-ACTION_UNLOCK equ 9
-ACTION_USE equ 10
-ACTION_GIVE equ 11
-ACTION_TALK_TO equ 12
-ACTION_TELL equ 13
-ACTION_BUY equ 14
-ACTION_LOOK equ 15
-ACTION_LOOK_AT equ 16
-ACTION_LOOK_THROUGH equ 17
-ACTION_ASK equ 18
-ACTION_EAT equ 19
-ACTION_DRINK equ 20
-ACTION_STATUS equ 21
-ACTION_GO_TO equ 22
-ACTION_RETURN equ 23
-ACTION_BRIBE equ 24
-ACTION_EXAMINE equ 25
-
-FLAG_RESTART equ 10h
-FLAG_CAUGHT equ 20h
-FLAG_RESTORERESTART equ 40h
-FLAG_HAS_FLOPPY_DRIVE equ 80h
-
-
-; Animation slot record constants
-ANIM_X equ 0
-ANIM_Y equ 2
-ANIM_WIDTH equ 4
-ANIM_HEIGHT equ 6
-ANIM_FRAME_OFFSET equ 8
-ANIM_SEGMENT equ 0Ah
-ANIM_LAYER equ 0Ch
-ANIM_FLAGS equ 0Dh
-ANIM_ROOM_NUM equ 0Eh
-ANIM_CAN_UNLOAD equ 10h
-ANIM_TICK_PROC equ 11h
-ANIM_WIDTH_COPY equ 13h
-ANIM_HEIGHT_COPY equ 15h
-ANIM_Y_CORRECTION equ 17h
-ANIM_HOTSPOT_OFFSET equ 19h
-ANIM_HOTSPOT_ID equ 1Bh
-ANIM_LAYER1_SKIP equ 1Dh
-ANIM_VOICE_CHAR_ID equ 1Eh
-ANIM_V20 equ 20h
-ANIM_CHAR_RECT_Y equ 22h
-ANIM_VOICE_CTR equ 24h
-ANIM_DIRECTION equ 26h
-ANIM_UNKNOWN1 equ 27h
-ANIM_START_COLOUR equ 28h
-
-; Hotspot header record constants
-HOTSPOT_TABLE_ENTRY_SIZE equ 9
-HSH_NAME equ 2
-HSH_DESC equ 4
-HSH_DESC_2 equ 6
-
-; Hotspot record constants
-
-HS_ACTIONS equ 0
-HS_FLAGS equ 3
-HS_ACTIONS_OFFSET equ 04h
-HS_ROOM_NUM equ 06h
-HS_LOAD_FLAG equ 08h
-HS_LOAD_OFFSET equ 09h
-HS_ANIM_OFFSET equ 0Bh
-HS_X equ 0Dh
-HS_Y equ 0Fh
-HS_WIDTH equ 11h
-HS_HEIGHT equ 13h
-HS_LAYER equ 15h
-HS_TICK_PROC equ 17h
-HS_WIDTH_COPY equ 19h
-HS_HEIGHT_COPY equ 1Bh
-HS_Y_CORRECTION equ 1Dh
-HS_FRAME_CTR equ 1Fh
-HS_PIXEL_OFFSET equ 21h
-HS_START_COLOUR equ 23h
-HS_SCRIPT_OFFSET equ 24h
-HS_MOVEMENT_OFFSET equ 24h
-HS_STEP_CTR equ 26h
-HS_FRAME_OFFSET equ 28h
-HS_ACTION_CTR equ 2Ah
-HS_V2B equ 2Bh
-HS_HOTSPOT_SCRIPT_ID equ 2Dh
-HS_USE_HOTSPOT_ID equ 2Fh
-HS_V33 equ 33h
-HS_TALK_X equ 35h
-HS_TALK_Y equ 36h
-HS_TALK_COUNTDOWN equ 37h
-HS_TALK_CHAR_ID equ 39h
-HS_RESPONSE_ID equ 3Ch
-HS_V42 equ 42h
-HS_V44 equ 44h
-HS_HOTSPOT2_SCRIPT_ID equ 45h
-HS_USE2_HOTSPOT_ID equ 47h
-HS_PATHFIND_COVERED equ 49h
-HS_V4A equ 4Ah
-HS_V4C equ 4Ch
-HS_V4D equ 4Dh
-HS_V4E equ 4Eh
-HS_DIRECTION equ 50h
-HS_DEST_HOTSPOT equ 52h
-HS_DEST_X equ 54h
-HS_DEST_Y equ 56h
-HS_V58 equ 58h
-HS_MOVEMENT_SRC_OFFSET equ 5Ah
-HS_V60 equ 60h
-HS_ACTION_OFFSET equ 61h
-HS_FIRST_ACTION_OFFSET equ 63h
-
-; Pixel record constants
-PIXEL_DISK_ID equ 0
-PIXEL_FLAGS equ 2
-PIXEL_DATA_SEGMENT equ 3
-PIXEL_DATA_SIZE equ 5
-PIXEL_FRAME_SIZE equ 7
-PIXEL_MOVEREC_UP equ 9
-PIXEL_MOVEREC_DOWN equ 0Bh
-PIXEL_MOVEREC_LEFT equ 0Dh
-PIXEL_MOVEREC_RIGHT equ 0Fh
-PIXEL_FRAMENUM_UP equ 11h
-PIXEL_FRAMENUM_DOWN equ 12h
-PIXEL_FRAMENUM_LEFT equ 13h
-PIXEL_FRAMENUM_RIGHT equ 14h
-
-PIXELFLAG_HAS_TABLE equ 4
-
-NOONE_HOTSPOT_ID equ 3E7h
-PLAYER_HOTSPOT_ID equ 3E8h
-SKORL_HOTSPOT_ID equ 3EAh
-
-
-; Room exit record constants
-ROOMEXIT_RECORD_SIZE equ 14
-ROOMEXIT_X_START equ 0
-ROOMEXIT_X_END equ 2
-ROOMEXIT_Y_START equ 4
-ROOMEXIT_Y_END equ 6
-ROOMEXIT_CURSOR_NUM equ 8
-ROOMEXIT_HOTSPOT_ID equ 10
-ROOMEXIT_DEST_ROOM equ 12
-
-; Room exit hotspot record constants
-REHS_RECORD_SIZE equ 11h
-REHS_HOTSPOT1_ID equ 0
-REHS_HOTSPOT1_CURRENT_FRAME equ 2
-REHS_HOTSPOT1_DEST_FRAME equ 3
-REHS_HOTSPOT2_ID equ 6
-REHS_HOTSPOT2_CURRENT_FRAME equ 8
-REHS_HOTSPOT2_DEST_FRAME equ 9
-REHS_EXIT_BLOCKED equ 0Ch
-REHS_HOTSPOT1_OFFSET equ 0Dh
-REHS_HOTSPOT2_OFFSET equ 0Fh
-
-; Room header record constants
-RH_ROOM_NUM equ 2
-RH_DESC_ID equ 4
-RH_TABLE_ENTRY_SIZE equ 9
-
-; Room record constants
-ROOM_NUM_LAYERS equ 8
-ROOM_FIRST_LAYER equ 9
-ROOM_SEQUENCE_OFFSET equ 11h
-ROOM_ENTRY_TIME equ 13h
-ROOM_X_START equ 19h
-ROOM_X_END equ 1Bh
-ROOM_EXITS_START equ 1Dh
-
-; Room exit constants for room exit list within room records
-ROOMREC_EXIT_X_START equ 0
-ROOMREC_EXIT_X_END equ 2
-ROOMREC_EXIT_Y_START equ 4
-ROOMREC_EXIT_Y_END equ 6
-ROOMREC_EXIT_SEQUENCE equ 8
-ROOMREC_EXIT_ROOM_NUM equ 10
-ROOMREC_EXIT_NEW_X equ 12
-ROOMREC_EXIT_NEW_Y equ 14
-
-; Room number constants
-ROOMNUM_TOWN_HALL equ 1fh
-ROOMNUM_MIDDLE_STREET equ 0Eh
-ROOMNUM_VILLAGE_SHOP equ 23h
-ROOMNUM_WINE_CELLAR equ 2Ah
-ROOMNUM_DINING_HALL equ 2Dh
-
-NUM_DELAY_ENTRIES equ 28h
-DELAY_ENTRY_SIZE equ 7
-
-DIR_UP equ 80h
-DIR_DOWN equ 40h
-DIR_LEFT equ 20h
-DIR_RIGHT equ 10h
-
-FACING_UP equ 0
-FACING_DOWN equ 1
-FACING_LEFT equ 2
-FACING_RIGHT equ 3
-
-FACING2_LEFT equ 1
-FACING2_RIGHT equ 2
-FACING2_UP equ 4
-FACING2_DOWN equ 8
-
-; Movement record constants
-MOVEMENT_FRAME_NUM equ 0
-MOVEMENT_X_CHANGE equ 2
-MOVEMENT_Y_CHANGE equ 4
-MOVEMENT_REC_SIZE equ 6
-
-; Talk constants
-TALK_PRE_SEQUENCE equ 0
-TALK_DESC_ID equ 2
-TALK_POST_SEQUENCE equ 4
-
-; Talk state constants
-TALK_START equ 0ffh
-TALK_SELECT equ 2
-TALK_UNKNOWN equ 3
-TALK_MAGIC_ID equ 424h
-
-TALK_DIALOG_WIDTH equ 128
-
-; Player actions used in player_tick_proc
-CURRENT_ACTION_RECORD_SIZE equ 5
-CURRENT_ACTION_SUPPORT_TABLE equ 1
-CURRENT_ACTION_ROOM_NUM equ 3
-
-CHAR_ACTION_NONE equ 0
-CHAR_ACTION_START_WALK equ 1
-CHAR_ACTION_DISPATCH_ACTION equ 2
-CHAR_ACTION_EXEC_SCRIPT equ 3
-CHAR_ACTION_PROCESSING_PATH equ 4
-CHAR_ACTION_CONTINUE_WALK equ 5
-
-PATHFIND_CHARACTER_ID equ 2
-PATHFIND_HS4C equ 4
-PATHFIND_DEST_STATE equ 5
-PATHFIND_DEST_X equ 6
-PATHFIND_DEST_Y equ 8
-PATHFIND_X equ 0Ch
-PATHFIND_Y equ 0Ah
-PATHFIND_0E equ 0Eh
-PATHFIND_DEST_X2 equ 10h
-PATHFIND_DEST_OCCUPIED equ 12h
-PATHFIND_CELL_POPULATED equ 13h
-PATHFIND_X_CHANGE1 equ 14h
-PATHFIND_Y_CHANGE1 equ 16h
-PATHFIND_X_CHANGE2 equ 18h
-PATHFIND_Y_CHANGE2 equ 1Ah
-
-WALKTO_RECORD_SIZE equ 6
-WALKTO_HOTSPOT_ID equ 0
-WALKTO_X equ 2
-WALKTO_Y equ 4
-
- ; The following equates show data references outside the range of the program.
-
- = 0000 data_1e equ 0 ; (0000:0000=30h)
- = 0004 data_3e equ 4 ; (0000:0004=70h)
- = 0008 data_4e equ 8 ; (0000:0008=30h)
- = 000A data_6e equ 0Ah ; (0000:000A=0C800h)
- = 0080 data_8e equ 80h ; (0000:0080=1A0h)
- = 00C0 data_10e equ 0C0h ; (0000:00C0=30h)
- = 0200 data_11e equ 200h ; (0000:0200=0)
- = 0417 keybd_flags_1_ equ 417h ; (0000:0417=0)
-
-
-
-
-
-
-
- = 0778 data_21e equ 778h ;*(0000:0778=5253h)
- = 0991 data_22e equ 991h ;*(0000:0991=8Eh)
-
- = 0DB2 data_25e equ 0DB2h ;*(0000:0DB2=8340h)
- = 11D0 data_26e equ 11D0h ;*(0000:11D0=80h)
-
-
- = 11D5 data_29e equ 11D5h ;*(0000:11D5=8Bh)
-
-
-
- = 2300 data_33e equ 2300h ;*(0000:2300=1226h)
- = 2427 data_34e equ 2427h ;*(0000:2427=8Bh)
- = 2701 data_35e equ 2701h ;*(0000:2701=2EE4h)
- = 270B data_36e equ 270Bh ;*(0000:270B=113h)
- = 2800 data_37e equ 2800h ;*(0000:2800=1F12h)
- = 2B01 data_38e equ 2B01h ;*(0000:2B01=663Eh)
-
-
- = 30D6 data_41e equ 30D6h ;*(0000:30D6=81h)
- = 31E4 data_42e equ 31E4h ;*(0000:31E4=830Fh)
- = 3350 data_43e equ 3350h ;*(0000:3350=0C033h)
- = 3379 data_44e equ 3379h ;*(0000:3379=20CEh)
- = 4701 data_45e equ 4701h ;*(0000:4701=800Fh)
- = 4BF0 data_46e equ 4BF0h ;*(0000:4BF0=28h)
- = 4CE4 data_47e equ 4CE4h ;*(0000:4CE4=1E8Eh)
-
-
-
- = 63B1 data_51e equ 63B1h ;*(0000:63B1=1)
-
-
- = 7A81 data_54e equ 7A81h ;*(0000:7A81=0D1h)
- = 9836 data_55e equ 9836h ;*(0000:9836=46h)
- = B8AB data_56e equ 0B8ABh ;*(0000:B8AB=0D91Eh)
- = B8AD data_57e equ 0B8ADh ;*(0000:B8AD=0A34Dh)
- = BF49 data_58e equ 0BF49h ;*(0000:BF49=5)
- = CE8A data_59e equ 0CE8Ah ;*(0000:CE8A=301Eh)
- = DA89 data_60e equ 0DA89h ;*(0000:DA89=52F9h)
- = 001B data_61e equ 1Bh ;*(0002:001B=0C8h)
- = 4200 data_62e equ 4200h ;*(0002:4200=0C4h)
- = 0400 data_63e equ 400h ;*(0008:0400=1Eh)
- = 0402 data_64e equ 402h ;*(0008:0402=3Eh)
- = 0404 data_65e equ 404h ;*(0008:0404=18h)
- = 0000 data_66e equ 0 ;*(0028:0000=0)
- = 0002 data_67e equ 2 ;*(0028:0002=0)
- = 00A0 data_68e equ 0A0h ;*(0031:00A0=0)
- = 0017 keybd_flags_1 equ 17h ; (0040:0017=0)
- = 0063 video_port equ 63h ; (0040:0063=3D4h)
- = 0000 data_69e equ 0 ;*(0874:0000=0C5h)
- = 31E4 data_70e equ 31E4h ;*(0874:31E4=2E11h)
- = 3350 data_71e equ 3350h ;*(0874:3350=9A90h)
- = 3356 data_72e equ 3356h ;*(0874:3356=289Ah)
-
- = 335A data_74e equ 335Ah ;*(0874:335A=0C70Fh)
- = 335E data_75e equ 335Eh ;*(0874:335E=0FF47h)
- = 3360 data_76e equ 3360h ;*(0874:3360=0FFh)
-
-
- = 336A data_79e equ 336Ah ;*(0874:336A=7500h)
- = 336C data_80e equ 336Ch ;*(0874:336C=9A07h)
- = 336E data_81e equ 336Eh ;*(0874:336E=8090h)
- = 3370 data_82e equ 3370h ;*(0874:3370=0F5Eh)
- = 3374 data_83e equ 3374h ;*(0874:3374=1EA1h)
- = 3376 data_84e equ 3376h ;*(0874:3376=0A321h)
- = 3379 data_85e equ 3379h ;*(0874:3379=0C722h)
- = 337B data_86e equ 337Bh ;*(0874:337B=5806h)
- = 337E data_88e equ 337Eh ;*(0874:337E=0)
-
-
- = 33DC data_91e equ 33DCh ;*(0874:33DC=11A2h)
- = 33DE data_92e equ 33DEh ;*(0874:33DE=0A21Dh)
- = 33E0 data_93e equ 33E0h ;*(0874:33E0=0F2h)
- = 0040 data_94e equ 40h ;*(20E8:0040=72h)
-
- = 9836 data_96e equ 9836h ;*(2711:9836=3Ch)
-
- = B0AC data_446e equ 0B0ACh ;*(273F:B0AC=0)
-
-
- = B156 data_449e equ 0B156h ;*(273F:B156=0)
-
- = B176 data_451e equ 0B176h ;*(273F:B176=0)
-
- = B1D1 data_453e equ 0B1D1h ;*(273F:B1D1=0)
- = B1FA data_454e equ 0B1FAh ;*(273F:B1FA=0)
- = B223 data_455e equ 0B223h ;*(273F:B223=0)
- = B24C data_456e equ 0B24Ch ;*(273F:B24C=0)
-
- = B9C7 data_458e equ 0B9C7h ;*(273F:B9C7=0)
-
-
-
-
-
-
- = BA05 data_465e equ 0BA05h ;*(273F:BA05=0)
-
-
- = BA09 data_468e equ 0BA09h ;*(273F:BA09=0)
- = BA0D data_469e equ 0BA0Dh ;*(273F:BA0D=0)
- = BA0F data_470e equ 0BA0Fh ;*(273F:BA0F=0)
- = BA11 data_471e equ 0BA11h ;*(273F:BA11=0)
- = BA13 data_472e equ 0BA13h ;*(273F:BA13=0)
- = BA14 data_473e equ 0BA14h ;*(273F:BA14=0)
- = BA15 data_474e equ 0BA15h ;*(273F:BA15=0)
-
-
-
-
-
- = BA21 data_480e equ 0BA21h ;*(273F:BA21=0)
-
- = BA25 data_482e equ 0BA25h ;*(273F:BA25=0)
-
- = BA2B data_484e equ 0BA2Bh ;*(273F:BA2B=0)
- = BA33 data_485e equ 0BA33h ;*(273F:BA33=0)
-
-
- = BB95 data_493e equ 0BB95h ;*(273F:BB95=0)
-
- = BC4B data_495e equ 0BC4Bh ;*(273F:BC4B=0)
- = BD9B data_496e equ 0BD9Bh ;*(273F:BD9B=0)
-
- = CE20 data_498e equ 0CE20h ;*(273F:CE20=0)
- = CE30 data_499e equ 0CE30h ;*(273F:CE30=0)
-
-
-
-
-
-
-
-
-
-
- = FF00 data_1202e equ 0FF00h ;*(31E4:FF00=2Fh)
- = FFE7 data_1203e equ 0FFE7h ;*(31E4:FFE7=0)
- = 0000 data_1204e equ 0 ;*(3382:0000=1B01h)
- = 1F48 data_1407e equ 1F48h ;*(44E4:1F48=0)
- = 0040 data_1433e equ 40h ;*(45F6:0040=23h)
- = 0080 data_1434e equ 80h ;*(45F6:0080=0)
- = 0086 data_1435e equ 86h ;*(45F6:0086=15h)
- = 0200 data_1436e equ 200h ;*(4789:0200=27h)
- = 08C1 data_1442e equ 8C1h ;*(8340:08C1=0)
- = 0000 data_1443e equ 0 ;*(8B57:0000=0)
- = 0132 data_1444e equ 132h ; (A000:0132=0)
- = 0138 data_1445e equ 138h ; (A000:0138=0)
- = 0140 data_1446e equ 140h ; (A000:0140=0)
- = F000 data_1448e equ 0F000h ; (A000:F000=0)
- = 0140 data_1449e equ 140h ; (A200:0140=0)
- = 0140 data_1451e equ 140h ; (B2DE:0140=0)
- = 0000 data_1452e equ 0 ; (B957:0000=720h)
- = 0002 data_1453e equ 2 ; (B957:0002=20h)
- = 0000 data_1454e equ 0 ; (E375:0000=0)
- = 0200 data_1455e equ 200h ; (E4B8:0200=0)
- = 8CE5 data_1456e equ 8CE5h ; (E564:8CE5=0)
- = 00A0 data_1457e equ 0A0h ; (F632:00A0=0)
- = 0140 data_1458e equ 140h ; (F632:0140=0)
- = 0008 data_1459e equ 8 ; (FF12:0008=0)
- = 00A0 data_1460e equ 0A0h ; (FF12:00A0=0)
-
- = 0A00 data_1463e equ 0A00h ; (FF12:0A00=0)
- = 1360 data_1464e equ 1360h ; (FF12:1360=1Eh)
- = 26C0 data_1465e equ 26C0h ; (FF12:26C0=0B4h)
- = 3E92 data_1466e equ 3E92h ; (FF12:3E92=80h)
- = 7D00 data_1467e equ 7D00h ; (FF12:7D00=0C2h)
-
- ;------------------------------------------------------------ seg_code ----
-
- seg_code segment byte public
- assume cs:seg_code , ds:seg_code , ss:stack_seg_k
-
-
- ;\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB
- ;
- ; Program Entry Point
- ;
- ;\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB
-
-
- lure proc far
-
-273F:0000 start:
-
-273F:0000 B8 31E4 mov ax,data_seg
-273F:0003 8E D8 mov ds,ax
-273F:0005 E8 04AE call initialise ; (04B6)
-273F:0008 loc_5: ; xref 273F:0171
-273F:0008 \xFAB8 23FC mov ax, offset startup_sequence
-273F:000B E8 3E26 call sequence_execute
-273F:000E 80 26 11D0 FE and menubar_state, 0FEh ; (273F:11D0=56h)
-273F:0013 E8 1F49 call show_disk_cursor
-273F:0016 EB 59 jmp short loc_10 ; (0071)
-
-; The following code is jumped to if the game is to be restarted or the room changes
-
-273F:0018 loc_6: ; xref 273F:0135, 0149
-273F:0018 \xFAC6 06 38B0 01 mov byte ptr ds:[38B0h],1 ; (273F:38B0=0EAh)
-273F:001D E8 1F3F call show_disk_cursor
-273F:0020 FF 16 0766 call word ptr ds:[fade_out_proc]
-273F:0024 E8 4818 call sub_115 ; (483F)
-273F:0027 E8 10BE call hotspots_unload ; Disable unneeded hotspots
-273F:002A 83 3E BAAD 01 cmp script_val_82, 1
-273F:002F 72 0A jb loc_8 ; Jump if below
-273F:0031 75 05 jnz loc_7 ; Jump if not zero
-273F:0033 E8 A576 call sub_261 ; (A5AC)
-273F:0036 EB 03 jmp short loc_8 ; (003B)
-273F:0038 loc_7: ; xref 273F:0031
-273F:0038 E8 A680 call sub_263 ; (A6BB)
-273F:003B loc_8: ; xref 273F:002F, 0036
-273F:003B C7 06 BAAD 0000 mov word ptr ds:data_490e,0 ; (273F:BAAD=0)
-273F:0041 C6 06 9837 00 mov talk_dialog_active, 0
-273F:0046 C7 06 9838 0000 mov data_431,0 ; (273F:9838=5C8Bh)
-273F:004C A1 9832 mov ax, room_number
-273F:004F E8 0C98 call get_room_resource_pointer2
-273F:0052 A1 B0AA mov ax, game_time_ctr
-273F:0055 89 44 13 mov [si+ROOM_EXIT_TIME], ax
-273F:0058 F7 06 BA23 FFFF test new_room_number, 0FFFFh
-273F:005E 74 08 jz loc_9 ; Jump if zero
-273F:0060 A1 BA23 mov ax, new_room_number
-273F:0063 A3 9832 mov room_number, ax
-273F:0066 EB 09 jmp short loc_10 ; (0071)
-273F:0068 loc_9: ; xref 273F:005E
-273F:0068 A1 982C mov ax, new_room_number_2
-273F:006B A3 9832 mov room_number, ax
-273F:006E E8 6004 call player_change_room ; Position player in new room
-
-273F:0071 loc_10: ; xref 273F:0016, 0066
-273F:0071 E8 A046 call sub_249 ; (A0BA)
-273F:0074 E8 08D7 call clear_layer_rects
-273F:0077 E8 08F5 call room_load_layers
-273F:007A E8 760F call sub_189 ; (768C)
-273F:007D FF 16 074E call word ptr ds:[74Eh] ; (273F:074E=8010h)
-273F:0081 E8 0963 call sub_16 ; (09E7)
-273F:0084 E8 0A77 call sub_19 ; (0AFE)
-273F:0087 E8 6F7B call menubar_clear_image
-273F:008A 8B 1E 9832 mov bx, room_number
-273F:008E 89 1E BA15 mov room_number_2, bx
-273F:0092 E8 0C53 call get_room_resource_pointer
-273F:0095 8B 44 11 mov ax, [si+ROOM_SEQUENCE_OFFSET] ; Get sequence offset
-273F:0098 3D FFFF cmp ax, 0FFFFh ; Is one defined?
-273F:009B 74 03 je loc_11 ; If no, skip execution
-273F:009D E8 3D94 call sequence_execute ; Exeecute room script
-
-273F:00A0 E8 0BDF loc_11: call hotspots_load
-273F:00A3 E8 4738 call sub_113 ; (47DE)
-273F:00A6 E8 6038 call sub_138 ; (60E1)
-273F:00A9 E8 1462 call room_add_animations
-273F:00AC E8 08B2 call clear_info_table
-273F:00AF E8 40E4 call animation_tick
-
-273F:00B2 loc_12: ; xref 273F:00C3
-273F:00B2 80 26 11D0 F7 and menubar_state, 0F7h
-273F:00B7 FF 16 0752 call [menubar_restore_area]
-273F:00BB E8 1450 call room_add_animations
-273F:00BE F6 06 11D0 08 test menubar_state, 8
-273F:00C3 75 ED jnz loc_12 ; Jump if not zero
-
-; Copy the completed room from the off-screen buffer data_segment2 to the screen
-
-273F:00C5 FF 16 0744 call [show_screen_proc] ; Copy screen over
-273F:00C9 E8 39E2 call replace_vga_palette ; Reset palette
-273F:00CC FF 16 0760 call word ptr [fade_in_proc] ; Fade in the screen
-273F:00D0 E8 1EA2 call show_arrow_cursor
-
-273F:00D3 33 C0 xor ax,ax ; Zero register
-273F:00D5 A3 BA23 mov new_room_number, ax ; Clear room change variable
-273F:00D8 A2 38B0 mov byte ptr ds:[38B0h],al ; (273F:38B0=0EAh)
-273F:00DB A2 11DA mov mouse_buttons2, al
-273F:00DE A3 983F mov data_435, ax
-273F:00E1 A3 9841 mov data_436, ax
-273F:00E4 A2 983A mov data_432, al
-273F:00E7 E8 1F1A call sub_61
-273F:00EA F7 06 6CE4 FFFF test word ptr ds:[6CE4h],0FFFFh ; (273F:6CE4=0C18Bh)
-273F:00F0 75 03 jnz loc_13 ; Jump if not zero
-273F:00F2 E9 9667 jmp loc_1855 ; (975C)
-
-; Main in game loop
-
-273F:00F5 loc_13: ; xref 273F:00F0, 0147, 0167, 9782
-273F:00F5 \xFA83 06 B0AA 01 add game_time_ctr, 1
-273F:00FA 83 16 B0AC 00 adc game_time_ctr_2, 0
-273F:00FF C6 06 00B0 00 mov data_525, 0
-273F:0104 E8 92C1 call room_check_keypresses
-273F:0107 E8 4306 call sub_96 ; Talking countdown proc
-273F:010A E8 1B05 call room_check_cursors
-273F:010D E8 1189 call room_handle_click
-273F:0110 E8 4083 call animation_tick
-273F:0113 E8 618B call handle_talking
-273F:0116 E8 4741 call sequence_delay_check
-273F:0119 FF 16 0752 call [menubar_restore_area]
-273F:011D E8 13EE call room_add_animations
-273F:0120 FF 16 0744 call [show_screen_proc]
-273F:0124 B8 0004 mov ax, 4 ; Wait for four cycles
-273F:0127 E8 4892 call room_sleep
-273F:012A E8 138B call set_vga_palette
-273F:012D F7 06 BA23 FFFF test new_room_number, 0FFFFh ; Need to change room?
-273F:0133 74 03 jz loc_14
-273F:0135 E9 FEE0 jmp loc_6 ; Yes, so go do so
-273F:0138 loc_14:
-273F:0138 F6 06 073D 10 test status_flags2, FLAG_RESTART ; Need to restart?
-273F:013D 75 0D jnz loc_16 ; Yes, so do so
-273F:013F F7 06 982C FFFF test new_room_number_2, 0FFFFh
-273F:0145 75 02 jnz loc_15 ; Jump if not zero
-273F:0147 EB AC jmp short loc_13 ; Normal in-game loop
-
-273F:0149 loc_15:
-273F:0149 E9 FECC jmp loc_6 ; Jump to restart
-273F:014C loc_16:
-273F:014C F6 06 073D 20 test status_flags2, FLAG_CAUGHT
-273F:0151 74 03 jz loc_17 ; Jump if zero
-273F:0153 E8 A507 call skorl_knockout
-273F:0156 loc_17: ; xref 273F:0151
-273F:0156 F6 06 073D 40 test status_flags2, FLAG_RESTORERESTART
-273F:015B 74 0C jz loc_18 ; Jump if zero
-273F:015D E8 91D6 call sub_228 ; Show restore/restart dialog
-273F:0160 75 0A jnz loc_19 ; Jump if not zero
-273F:0162 80 26 073D 8F and status_flags2, 8Fh
-273F:0167 EB 8C jmp short loc_13 ; (00F5)
-273F:0169 loc_18: ; xref 273F:015B
-273F:0169 E8 921F call sub_229 ; (938B)
-273F:016C loc_19: ; xref 273F:0160
-273F:016C 80 26 073D 8F and status_flags2, 8Fh ; Clear status flags
-273F:0171 E9 FE94 jmp loc_5
-
- lure endp
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:024F, 030A
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:0174 open_file proc near
-273F:0174 F6 06 00B5 80 test byte ptr ds:[file_handle+1],80h ; (273F:00B5=11h)
-273F:0179 75 0D jnz loc_20 ; Jump if not zero
-273F:017B 8B 1E 00B4 mov bx,word ptr ds:[file_handle] ; (273F:00B4=11D0h)
-273F:017F B4 3E mov ah,3Eh
-273F:0181 CD 21 int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
-273F:0183 C6 06 00B5 80 mov byte ptr ds:[file_handle+1],80h ; (273F:00B5=11h)
-273F:0188 loc_20: ; xref 273F:0179
-273F:0188 8A 1E 00B1 mov bl,byte ptr ds:[file_number] ; (273F:00B1=40h)
-273F:018C 32 FF xor bh,bh ; Zero register
-273F:018E D0 E3 shl bl,1 ; Shift w/zeros fill
-273F:0190 8B 97 00B6 mov dx,word ptr ds:[file_offset_table][bx]
-273F:0194 B8 3D00 mov ax,3D00h
-273F:0197 CD 21 int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name at ds:dx
-273F:0199 72 58 jc loc_22 ; Jump if carry Set
-273F:019B 2E: F6 06 0943 FF test byte ptr cs:critical_error,0FFh ; (273F:0943=0)
-273F:01A1 75 50 jnz loc_22 ; Jump if not zero
-273F:01A3 A3 00B4 mov word ptr ds:[file_handle],ax ; (273F:00B4=11D0h)
-273F:01A6 8B D8 mov bx,ax
-273F:01A8 B9 0008 mov cx,8
-273F:01AB \xFABA 0119 mov dx, offset file_buffer ; 273F:0119
-273F:01AE B4 3F mov ah,3Fh
-273F:01B0 CD 21 int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
-273F:01B2 2E: F6 06 0943 FF test byte ptr cs:critical_error,0FFh ; (273F:0943=0)
-273F:01B8 75 35 jnz loc_21 ; Validate file ident string
-273F:01BA 81 3E 0119 6568 cmp word ptr ds:[file_buffer],6568h ; 'he'
-273F:01C0 75 2D jne loc_21 ; Jump if not equal
-273F:01C2 81 3E 011B 7779 cmp word ptr ds:[file_buffer+2],7779h ; 'yw'
-273F:01C8 75 25 jne loc_21 ; Jump if not equal
-273F:01CA 81 3E 011D 776F cmp word ptr ds:[file_buffer+4],776Fh ; 'ow'
-273F:01D0 75 1D jne loc_21 ; Jump if not equal
-273F:01D2 A1 011F mov ax,word ptr ds:[file_filenum] ; Get in the file number
-273F:01D5 3A 26 00B1 cmp ah,byte ptr ds:[file_number] ; (273F:00B1=40h)
-273F:01D9 75 14 jne loc_21 ; Jump if not equal
-
-273F:01DB B9 05F8 mov cx, sizeof file_entries
-273F:01DE \xFABA 0121 mov dx, offset file_entries
-273F:01E1 B4 3F mov ah,3Fh
-273F:01E3 CD 21 int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
-273F:01E5 2E: F6 06 0943 FF test byte ptr cs:critical_error,0FFh ; (273F:0943=0)
-273F:01EB 75 02 jnz loc_21 ; Jump if not zero
-273F:01ED F8 clc ; Clear carry flag
-273F:01EE C3 retn
-273F:01EF loc_21: ; xref 273F:01B8, 01C0, 01C8, 01D0
- ; 01D9, 01EB
-273F:01EF B4 3E mov ah,3Eh
-273F:01F1 CD 21 int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
-273F:01F3 loc_22: ; xref 273F:0199, 01A1
-273F:01F3 2E: C6 06 0943 00 mov byte ptr cs:critical_error,0 ; (273F:0943=0)
-273F:01F9 F9 stc ; Set carry flag
-273F:01FA C3 retn
- open_file endp
-
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:0974, 768C
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:01FB read_and_validate_header proc near
-273F:01FB loc_23: ; xref 273F:02B1, 02DC
-273F:01FB \xFAC6 06 00B0 01 mov data_525, 1
-273F:0200 F6 06 00B5 80 test byte ptr ds:[file_handle+1],80h ; (273F:00B5=11h)
-273F:0205 75 42 jnz loc_24 ; Jump if not zero
-273F:0207 C7 06 0119 0000 mov word ptr ds:[file_buffer],0 ; (273F:0119=16FFh)
-
-; Read in the file header, that includes the ident string, file number, and entries table
-
-273F:020D 1E push ds
-273F:020E 07 pop es
-273F:020F BA 0119 mov dx, offset file_buffer
-273F:0212 BB 0000 mov bx,0
-273F:0215 B9 0600 mov cx, FILE_BUFFER_SIZE
-273F:0218 33 ED xor bp,bp ; Zero register
-273F:021A E8 022D call read_file_entry ; (044A)
-273F:021D 72 2A jc loc_24 ; Jump if carry Set
-273F:021F 2E: F6 06 0943 FF test byte ptr cs:critical_error,0FFh ; Check if any error occurred
-273F:0225 75 22 jnz loc_24 ; Jump if not zero
-
-; Validate that the file starts with the correct identifier string
-
-273F:0227 A1 0119 mov ax,word ptr ds:[file_buffer] ; Validate file ident string
-273F:022A 3D 6568 cmp ax,6568h ; 'he'
-273F:022D 75 1A jne loc_24
-273F:022F A1 011B mov ax,word ptr ds:[file_buffer+2]
-273F:0232 3D 7779 cmp ax,7779h ; 'yw'
-273F:0235 75 12 jne loc_24
-273F:0237 A1 011D mov ax,word ptr ds:[file_buffer+4]
-273F:023A 3D 776F cmp ax,776Fh ; 'ow'
-273F:023D 75 0A jne loc_24 ; Jump if not equal
-273F:023F A1 011F mov ax,word ptr ds:[11Fh] ; (273F:011F=0FF13h)
-
-273F:0242 3A 26 00B1 cmp ah,byte ptr ds:[file_number] ; (273F:00B1=40h)
-273F:0246 75 01 jne loc_24 ; Jump if not equal
-273F:0248 C3 retn
-
-; If execution reaches this point, then some sort of error occurred
-
-273F:0249 loc_24: ; xref 273F:0205, 021D, 0225, 022D
- ; 0235, 023D, 0246, 0301
-273F:0249 \xFA2E: C6 06 0943 00 mov byte ptr cs:critical_error,0
-273F:024F E8 FF22 call open_file ; Try to reopen file
-273F:0252 73 68 jnc loc_ret_30 ; Jump if no error occurred
-
-273F:0254 80 3E 0786 02 cmp byte ptr ds:[drive_number],2 ; Is current drive C?
-273F:0259 72 19 jb loc_25 ; Jump if it's a floppy drive
-
-273F:025B A1 00B2 mov ax,word ptr ds:[drive_num] ; (273F:00B2=2680h)
-273F:025E E8 00A3 call open_file2
-273F:0261 73 51 jnc loc_29
-273F:0263 F6 06 073D 80 test status_flags2, FLAG_HAS_FLOPPY_DRIVE
-273F:0268 75 1B jnz loc_27
-273F:026A 83 36 00B2 01 xor word ptr ds:[drive_num], 1
-273F:026F A1 00B2 mov ax,word ptr ds:[drive_num]
-273F:0272 EB 0C jmp short loc_26
-
-; At this point, we know that the current drive is either A or B (ie. a floppy drive)
-273F:0274 loc_25:
-273F:0274 F6 06 073D 80 test status_flags2, FLAG_HAS_FLOPPY_DRIVE
-273F:0279 75 0A jnz loc_27
-273F:027B A0 0786 mov al,byte ptr ds:[drive_number]
-273F:027E 34 01 xor al,1
-273F:0280 loc_26: ; xref 273F:0272
-273F:0280 E8 0081 call open_file2 ; (0304)
-273F:0283 73 2F jnc loc_29 ; Jump if carry=0
-273F:0285 loc_27: ; xref 273F:0268, 0279
-273F:0285 8A 16 0786 mov dl,byte ptr ds:[drive_number] ; (273F:0786=0E8h)
-273F:0289 B4 0E mov ah,0Eh
-273F:028B CD 21 int 21h ; DOS Services ah=function 0Eh
- ; set default drive dl (0=a:)
-; Display a message to insert the correct disk in the floppy drive
-273F:028D A0 00B1 mov al,byte ptr ds:[file_number] ; (273F:00B1=40h)
-273F:0290 2C 01 sub al,1
-273F:0292 D0 E8 shr al,1 ; Shift w/zeros fill
-273F:0294 04 04 add al,4
-273F:0296 32 E4 xor ah,ah ; Zero register
-273F:0298 B6 00 mov dh,0
-273F:029A E8 3D07 call display_message ; (3FA4)
-273F:029D 3C 1B cmp al,1Bh
-273F:029F 75 08 jne loc_28 ; Jump if not equal
-273F:02A1 B8 0000 mov ax,0
-273F:02A4 B6 01 mov dh,1
-273F:02A6 E8 3CFB call display_message ; (3FA4)
-273F:02A9 loc_28: ; xref 273F:029F
-273F:02A9 8A 16 0786 mov dl,byte ptr ds:[drive_number] ; (273F:0786=0E8h)
-273F:02AD B4 0E mov ah,0Eh
-273F:02AF CD 21 int 21h ; DOS Services ah=function 0Eh
- ; set default drive dl (0=a:)
-273F:02B1 E9 FF47 jmp loc_23 ; (01FB)
-273F:02B4 loc_29: ; xref 273F:0261, 0283
-273F:02B4 8A 16 0786 mov dl,byte ptr ds:[drive_number] ; (273F:0786=0E8h)
-273F:02B8 B4 0E mov ah,0Eh
-273F:02BA CD 21 int 21h ; DOS Services ah=function 0Eh
- ; set default drive dl (0=a:)
-
-273F:02BC loc_ret_30: ; xref 273F:0252
-273F:02BC C3 retn
- read_and_validate_header endp
-
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:034C, 040E, 757C
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:02BD validate_header proc near
-273F:02BD B1 06 mov cl,6
-273F:02BF D2 EC shr ah,cl ; Shift w/zeros fill
-273F:02C1 80 E4 03 and ah,3
-273F:02C4 80 C4 01 add ah,1
-273F:02C7 80 3E 0742 02 cmp video_style, VIDEO_STYLE_EGA
-273F:02CC 75 03 jne loc_31 ; Jump if it's VGA
-273F:02CE 80 C4 04 add ah,4
-273F:02D1 loc_31:
-273F:02D1 88 26 00B1 mov byte ptr ds:[file_number],ah ; (273F:00B1=40h)
-273F:02D5 F6 06 00B0 FF test data_525, 0FFh
-273F:02DA 75 03 jnz loc_32 ; Jump if not zero
-273F:02DC E9 FF1C jmp loc_23 ; (01FB)
-273F:02DF loc_32: ; xref 273F:02DA
-273F:02DF A1 0119 mov ax,word ptr ds:[file_buffer] ; Validate file ident string
-273F:02E2 3D 6568 cmp ax,6568h ; 'he'
-273F:02E5 75 1A jne loc_33 ; Jump if not equal
-273F:02E7 A1 011B mov ax,word ptr ds:[file_buffer+2]
-273F:02EA 3D 7779 cmp ax,7779h ; 'yw'
-273F:02ED 75 12 jne loc_33 ; Jump if not equal
-273F:02EF A1 011D mov ax,word ptr ds:[file_buffer+4]
-273F:02F2 3D 776F cmp ax,776Fh ; 'ow'
-273F:02F5 75 0A jne loc_33 ; Jump if not equal
-273F:02F7 A1 011F mov ax,word ptr ds:[file_filenum] ; (273F:011F=0FF13h)
-273F:02FA 3A 26 00B1 cmp ah,byte ptr ds:[file_number] ; (273F:00B1=40h)
-273F:02FE 75 01 jne loc_33 ; Jump if not equal
-273F:0300 C3 retn
-273F:0301 loc_33: ; xref 273F:02E5, 02ED, 02F5, 02FE
-
-; Jumps to the error recovery code, which can open up the appropriate file and load it from scratch
-273F:0301 E9 FF45 jmp loc_24 ; (0249)
- validate_header endp
-
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:025E, 0280
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:0304 open_file2 proc near
-273F:0304 8A D0 mov dl,al
-273F:0306 B4 0E mov ah,0Eh
-273F:0308 CD 21 int 21h ; DOS Services ah=function 0Eh
- ; set default drive dl (0=a:)
-273F:030A E8 FE67 call open_file ; (0174)
-273F:030D C3 retn
- open_file2 endp
-
-273F:030E 0000 data_121 dw 0 ; xref 273F:0314, 03D5
-273F:0310 0000 data_122 dw 0 ; xref 273F:0318, 03D9
-273F:0312 0000 data_123 dw 0 ; xref 273F:031D, 03DE
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:0BDA, 3ACD, 3CA3, 7640, 7813, 7AC5, 7B63
- ; 7B80, 93A9, 9F6E, 9F8C, 9FB1, A302, A34F
- ; A7C0, A7E2, A900, A9B3
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:0314 read_entry proc near
-273F:0314 loc_34: ; xref 273F:03E3
-273F:0314 2E: A3 030E mov cs:data_121,ax ; (273F:030E=0)
-273F:0318 2E: 89 0E 0310 mov cs:data_122,cx ; (273F:0310=0)
-273F:031D 2E: 89 16 0312 mov cs:data_123,dx ; (273F:0312=0)
-273F:0322 8B D8 mov bx,ax
-273F:0324 81 E3 3FFF and bx,3FFFh
-273F:0328 81 FB 0120 cmp bx,120h
-273F:032C 74 11 je loc_35 ; Jump if equal
-273F:032E 81 FB 0311 cmp bx,311h
-273F:0332 74 0B je loc_35 ; Jump if equal
-273F:0334 83 FB 08 cmp bx,8
-273F:0337 74 06 je loc_35 ; Jump if equal
-273F:0339 81 FB 0410 cmp bx,410h
-273F:033D 75 0A jne loc_36 ; Jump if not equal
-273F:033F loc_35: ; xref 273F:032C, 0332, 0337
- assume ds:data_seg
-273F:033F F6 06 BAB9 FF test byte ptr script_val_88, 0FFh
-273F:0344 74 03 jz loc_36 ; Jump if zero
-273F:0346 80 F4 80 xor ah,80h
-273F:0349 loc_36: ; xref 273F:033D, 0344
-273F:0349 51 push cx
-273F:034A 52 push dx
-273F:034B 50 push ax
-273F:034C E8 FF6E call validate_header ; (02BD)
-273F:034F 58 pop ax
-273F:0350 5A pop dx
-273F:0351 \xFABB 0119 mov bx,offset file_buffer
-273F:0354 B9 00C0 mov cx,0C0h ; Number of header entries + 1
-
-273F:0357 locloop_37: ; xref 273F:035E
-273F:0357 3B 07 cmp ax,[bx]
-273F:0359 74 0D je loc_38 ; Jump if equal
-273F:035B 83 C3 08 add bx,8
-273F:035E E2 F7 loop locloop_37 ; Loop if cx > 0
-
-273F:0360 B8 0009 mov ax,9 ; 'Data file is corrupt.$'
-273F:0363 B6 01 mov dh,1
-273F:0365 E8 3C3C call display_message ; (3FA4)
-273F:0368 loc_38: ; xref 273F:0359
-273F:0368 07 pop es
-273F:0369 8B 4F 04 mov cx,[bx+4]
-273F:036C 8A 47 03 mov al,[bx+3]
-273F:036F 32 E4 xor ah,ah ; Zero register
-273F:0371 8B E8 mov bp,ax
-273F:0373 FF 77 01 push word ptr [bx+1]
-
-273F:0376 8B 5F 06 mov bx,[bx+6]
-273F:0379 51 push cx
-273F:037A 55 push bp
-273F:037B E8 00CC call read_file_entry ; (044A)
-273F:037E 5D pop bp
-273F:037F B1 0C mov cl,0Ch
-273F:0381 D3 E5 shl bp,cl ; Shift w/zeros fill
-273F:0383 59 pop cx
-273F:0384 8B D1 mov dx,cx
-273F:0386 83 EA 01 sub dx,1
-273F:0389 D1 EA shr dx,1 ; Shift w/zeros fill
-273F:038B D1 EA shr dx,1 ; Shift w/zeros fill
-273F:038D D1 EA shr dx,1 ; Shift w/zeros fill
-273F:038F D1 EA shr dx,1 ; Shift w/zeros fill
-273F:0391 83 C2 01 add dx,1
-273F:0394 03 D5 add dx,bp
-273F:0396 5B pop bx
-273F:0397 2E: F6 06 0943 FF test byte ptr cs:critical_error,0FFh ; (273F:0943=0)
-273F:039D 75 06 jnz loc_39 ; Jump if not zero
-273F:039F C6 06 0118 00 mov byte ptr retry_count,0 ; (31E4:0118=0)
-273F:03A4 C3 retn
-273F:03A5 loc_39: ; xref 273F:039D
-273F:03A5 80 06 0118 01 add byte ptr retry_count,1 ; (31E4:0118=0)
-273F:03AA 80 3E 0118 05 cmp byte ptr retry_count,5 ; (31E4:0118=0)
-273F:03AF 72 19 jb loc_40 ; Jump if below
-273F:03B1 C6 06 0118 00 mov byte ptr retry_count,0 ; (31E4:0118=0)
-273F:03B6 B8 0001 mov ax,1
-273F:03B9 B6 00 mov dh,0
-273F:03BB E8 3BE6 call display_message ; (3FA4)
-273F:03BE 3C 1B cmp al,1Bh
-273F:03C0 75 08 jne loc_40 ; Jump if not equal
-273F:03C2 B8 0000 mov ax,0
-273F:03C5 B6 01 mov dh,1
-273F:03C7 E8 3BDA call display_message ; (3FA4)
-273F:03CA loc_40: ; xref 273F:03AF, 03C0
-273F:03CA 2E: C6 06 0943 00 mov byte ptr cs:critical_error,0 ; (273F:0943=0)
-273F:03D0 C6 06 00B0 00 mov data_525, 0
-273F:03D5 2E: A1 030E mov ax,cs:data_121 ; (273F:030E=0)
-273F:03D9 2E: 8B 0E 0310 mov cx,cs:data_122 ; (273F:0310=0)
-273F:03DE 2E: 8B 16 0312 mov dx,cs:data_123 ; (273F:0312=0)
-273F:03E3 E9 FF2E jmp loc_34 ; (0314)
- read_entry endp
-
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:77F1, A7B4
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:03E6 get_entry_size proc near
-273F:03E6 8B D8 mov bx,ax
-273F:03E8 81 E3 3FFF and bx,3FFFh
-273F:03EC 81 FB 0120 cmp bx,120h
-273F:03F0 74 11 je loc_41 ; Jump if equal
-273F:03F2 81 FB 0311 cmp bx,311h
-273F:03F6 74 0B je loc_41 ; Jump if equal
-273F:03F8 83 FB 08 cmp bx,8
-273F:03FB 74 06 je loc_41 ; Jump if equal
-273F:03FD 81 FB 0410 cmp bx,410h
-273F:0401 75 0A jne loc_42 ; Jump if not equal
-273F:0403 loc_41: ; xref 273F:03F0, 03F6, 03FB
-273F:0403 F6 06 BAB9 FF test byte ptr script_val_88, 0FFh
-273F:0408 74 03 jz loc_42 ; Jump if zero
-273F:040A 80 F4 80 xor ah,80h
-273F:040D loc_42: ; xref 273F:0401, 0408
-273F:040D 50 push ax
-273F:040E E8 FEAC call validate_header ; (02BD)
-273F:0411 58 pop ax
-273F:0412 \xFABB 0119 mov bx, offset file_buffer ; (273F:0119=0FFh)
-273F:0415 B9 00C0 mov cx,0C0h
-
-273F:0418 locloop_43: ; xref 273F:041F
-273F:0418 3B 07 cmp ax,[bx]
-273F:041A 74 0D je loc_44 ; Jump if equal
-273F:041C 83 C3 08 add bx,8
-273F:041F E2 F7 loop locloop_43 ; Loop if cx > 0
-
-273F:0421 B8 0009 mov ax,9 ; 'Data file is corrupt.$'
-273F:0424 B6 01 mov dh,1
-273F:0426 E8 3B7B call display_message ; (3FA4)
-273F:0429 loc_44: ; xref 273F:041A
-273F:0429 8A 4F 03 mov cl,[bx+3]
-273F:042C 32 ED xor ch,ch ; Zero register
-273F:042E 8B E9 mov bp,cx
-273F:0430 B1 0C mov cl,0Ch
-273F:0432 D3 E5 shl bp,cl ; Shift w/zeros fill
-273F:0434 8B 4F 04 mov cx,[bx+4]
-273F:0437 8B D1 mov dx,cx
-273F:0439 83 EA 01 sub dx,1
-273F:043C D1 EA shr dx,1 ; Shift w/zeros fill
-273F:043E D1 EA shr dx,1 ; Shift w/zeros fill
-273F:0440 D1 EA shr dx,1 ; Shift w/zeros fill
-273F:0442 D1 EA shr dx,1 ; Shift w/zeros fill
-273F:0444 83 C2 01 add dx,1
-273F:0447 03 D5 add dx,bp
-273F:0449 C3 retn
- get_entry_size endp
-
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:021A, 037B
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-
-
-273F:044A read_file_entry proc near
-273F:044A 1E push ds
-273F:044B 51 push cx
-273F:044C 52 push dx
-273F:044D B8 0020 mov ax,20h
-273F:0450 F7 E3 mul bx ; dx:ax = reg * ax
-273F:0452 8B CA mov cx,dx
-273F:0454 8B D0 mov dx,ax
-273F:0456 51 push cx
-273F:0457 52 push dx
-273F:0458 B8 4200 mov ax,4200h
-273F:045B 8B 1E 00B4 mov bx,word ptr ds:[file_handle] ; (273F:00B4=11D0h)
-273F:045F CD 21 int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
-273F:0461 72 3F jc loc_47 ; Jump if carry Set
-273F:0463 5B pop bx
-273F:0464 59 pop cx
-273F:0465 3B CA cmp cx,dx
-273F:0467 75 3B jne loc_48 ; Jump if not equal
-273F:0469 3B C3 cmp ax,bx
-273F:046B 75 37 jne loc_48 ; Jump if not equal
-273F:046D 8B 1E 00B4 mov bx,word ptr ds:[file_handle] ; (273F:00B4=11D0h)
-273F:0471 5A pop dx
-273F:0472 D1 E5 shl bp,1 ; Shift w/zeros fill
-273F:0474 loc_45: ; xref 273F:0490
-273F:0474 \xFA83 ED 01 sub bp,1
-273F:0477 72 19 jc loc_46 ; Jump if carry Set
-273F:0479 8C C0 mov ax,es
-273F:047B 8E D8 mov ds,ax
-273F:047D 05 0800 add ax,800h
-273F:0480 8E C0 mov es,ax
-273F:0482 B4 3F mov ah,3Fh ; '?'
-273F:0484 B9 8000 mov cx,8000h
-273F:0487 CD 21 int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
-273F:0489 72 1A jc loc_49 ; Jump if carry Set
-273F:048B 3D 8000 cmp ax,8000h
-273F:048E 75 15 jne loc_49 ; Jump if not equal
-273F:0490 EB E2 jmp short loc_45 ; (0474)
-273F:0492 loc_46: ; xref 273F:0477
-273F:0492 59 pop cx
-273F:0493 06 push es
-273F:0494 1F pop ds
-273F:0495 B4 3F mov ah,3Fh
-273F:0497 CD 21 int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
-273F:0499 72 0B jc loc_50 ; Jump if carry Set
-273F:049B 3B C1 cmp ax,cx
-273F:049D 75 07 jne loc_50 ; Jump if not equal
-273F:049F 1F pop ds
-273F:04A0 F8 clc ; Clear carry flag
-273F:04A1 C3 retn
-273F:04A2 loc_47: ; xref 273F:0461
-273F:04A2 58 pop ax
-273F:04A3 58 pop ax
-273F:04A4 loc_48: ; xref 273F:0467, 046B
-273F:04A4 58 pop ax
-273F:04A5 loc_49: ; xref 273F:0489, 048E
-273F:04A5 58 pop ax
-273F:04A6 loc_50: ; xref 273F:0499, 049D
-273F:04A6 1F pop ds
-273F:04A7 F9 stc ; Set carry flag
-273F:04A8 C3 retn
- read_file_entry endp
-
-273F:04A9 00 db 0
-273F:04AA 0000 0000 old_timer_int_proc dw 0, 0 ; xref 273F:0699, 3FD2, 49A6
-273F:04AE 0000 0000 old_kbd_int_proc dw 0, 0 ; xref 273F:06F2, 4004, 94DC
-273F:04B2 0000 old_critical_int_proc dw 0, 0 ; xref 273F:06D1, 3FEB
-
- ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ; SUBROUTINE
- ;
- ; Called from: 273F:0005
- ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
-
-273F:04B6 initialise proc near
-273F:04B6 E8 0314 call sub_10 ; (07CD)
-273F:04B9 E8 0447 call sub_12 ; (0903)
-273F:04BC C7 06 5662 094D mov play_music_proc, offset retf_proc
-273F:04C2 8C 0E 5664 mov word ptr play_music_proc+2,cs
-273F:04C6 F6 06 0742 FF test video_style, 0FFh ; Is any video mode defined
-273F:04CB 74 07 jz loc_51 ; Jump if zero
-273F:04CD 80 3E 0742 02 cmp video_style, VIDEO_STYLE_EGA
-273F:04D2 74 20 je loc_53 ; Jump if equal
-273F:04D4 loc_51: ; xref 273F:04CB
-273F:04D4 B8 1A00 mov ax,1A00h
-273F:04D7 CD 10 int 10h ; Video display ah=functn 1Ah
- ; get display type in bx
-273F:04D9 3C 1A cmp al,1Ah
-273F:04DB 75 0C jne loc_52 ; Function not supported
-273F:04DD 80 FB 04 cmp bl,4 ; EGA monitor
-273F:04E0 74 12 je loc_53 ; Jump if equal
-273F:04E2 80 FB 08 cmp bl,8 ; VGA with analog colour model
-273F:04E5 75 10 jne loc_54 ; Jump if not equal
-273F:04E7 EB 16 jmp short loc_55 ; (04FF)
-
-273F:04E9 loc_52: ; xref 273F:04DB
-273F:04E9 B4 12 mov ah,12h
-273F:04EB B3 10 mov bl,10h ; bl=Return Config Info
-273F:04ED CD 10 int 10h ; Video display EGA/VGA special
-
-273F:04EF 80 FB 10 cmp bl,10h ; Not supported
-273F:04F2 74 03 je loc_54
-273F:04F4 loc_53: ; xref 273F:04D2, 04E0
-273F:04F4 E9 00C9 jmp loc_56
-
-; Computer doesn't support EGA or VGA
-273F:04F7 loc_54:
-273F:04F7 B8 0002 mov ax,2
-273F:04FA B6 01 mov dh,1
-273F:04FC E8 3AA5 call display_message
-
-; Game will run in VGA mode
-273F:04FF loc_55:
-273F:04FF C6 06 0743 13 mov video_mode, 13h ; 3200x200x256 mode
-273F:0504 C6 06 0742 01 mov video_style, VIDEO_STYLE_VGA ; Flag for VGA mode
-273F:0509 C7 06 0744 304E mov show_screen_proc, offset vga_show_screen
-273F:050F C7 06 074A 0008 mov char_width, 8
-273F:0515 C7 06 0746 FA00 mov screen_size, SCREEN_HEIGHT*SCREEN_WIDTH
-273F:051B C7 06 0748 0140 mov screen_width, SCREEN_WIDTH
-273F:0521 C7 06 074C 0A00 mov menubar_block_size, MENUBAR_Y_SIZE*SCREEN_WIDTH
-273F:0527 C7 06 074E 346D mov data_555,346Dh ; (31E4:074E=0)
-273F:052D C7 06 0750 3527 mov segment_screen_proc, vga_segment_screen
-273F:0533 C7 06 0752 340F mov show_compressed_screen_proc, offset vga_show_compressed_screen
-273F:0539 C7 06 0754 37F2 mov add_animation_proc, offset vga_add_animation
-273F:053F C7 06 0756 33B3 mov draw_talk_dialog_proc, offset vga_draw_talk_dialog
-273F:0545 C7 06 0758 3242 mov talk_dialog_proc, vga_talk_dialog
-273F:054B C7 06 075A 3209 mov display2_character_proc, offset vga_display2_character
-273F:0551 C7 06 075C 3599 mov add_rect_proc, vga_add_rect
-273F:0557 C7 06 075E 3664 mov show_cursor_proc, offset vga_cursor
-273F:055D C7 06 0766 30E2 mov fade_out_proc, offset vga_fade_out
-273F:0563 C7 06 0760 3177 mov fade_in_proc, offset vga_fade_in
-273F:0569 C7 06 0762 31D3 mov set_lower_palette_proc, offset vga_set_lower_palette
-273F:056F C7 06 0764 31E9 mov empty_palette_proc, offset vga_empty_palette
-273F:0575 C7 06 076A 35F6 mov display_character_proc, offset vga_display_character
-273F:057B C7 06 076C 362D mov menu_items_proc, offset vga_menu_items
-273F:0581 C7 06 076E 1450 mov data_571, offset vga_unknown_rec
-273F:0587 C7 06 0770 3948 mov data_572,3948h ; (31E4:0770=0)
-273F:058D C7 06 0772 3AD7 mov toggle_menu_highlight_proc, offset vga_toggle_menu_highlight
-273F:0593 C7 06 0774 07ED mov data_574, offset vga_no_implementation
-273F:0599 C7 06 0776 07ED mov data_575, offset vga_no_implementation
-273F:059F C7 06 0778 3374 mov data_576,3374h ; (31E4:0778=0)
-273F:05A5 C7 06 077A 3295 mov draw_dialog_proc, offset vga_draw_dialog
-273F:05AB C7 06 077C 398A mov decode_entry_proc, offset decode_file_entry
-273F:05B1 C7 06 077E A7E6 mov copy_screen_proc, offset vga_copy_screen
-273F:05B7 C7 06 0780 A711 mov pic_decode_proc, offset vga_pic_decode
-273F:05BD E9 00C4 jmp loc_57
-
-; Game will run in EGA mode
-273F:05C0 loc_56: ; xref 273F:04F4
-273F:05C0 C6 06 0743 0D mov byte ptr video_mode,0Dh ; 320x200x16 mode
-273F:05C5 C6 06 0742 02 mov video_style, VIDEO_STYLE_EGA,2
-273F:05CA C7 06 0744 205C mov show_screen_proc, offset ega_show_screen
-273F:05D0 C7 06 074A 0004 mov char_width, 4
-273F:05D6 C7 06 0746 7D00 mov screen_size, 7D00h
-273F:05DC C7 06 0748 00A0 mov screen_width, SCREEN_WIDTH/2
-273F:05E2 C7 06 074C 0500 mov menubar_block_size, MENUBAR_Y_SIZE*SCREEN_WIDTH/2
-273F:05E8 C7 06 074E 2814 mov data_555,2814h ; (31E4:074E=0)
-273F:05EE C7 06 0750 270D mov segment_screen_proc, ega_segment_screen
-273F:05F4 C7 06 0752 27B1 mov show_compressed_screen_proc, offset ega_show_compressed_screen
-;menubar_restore_area
-273F:05FA C7 06 0754 2C76 mov add_animation_proc, offset ega_add_animation
-273F:0600 C7 06 0756 2275 mov draw_talk_dialog_proc, offset ega_draw_talk_dialog
-273F:0606 C7 06 0758 2217 mov talk_dialog_proc, offset ega_talk_dialog
-273F:060C C7 06 075A 2184 mov display2_character_proc, 2184h
-273F:0612 C7 06 075C 29A4 mov add_rect_proc, offset ega_add_layer
-273F:0618 C7 06 075E 2AB3 mov show_cursor_proc, offset ega_cursor
-273F:061E C7 06 0768 07ED mov data_568,07EDh
-273F:0624 C7 06 0766 215F mov fade_out_proc, offset ega_empty_palette
-273F:062A C7 06 0760 2174 mov fade_in_proc, offset ega_fade_in
-273F:0630 C7 06 0762 2174 mov set_lower_palette_proc, offset ega_fade_in
-273F:0636 C7 06 0764 215F mov empty_palette_proc, ega_empty_palette
-273F:063C C7 06 076A 2A31 mov display_character_proc, offset ega_display_character
-273F:0642 C7 06 076C 22C4 mov menu_items_proc, offset ega_menu_items
-273F:0648 C7 06 076E 1444 mov data_571, offset ega_unknown_rec
-273F:064E C7 06 0770 2F9C mov data_572,2F9Ch ; (31E4:0770=0)
-273F:0654 C7 06 0772 2FF3 mov toggle_menu_highlight_proc, offset ega_toggle_menu_highlight
-273F:065A C7 06 0774 2688 mov data_574,2688h ; (31E4:0774=0)
-273F:0660 C7 06 0776 26C7 mov data_575,26C7h ; (31E4:0776=0)
-273F:0666 C7 06 0778 23EA mov data_576,23EAh ; (31E4:0778=0)
-273F:066C C7 06 077A 2370 mov draw_dialog_proc, offset ega_draw_dialog
-273F:0672 C7 06 077C 246A mov decode_entry_proc, offset ega_decode_entry
-273F:0678 C7 06 077E A80C mov copy_screen_proc, offset ega_copy_screen
-273F:067E C7 06 0780 A75F mov pic_decode_proc, offset ega_pic_decode
-
-273F:0684 loc_57: ; xref 273F:05BD
-273F:0684 B4 30 mov ah,30h
-273F:0686 CD 21 int 21h ; DOS Services ah=function 30h
- ; get DOS version number ax
-273F:0688 3C 01 cmp al,1 ; At least DOS version 1.0?
-273F:068A 7F 08 jg loc_58 ; Jump if >
-273F:068C B8 0003 mov ax,3 ; Bail out with DOS error message
-273F:068F B6 01 mov dh,1
-273F:0691 E8 3910 call display_message
-
-273F:0694 loc_58:
-273F:0694 B8 3508 mov ax,3508h ; Get current timer handler address
-273F:0697 CD 21 int 21h ; DOS Services ah=function 35h
- ; get intrpt vector al in es:bx
-273F:0699 2E: 89 1E 04AA mov cs:old_timer_int_proc, bx
-273F:069E 8C C0 mov ax,es
-273F:06A0 2E: A3 04AC mov word ptr cs:old_timer_int_proc+2,ax
-273F:06A4 B8 2508 mov ax,2508h
-273F:06A7 1E push ds
-273F:06A8 0E push cs
-273F:06A9 1F pop ds
-273F:06AA \xFABA 48C6 mov dx,offset timer_handler
-273F:06AD CD 21 int 21h ; DOS Services ah=function 25h
- ; set intrpt vector al to ds:dx
-273F:06AF 1F pop ds
-273F:06B0 80 0E 073C 04 or status_flags, STATUS_TIMER_SET
-273F:06B5 B9 5D38 mov cx,5D38h
-273F:06B8 B0 36 mov al,36h ; '6'
-273F:06BA E6 43 out 43h,al ; port 43h, 8253 timer control
-273F:06BC EB 00 jmp short $+2 ; delay for I/O
-273F:06BE EB 00 jmp short $+2 ; delay for I/O
-273F:06C0 8A C1 mov al,cl
-273F:06C2 E6 40 out 40h,al ; port 40h, 8253 timer 0 clock
-273F:06C4 EB 00 jmp short $+2 ; delay for I/O
-273F:06C6 EB 00 jmp short $+2 ; delay for I/O
-273F:06C8 8A C5 mov al,ch
-273F:06CA E6 40 out 40h,al ; port 40h, 8253 timer 0 clock
-273F:06CC B8 3524 mov ax,3524h
-273F:06CF CD 21 int 21h ; DOS Services ah=function 35h
- ; get intrpt vector al in es:bx
-273F:06D1 2E: 89 1E 04B2 mov cs:old_critical_int_proc, bx
-273F:06D6 8C C0 mov ax,es
-273F:06D8 2E: A3 04B4 mov cs:old_critical_int_proc+2,ax
-273F:06DC B8 2524 mov ax,2524h
-273F:06DF 1E push ds
-273F:06E0 0E push cs
-273F:06E1 1F pop ds
-273F:06E2 \xFABA 0944 mov dx,offset critical_handler ; Set new critical error handler
-273F:06E5 CD 21 int 21h ; DOS Services ah=function 25h
- ; set intrpt vector al to ds:dx
-273F:06E7 1F pop ds
-273F:06E8 80 0E 073C 10 or status_flags, STATUS_CRITICAL_SET
-273F:06ED B8 3509 mov ax,3509h
-273F:06F0 CD 21 int 21h ; DOS Services ah=function 35h
- ; get intrpt vector al in es:bx
-273F:06F2 2E: 89 1E 04AE mov cs:old_kbd_int_proc, bx
-273F:06F7 8C C0 mov ax,es
-273F:06F9 2E: A3 04B0 mov word ptr cs:old_kbd_int_proc+2, ax
-273F:06FD B8 2509 mov ax,2509h
-273F:0700 1E push ds
-273F:0701 0E push cs
-273F:0702 1F pop ds
-273F:0703 \xFABA 94DB mov dx,offset keyboard_handler ; Set new keyboard handler
-273F:0706 CD 21 int 21h ; DOS Services ah=function 25h
- ; set intrpt vector al to ds:dx
-273F:0708 1F pop ds
-273F:0709 80 0E 073C 40 or status_flags, STATUS_KEYBOARD_SET
-273F:070E B4 19 mov ah,19h
-273F:0710 CD 21 int 21h ; DOS Services ah=function 19h
- ; get default drive al (0=a:)
-273F:0712 A2 0786 mov default_drive, al
-273F:0715 CD 11 int 11h ; Put equipment bits in ax
-273F:0717 A8 C0 test al,0C0h ; How many floppy drives attached?
-273F:0719 75 05 jnz loc_59 ; Jump if not zero
-273F:071B 80 0E 073D 80 or status_flags2, FLAG_HAS_FLOPPY_DRIVE
-273F:0720 loc_59: ; xref 273F:0719
-273F:0720 B8 3300 mov ax,3300h
-273F:0723 CD 21 int 21h ; DOS Services ah=function 33h
- ; get ctrl-break flag in dl
-273F:0725 88 16 073E mov old_ctrl_break_flag, dl
-273F:0729 B8 3301 mov ax,3301h
-273F:072C B2 00 mov dl,0
-273F:072E CD 21 int 21h ; DOS Services ah=function 33h
- ; set ctrl-break flag dl=off/on
-273F:0730 80 0E 073C 08 or status_flags, STATUS_CTRL_BREAK_SET
-273F:0735 B8 0040 mov ax,40h
-273F:0738 8E C0 mov es,ax
-273F:073A 26: A0 0017 mov al,es:keybd_flags_1 ; (0040:0017=0)
-273F:073E A2 073F mov data_546,al ; (31E4:073F=1)
-273F:0741 B4 0F mov ah,0Fh
-273F:0743 CD 10 int 10h ; Video display ah=functn 0Fh
- ; get state, al=mode, bh=page
- ; ah=columns on screen
-273F:0745 A2 073B mov data_542,al ; (31E4:073B=0)
-273F:0748 B4 00 mov ah,0
-273F:074A A0 0743 mov al,video_mode ; (31E4:0743=0)
-273F:074D CD 10 int 10h ; Video display ah=functn 00h
- ; set display mode in al
-273F:074F 80 0E 073C 01 or status_flags, STATUS_VIDEO_MODE_SET
-273F:0754 80 3E 0742 01 cmp video_style, VIDEO_STYLE_VGA
-273F:0759 75 03 jne loc_60 ; Jump if not equal
-273F:075B E8 3A27 call set_upper_vga_palette
-273F:075E loc_60: ; xref 273F:0759
-273F:075E E8 6E1B call show_startup ; (757C)
-
-273F:0761 C7 06 11D6 00A0 mov mouse_x2, 160 ; Default mouse pos to center
-273F:0767 C7 06 11D1 00A0 mov mouse_x, 160
-273F:076D C7 06 11D8 0064 mov mouse_y2, 100
-273F:0773 C7 06 11D3 0064 mov mouse_y, 100
-
-273F:0779 B8 0000 mov ax,0
-273F:077C CD 33 int 33h ; Mouse driver ax=func 0000h
- ; installed?, ax=0 no, =-1 yes
- ; bx=number of mouse buttons
-273F:077E 0B C0 or ax,ax ; Zero ?
-273F:0780 74 45 jz loc_61 ; Mouse not installed
-273F:0782 1E push ds
-273F:0783 0E push cs
-273F:0784 07 pop es
-273F:0785 \xFABA 1EE8 mov dx,offset mouse_handler
-273F:0788 B9 007F mov cx,7Fh
-273F:078B B8 000C mov ax,0Ch
-273F:078E CD 33 int 33h ; Mouse driver ax=func 000Ch
- ; set user handler at es:dx
- ; cx=event mask
-273F:0790 1F pop ds
-273F:0791 80 0E 073C 80 or status_flags, STATUS_MOUSE_HANDLER_SET
-273F:0796 B9 0000 mov cx,0
-273F:0799 BA 027F mov dx, 639
-273F:079C B8 0007 mov ax,7
-273F:079F CD 33 int 33h ; Mouse driver ax=func 0007h
- ; set horz range 0 - 639
-273F:07A1 B9 0000 mov cx,0
-273F:07A4 BA 00C6 mov dx,0C6h
-273F:07A7 B8 0008 mov ax,8
-273F:07AA CD 33 int 33h ; Mouse driver ax=func 0008h
- ; set vert range 0 - 198
-273F:07AC B8 0003 mov ax,3
-273F:07AF CD 33 int 33h ; Mouse driver ax=func 0003h
- ; get position, cx=horz,dx=vert
- ; bx=mouse button status bits
-273F:07B1 88 1E 11D5 mov mouse_buttons, bl ; (31E4:11D5=0)
-273F:07B5 D1 E9 shr cx,1 ; Change 0-640 horiz to 0-320
-273F:07B7 89 0E 11D6 mov mouse_x2,cx ;
-273F:07BB 89 0E 11D1 mov mouse_x, cx
-273F:07BF 89 16 11D8 mov mouse_y2,dx
-273F:07C3 89 16 11D3 mov mouse_y, dx
-273F:07C7 loc_61: ; xref 273F:0780
-273F:07C7 80 26 11D0 FD and menubar_state, 0FDh ; (31E4:11D0=3)
-273F:07CC C3 retn
-
- ;\xDF\xDF\xDF\xDF External Entry into Subroutine \xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
- ;
- ; Called from: 273F:04B6, AA1E
-
-273F:07CD sub_10:
-273F:07CD 8C D3 mov bx,ss
-273F:07CF 8C C0 mov ax,es
-273F:07D1 2B D8 sub bx,ax
-273F:07D3 8B C4 mov ax,sp
-273F:07D5 B1 04 mov cl,4
-273F:07D7 D3 E8 shr ax,cl ; Shift w/zeros fill
-273F:07D9 03 D8 add bx,ax
-273F:07DB 83 C3 03 add bx,3
-273F:07DE 89 1E 0740 mov data_547,bx ; (31E4:0740=0)
-273F:07E2 B4 4A mov ah,4Ah
-273F:07E4 CD 21 int 21h ; DOS Services ah=function 4Ah
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list