@@ -1,6 +1,4 @@ | |||||
: EMIT | |||||
( 0x53==(emit) override ) | |||||
0x53 RAM+ @ ?DUP IF EXECUTE ELSE (emit) THEN ; | |||||
SYSVARS 0x53 + :** EMIT | |||||
: (print) C@+ ( a len ) 0 DO C@+ EMIT LOOP DROP ; | : (print) C@+ ( a len ) 0 DO C@+ EMIT LOOP DROP ; | ||||
: BS 8 EMIT ; : LF 10 EMIT ; : CR 13 EMIT ; | : BS 8 EMIT ; : LF 10 EMIT ; : CR 13 EMIT ; | ||||
: CRLF CR LF ; : SPC 32 EMIT ; | : CRLF CR LF ; : SPC 32 EMIT ; | ||||
@@ -8,9 +8,6 @@ | |||||
; | ; | ||||
( del is same as backspace ) | ( del is same as backspace ) | ||||
: BS? DUP 0x7f = SWAP 0x8 = OR ; | : BS? DUP 0x7f = SWAP 0x8 = OR ; | ||||
: KEY | |||||
0x55 RAM+ @ ( (key) override ) | |||||
?DUP IF EXECUTE ELSE (key) THEN ; | |||||
SYSVARS 0x55 + :** KEY | |||||
( cont.: read one char into input buffer and returns whether we | ( cont.: read one char into input buffer and returns whether we | ||||
should continue, that is, whether CR was not met. ) | should continue, that is, whether CR was not met. ) |
@@ -3,8 +3,8 @@ | |||||
0x02 RAM+ CURRENT* ! | 0x02 RAM+ CURRENT* ! | ||||
CURRENT @ 0x2e RAM+ ! ( 2e == BOOT C< PTR ) | CURRENT @ 0x2e RAM+ ! ( 2e == BOOT C< PTR ) | ||||
0 0x08 RAM+ ! ( 08 == C<* override ) | 0 0x08 RAM+ ! ( 08 == C<* override ) | ||||
0 0x53 RAM+ ! ( 53 == (emit) override ) | |||||
0 0x55 RAM+ ! ( 55 == (key) override ) | |||||
['] (emit) ['] EMIT **! | |||||
['] (key) ['] KEY **! | |||||
['] CRLF ['] NL **! | ['] CRLF ['] NL **! | ||||
( 0c == C<* ) | ( 0c == C<* ) | ||||
['] (boot<) 0x0c RAM+ ! | ['] (boot<) 0x0c RAM+ ! | ||||
@@ -233,14 +233,14 @@ blocks per disk. | |||||
You'll need to send those blocks through RS-232. Begin by taking over the | You'll need to send those blocks through RS-232. Begin by taking over the | ||||
prompt: | prompt: | ||||
' *CL> 0x53 RAM+ ! | |||||
' *CL< 0x55 RAM+ ! | |||||
' *CL> ' EMIT **! | |||||
' *CL< ' KEY **! | |||||
See B80 for details about those RAM offsets. Your serial link now has the | See B80 for details about those RAM offsets. Your serial link now has the | ||||
prompt. You will also have to make your newlines CRLF. The TRS-80 wants CR | prompt. You will also have to make your newlines CRLF. The TRS-80 wants CR | ||||
only, but serial communications (and `blkup`) expect CRLF: | only, but serial communications (and `blkup`) expect CRLF: | ||||
' CRLF 0x0a RAM+ ! | |||||
' CRLF ' NL **! | |||||
Now, you can use `/tools/blkup` to send a disk's contents. First, | Now, you can use `/tools/blkup` to send a disk's contents. First, | ||||
extract the first 100 blocks from blkfs: | extract the first 100 blocks from blkfs: | ||||
@@ -264,9 +264,9 @@ own Collapse OS floppy set. See Usage guide (B3) for details. | |||||
Once you're done, you will want to go back to local control: | Once you're done, you will want to go back to local control: | ||||
' CR 0x0a RAM+ ! | |||||
0 0x55 RAM+ ! | |||||
0 0x53 RAM+ ! | |||||
' CR ' NL **! | |||||
' (emit) ' EMIT **! | |||||
' (key) ' KEY **! | |||||
## Self-hosting | ## Self-hosting | ||||
@@ -14,7 +14,7 @@ RS_ADDR 0x80 - CONSTANT SYSVARS | |||||
(entry) _ | (entry) _ | ||||
( Update LATEST ) | ( Update LATEST ) | ||||
PC ORG @ 8 + ! | PC ORG @ 8 + ! | ||||
( 0x0a == NLPTR. TRS-80 wants CR-only newlines ) | |||||
," ' CR 0x0a RAM+ ! BLK$ FD$ " EOT, | |||||
( TRS-80 wants CR-only newlines ) | |||||
," ' CR ' NL **! BLK$ FD$ " EOT, | |||||
ORG @ 256 /MOD 2 PC! 2 PC! | ORG @ 256 /MOD 2 PC! 2 PC! | ||||
H@ 256 /MOD 2 PC! 2 PC! | H@ 256 /MOD 2 PC! 2 PC! |