Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| homecomputer:ac1:picoac1 [2024/03/31 08:31] – [Anschluss] volkerp | homecomputer:ac1:picoac1 [2026/01/05 07:06] (aktuell) – [Systemdateien] volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | |||
| ====== picoAC1 ====== | ====== picoAC1 ====== | ||
| Zeile 22: | Zeile 21: | ||
| Nach dem Anschließen der Stromversorgung sollte der picoAC1 ein Bild ähnlich wie folgt anzeigen: | Nach dem Anschließen der Stromversorgung sollte der picoAC1 ein Bild ähnlich wie folgt anzeigen: | ||
| - | TODO | + | {{: |
| + | |||
| + | |||
| + | Die mittig auf der Leiterplatte sitzende LED kennzeichnet den AC1-Betriebsmodus. Im CP/ | ||
| - | Die mittige LED kennzeichnet den AC1-Betriebsmodus. Im CP/ | ||
| ===== Bedienung ===== | ===== Bedienung ===== | ||
| Zeile 30: | Zeile 31: | ||
| Das Standard-System des picoAC1 ist eine Erweiterung des originalen Monitors 3.1 [[homecomputer: | Das Standard-System des picoAC1 ist eine Erweiterung des originalen Monitors 3.1 [[homecomputer: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| ==== Tastatur ==== | ==== Tastatur ==== | ||
| Zeile 90: | Zeile 99: | ||
| ===== Beispiel ===== | ===== Beispiel ===== | ||
| - | TODO | + | * {{ : |
| + | |||
| + | Auf der SD-Karte ist folgende Verzeichnisstruktur angelegt: | ||
| + | |||
| + | < | ||
| + | E: (PICOAC1) | ||
| + | ├───.ac1bin | ||
| + | ├───basic8k | ||
| + | ├───cpm | ||
| + | │ | ||
| + | │ | ||
| + | ├───edas | ||
| + | ├───forth | ||
| + | ├───minibas | ||
| + | └───spiele | ||
| + | </ | ||
| ==== Systemdateien ==== | ==== Systemdateien ==== | ||
| Zeile 104: | Zeile 128: | ||
| **.hklist**\\ Hotkey -Liste. Erläuterungen s. Keyboard | **.hklist**\\ Hotkey -Liste. Erläuterungen s. Keyboard | ||
| - | ===== Monitor-Kommandos ===== | + | ==== Dateiformate |
| - | im System " | + | https://www.robotrontechnik.de/ |
| - | Die zusätzlichen Monitorkommandos | + | Mit dem picoAC1-Monitor (MO1) sind von SD-Karte nur Headersave-Dateien ladbar. Das 8kBASIC-SD kann die *.B8-Dateien direkt Laden und Speichern. |
| - | Monitorkommandos bestehen aus einem Buchstaben/ | + | *.ABC-Dateien sind tokenisierte Dateien vom BASIC6 (WeRo). BASIC6 läuft aber nur mit dem Monitor11.0 (RH) und VDIP und das auch eingeschränkt (COLOR, TIME, MODE....). |
| - | Dem Kommando-Kennbuchstaben können je nach Befehl 1 bis 3 Argumente folgen. Diese werden | + | Der Monitor11.0 (MO4) ' |
| + | GW-BASIC3.2 + Mo11.0 | ||
| + | SLOAD "TEST1 -> 'TEST1.Z80' | ||
| - | Einige Kommandos verlangen die Eingabe einer Zeichenkette. Diese ist nach den Argumenten bzw. dem Kennbuchstaben einzugeben. Von einem Argument ist die Zeichenkette durch mindestens ein Leerzeichen zu trennen. Nach einem Kennbuchstaben ist kein Leerzeichen erforderlich. Bis zum Anfang der Zeichenkette sind bis zu 9 Leerzeichen zulässig. | + | BASIC6 + Mo11.0 od. 10/88 - SAVE " |
| + | - LOAD " | ||
| - | Die Zeichenkette | + | picoMonitor + BASIC8K_SD - DSAVE" |
| + | DLOAD" | ||
| + | Reine BIN-Dateien können beim einfachen 8k-BASIC ab 60F7h oder aber von 6000h jeweils bis BASIC-PGM-Ende (steht in 60D2h und 60D3h LO/HI) gespeichert werden. Beim laden von BIN (60F7h-xxxxh) ist anschließend das PGM-Ende in den beiden genannten Speicherzellen ' | ||
| + | bei ab 6000h-xxxxh hat man das ja schon mit drin. | ||
| + | Reine .BIN-Dateien lassen sich mit dem pico-Moni leider n i c h t von der SD laden. Die sollten aber mit dem Mo11.0 und VDIP-USB unter Angabe der A-Adresse zu laden sein < U 1900 " | ||
| + | -> umschalten auf pico-Moni -> < s aaaa eeee (ssss) UHR > speichert dann auf SD im ' | ||
| - | ==== s - save - Daten auf SD-Karte schreiben ==== | ||
| - | s AAAA EEEE SSSS Dateiname/ | + | ===== Monitor-Kommandos ===== |
| - | | + | im System " |
| - | EEEE Endadresse | + | |
| - | SSSS Startadresse | + | |
| - | Dateiname | + | |
| - | Infotext (optional) | + | |
| - | Dem Dateinamen kann ein Infotext angefügt werden. Beide Teile werden durch '/' | + | Die zusätzlichen Monitorkommandos sind **Kleinbuchstaben**, die originalen Kommandos des [[homecomputer: |
| - | ==== l - list/load - Daten von SD-Karte laden/ | + | Monitorkommandos bestehen aus einem Buchstaben/Zeichen und Argumenten. |
| - | l Dateiname (kleines " | + | Dem Kommando-Kennbuchstaben können je nach Befehl 1 bis 3 Argumente folgen. Diese werden wie im AC1 üblich in 1 bis 4-stelligen Hex-Zahlen angegeben. Für die Zeichen ' |
| - | Die Datei wird im aktuell gewählten Verzeichnis gesucht und ab der im Header angegebenen Anfangsadresse in den RAM geladen. | + | Einige Kommandos verlangen die Eingabe einer Zeichenkette. Diese ist nach den Argumenten bzw. dem Kennbuchstaben einzugeben. Von einem Argument ist die Zeichenkette durch mindestens ein Leerzeichen zu trennen. Nach einem Kennbuchstaben ist kein Leerzeichen erforderlich. Bis zum Anfang der Zeichenkette sind bis zu 9 Leerzeichen zulässig. |
| - | Danach wird die Startadresse im Header nach ARG1 geladen, sodass das Programm mit " | + | |
| - | Die restlichen Headerparameter werden nur angezeigt. | + | |
| - | Dateiinhalt des aktuellen Verzeichnisses auflisten | + | Die Zeichenkette wird durch ein Leerzeichen abgeschlossen. Nachfolgende Zeichen werden ignoriert. D.h. Zeichenketten |
| - | + | ||
| - | l * | + | |
| - | l XX* | + | |
| - | l *.bas --> alle Dateien anzeigen, die mit ".bas" enden | + | |
| - | + | ||
| - | Das " | + | |
| - | + | ||
| - | l + --> Sortierung nach Änderungsdatum aufsteigend | + | |
| - | l - | + | |
| - | + | ||
| - | Dateilisten sind auf 256 Einträge eines Verzeichnisses begrenzt. | + | |
| - | + | ||
| - | Laden von Dateien an Hand der Indexnummer | + | |
| - | + | ||
| - | Mit dem l-Kommando | + | |
| - | Beispiel 1: | + | |
| - | + | ||
| - | l 5 --> lädt die Datei mit der lfd Nummer 05. | + | |
| - | + | ||
| - | Beispiel 2: | + | |
| - | + | ||
| - | l - | + | |
| - | l 1 --> lädt die zuletzt gespeicherte Datei | + | |
| - | + | ||
| - | Die Nummerierung richtet sich immer nach der zuletzt angezeigten Liste. | + | |
| - | Nebenwirkung: | + | **s aaaa eeee ssss Dateiname/ |
| - | ==== a - addr - Laden von Dateien an Absolut-Adresse im RAM ==== | + | Hiermit kann man eine File ab der Adresse aaaa bis zur Adresse eeee mit der Startadresse ssss unter dem Namen Dateiname (Länge max 16 Zeichen) auf SD-Karte abspeichern. Dem Dateinamen kann ein Infotext angefügt werden. Beide Teile werden durch '/' |
| + | **l Dateiname/ | ||
| - | a AADR Dateiname | + | l (kleines " |
| + | Wird ein Dateiname oder eine Nummer angegeben, wird die Datei wird im aktuell gewählten Verzeichnis gesucht und ab der im Header angegebenen Anfangsadresse in den RAM geladen. Danach wird die Startadresse im Header nach ARG1 geladen, sodass das Programm mit " | ||
| - | AADR < 1000H werden zurückgewiesen. Es wird nur die Anfangsadresse geprüft. | + | **a AADR Dateiname (absolute)** |
| - | Weiteres Verhalten wie beim " | + | |
| - | Beispiel: | + | Lädt die Datei an Absolut-Adresse AADR. AADR < 1000H werden zurückgewiesen. Weiteres Verhalten wie beim " |
| - | a C000 5 | + | **r Dateiname (remove)** |
| - | Lädt die 5.Datei der zuletzt ausgegebenen Liste nach 0C000H. | + | Verschiebt |
| - | ==== r - remove - Datei in Papierkorb verschieben ==== | + | **d Verzeichnisname/ |
| - | + | Ohne Parameter werden alle Verzeichnisse aufgelistet. Enthält Verzeichnisname das Wildcardzeichen | |
| - | r Dateiname | + | Wird ein Verzeichnisname |
| - | + | ||
| - | Der Dateiname wird um einen TimestampSuffix der aktuellen Systemzeit (.YYMMDDhhmmss) ergänzt und die Datei in den Systemordner | + | |
| - | + | ||
| - | ==== d - directory - Verzeichnisse anzeigen / wechseln ==== | + | |
| - | + | ||
| - | d Verzeichnisname | + | |
| - | d* --> Auflisten aller Verzeichnisse, alphabetisch sortiert, ' | + | |
| - | d+ --> Liste nach Dateidatum sortiert, aufsteigend | + | |
| - | d- --> Liste nach Dateidatum sortiert, absteigend | + | |
| - | d *abc* --> auflisten aller Ordner, die die Zeichenfolge | + | |
| - | | + | |
| - | d1 --> wechseln ins Verzeichnis mit ldf Nummer(1), entspr. der zuletzt ausgegebenen Liste | + | |
| Es wird mit einer Verzeichnisebene unterhalb von Root gearbeitet. Weitere Unterverzeichnisse werden nicht unterstützt. | Es wird mit einer Verzeichnisebene unterhalb von Root gearbeitet. Weitere Unterverzeichnisse werden nicht unterstützt. | ||
| Zeile 204: | Zeile 193: | ||
| Es ist möglich, direkt von einem in ein anderes Verzeichnis zu wechseln. Ein Umweg über das Root-Verzeichnis ist nicht erforderlich. | Es ist möglich, direkt von einem in ein anderes Verzeichnis zu wechseln. Ein Umweg über das Root-Verzeichnis ist nicht erforderlich. | ||
| - | ==== m - makedir - Verzeichnis anlegen ==== | + | **m Verzeichnisname |
| - | + | ||
| - | | + | |
| - | + | ||
| - | Es wird ein neues Verzeichnis unterhalb von Root angelegt. Es ist dabei unerheblich, | + | |
| - | Das Löschen von Verzeichnissen kann nur am PC erfolgen. | + | |
| - | + | ||
| - | ==== t - time - Zeitfunktionen ==== | + | |
| - | + | ||
| - | t YYYY-MM-DD*hh:mm:ss | + | |
| - | t 2023-09-03*18:05:45 --> Systemzeit setzen | + | |
| - | t --> Anzeige der aktuellen Systemzeit | + | |
| - | Falls ein RTC-Modul installiert | + | Es wird ein neues Verzeichnis unterhalb von Root angelegt. Es ist dabei unerheblich, ob man sich aktuell im Root- oder einem Unterverzeichnis befindet. Das Löschen von Verzeichnissen kann nur am PC erfolgen. |
| - | Die Systemzeit ist in UTC (MEZ-1h | MESZ-2h) zu setzen. Diese Zeitbasis wird zum Speichern auf SD-Karte benötigt. Andernfalls wird am PC ein falscher Zeitstempel angezeigt. | + | |
| - | Beim Setzen der Systemzeit ist das Format einzuhalten. Entscheidend ist die Position der Ziffern in der Zeichenkette. Die Trennzeichen sind beliebig. | + | **t YYYY-MM-DD*hh: |
| - | Die Eingabe erfolgt als Zeichenkette und unterliegt o.g. Einschränkungen, | + | |
| - | ==== c - color - Bildschirmfarben ==== | + | Ohne Parameter wird die aktuelle Uhrzeit angezeigt, mit Parameter wird die Uhr gestellt. Die Systemzeit ist dabei in UTC (MEZ-1h | MESZ-2h) zu setzen. Diese Zeitbasis wird zum Speichern auf SD-Karte benötigt. Andernfalls wird am PC ein falscher Zeitstempel angezeigt! |
| - | | + | **c v:h:r (color)** |
| - | c --> Farbliste ausgeben | + | |
| - | Der dritte Parameter ist optional. Bei weglassen wird ' | + | Setzt die drei Bildschirmfarben für Vordergrund, |
| + | Der dritte Parameter ist optional. Bei weglassen wird ' | ||
| - | ==== h/H - help - Hilfetexte ausgeben ==== | + | **H (help)** |
| + | **h (help)** | ||
| - | H --> | + | Anzeige der Bedienung |
| - | | + | |
| ==== Drucken in Datei ==== | ==== Drucken in Datei ==== | ||
| - | | + | |
| Dabei handelt es sich um eine Hilfsfunktion, | Dabei handelt es sich um eine Hilfsfunktion, | ||
| - | Gestartet wird die Funktion mit der Tastenkombination | + | Gestartet wird die Funktion mit der Tastenkombination |
| - | Danach ist das Anwenderprogramm zum Drucken zu veranlassen und nach Abschluss des Vorgangs ist wiederholt | + | Danach ist das Anwenderprogramm zum Drucken zu veranlassen und nach Abschluss des Vorgangs ist wiederholt |
| In der Statuszeile wird Dateiname und Fortschritt angezeigt. | In der Statuszeile wird Dateiname und Fortschritt angezeigt. | ||
| Zeile 258: | Zeile 234: | ||
| Die Funktionsweise der Hardware ist auf https:// | Die Funktionsweise der Hardware ist auf https:// | ||
| - | ^ Merkmal ^ Beschreibung ^ | + | ^ Merkmal |
| - | | CPU | U880 | | + | | CPU |
| - | | ROM | 4K 0000-0FFF (Monitor) | | + | | ROM |
| - | | RAM | 64K 1000-FFFF (ab 0000 im CP/M-Modus) | | + | | RAM |
| - | | Takt | 1,2,4,8 MHz | | + | | Takt | 1,2,4,8 MHz | |
| - | | Anzeige | 64x32 Zeichen, s/w, versch. Zeichensätze möglich | | + | | Anzeige |
| - | | Tastatur | ASCII | | + | | Tastatur |
| - | | Peripherie | 2 PIO, 1 CTC | | + | | Peripherie |
| + | | | Videoprozessor (raspberry pico ) | | ||
| + | | | I/ | ||
| ^ Port | Verwendung | | ^ Port | Verwendung | | ||
| Zeile 276: | Zeile 254: | ||
| Auf der Platine sitzt ein 128K-SRAM. Dessen Kapazität kann allerdings nicht komplett genutzt werden. Die beiden 64K-Bänke werden parallel genutzt. Die untere Bank (A16=L) wird als Bildwiederholspeicher und Arbeitszellenspeicher genutzt (1000h-17FFh), | Auf der Platine sitzt ein 128K-SRAM. Dessen Kapazität kann allerdings nicht komplett genutzt werden. Die beiden 64K-Bänke werden parallel genutzt. Die untere Bank (A16=L) wird als Bildwiederholspeicher und Arbeitszellenspeicher genutzt (1000h-17FFh), | ||
| - | Die Umschaltung in den CP/M-Modus erfolgt durch ein Latch auf Port 1Ch(..1Fh). OUT 1Ch, 0 schaltet den AC1-Modus ein (Monitor-ROM, | + | Die Umschaltung in den CP/M-Modus erfolgt durch ein Latch auf Port 1Ch(..1Fh). OUT 1Ch, Bit0=0 schaltet den AC1-Modus ein (Monitor-ROM, |
| + | |||
| + | < | ||
| + | FFFF # | ||
| + | | | ||
| + | | | ||
| + | | RAM | | ||
| + | | | ||
| + | | | ||
| + | 2000 # | ||
| + | | Mon-RAM | ||
| + | | 2K | ||
| + | 1800 # | ||
| + | | BWS | | ||
| + | | 2K | ||
| + | 1000 # | ||
| + | | Monitor | ||
| + | | 4K | ||
| + | 0000 # | ||
| + | |||
| + | OUT 1Ch,0 OUT 1Ch,1 | ||
| + | </ | ||
| + | |||
| + | |||
| + | Zeichensätze: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ===== CP/M ===== | ||
| + | |||
| + | Aktuell gibt es eine CP/ | ||
| + | |||
| + | Für den Betrieb von CP/M sind auf der SD-Karte diverse Dateien abzulegen, am besten in einem eigenen Verzeichnis. | ||
| + | |||
| + | TODO | ||
| + | |||
| + | Es gibt 6 Laufwerke A-F, die als Disketten-Image auf der SD-Karte liegen. | ||
| + | C und D sind dabei 8 MByte große " | ||
| + | |||
| + | Der Bildschirmtreiber nutzt die Cursor-Positionierung nach SCP. Steuerzeichen: | ||
| + | < | ||
| + | ; Bildschirm-Steuerzeichen, | ||
| + | ; 00h NOP (keine Wirkung) | ||
| + | ; 01h Cursor links oben (home) | ||
| + | ; 07h akustisches | ||
| + | ; 08h Cursor zurueck | ||
| + | ; 0ah Linefeed (neue Zeile) | ||
| + | ; 0ch Bildschirm | ||
| + | ; zuletzt ausgegebenen Bildschirmzeilen), | ||
| + | ; links oben | ||
| + | ; 0dh Carriage Return (an Zeilenanfang) | ||
| + | ; 14h Rest des Bildschirms löschen | ||
| + | ; 15h Cursor nach rechts | ||
| + | ; 16h Rest der Zeile löschen | ||
| + | ; 18h Zeile löschen, Cursor an Zeilenanfang | ||
| + | ; 1ah Cursor eine Zeile hoch | ||
| + | ; 1bh Einleitung | ||
| + | ; sten beiden Bytes beinhalten Zeile und Spalte | ||
| + | ; Offset 00h oder 80h | ||
| + | ; 7fh Delete (streichen Zeichen links vom Kursor) | ||
| + | ; 20H..7EH | ||
| + | </ | ||
| + | |||
| + | Hier die **diskdefs** für die [[cpm: | ||
| + | |||
| + | < | ||
| + | # 800K AC1PICO-Hausformat | ||
| + | diskdef ac1 | ||
| + | seclen 512 | ||
| + | tracks 10 | ||
| + | sectrk 160 | ||
| + | blocksize 2048 | ||
| + | maxdir 256 | ||
| + | skew 0 | ||
| + | boottrk 0 | ||
| + | os 2.2 | ||
| + | end | ||
| + | |||
| + | # 8MB AC1PICO-Hausformat | ||
| + | diskdef ac1_8mb | ||
| + | seclen 512 | ||
| + | tracks 32 | ||
| + | sectrk 512 | ||
| + | blocksize 4096 | ||
| + | maxdir 512 | ||
| + | skew 0 | ||
| + | boottrk 0 | ||
| + | os 2.2 | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | Starten von CP/M aus dem Monitor: | ||
| + | |||
| + | {{: | ||
| + | Importieren und Starten von CP/ | ||
| + | {{: | ||