|  | Routines | 
| Prev: 45802 | Up: Map | Next: 45963 | 
| 
 
 | ||||||||||||||||||||
| 45809 | CALL 62959 | Store all registers on the stack | ||||||||||||||||||
| 45812 | CALL 47930 | Play downward scale sound | ||||||||||||||||||
| 45815 | CALL 62987 | Restore all registers from the stack | ||||||||||||||||||
| 45818 | LD A,105 | Modify instruction at 45867 with 105, denoting window as a menu rather than information window... | ||||||||||||||||||
| 45820 | LD (45868),A | ... | ||||||||||||||||||
| 45823 | PUSH BC | Store BC (B = number of inventory slots) | ||||||||||||||||||
| 45824 | PUSH HL | Store HL | ||||||||||||||||||
| 45825 | PUSH IX | Store IX | ||||||||||||||||||
| 45827 | CALL 63388 | Print command summary text at DE (e.g. "DROP THE ") in command summary window | ||||||||||||||||||
| 45830 | POP IX | Restore IX | ||||||||||||||||||
| 45832 | POP HL | Restore HL | ||||||||||||||||||
| 45833 | POP BC | Restore BC | ||||||||||||||||||
| 
This entry point is used by the routine at 45802.
 | ||||||||||||||||||||
| 45834 | LD C,0 | Load C (object counter) with zero | ||||||||||||||||||
| 45836 | PUSH BC | Store BC (B = number of inventory slots) | ||||||||||||||||||
| 45837 | PUSH IX | Store IX (points to start of inventory) | ||||||||||||||||||
| 45839 | LD A,(IX+0) | Load object from character's inventory (slot number C) into A | ||||||||||||||||||
| 45842 | OR A | If nothing in this slot... | ||||||||||||||||||
| 45843 | JR Z,45850 | ...then jump ahead to 45850 | ||||||||||||||||||
| 45845 | INC C | Increase count of objects in inventory | ||||||||||||||||||
| 45846 | INC IX | Advance IX to next slot | ||||||||||||||||||
| 45848 | DJNZ 45839 | Loop back to 45839 for next slot | ||||||||||||||||||
| 45850 | POP IX | Restore IX (points to start of inventory) | ||||||||||||||||||
| 45852 | LD A,C | Copy number of objects into A | ||||||||||||||||||
| 45853 | OR A | If number of objects is zero... | ||||||||||||||||||
| 45854 | JP Z,45937 | ...then jump ahead to 45937 | ||||||||||||||||||
| 45857 | LD A,(49068) | Load A with y-coordinate of top edge of window 4 | ||||||||||||||||||
| 45860 | ADD A,C | Add number of objects to this y-coordinate | ||||||||||||||||||
| 45861 | ADD A,3 | Add an additional 3 to this total (menu window padding) | ||||||||||||||||||
| 45863 | LD (49069),A | Set y-coordinate of bottom edge of window 4 to accommodate list of C objects | ||||||||||||||||||
| 45866 | PUSH HL | Store HL (e.g. pointer to "DROP WHICH OBJECT?" text) | ||||||||||||||||||
| 45867 | LD A,0 | Load A with menu / static window value | ||||||||||||||||||
| 45869 | CP 105 | If this is not 105 (i.e. window is not a menu, but a simple information window)... | ||||||||||||||||||
| 45871 | JR NZ,45880 | ...then skip ahead to 45880 | ||||||||||||||||||
| 45873 | LD A,4 | Draw window 4 as a menu window... | ||||||||||||||||||
| 45875 | CALL 47185 | ... | ||||||||||||||||||
| 45878 | JR 45885 | ...and skip over "draw an information window" section | ||||||||||||||||||
| 45880 | LD A,4 | Draw window 4 as an information window... | ||||||||||||||||||
| 45882 | CALL 47193 | ... | ||||||||||||||||||
| 45885 | POP HL | Restore HL (pointer to full command text)... | ||||||||||||||||||
| 45886 | PUSH IX | Store IX (points to start of inventory) | ||||||||||||||||||
| 45888 | CALL 46902 | Print text to screen | ||||||||||||||||||
| 45891 | POP IX | Restore IX (points to start of inventory) | ||||||||||||||||||
| 45893 | POP BC | Restore BC (B = number of remaining inventory slots) | ||||||||||||||||||
| 45894 | PUSH BC | Store BC (B = number of remaining inventory slots) | ||||||||||||||||||
| 45895 | LD A,(IX+0) | Load index of object in current inventory into A | ||||||||||||||||||
| 45898 | OR A | If index is zero (i.e. inventory slot is empty)... | ||||||||||||||||||
| 45899 | JP Z,45927 | ...then skip ahead to 45927 | ||||||||||||||||||
| 45902 | LD B,A | Copy index into B | ||||||||||||||||||
| 45903 | PUSH IX | Store IX (pointer to start of inventory) | ||||||||||||||||||
| 45905 | LD HL,50753 | Point HL to text printing instruction to move cursor to start of next character row within window, then right by two characters | ||||||||||||||||||
| 45908 | PUSH BC | Store BC (B = index of an object) | ||||||||||||||||||
| 45909 | CALL 46902 | Print text to screen (i.e. move text printing cursor right by two characters) | ||||||||||||||||||
| 45912 | POP BC | Restore BC (B = index of an object) | ||||||||||||||||||
| 45913 | CALL 63332 | Point HL at object B's name in table of object names... | ||||||||||||||||||
| 45916 | CALL 46902 | ...and print to screen | ||||||||||||||||||
| 45919 | POP IX | Restore IX (pointer to start of inventory) | ||||||||||||||||||
| 45921 | INC IX | Advance IX to next inventory slot | ||||||||||||||||||
| 45923 | POP BC | Restore BC (B = number of remaining inventory slots) | ||||||||||||||||||
| 45924 | DJNZ 45894 | Repeat loop for next object in inventory, decreasing B (number of remaining inventory slots) | ||||||||||||||||||
| 45926 | PUSH BC | Store BC (B = 0) | ||||||||||||||||||
| 45927 | POP BC | Restore BC (B = number of remaining inventory slots | ||||||||||||||||||
| 45928 | LD A,(45868) | If window is a menu, rather than information window... | ||||||||||||||||||
| 45931 | CP 105 | ... | ||||||||||||||||||
| 45933 | CALL Z,47502 | ...process keyboard / joystick input on a menu and load A with selected item index | ||||||||||||||||||
| 45936 | RET | ...and return | ||||||||||||||||||
| 45937 | PUSH HL | Store HL (pointer to "YOU ARE NOW CARRYING" text) | ||||||||||||||||||
| 45938 | LD A,(49068) | Load A with y-coordinate of top edge of window 4 | ||||||||||||||||||
| 45941 | ADD A,4 | Add 4 to this y-coordinate | ||||||||||||||||||
| 45943 | LD (49069),A | Set y-coordinate of bottom edge of window 4 to accommodate three rows of text | ||||||||||||||||||
| 45946 | LD A,4 | Draw window 4... | ||||||||||||||||||
| 45948 | CALL 47193 | ... | ||||||||||||||||||
| 45951 | POP HL | Restore HL (pointer to "YOU ARE NOW CARRYING" text) | ||||||||||||||||||
| 45952 | CALL 46902 | ...and print to screen | ||||||||||||||||||
| 45955 | LD HL,56565 | Point HL at "NOTHING AT ALL" text... | ||||||||||||||||||
| 45958 | CALL 46902 | ...and print to screen | ||||||||||||||||||
| 45961 | POP BC | Restore BC (number of inventory slots, PUSHed by instruction at 45836) | ||||||||||||||||||
| 45962 | RET | Return | ||||||||||||||||||
| Prev: 45802 | Up: Map | Next: 45963 |