Mercurial > hg > Members > kono > os9 > sbc09
diff examples_forth/cross09.4 @ 57:2088fd998865
sbc09 directry clean up
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 23 Jul 2018 16:07:12 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples_forth/cross09.4 Mon Jul 23 16:07:12 2018 +0900 @@ -0,0 +1,54 @@ +\ 6809 meta compiler to be run from an ANSI standard FORTH system +\ that contains the FILE wordset. + +\ We need the word VOCABULARY. It's not in the standard though it will +\ be in most actual implementations. +: VOCABULARY WORDLIST CREATE , \ Make a new wordlist and store it in def. + DOES> >R \ Replace last item in the search order. + GET-ORDER SWAP DROP R> @ SWAP SET-ORDER ; + +.( Loading the assembler "asm09.4") CR +S" asm09.4" INCLUDED + +.( Loading the meta compiler "meta09.4") CR +S" meta09.4" INCLUDED + +.( Compiling the kernel from "kernel09.4") CR +S" kernel09.4" INCLUDED + +\ Save the binary image of the Forth system as Motorola S records. + +DECIMAL +VARIABLE CHKSUM +CREATE SBUF 42 CHARS ALLOT +CHAR S SBUF C! +CHAR 1 SBUF CHAR+ C! +VARIABLE BYTECOUNT +VARIABLE ADDR +VARIABLE FILEHAND +: TOHEX ( byte addr ---) \ Conert byte to two-digit hex at addr + BASE @ >R HEX SWAP 0 <# # # #> DROP SWAP 2 CHARS CMOVE R> BASE ! ; +: FLUSHHEX \ Store the S-record buffer in a file + BYTECOUNT @ IF + BYTECOUNT @ 3 + DUP CHKSUM +! SBUF 2 CHARS + TOHEX + ADDR @ 8 RSHIFT 255 AND DUP CHKSUM +! SBUF 4 CHARS + TOHEX + ADDR @ 255 AND DUP CHKSUM +! SBUF 6 CHARS + TOHEX + 255 CHKSUM @ 255 AND - SBUF 8 BYTECOUNT @ 2* + CHARS + TOHEX + SBUF 10 BYTECOUNT @ 2* + FILEHAND @ WRITE-LINE THROW + THEN BYTECOUNT @ ADDR +! 0 BYTECOUNT ! 0 CHKSUM ! ; +: PUTHEX ( byte ---) \ Store the byte in the S-record buffer + BYTECOUNT @ 16 = IF FLUSHHEX THEN + DUP CHKSUM +! SBUF 8 BYTECOUNT @ 2* + CHARS + TOHEX + 1 BYTECOUNT +! +; +: SAVE-IMAGE ( --- ) + S" kernel09" W/O CREATE-FILE THROW FILEHAND ! + 0 CHKSUM ! 0 BYTECOUNT ! ORIGIN ADDR ! + THERE ORIGIN - 0 DO IMAGE I + C@ PUTHEX LOOP FLUSHHEX + S" S9030000FC" FILEHAND @ WRITE-LINE THROW + FILEHAND @ CLOSE-FILE THROW +; +SAVE-IMAGE +.( Image saved as "kernel09") CR + +BYE