tape training
This commit is contained in:
@@ -41,6 +41,9 @@ mode, or UART/CTC setup must restore it before returning.
|
||||
prints the low 16 bits of the sum as four hexadecimal digits. The end address
|
||||
must be greater than or equal to the start address.
|
||||
|
||||
`D` prints 16 bytes per row followed by an ASCII column. Bytes outside the
|
||||
printable ASCII range are shown as `.`.
|
||||
|
||||
Build the ROM and programmer-format images with:
|
||||
|
||||
```sh
|
||||
@@ -84,15 +87,15 @@ The outputs are:
|
||||
- `build/tinybasic/tinybasic.bin`: standalone relocated Tiny BASIC payload
|
||||
- `build/casette/tape_loader.bin`: standalone relocated tape-loader payload
|
||||
|
||||
The current compact image is 12,318 bytes. Its ROM layout is:
|
||||
The current compact image is 12,967 bytes. Its ROM layout is:
|
||||
|
||||
- `0000-007F`: reset/copy bootstrap
|
||||
- `0080-1201`: packed BIOS+monitor image copied to RAM at `C000-D181`
|
||||
- `1202-13FF`: unused space reserved for the resident image to grow
|
||||
- `0080-12DD`: packed BIOS+monitor image copied to RAM at `C000-D25D`
|
||||
- `12DE-13FF`: unused space reserved for the resident image to grow
|
||||
- `1400-1C0C`: Tiny BASIC, executed directly from ROM
|
||||
- `1C0D-2FFF`: unused ROM
|
||||
- `3000-301D`: tape loader, executed directly from ROM
|
||||
- `301E-7FFF`: unused space available for additional ROM content
|
||||
- `3000-32A6`: tape loader, executed directly from ROM
|
||||
- `32A7-7FFF`: unused space available for additional ROM content
|
||||
|
||||
The resident image starts at `C000`, its IM 2 vector table is at `C040`, and
|
||||
linked code starts at `C080`. The bootstrap obtains the resident copy length
|
||||
@@ -103,8 +106,8 @@ The resulting RAM layout is:
|
||||
- `8000-AFFF`: Tiny BASIC workspace and BASIC program text
|
||||
- `B000-B077`: Tiny BASIC variables and input buffer
|
||||
- `B078-BFFF`: Tiny BASIC stack space
|
||||
- `C000-D181`: resident BIOS, vectors, services, and monitor
|
||||
- `D182-EFFF`: free space for resident-image growth
|
||||
- `C000-D25D`: resident BIOS, vectors, services, and monitor
|
||||
- `D25E-EFFF`: free space for resident-image growth
|
||||
- `F000-FFFF`: BIOS globals, UART buffers, and monitor stack
|
||||
|
||||
The BIOS and monitor continue to work if low ROM is disabled. ROM-resident
|
||||
@@ -197,12 +200,14 @@ returns to the Tiny BASIC prompt.
|
||||
|
||||
Tiny BASIC resets the stack pointer when it starts, so it does not currently
|
||||
return through the monitor's `G` call. Reset the machine to return to the
|
||||
monitor. The tape loader occupies the later ROM slot at `3000-301D`; the first
|
||||
unused byte after it is `301E`.
|
||||
monitor. The tape loader occupies the later ROM slot at `3000-32A6`; the first
|
||||
unused byte after it is `32A7`.
|
||||
|
||||
## Tape loader
|
||||
|
||||
The tape-loader image is built from `apps/casette/tape_loader.asm`, linked at
|
||||
`3000`, and included in both ROM images. Start it with `T`, `TAPE`, or `G 3000`.
|
||||
The current image polls the comparator input and prints its state through the
|
||||
resident BIOS console service.
|
||||
resident BIOS console service. Signal acquisition is bounded; a missing,
|
||||
unstable, or permanently high signal reports `TAPE SIGNAL TIMEOUT` and returns
|
||||
to the monitor instead of waiting forever with interrupts disabled.
|
||||
|
||||
Reference in New Issue
Block a user