init
commit
a7f58b3128
@ -0,0 +1 @@
|
||||
/target
|
@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "zing"
|
||||
version = "0.1.0"
|
@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "zing"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
@ -0,0 +1,49 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
// see §11 (page 61) of the spec
|
||||
#[repr(usize)]
|
||||
enum HeaderFields {
|
||||
Version = 0x0,
|
||||
Flags1,
|
||||
HighMemoryStartAddr = 0x4,
|
||||
PCInitValAddr = 0x6,
|
||||
DictionaryAddr = 0x8,
|
||||
ObjectTableAddr = 0xA,
|
||||
GlobalsTableAddr = 0xC,
|
||||
StaticMemoryStartAddr = 0xE,
|
||||
Flags2 = 0x10,
|
||||
AbbreviationsTableaddr = 0x18,
|
||||
FileLength = 0x1A, // divided by a constant; see §11.1.6
|
||||
FileChecksum = 0x1C,
|
||||
InterpreterNumber = 0x1E,
|
||||
InterpreterVersion = 0x1F,
|
||||
ScreenHeightChars = 0x20,
|
||||
ScreenWidthChars = 0x21,
|
||||
ScreenHeightUnits = 0x22,
|
||||
ScreenWidthUnits = 0x24,
|
||||
FontWidthUnits = 0x26,
|
||||
FontHeightUnits = 0x27,
|
||||
BackgroundColor = 0x2C,
|
||||
ForegroundColor = 0x2D,
|
||||
TerminatingCharsTableAddr = 0x2E,
|
||||
RevisionNumber = 0x32,
|
||||
AlphabetTableAddr = 0x34,
|
||||
HeaderExtensionTableAddr = 0x36,
|
||||
}
|
||||
|
||||
// note: this is a table of words, unlike the regular header which is all bytes
|
||||
#[repr(usize)]
|
||||
enum ExtensionTableFields {
|
||||
TableLength = 0,
|
||||
MouseXAfterClick = 1,
|
||||
MouseYAfterClick = 2,
|
||||
UnicodeTranslationTableAddr = 3,
|
||||
}
|
||||
|
||||
struct ZMachine5 {
|
||||
memory: Box<[u8]>,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue