GameFileHandle dw ?
Filename db 'GAME.BIN', 0x00
STR_ErrFile db 'Error opening the file:', 0x0D, 0x0A, 0x24
STR_ErrFree db 'Error freeing one or more memory blocks.', 0x0D, 0x0A, 0x24
STR_ErrCloseFile db 'Error closing the file:', 0x0D, 0x0A, 0x24
STR_ErrInvalidMagic db 'Invalid magic number.', 0x0D, 0x0A, 0x24
STR_ErrNotSupported db 'Operation not supported.', 0x0D, 0x0A, 0x24
STR_ErrInvalidAllocation db 'Requested an invalid amount of memory. Valid values are 0 (16K), 1 (32K) and 2 (64K).', 0x0D, 0x0A, 0x24
STR_ErrInvalidVersion db 'Invalid game file version.', 0x0D, 0x0A, 0x24
; There's two of these, they may change independently based on what wording matches better.
STR_ErrOther db 'An error occurred and the program had to close:', 0x0D, 0x0A, 0x24 ; Shown when the error is some sort of a custom something-something
STR_ErrOtherDOS db 'An error occurred and the program had to close:', 0x0D, 0x0A, 0x24 ; Shown when the error is a return from a DOS Function
STR_Bye db 'Bye', 0x0D, 0x0A, 0x24
; Scratch RAM segment (16K as of now)
RAM_Scratch dw ?
; Persistent RAM segment (4K also), differs from scratch RAM in that the offsets are meaningful
RAM_Persistent dw ?
; Object memory (64K)
RAM_Object dw ?
; Depends on the file, either 16K, 32K, or 64K
RAM_OpFile dw ?
; 64K, we use 320 * 200 bytes, used for double-buffering the frame, BASE_Present shoves it into A000:0000
RAM_Framebuffer dw ?
; A "program counter" for our opcode stream
; Not up-to-date at all times, the interpreter will occasionally update this, not constantly
; However, since this is not a multithreaded environment (wow), it can be assumed to be up-to-date
FilePtr dw ?
CurrentVideoMode db 0x03
;FileBuf:
;    TIMES 512 db 0x24

;    MOONMAN db \
;        0x0, 0x0, 0xF, 0x7, 0xF, 0x7, 0x0, 0x0, \
;        0x0, 0x0, 0x7, 0xF, 0x7, 0xF, 0x7, 0x0, \
;        0x0, 0x0, 0x7, 0xF, 0xF, 0xF, 0xF, 0x7, \ 
;        0x0, 0x0, 0x0, 0x7, 0x0, 0xF, 0x8, 0xA, \
;        0x0, 0x0, 0x0, 0xF, 0x0, 0x8, 0xF, 0x7, \
;        0x0, 0x0, 0x8, 0xF, 0x7, 0x7, 0xF, 0x7, \
;        0x0, 0x7, 0xF, 0xF, 0xF, 0xF, 0xF, 0x8, \
;        0x0, 0x0, 0x7, 0xF, 0xF, 0x7, 0x8, 0x7
