software:diy:progtools:tablesdatas
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:diy:progtools:tablesdatas [19/04/2008 23:04] – ergänzt. uxt | software:diy:progtools:tablesdatas [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 73: | Zeile 73: | ||
|062|> | |062|> | ||
|063|? | |063|? | ||
+ | |||
+ | |||
===== Tastatur Scancodes ===== | ===== Tastatur Scancodes ===== | ||
- | Dies sind die Tastatur | + | Der Porfolio besitzt keinen Tastatur-Controller wie der IBM-PC und keine intelligente Tastatur. Seine 63 Tasten werden über eine 16x16-Matrix abgefragt, deren letztes Ergebnis an Port 8000h der CPU anliegt. Zusätzlich stellt das BIOS die üblichen Tastatur Scancodes zur Verfügung, die auch von Portfolio´s Zeileneditor verwendet werden. Die Tastatur kann Hardwareseitig über den Port 08000h, oder Softwareseitig über den BIOS-Interrupt 16h (Portfolio´s GetKey-Funktion) abgefragt werden.\\ |
+ | |||
+ | Dies sind die vom BIOS generierten | ||
|< | |< | ||
Zeile 147: | Zeile 151: | ||
|< | |< | ||
- | Ist der Wert des Key-Codes 0 so handelt es sich um einen erweiterten Key-Code. Dieser ist zweistellig, | + | Ist der Wert des Key-Codes 0 so handelt es sich um einen erweiterten Key-Code. Dieser ist zweistellig, |
+ | \\ | ||
+ | *Dieser Scan-Code kann seltsames Verhalten der Software verursachen.\\ | ||
+ | \\ | ||
+ | Einen direkten Zugang zur Tastatur bietet der Port 08000h. Jede der 63 Tasten des Portfolio besitzt einen eindeutigen “Make Code”, der beim Niederdrücken an der Portadresse 8000h erscheint. Beim Loslassen einer Taste geschieht dasselbe mit ihrem “Break Code”, der stets um 128 größer ist als der Make Code. Somit lässt sich jederzeit feststellen, | ||
- | *Dieser Scan-Code kann seltsames Verhalten der Software verursachen. | + | ^ |
+ | | , | ||
+ | | - | ||
+ | | | ||
+ | | / | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 2 | ||
+ | | 3 | ||
+ | | 4 | ||
+ | | 5 | ||
+ | | 6 | ||
+ | | 7 | ||
+ | | 8 | ||
+ | | 9 | ||
+ | | ; | ||
+ | | = | ||
+ | | links | ||
+ | | rechts | ||
+ | | oben | | ||
+ | | unten | ||
+ | | lShift | ||
+ | | rShift | ||
+ | | | ||
+ | | | ||
+ | | Enter | ||
+ | | Space | ||
+ | | | ||
+ | | | ||
+ | | \ / < | | ||
+ | | + / ] | | ||
+ | | | ||
+ | | | ||
+ | \\ | ||
+ | siehe [[software: | ||
+ | \\ | ||
===== Port-Adressen ===== | ===== Port-Adressen ===== | ||
Ports sind Speicheradressen in denen das BIOS wichtige Daten für die Kommunikation mit den Schnittstellen ablegt. Eine Liste aller bekannten Port-Adressen des Portfolio: | Ports sind Speicheradressen in denen das BIOS wichtige Daten für die Kommunikation mit den Schnittstellen ablegt. Eine Liste aller bekannten Port-Adressen des Portfolio: | ||
- | ^^Adresse^Länge^Inhalt^ | + | ^^Adresse^Beschreibung^ |
- | |8000| 1|Tastatur: Scan-Code (Controller)| | + | |8000|Tastatur: |
- | |8010| 1|Datenregister des LCD-Controllers| | + | |8010|Datenregister des LCD-Controllers| |
- | |8011| 1|Befehlsregister des LCD-Controllers| | + | |8011|Befehlsregister des LCD-Controllers| |
- | |8020| 1|Daten-Register des Soundchips| | + | |8020|Daten-Register des Soundchips| |
- | |8030| 1|Power-Management| | + | |8030|Power-Management| |
- | |8040| 1|Zähler| | + | |8040|Zähler| |
- | |8051| 1|Batterie-Status (C2h=ok, 82h=leer) | + | |8051|Batterie-Status (C2h=ok, 82h=leer) |
- | |8060| 1|Kontrastwert des Bildschirms| | + | |8060|Kontrastwert des Bildschirms| |
- | |8070| 1|RX/TX der seriellen Schnittstelle| | + | |8070|RX/TX der seriellen Schnittstelle| |
- | |8071| 1|Interrupt enable der seriellen Schnittstelle| | + | |8071|Interrupt enable der seriellen Schnittstelle| |
- | |8072| 1|Interrupt identity der seriellen Schnittstelle| | + | |8072|Interrupt identity der seriellen Schnittstelle| |
- | |8073| 1|Line control der seriellen Schnittstelle| | + | |8073|Line control der seriellen Schnittstelle| |
- | |8074| 1|MODEM control der seriellen Schnittstelle| | + | |8074|MODEM control der seriellen Schnittstelle| |
- | |8075| 1|Line status der seriellen Schnittstelle| | + | |8075|Line status der seriellen Schnittstelle| |
- | |8076| 1|MODEM status der seriellen Schnittstelle| | + | |8076|MODEM status der seriellen Schnittstelle| |
- | |8077| 1|Scratch-Register der seriellen Schnittstelle| | + | |8077|Scratch-Register der seriellen Schnittstelle| |
- | |8078| 1|Port A der parallelen schnittstelle| | + | |8078|Port A der parallelen schnittstelle| |
- | |8079| 1|Port B der parallelen schnittstelle| | + | |8079|Port B der parallelen schnittstelle| |
- | |807A| 1|Port C der parallelen Schnittstelle| | + | |807A|Port C der parallelen Schnittstelle| |
- | |807B| 1|Kontroll-Register der parallelen Schnittstelle| | + | |807B|Kontroll-Register der parallelen Schnittstelle| |
- | |807C| 1|ROM-Extension enable| | + | |807C|ROM-Extension enable| |
- | |8080| 1|Peripheral ID| | + | |8080|Peripheral ID| |
\\ | \\ | ||
\\ | \\ | ||
- | |||
- | |||
- | |||
===== Peripheral IDs ===== | ===== Peripheral IDs ===== | ||
Zeile 228: | Zeile 268: | ||
|041C| | |041C| | ||
|1F40| | |1F40| | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ===== Interrupt-Vektor-Tabelle ===== | ||
+ | Hard- und Software-Interrupts verzweigen (bei Aufruf oder Auftreten) zu den Adressen, die in der Interrupt-Vektor-Tabelle gespeichert sind. Die IVT befindet sich im untersten Adressraum: 0000:0000 bis 0000:03FF. Die Adressen sind in zwei Words (4 Bytes) im " | ||
+ | \\ | ||
+ | Hier die IVT eines HPC-004 mit der BIOS-Version 1.072.\\ | ||
+ | ^Int^Beschreibung^Adresse^Vektor|UPDATE.COM|PORTDIV.EXE|ALMBOOST.COM| | ||
+ | |00h|Teilung durch Null| 0000| E000:0EEE| | 03B2:0103| | | ||
+ | |01h|Einzelschritt| | ||
+ | |02h|NMI (Speicherfehler)| | ||
+ | |03h|Breakpoint erreicht| | ||
+ | |04h|Numerischer Überlauf| | ||
+ | |05h|Hardcopy| | ||
+ | |...|unbelegt ...| | | | | | | ||
+ | |08h|Timer| | ||
+ | |09h|Tastatur| | ||
+ | |...|unbelegt ...| | | | | | | ||
+ | |10h|BIOS Video-Funktionen| | ||
+ | |11h|BIOS Konfiguration| | ||
+ | |12h|BIOS Speichergröße| | ||
+ | |13h|BIOS Speicherkarten| | ||
+ | |14h|BIOS Serielle Schnittst| | ||
+ | |15h| ???| 0054| E000:1CCC| | | | | ||
+ | |16h|BIOS Tastaturabfrage| | ||
+ | |17h|BIOS Parallele Schnitts| | ||
+ | |18h|ROM-BASIC (error)| | ||
+ | |19h|Neustart (Strg_Alt_Entf)| | ||
+ | |1Ah|Zeit/ | ||
+ | |1Bh|Programmabruch| | ||
+ | |1Ch|Aufruf nach jedem Int08| | ||
+ | |...|unbelegt ...| | | | | | | ||
+ | |1Eh|Disk-Parameter-Tabelle| | ||
+ | |...|unbelegt| | | | | | | ||
+ | |20h|DOS Programm beenden| | ||
+ | |21h|DOS Funktionen| | ||
+ | |22h|Adresse DOS Pgmm Ende| 0088| F25C:026D| | | | | ||
+ | |23h|Adresse DOS Strg_Break| | ||
+ | |24h|Adresse DOS Fehler| | ||
+ | |25h|DOS Speicherkarte lesen| | ||
+ | |26h|DOS Speicherkarte schr.| | ||
+ | |27h|DOS beenden, resident| | ||
+ | |28h|Aufruf bei Tast.-polling| | ||
+ | |29h|Zeichen Ausgeben| | ||
+ | |2Ah| ???| 00A8| E52D:04BA| | | | | ||
+ | |...|unbelegt ...| | | | | | | ||
+ | |3Fh|unbelegt| | | | | | | ||
+ | |...|unbelegt| | | | | | | ||
+ | |41h|Disk-Parameter-Tabelle| | ||
+ | |...|unbelegt ...| | | | | | | ||
+ | |4Ah|Alarmzeit errreicht| | ||
+ | |...|unbelegt ...| | | | | | | ||
+ | |5Fh|PORTGR.EXE graphics| | ||
+ | |...|unbelegt| | | | | | | ||
+ | |60h|DIP AES| 0180| EA0C:07DE| | | | | ||
+ | |61h|DIP BIOS| 0184| E000: | ||
+ | \\ | ||
+ | Die Tabelle kann von Gerät zu Gerät sehr unterschiedlich aussehen, je nachdem um welche BIOS-Version es sich handelt, und welche Programme gestartet wurden.\\ Wie man sieht, leitet UPDATE.COM vier Interrupts um (21h, 24h, 4Ah und 61h), PORTDIV.EXE, | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
===== LCD-Controller HD-61830 ===== | ===== LCD-Controller HD-61830 ===== | ||
Zeile 265: | Zeile 367: | ||
|Bit 6: | |Bit 6: | ||
|Bit 7: | |Bit 7: | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | ===== Die Parallel-Ports ===== | ||
+ | Vier Ports dienen der Kommunikation mit dem UART 82C55, wie er in Portfolio´s intelligenter parallelen Schnittstelle verbaut ist. Er besitzt ein Kontrollregister (Port 807B) und 3 I/O Ports (8078, 8079 und 807A), die sich individuell als Ein- oder Ausgang konfigurieren lassen, Port C sogar separat für das höhere und niedere Nibble. Das Kontrollregister (807B) bestimmt wie die einzelnen Ports geschaltet sind.\\ | ||
+ | |||
+ | ^^ Kontrollregister Port 807B ^^^^^^ | ||
+ | ^^ Wert ^^ Ports ^^^^ | ||
+ | ^^Hex^Dezimal^Port A^Port B^Port C (lo)^Port C (hi)^ | ||
+ | |0080| | ||
+ | |0081| | ||
+ | |0082| | ||
+ | |0083| | ||
+ | |0088| | ||
+ | |0089| | ||
+ | |008A| | ||
+ | |008B| | ||
+ | |0090| | ||
+ | |0091| | ||
+ | |0092| | ||
+ | |0093| | ||
+ | |0098| | ||
+ | |0099| | ||
+ | |009A| | ||
+ | |009B| | ||
+ | \\ | ||
+ | Portfolio´s intelligente parallele Schnittstelle verwendet nur 17 der 24 möglichen Bits.\\ | ||
+ | -Port A (8078) verfügt über alle acht Bits (0..7)\\ | ||
+ | -Port B (8079) führt nur die unteren 4 Bits (0..3) heraus\\ | ||
+ | -Port C (807C) führt 5 Bits (0,1, und 3..5) heraus\\ | ||
+ | Im Normalzustand (Drucker) enthält das Kontrollregister den Wert 138 (089h), Port A und B auf Ausgang (Daten und Steuerung) und Port C auf Eingang (Acknowledge, | ||
+ | \\ | ||
+ | ^^ ^ Port A ^^ Port B ^^ Port C ^^ | ||
+ | ^^Bit^Pin^Signal^Pin^Signal^Pin^Signal^ | ||
+ | ^ 0 | 2 | DATA0 | 1 | Strobe | ||
+ | ^ 1 | 3 | DATA1 | 14 | Autofeed | ||
+ | ^ 2 | 4 | DATA2 | 16 | Init/ | ||
+ | ^ 3 | 5 | DATA3 | 17 | Select In | 15 | Error | | ||
+ | ^ 4 | 6 | DATA4 | - | - | 11 | Busy | | ||
+ | ^ 5 | 7 | DATA5 | - | - | 10 | Acknowledge | ||
+ | ^ 6 | 8 | DATA6 | - | - | - | - | | ||
+ | ^ 7 | 9 | DATA7 | - | - | - | - | | ||
+ | \\ | ||
+ | Die Einschränkung auf 17 Bits ist Hardware-bedingt, | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Melody-Codes ===== | ||
+ | Liste der Codes für die BIOS-Funktion 16h (Melodie-Töne) des Interrupts 61h (siehe [[hardware: | ||
+ | |||
+ | ^Note^Frequenz^Code^ | ||
+ | |D#5 | 622,3 Hz| 30h| | ||
+ | |E5 | ||
+ | |F5 | ||
+ | |F#5 | 740 Hz| 33h| | ||
+ | |G5 | ||
+ | |G#5 | 830,6 Hz| 35h| | ||
+ | |A5 | ||
+ | |A#5 | 932,3 Hz| 37h| | ||
+ | |B5 | ||
+ | |C6 | ||
+ | |C#6 | 1108,7 Hz| 3Ah| | ||
+ | |D6 | ||
+ | |D#6 | 1244,5 Hz| 3Bh| | ||
+ | |E6 | ||
+ | |F6 | ||
+ | |F#6 | 1480 Hz| 0Eh| | ||
+ | |G6 | ||
+ | |G#6 | 1661,2 Hz| 2Ch| | ||
+ | |A6 | ||
+ | |A#6 | 1864,7 Hz| 04h| | ||
+ | |B6 | ||
+ | |C7 | ||
+ | |C#7 | 2217,5 Hz| 2Fh| | ||
+ | |D7 | ||
+ | |D#7 | 2489 Hz| 07h| | ||
+ | |||
+ | undokumentierte Codes:\\ | ||
+ | |||
+ | ^DTMF-Ton^Code^ | ||
+ | | 0| 10h| | ||
+ | | 1| 11h| | ||
+ | | 2| 12h| | ||
+ | | 3| 13h| | ||
+ | | 4| 14h| | ||
+ | | 5| 15h| | ||
+ | | 6| 16h| | ||
+ | | 7| 17h| | ||
+ | | 8| 18h| | ||
+ | | 9| 19h| | ||
+ | | A| 1Ah| | ||
+ | | B| 1Bh| | ||
+ | | C| 1Ch| | ||
+ | | D| 1Dh| | ||
+ | | *| 1Eh| | ||
+ | | #| 1Fh| | ||
+ | |||
+ | ^Klang^Code^ | ||
+ | |Stumm | ||
+ | |Klick1 | ||
+ | |Klick2 | ||
+ | |Klick3 | ||
+ | |Klick4 | ||
+ | |Sound (?) | A4h| | ||
+ | |||
+ | weitere Melodie-Töne: | ||
+ | |||
+ | ^Code^Note^ | ||
+ | |4Bh |zwischen A#5 (37h) und B5 (38h)| | ||
+ | |49h |zwischen F#5 (33h) und G5 (34h)| | ||
+ | |4Ah |zwischen G#5 (35h) und A5 (36h)| | ||
+ | |2Eh |zwischen B6 (05h) und C7 (25h)| | ||
+ | |2Ah |zwischen C6 (39h) und C#6 (3Ah)| | ||
+ | |4Ch |zwischen D6 (29h) und D#6 (3Bh)| | ||
+ | |2Bh |zwischen D#6 (3B) und E6 (3Ch)| | ||
+ | |0Fh |zwischen G6 (3Eh) und G#6 (2CH)| | ||
+ | |27h |zwischen C7 (25h) und C#7 (2Fh)| | ||
+ | |||
+ | Folgende Codes erzeugen Melodie-Töne mit einem Klick (Anschlag) am Anfang:\\ | ||
+ | |||
+ | ^Code^Note^ | ||
+ | |B2h |F5 (32h)| | ||
+ | |B3h |F#5 (33h)| | ||
+ | |B4h |G5 (34h)| | ||
+ | |B5h |G#5 (35h)| | ||
+ | |B6h |A5 (36h)| | ||
+ | |B7h |A#5 (37h)| | ||
+ | |B8H |B5 (38h)| | ||
+ | |B9H |C6 (39h)| | ||
+ | |BAH |C#6 (3Ah)| | ||
+ | |BBH |D#6 (3Bh)| | ||
+ | |BCH |E6 (3Ch)| | ||
+ | |BDH |F6 (3Dh)| | ||
+ | |BEH |G6 (3Eh)| | ||
+ | |BFH |A6 (3Fh)| | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
===== Datei-Formate ===== | ===== Datei-Formate ===== | ||
Zeile 429: | Zeile 671: | ||
00073¦27 53 70 61 6C 74 65 31 ¦´Spalte1 | 00073¦27 53 70 61 6C 74 65 31 ¦´Spalte1 | ||
00081¦00 01 00 00 00 00 00 00 ¦.☺...... | 00081¦00 01 00 00 00 00 00 00 ¦.☺...... | ||
+ | |||
Zeile 455: | Zeile 698: | ||
Sind also keine Weckfunktionen aktiv steht an Stelle des Weckzeichens ein Leerzeichen ASCII(032).\\ | Sind also keine Weckfunktionen aktiv steht an Stelle des Weckzeichens ein Leerzeichen ASCII(032).\\ | ||
Interessant ist, man kann eine *.DRY mit dem Text-Editor schreiben ohne die korrekte Reihenfolge zu berücksichtigen, | Interessant ist, man kann eine *.DRY mit dem Text-Editor schreiben ohne die korrekte Reihenfolge zu berücksichtigen, | ||
- | Nicht vergessen: wie im Handbuch beschrieben wird nur die DIARY.DAT im Systemverzeichnis von Laufwerk C: Weckfunktionen | + | Nicht vergessen: wie im Handbuch beschrieben wird nur die DIARY.DRY im Systemverzeichnis von Laufwerk C: Weckfunktionen |
\\ | \\ | ||
\\ | \\ |
software/diy/progtools/tablesdatas.1208641318.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)