Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
forth:fgforth:kassette [2011/01/18 08:40] – Page moved from fgforth:kassette to forth:fgforth:kassette volkerp | forth:fgforth:kassette [2019/03/22 14:26] – [Kassettenarbeit] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Kassettenarbeit ====== | ====== Kassettenarbeit ====== | ||
+ | |||
+ | FORTH83 nutzt einen Teil des Hauptspeichers als RAM-Disk, um hier Screens abzulegen. Die Adressen SOD und EOD definieren Anfang und Ende dieses Speicherbereichs. | ||
+ | |||
+ | ORIGIN + | ||
+ | -------- | ||
+ | 17H DW TOP ;oberste vom FORTH nutzbare Adresse | ||
+ | 19H DW SOD ;erste Adresse, die die RAM-Disk belegen kann | ||
+ | 1BH DW EOD ;letzte Adresse, die die RAM-Disk belegen kann | ||
+ | |||
+ | Die Routinen zum Laden bzw. Abspeichern der RAM-Disk auf Kassette müssen für jeden Rechner speziell entwickelt werden. Selbstverständlich sollten dazu die Routinen benutzt werden, die das jeweilige Rechner-Betriebsprogramm dem Nutzer bietet. Aus Vereinheitlichungsgruenden werden dafür die Befehle PUT und GET empfohlen, die als nicht initialisierte Vektoren schon im Wörterbuch enthalten sind. Die entsprechenden Routinen sollten ins Vokabular I/O gelegt werden. | ||
+ | |||
+ | Mit **1 GET** wird das Laden ab Screen 1 (Block 1) gestartet. Der Filename wird abgefragt. Am Ende des Ladens wird die Nummer n des letzten Screens angezeigt. Falls nicht mit --> programmiert wurde (der Normalfall), | ||
===== Glossar der Kassettenbedienworte ===== | ===== Glossar der Kassettenbedienworte ===== | ||
GET ( n -- ) Voc FORTH\\ | GET ( n -- ) Voc FORTH\\ | ||
- | liest ab Screen n über den Header | + | liest ab Screen n über den Header |
PUT ( n1 n2 -- ) Voc FORTH\\ | PUT ( n1 n2 -- ) Voc FORTH\\ | ||
- | schreibt von Screen n1 bis Screen n2 einschließlich | + | schreibt von Screen n1 bis Screen n2 einschließlich |
SAVE-SYSTEM ( -- ) Voc FORTH\\ | SAVE-SYSTEM ( -- ) Voc FORTH\\ | ||
Zeile 49: | Zeile 61: | ||
04 FD C, 21 C, 4300 , \ C-Eintr. | 04 FD C, 21 C, 4300 , \ C-Eintr. | ||
05 3E C, 00 C, | 05 3E C, 00 C, | ||
- | 06 \ puscht | + | 06 \ pusht Register |
07 CD C, FFF1 , \ Sprungadr | 07 CD C, FFF1 , \ Sprungadr | ||
08 FD C, E1 C, | 08 FD C, E1 C, | ||
Zeile 99: | Zeile 111: | ||
</ | </ | ||
- | ===== Anpassung ===== | + | ==== Anpassung ==== |
+ | |||
+ | Kennung ' | ||
: NEW 4E 0F JUAD C! ; \ neudef | : NEW 4E 0F JUAD C! ; \ neudef | ||
+ | |||
+ | ===== Z9001 ===== | ||
+ | |||
+ | < | ||
+ | Screen # 01 ----------------------- | ||
+ | |||
+ | 00 \ 7 Kassettenroutinen VP-08JUL90 | ||
+ | 01 | ||
+ | 02 I/O DEFINITIONS HEX | ||
+ | 03 | ||
+ | 04 0300 CONSTANT PANF | ||
+ | 05 | ||
+ | 06 001B CONSTANT DMA | ||
+ | 07 005C CONSTANT FCB DECIMAL | ||
+ | 08 FCB 15 + CONSTANT BLNR | ||
+ | 09 FCB 17 + CONSTANT AADR | ||
+ | 10 FCB 19 + CONSTANT EADR | ||
+ | 11 FCB 21 + CONSTANT SADR | ||
+ | 12 FCB 23 + CONSTANT SBY | ||
+ | 13 | ||
+ | 14 | ||
+ | 15 | ||
+ | |||
+ | Screen # 02 ----------------------- | ||
+ | |||
+ | 00 \ Systemruf | ||
+ | 01 | ||
+ | 02 HEX CODE CBOS ( nr -- RegA f) | ||
+ | 03 0E1 C, 0C5 C, 0E5FD , 4D C, | ||
+ | 04 0CD C, 5 , 0E1FD , 0C1 C, 26 C, | ||
+ | 05 0 C, 6F C, 0E5 C, 62ED , | ||
+ | 06 0E5 C, 0C3 C, >NEXT , | ||
+ | 07 END-CODE | ||
+ | 08 | ||
+ | 09 CODE MAREK | ||
+ | 10 0C5 C, 0E5FD , | ||
+ | 11 0CD C, 0FF59 , 0CD C, 0FAE3 , | ||
+ | 12 0E1FD , 0C1 C, 0C3 C, >NEXT , | ||
+ | 13 END-CODE DECIMAL | ||
+ | 14 | ||
+ | 15 | ||
+ | |||
+ | Screen # 03 ----------------------- | ||
+ | |||
+ | 00 \ Systemroutinen | ||
+ | 01 | ||
+ | 02 : OPENW ( -) CR 15 CBOS 2DROP ; | ||
+ | 03 : CLOSW ( -) 16 CBOS 2DROP ; | ||
+ | 04 : WRITS ( -) 21 CBOS 2DROP ; | ||
+ | 05 : OPENR ( - f) CR 13 CBOS NIP ; | ||
+ | 06 : READS ( - f1 f2) 20 CBOS ; | ||
+ | 07 | ||
+ | 08 | ||
+ | 09 : FTYP ( adr # -- ) | ||
+ | 10 3 MIN FCB 8 + SWAP CMOVE ; | ||
+ | 11 | ||
+ | 12 : FNAME ( name ( -- ) | ||
+ | 13 FCB 8 ERASE | ||
+ | 14 BL WORD COUNT 8 MIN | ||
+ | 15 FCB SWAP CMOVE ; | ||
+ | |||
+ | Screen # 04 ----------------------- | ||
+ | |||
+ | 00 \ Abspeichern 1 | ||
+ | 01 | ||
+ | 02 \ saven von AADR bis EADR | ||
+ | 03 : FILESAVE | ||
+ | 04 EADR @ 1+ | ||
+ | 05 AADR @ DUP DMA ! - | ||
+ | 06 128 /MOD DUP | ||
+ | 07 IF SWAP 0= IF 1- THEN | ||
+ | 08 0 ?DO WRITS SPACE LOOP | ||
+ | 09 ELSE 2DROP THEN | ||
+ | 10 CLOSW SPACE ; | ||
+ | 11 | ||
+ | 12 | ||
+ | 13 | ||
+ | 14 | ||
+ | 15 | ||
+ | |||
+ | Screen # 05 ----------------------- | ||
+ | |||
+ | 00 \ Laden | ||
+ | 01 | ||
+ | 02 : STOPKEY | ||
+ | 03 KEY 3 = IF QUIT THEN ; | ||
+ | 04 | ||
+ | 05 : BLOCKLOAD | ||
+ | 06 BEGIN READS | ||
+ | 07 WHILE DROP STOPKEY REPEAT ; | ||
+ | 08 | ||
+ | 09 : CLOAD ( name ( von --) | ||
+ | 10 FLUSH 128 DMA ! FNAME | ||
+ | 11 " F83" FTYP BEGIN OPENR | ||
+ | 12 WHILE STOPKEY REPEAT | ||
+ | 13 'RAM DMA ! | ||
+ | 14 BEGIN BLOCKLOAD UNTIL | ||
+ | 15 CR ." scr# " SADR ? ; | ||
+ | |||
+ | Screen # 06 ----------------------- | ||
+ | |||
+ | 00 \ Speichern | ||
+ | 01 | ||
+ | 02 : CSAVE ( name ( von bis --) | ||
+ | 03 1+ 2DUP SWAP - SADR ! | ||
+ | 04 'RAM 1- EADR ! 'RAM AADR ! | ||
+ | 05 0 SBY C! | ||
+ | 06 FNAME " F83" FTYP | ||
+ | 07 OPENW SPACE FILESAVE ; | ||
+ | 08 ALSO FORTH DEFINITIONS | ||
+ | 09 : .FILES \ Anz. Files von Kass. | ||
+ | 10 CR BEGIN 0 36 C! | ||
+ | 11 128 DMA ! MAREK BLNR C@ | ||
+ | 12 0= IF 128 8 TYPE ASCII . | ||
+ | 13 EMIT 136 3 TYPE CR THEN | ||
+ | 14 36 C@ IF STOPKEY THEN AGAIN ; | ||
+ | 15 | ||
+ | |||
+ | Screen # 07 ----------------------- | ||
+ | |||
+ | 00 \ Vektorinit. | ||
+ | 01 | ||
+ | 02 | ||
+ | 03 : SAVE-SYSTEM ( name ( --) | ||
+ | 04 HERE EADR ! PANF DUP AADR ! | ||
+ | 05 SADR ! 0 SBY C! | ||
+ | 06 FNAME " COM" FTYP | ||
+ | 07 OPENW SPACE FILESAVE ; | ||
+ | 08 | ||
+ | 09 ' CSAVE IS PUT | ||
+ | 10 ' CLOAD IS GET | ||
+ | 11 | ||
+ | 12 ONLY FORTH ALSO DEFINITIONS | ||
+ | 13 | ||
+ | 14 8 LIST | ||
+ | 15 | ||
+ | |||
+ | Screen # 08 ----------------------- | ||
+ | |||
+ | 00 \S GLOSSAR | ||
+ | 01 n GET fname | ||
+ | 02 Lesen File fname.F83 in RAM- | ||
+ | 03 Disk ab Screen n | ||
+ | 04 | ||
+ | 05 n1 n2 PUT fname | ||
+ | 06 Abspeichern Screens n1 bis n2 | ||
+ | 07 auf Kassette mit Namen fname | ||
+ | 08 | ||
+ | 09 SAVE-SYSTEM fname | ||
+ | 10 Abspeichern FORTH als File | ||
+ | 11 fname.COM | ||
+ | 12 | ||
+ | 13 .FILES | ||
+ | 14 Anzeige der Filenamen von Kas | ||
+ | 15 sette, Abbruch mit > | ||
+ | </ | ||
+ | |||