Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
z9001:basic [2011/02/21 13:04] – volkerp | z9001:basic [2013/06/12 06:59] – Link mit z9001:module:192k_modul geändert zu z9001:module_sonstige:192k_modul volkerp | ||
---|---|---|---|
Zeile 23: | Zeile 23: | ||
* Etwa 6K-Byte der Software (Kern) wurde so gelassen der Rest wurde überarbeitet/ | * Etwa 6K-Byte der Software (Kern) wurde so gelassen der Rest wurde überarbeitet/ | ||
* Insbesondere wurden einige Fehler beseitigt, die schon in der MS-Version steckten und wesentliche Sprachkomponenten wurden angepasst (bei MKD durch Keller/ | * Insbesondere wurden einige Fehler beseitigt, die schon in der MS-Version steckten und wesentliche Sprachkomponenten wurden angepasst (bei MKD durch Keller/ | ||
- | * In die Spracherweiterung flossen Gedanken mehrerer Mitarbeiter (auch von RED) ein, vor allem aber die Erfahrungen, | + | * In die Spracherweiterung flossen Gedanken mehrerer Mitarbeiter (auch von RED) ein, vor allem aber die Erfahrungen, |
* In Ergänzung zu dem 6K-Kern wurde dann eine 8K-Version erarbeitet, die im Wesentlichen nicht mehr geändert wurde. | * In Ergänzung zu dem 6K-Kern wurde dann eine 8K-Version erarbeitet, die im Wesentlichen nicht mehr geändert wurde. | ||
* Die Erweiterung (zu 10K-Basic) enthielt dann hardware-bezogene Ergänzungen, | * Die Erweiterung (zu 10K-Basic) enthielt dann hardware-bezogene Ergänzungen, | ||
Zeile 96: | Zeile 96: | ||
Die Anweisungen PRINT#, LIST#, LOAD#, INPUT# sind mit den Gerätenummern 0 ,2 ,3 und CLOAD, CLOAD*, CSAVE, CSAVE* mit beliebigen zugewiesenen Peripheriegeräten funktionstüchtig, | Die Anweisungen PRINT#, LIST#, LOAD#, INPUT# sind mit den Gerätenummern 0 ,2 ,3 und CLOAD, CLOAD*, CSAVE, CSAVE* mit beliebigen zugewiesenen Peripheriegeräten funktionstüchtig, | ||
- | Mir sind bislang 2 verschiedene Revisionen dieser Erweiterung bekannt: Aus dem [[z9001:module: | + | Mir sind bislang 2 verschiedene Revisionen dieser Erweiterung bekannt: Aus dem [[.:module_sonstige: |
===== CP/M-BASIC ===== | ===== CP/M-BASIC ===== | ||
Zeile 152: | Zeile 152: | ||
| basic-2le.rom | BASIC-Erweitwerung von L.Elßner, Version 1.00 | | | basic-2le.rom | BASIC-Erweitwerung von L.Elßner, Version 1.00 | | ||
| basea.rom | BASIC-Erweitwerung von L.Elßner, vermutlich ältere Version (kleine Unterschiede in den Merkzellen für die Kassettenroutinen) | | | basea.rom | BASIC-Erweitwerung von L.Elßner, vermutlich ältere Version (kleine Unterschiede in den Merkzellen für die Kassettenroutinen) | | ||
+ | |||
+ | |||
+ | ===== Patch BASIC86 ===== | ||
+ | |||
+ | um das o.a. Problem beim BASIC86, einen sinnlosen Kopfblock zu schreiben, zu umgehen, gibt es einen kleinen Patch. Der kleine Nachteil dieser Lösung ist, das jetzt wieder direkt interne Monitoraufrufe getätigt werden. | ||
+ | |||
+ | -> weitere Patches s. Assemblerquellcode bm608p.asm | ||
+ | |||
+ | < | ||
+ | ; Patch in BASIC-Erweiterung BM608 für write tape | ||
+ | ; nicht OPENW nutzen, das (schreibt nur sinnlosen (!!!) Block 0 | ||
+ | org 0E68Bh | ||
+ | call 0F593h | ||
+ | ld a, 1 | ||
+ | ld (6Bh), a ; BLNR | ||
+ | nop | ||
+ | nop | ||
+ | ; | ||
+ | org 0E6EEh | ||
+ | push de | ||
+ | call sub_E7D8 | ||
+ | pop de | ||
+ | |||
+ | |||
+ | org | ||
+ | sub_E7D8: | ||
+ | dec a | ||
+ | jp nz, 0F46Fh ; wenn nicht Block 1 | ||
+ | ld bc, 1770h ; sonst: langer Vorton | ||
+ | jp 0F472h ; fuer ersten Block | ||
+ | </ | ||
Zeile 241: | Zeile 272: | ||
===== Internas ===== | ===== Internas ===== | ||
+ | |||
+ | 7.8.2012: Das Zahlenformat des BASIC entspricht dem SKR-Standardformat. | ||
+ | s. Lampe/ Jorke/ Wengel: Algorithmen der Mikrorechentechnik, | ||
+ | |||
< | < | ||
Zeile 448: | Zeile 483: | ||
Es gibt keine direkte Möglichkeit zu ermitteln, ob es sich um | Es gibt keine direkte Möglichkeit zu ermitteln, ob es sich um | ||
- | ein Zahlen- oder Stringfeld handelt. Auch die Größe ist nicht bestimmbar | + | ein Zahlen- oder Stringfeld handelt. Auch die Größe ist nicht direkt |
+ | (mit ein paar Programmtricks geht es aber -> total commander plugin listtap2 zeigt auch Felder an!) | ||
84 85 7C 3F A$(0) je 4 Byte pro Feldwert | 84 85 7C 3F A$(0) je 4 Byte pro Feldwert |