000
01.05.2013, 13:00 Uhr
funkheld
|
Volker hat mir dazu mut gemacht.
Ich habe jetzt mal ein Tool geschrieben für das Forth in Purebasic.
Mein Forth habe ich so compiliert : init_top: dw 8000h ; top init_sod: dw 8000h ; sod init_eod: dw A000h ; eod
Also mein Speicherbereich für die Screens liegen von 8000H bis A000H. Bei A000 liegt der USB-Stick und bei D000 der Grafikteiber für die Grafikroutinen. Dann habe ich ca 32Kb Speicher frei und wenn mein Forth geladen ist ca noch 17Kb frei.
Die originalen Screen(fth) von Forth kann ich in eine Binär-Datei umwandeln, die dann in den Speicherbereich von Forth geladen werden können, bei mir ab 8000H und dann zb mit "1 5 THRU" eingelesen werden :
Dieses ist der normaler Screen aus der grossen Sammlung die es gibt, die ich dann in eine Binär-Datei umwandle zum Laden ab 8000H :
Screen # 01 -----------------------
00 \ 20 Z80 - Forth Asssembler 01 02 ONLY FORTH ALSO DEFINITIONS 03 DECIMAL 04 ASSEMBLER ALSO DEFINITIONS 05 06 DEFER C, FORTH ' C, 07 ASSEMBLER IS C, 08 DEFER , FORTH ' , 09 ASSEMBLER IS , 10 DEFER HERE FORTH ' HERE 11 ASSEMBLER IS HERE 12 DEFER >MARK 13 DEFER ?>RESOLVE 14 DEFER <MARK 15 DEFER ?<RESOLVE ---------------------------------------------------------
Dann kann ich normalen Text umwandeln in einen Screen(fth), es werden automatisch Screens erweitert 1..2..3...usw :
Normaler Text:
VARIABLE X VARIABLE Y
: STERN GCLS GON 360 0 DO I SIN 80 10000 */ X ! I COS 80 10000 */ Y ! 128 128 X @ 128 + Y @ 128 + GLINE 10 +LOOP KEY DROP GOFF ;
: GCL GCLS ;
: GAN GON KEY DROP GOFF ; -----------------------------------------------------
daraus sind diese Screen(fth) entstanden, woraus dann wieder die Binär-Datei erstellt wird :
Screen # 1
00 \ 01 VARIABLE X 02 VARIABLE Y 03 04 : STERN 05 GCLS 06 GON 07 360 0 DO 08 I SIN 80 10000 */ X ! 09 I COS 80 10000 */ Y ! 10 128 128 X @ 128 + Y @ 11 128 + GLINE 12 10 +LOOP 13 KEY 14 DROP 15 GOFF ;
Screen # 2
00 \ 01 02 : GCL 03 GCLS ; 04 05 : GAN 06 GON 07 KEY 08 DROP 09 GOFF ; 10 11 12 13 14 15 --------------------------------------------------
Da mein Screenbereich in Forth nur von 8000H bis A000H geht , werden bei mehr ab 10 Screens automatisch eine neue Binärdatei angelegt zb Screen 1-10 datei0.bin und Screen 11-15 datei1.bin.
Dann kann ich auch eine mit dem normalen Assembler compilierte Binär-Datei in einen Screen einlesen für Forth : "code .....NEXT END-CODE". Das ist für mich manchmal einfacher , weil der Forth-Assembler doch bei einigen Sachen nicht so einfach ist.
So sieht dann eine umgewandelte Binär-Datei vom Assembler für Forth aus ,auch werden wieder automatisch neue Screens erstellt :
Screen # 1
00 \ 01 HEX CODE TEST 02 C5 C, FD C, E5 C, 3E C, 08 C, 03 D3 C, 08 C, AF C, D3 C, 08 C, 04 F5 C, 21 C, 00 C, EC C, 22 C, 05 1B C, 00 C, 21 C, FF C, EF C, 06 22 C, 1D C, 00 C, 21 C, FF C, 07 00 C, 22 C, 23 C, 00 C, E7 C, 08 11 C, F1 C, 3C C, FE C, 08 C, 09 20 C, E3 C, 26 C, 80 C, 2E C, 10 80 C, 7C C, E6 C, 07 C, 07 C, 11 07 C, 07 C, 47 C, 3E C, BE C, 12 90 C, 32 C, 55 C, 01 C, CB C, 13 3C C, CB C, 3C C, CB C, 3C C, 14 4C C, 7D C, E6 C, 07 C, D3 C, 15 08 C, CB C, 3D C, CB C, 3D C,
Screen # 2
00 \ 01 CB C, 3D C, 45 C, 04 C, 21 C, 02 E0 C, EB C, 11 C, 20 C, 00 C, 03 19 C, 10 C, FD C, 09 C, CB C, 04 C6 C, FD C, E1 C, C1 C, C9 C, 04 NEXT END-CODE DECIMAL 05 06 07 08 09 10 11 12 13 14 15 ------------------------------------------------- Diese kann ich dann noch ausbessern und dann in eine Binär-Datei umwandeln wie ganz oben zum reinladen in meine Forth-Adresse ab 8000H.
So habe ich auch jetzt mal das ganze Format kennengelernt usw.
Es geht jetzt ruck zuck vom erstellen im Textformat bis zum fertigen einlesen in Forth zum testen.
Gruss peter Dieser Beitrag wurde am 01.05.2013 um 13:10 Uhr von funkheld editiert. |