update to TriOS R57 changes
This commit is contained in:
parent
43d016e23e
commit
8374973638
44
README.md
44
README.md
|
@ -1,25 +1,33 @@
|
|||
INHALT
|
||||
======
|
||||
|
||||
1. Installation des Grundsystems
|
||||
2. Regime im Überblick
|
||||
3. Forth im Überblick
|
||||
1. Installations-Varianten
|
||||
2. Installation des Grundsystems
|
||||
3. Regime im Überblick
|
||||
4. Forth im Überblick
|
||||
|
||||
|
||||
1. Installations-Varianten
|
||||
==========================
|
||||
|
||||
Zur Installation von TriOS auf dem Hive stehen 3 verschiedene Varianten zur
|
||||
Verfügung, welche am Ende aber dasselbe Ergebnis erzielen:
|
||||
|
||||
1. Installation des Grundsystems:
|
||||
=================================
|
||||
Binäres Archiv: HIVE-TriOS-Rxx-bin.zip
|
||||
Source-Archiv: HIVE-TriOS-Rxx-src.zip
|
||||
Git Repository: https://dev.bitquell.de/summary/HIVE/TriOS.git
|
||||
|
||||
TriOS kann in zwei Versionen installiert werden: Mit oder ohne Forth als
|
||||
integrierte Programmiersprache. Als Standard wird das System ohne Forth
|
||||
installiert. Die Installation ist so für den Einsteiger einfacher. Möchte
|
||||
man auch PropForth installieren, muß nur eine Konfiguration geändert werden
|
||||
und ein Basiswortschatz im Forth selbst kompiliert werden.
|
||||
Das binäre Archiv kann sofort installiert werden. Wer selbst an den Quellen
|
||||
Änderungen vornehmen, sollte stattdessen das Source-Archiv nutzen oder gleich
|
||||
das top-aktuelle Git Repository nutzen.
|
||||
|
||||
Bei Nutzung des Source-Archives oder des Git-Repository müssen die Quellen vor
|
||||
der Installation noch compiliert werden.
|
||||
|
||||
WICHTIG: Das System kann nur mit Brat's Spin Tool - kurz BST - compiliert
|
||||
werden. In den Einstellungen des Compilers (Tools/Compiler
|
||||
Preferences/Search Paths) muss das lib-Verzeichnis eingetragen werden.
|
||||
werden. In den Einstellungen des Compilers
|
||||
(Tools/Compiler Preferences/Search Paths) muss das lib-Verzeichnis eingetragen
|
||||
werden.
|
||||
|
||||
Downloadlink BST: http://www.fnarfbargle.com/bst.html
|
||||
|
||||
|
@ -30,6 +38,16 @@ Pfad befindet.
|
|||
Downloadlink BSTC: http://www.fnarfbargle.com/bst/bstc/Latest/
|
||||
|
||||
|
||||
2. Installation des Grundsystems:
|
||||
=================================
|
||||
|
||||
TriOS kann in zwei Versionen installiert werden: Mit oder ohne Forth als
|
||||
integrierte Programmiersprache. Als Standard wird das System ohne Forth
|
||||
installiert. Die Installation ist so für den Einsteiger einfacher. Möchte
|
||||
man auch PropForth installieren, muß nur ein Basiswortschatz im Forth selbst
|
||||
kompiliert werden.
|
||||
|
||||
|
||||
Installation ohne Forth (Standard):
|
||||
-----------------------------------
|
||||
|
||||
|
@ -185,7 +203,7 @@ tv.bin - TV-Textmodus 40 x 13 Zeichen
|
|||
|
||||
|
||||
|
||||
2. Forth im Überblick:
|
||||
4. Forth im Überblick:
|
||||
======================
|
||||
|
||||
Einige nützliche Kommandos befinden sich in dem Modul tools.mod. In den meisten
|
||||
|
|
|
@ -269,14 +269,14 @@ CHIP_SPEC = CHIP_SPEC_FAT|CHIP_SPEC_LDR|CHIP_SPEC_HSS|CHIP_SPEC_WAV|CHIP_SPEC_SI
|
|||
' clk -------+|
|
||||
' /wr ------+||
|
||||
' /hs -----+||| +------------------------- /cs
|
||||
' |||| |+------------------------ adm-p22
|
||||
' |||| ||+----------------------- adm-p21 (io)
|
||||
' |||| |||+---------------------- adm-p20 (rx)
|
||||
' |||| ||||+--------------------- adm-p19 (tx)
|
||||
' |||| |+------------------------ adm-p22 (int2 - port 1/2)
|
||||
' |||| ||+----------------------- adm-p21 (int1 - port 3)
|
||||
' |||| |||+---------------------- adm-p20 (scl)
|
||||
' |||| ||||+--------------------- adm-p19 (sda)
|
||||
' |||| ||||| +------+ d0..d7
|
||||
' |||| ||||| | |
|
||||
DB_IN = %00001001_00100000_00000000_00000000 'dira-wert für datenbuseingabe
|
||||
DB_OUT = %00001001_00100000_00000000_11111111 'dira-wert für datenbusausgabe
|
||||
DB_IN = %00001001_00000000_00000000_00000000 'dira-wert für datenbuseingabe
|
||||
DB_OUT = %00001001_00000000_00000000_11111111 'dira-wert für datenbusausgabe
|
||||
|
||||
M1 = %00000010_00000000_00000000_00000000 'busclk=1? & /prop1=0?
|
||||
M2 = %00000010_10000000_00000000_00000000 'maske: busclk & /cs (/prop1)
|
||||
|
@ -347,7 +347,7 @@ OBJ
|
|||
com : "adm-com" 'serielle schnittstelle
|
||||
#endif
|
||||
#ifdef __ADM_LAN
|
||||
sock : "driver_socket" 'LAN
|
||||
sock : "adm-socket" 'LAN
|
||||
num : "glob-numbers" 'Number Engine
|
||||
#endif
|
||||
#ifdef __ADM_PLX
|
||||
|
@ -398,232 +398,237 @@ PUB main | cmd,err 'chip: kommandointerpret
|
|||
|
||||
' ---------------------------------------------- SD-FUNKTIONEN
|
||||
#ifdef __ADM_FAT
|
||||
gc#a_sdMount: sd_mount("M") 'sd-card mounten '
|
||||
gc#a_sdOpenDir: sd_opendir 'direktory öffnen
|
||||
gc#a_sdNextFile: sd_nextfile 'verzeichniseintrag lesen
|
||||
gc#a_sdOpen: sd_open 'datei öffnen
|
||||
gc#a_sdClose: sd_close 'datei schließen
|
||||
gc#a_sdGetC: sd_getc 'zeichen lesen
|
||||
gc#a_sdPutC: sd_putc 'zeichen schreiben
|
||||
gc#a_sdGetBlk: sd_getblk 'block lesen
|
||||
gc#a_sdPutBlk: sd_putblk 'block schreiben
|
||||
gc#a_sdSeek: sd_seek 'zeiger in datei positionieren
|
||||
gc#a_sdFAttrib: sd_fattrib 'dateiattribute übergeben
|
||||
gc#a_sdVolname: sd_volname 'volumelabel abfragen
|
||||
gc#a_sdMount: sd_mount("M") 'sd-card mounten '
|
||||
gc#a_sdOpenDir: sd_opendir 'direktory öffnen
|
||||
gc#a_sdNextFile: sd_nextfile 'verzeichniseintrag lesen
|
||||
gc#a_sdOpen: sd_open 'datei öffnen
|
||||
gc#a_sdClose: sd_close 'datei schließen
|
||||
gc#a_sdGetC: sd_getc 'zeichen lesen
|
||||
gc#a_sdPutC: sd_putc 'zeichen schreiben
|
||||
gc#a_sdGetBlk: sd_getblk 'block lesen
|
||||
gc#a_sdPutBlk: sd_putblk 'block schreiben
|
||||
gc#a_sdSeek: sd_seek 'zeiger in datei positionieren
|
||||
gc#a_sdFAttrib: sd_fattrib 'dateiattribute übergeben
|
||||
gc#a_sdVolname: sd_volname 'volumelabel abfragen
|
||||
gc#a_sdCheckMounted: sd_checkmounted 'test ob volume gemounted ist
|
||||
gc#a_sdCheckOpen: sd_checkopen 'test ob eine datei geöffnet ist
|
||||
gc#a_sdCheckUsed: sd_checkused 'test wie viele sektoren benutzt sind
|
||||
gc#a_sdCheckFree: sd_checkfree 'test wie viele sektoren frei sind
|
||||
gc#a_sdNewFile: sd_newfile 'neue datei erzeugen
|
||||
gc#a_sdNewDir: sd_newdir 'neues verzeichnis wird erzeugt
|
||||
gc#a_sdDel: sd_del 'verzeichnis oder datei löschen
|
||||
gc#a_sdRename: sd_rename 'verzeichnis oder datei umbenennen
|
||||
gc#a_sdChAttrib: sd_chattrib 'attribute ändern
|
||||
gc#a_sdChDir: sd_chdir 'verzeichnis wechseln
|
||||
gc#a_sdFormat: sd_format 'medium formatieren
|
||||
gc#a_sdUnmount: sd_unmount 'medium abmelden
|
||||
gc#a_sdDmAct: sd_dmact 'dir-marker aktivieren
|
||||
gc#a_sdDmSet: sd_dmset 'dir-marker setzen
|
||||
gc#a_sdDmGet: sd_dmget 'dir-marker status abfragen
|
||||
gc#a_sdDmClr: sd_dmclr 'dir-marker löschen
|
||||
gc#a_sdDmPut: sd_dmput 'dir-marker status setzen
|
||||
gc#a_sdEOF: sd_eof 'eof abfragen
|
||||
gc#a_sdCheckOpen: sd_checkopen 'test ob eine datei geöffnet ist
|
||||
gc#a_sdCheckUsed: sd_checkused 'test wie viele sektoren benutzt sind
|
||||
gc#a_sdCheckFree: sd_checkfree 'test wie viele sektoren frei sind
|
||||
gc#a_sdNewFile: sd_newfile 'neue datei erzeugen
|
||||
gc#a_sdNewDir: sd_newdir 'neues verzeichnis wird erzeugt
|
||||
gc#a_sdDel: sd_del 'verzeichnis oder datei löschen
|
||||
gc#a_sdRename: sd_rename 'verzeichnis oder datei umbenennen
|
||||
gc#a_sdChAttrib: sd_chattrib 'attribute ändern
|
||||
gc#a_sdChDir: sd_chdir 'verzeichnis wechseln
|
||||
gc#a_sdFormat: sd_format 'medium formatieren
|
||||
gc#a_sdUnmount: sd_unmount 'medium abmelden
|
||||
gc#a_sdDmAct: sd_dmact 'dir-marker aktivieren
|
||||
gc#a_sdDmSet: sd_dmset 'dir-marker setzen
|
||||
gc#a_sdDmGet: sd_dmget 'dir-marker status abfragen
|
||||
gc#a_sdDmClr: sd_dmclr 'dir-marker löschen
|
||||
gc#a_sdDmPut: sd_dmput 'dir-marker status setzen
|
||||
gc#a_sdEOF: sd_eof 'eof abfragen
|
||||
#ifdef __ADM_FAT_EXT
|
||||
gc#a_sdPos: sd_pos 'Zeiger in Datei abfragen
|
||||
gc#a_sdCopy: sd_copy 'Datei kopieren
|
||||
gc#a_sdDirSize: sd_dirsize 'Dateigrösse ->ist quatsch
|
||||
gc#a_sdPos: sd_pos 'Zeiger in Datei abfragen
|
||||
gc#a_sdCopy: sd_copy 'Datei kopieren
|
||||
gc#a_sdDirSize: sd_dirsize 'Dateigrösse ->ist quatsch
|
||||
#endif '__ADM_FAT_EXT
|
||||
#endif '__ADM_FAT
|
||||
|
||||
' ---------------------------------------------- Bluetooth-FUNKTIONEN
|
||||
#ifdef __ADM_BLT
|
||||
gc#a_bl_Command_On: blt_setCommandMode
|
||||
gc#a_bl_Command_On: blt_setCommandMode
|
||||
gc#a_bl_Command_Off: blt_setNormalMode
|
||||
#endif '__ADM_BLT
|
||||
|
||||
' ---------------------------------------------- COM-FUNKTIONEN
|
||||
#ifdef __ADM_COM
|
||||
gc#a_comInit: com_init
|
||||
gc#a_comTx: com_tx
|
||||
gc#a_comRx: com_rx
|
||||
gc#a_comTx: com_tx
|
||||
gc#a_comRx: com_rx
|
||||
#endif '__ADM_COM
|
||||
|
||||
' ---------------------------------------------- RTC-FUNKTIONEN
|
||||
#ifdef __ADM_RTC
|
||||
gc#a_rtcTest: rtc_test 'Test if RTC Chip is available
|
||||
gc#a_rtcGetSeconds: rtc_getSeconds 'Returns the current second (0 - 59) from the real time clock.
|
||||
gc#a_rtcGetMinutes: rtc_getMinutes 'Returns the current minute (0 - 59) from the real time clock.
|
||||
gc#a_rtcGetHours: rtc_getHours 'Returns the current hour (0 - 23) from the real time clock.
|
||||
gc#a_rtcGetDay: rtc_getDay 'Returns the current day (1 - 7) from the real time clock.
|
||||
gc#a_rtcGetDate: rtc_getDate 'Returns the current date (1 - 31) from the real time clock.
|
||||
gc#a_rtcGetMonth: rtc_getMonth 'Returns the current month (1 - 12) from the real time clock.
|
||||
gc#a_rtcGetYear: rtc_getYear 'Returns the current year (2000 - 2099) from the real time clock.
|
||||
gc#a_rtcSetSeconds: rtc_setSeconds 'Sets the current real time clock seconds. Seconds - Number to set the seconds to between 0 - 59.
|
||||
gc#a_rtcSetMinutes: rtc_setMinutes 'Sets the current real time clock minutes. Minutes - Number to set the minutes to between 0 - 59.
|
||||
gc#a_rtcSetHours: rtc_setHours 'Sets the current real time clock hours. Hours - Number to set the hours to between 0 - 23.
|
||||
gc#a_rtcSetDay: rtc_setDay 'Sets the current real time clock day. Day - Number to set the day to between 1 - 7.
|
||||
gc#a_rtcSetDate: rtc_setDate 'Sets the current real time clock date. Date - Number to set the date to between 1 - 31.
|
||||
gc#a_rtcSetMonth: rtc_setMonth 'Sets the current real time clock month. Month - Number to set the month to between 1 - 12.
|
||||
gc#a_rtcSetYear: rtc_setYear 'Sets the current real time clock year. Year - Number to set the year to between 2000 - 2099.
|
||||
gc#a_rtcSetNVSRAM: rtc_setNVSRAM 'Sets the NVSRAM to the selected value (0 - 255) at the index (0 - 55).
|
||||
gc#a_rtcGetNVSRAM: rtc_getNVSRAM 'Gets the selected NVSRAM value at the index (0 - 55).
|
||||
gc#a_rtcPauseForSec: rtc_pauseForSeconds 'Pauses execution for a number of seconds. Returns a puesdo random value derived from the current clock frequency and the time when called. Number - Number of seconds to pause for between 0 and 2,147,483,647.
|
||||
gc#a_rtcTest: rtc_test 'Test if RTC Chip is available
|
||||
gc#a_rtcGetSeconds: rtc_getSeconds 'Returns the current second (0 - 59) from the real time clock.
|
||||
gc#a_rtcGetMinutes: rtc_getMinutes 'Returns the current minute (0 - 59) from the real time clock.
|
||||
gc#a_rtcGetHours: rtc_getHours 'Returns the current hour (0 - 23) from the real time clock.
|
||||
gc#a_rtcGetDay: rtc_getDay 'Returns the current day (1 - 7) from the real time clock.
|
||||
gc#a_rtcGetDate: rtc_getDate 'Returns the current date (1 - 31) from the real time clock.
|
||||
gc#a_rtcGetMonth: rtc_getMonth 'Returns the current month (1 - 12) from the real time clock.
|
||||
gc#a_rtcGetYear: rtc_getYear 'Returns the current year (2000 - 2099) from the real time clock.
|
||||
gc#a_rtcSetSeconds: rtc_setSeconds 'Sets the current real time clock seconds. Seconds - Number to set the seconds to between 0 - 59.
|
||||
gc#a_rtcSetMinutes: rtc_setMinutes 'Sets the current real time clock minutes. Minutes - Number to set the minutes to between 0 - 59.
|
||||
gc#a_rtcSetHours: rtc_setHours 'Sets the current real time clock hours. Hours - Number to set the hours to between 0 - 23.
|
||||
gc#a_rtcSetDay: rtc_setDay 'Sets the current real time clock day. Day - Number to set the day to between 1 - 7.
|
||||
gc#a_rtcSetDate: rtc_setDate 'Sets the current real time clock date. Date - Number to set the date to between 1 - 31.
|
||||
gc#a_rtcSetMonth: rtc_setMonth 'Sets the current real time clock month. Month - Number to set the month to between 1 - 12.
|
||||
gc#a_rtcSetYear: rtc_setYear 'Sets the current real time clock year. Year - Number to set the year to between 2000 - 2099.
|
||||
gc#a_rtcSetNVSRAM: rtc_setNVSRAM 'Sets the NVSRAM to the selected value (0 - 255) at the index (0 - 55).
|
||||
gc#a_rtcGetNVSRAM: rtc_getNVSRAM 'Gets the selected NVSRAM value at the index (0 - 55).
|
||||
gc#a_rtcPauseForSec: rtc_pauseForSeconds 'Pauses execution for a number of seconds. Returns a puesdo random value derived from the current clock frequency and the time when called. Number - Number of seconds to pause for between 0 and 2,147,483,647.
|
||||
gc#a_rtcPauseForMSec: rtc_pauseForMilliseconds 'Pauses execution for a number of milliseconds. Returns a puesdo random value derived from the current clock frequency and the time when called. Number - Number of milliseconds to pause for between 0 and 2,147,483,647.
|
||||
gc#a_rtcGetTime: rtc_getTime 'Returns the current hour, minute and second from the real time clock.
|
||||
gc#a_rtcGetTime: rtc_getTime 'Returns the current hour, minute and second from the real time clock.
|
||||
#endif '__ADM_RTC
|
||||
|
||||
' ---------------------------------------------- DCF77-FUNKTIONEN
|
||||
#ifdef __ADM_DCF
|
||||
gc#a_DCF_InSync: dcf_getInSync 'Sync-Status senden
|
||||
gc#a_DCF_Update_Clock: dcf_updateRTC 'RTC Synchronisieren
|
||||
gc#a_DCF_GetBitError: dcf_getBitError
|
||||
gc#a_DCF_InSync: dcf_getInSync 'Sync-Status senden
|
||||
gc#a_DCF_Update_Clock: dcf_updateRTC 'RTC Synchronisieren
|
||||
gc#a_DCF_GetBitError: dcf_getBitError
|
||||
gc#a_DCF_GetDatacount: dcf_getDataCount
|
||||
gc#a_DCF_GetBitNumber: dcf_getBitNumber
|
||||
gc#a_DCF_GetBitLevel: dcf_getBitLevel
|
||||
gc#a_DCF_GetTimeZone: dcf_getTimeZone
|
||||
gc#a_DCF_GetBitLevel: dcf_getBitLevel
|
||||
gc#a_DCF_GetTimeZone: dcf_getTimeZone
|
||||
gc#a_DCF_GetActiveSet: dcf_getActiveSet
|
||||
gc#a_DCF_start: dcf_start 'DCF-Empfang starten
|
||||
gc#a_DCF_stop: dcf_stop 'DCF-Empfang stoppen
|
||||
gc#a_DCF_dcfon: dcf_state 'Status des DCF-Empfängers
|
||||
gc#a_DCF_GetSeconds: dcf_getSeconds
|
||||
gc#a_DCF_GetMinutes: dcf_getMinutes
|
||||
gc#a_DCF_GetHours: dcf_getHours
|
||||
gc#a_DCF_GetWeekDay: dcf_getWeekDay
|
||||
gc#a_DCF_GetDay: dcf_getDay
|
||||
gc#a_DCF_GetMonth: dcf_getMonth
|
||||
gc#a_DCF_GetYear: dcf_getYear
|
||||
gc#a_DCF_start: dcf_start 'DCF-Empfang starten
|
||||
gc#a_DCF_stop: dcf_stop 'DCF-Empfang stoppen
|
||||
gc#a_DCF_dcfon: dcf_state 'Status des DCF-Empfängers
|
||||
gc#a_DCF_GetSeconds: dcf_getSeconds
|
||||
gc#a_DCF_GetMinutes: dcf_getMinutes
|
||||
gc#a_DCF_GetHours: dcf_getHours
|
||||
gc#a_DCF_GetWeekDay: dcf_getWeekDay
|
||||
gc#a_DCF_GetDay: dcf_getDay
|
||||
gc#a_DCF_GetMonth: dcf_getMonth
|
||||
gc#a_DCF_GetYear: dcf_getYear
|
||||
#endif '__ADM_DCF
|
||||
|
||||
' ---------------------------------------------- LAN-FUNKTIONEN
|
||||
#ifdef __ADM_LAN
|
||||
gc#a_lanStart: lan_start 'Start Network
|
||||
gc#a_lanStop:lan_stop 'Stop Network
|
||||
gc#a_lanConnect: lan_connect 'ausgehende TCP-Verbindung öffnen
|
||||
gc#a_lanListen: lan_listen 'auf eingehende TCP-Verbindung lauschen
|
||||
gc#a_lanStart: lan_start 'Start Network
|
||||
gc#a_lanStop: lan_stop 'Stop Network
|
||||
gc#a_lanConnect: lan_connect 'ausgehende TCP-Verbindung öffnen
|
||||
gc#a_lanListen: lan_listen 'auf eingehende TCP-Verbindung lauschen
|
||||
gc#a_lanWaitConnTimeout: lan_waitconntimeout 'bestimmte Zeit auf Verbindung warten
|
||||
gc#a_lanClose: lan_close 'TCP-Verbindung schließen
|
||||
gc#a_lanRXTime: lan_rxtime 'bestimmte Zeit warten auf Byte aus Empfangspuffer
|
||||
gc#a_lanRXData: lan_rxdata 'Daten aus Empfangspuffer lesen
|
||||
gc#a_lanTXData: lan_txdata 'Daten senden
|
||||
gc#a_lanRXByte: lan_rxbyte 'wenn vorhanden, Byte aus Empfangspuffer lesen
|
||||
gc#a_lanIsConnected: lan_isconnected 'TRUE, wenn Socket verbunden, sonst FALSE
|
||||
gc#a_lanClose: lan_close 'TCP-Verbindung schließen
|
||||
gc#a_lanRXTime: lan_rxtime 'bestimmte Zeit warten auf Byte aus Empfangspuffer
|
||||
gc#a_lanRXData: lan_rxdata 'Daten aus Empfangspuffer lesen
|
||||
gc#a_lanTXData: lan_txdata 'Daten senden
|
||||
gc#a_lanRXByte: lan_rxbyte 'wenn vorhanden, Byte aus Empfangspuffer lesen
|
||||
gc#a_lanIsConnected: lan_isconnected 'TRUE, wenn Socket verbunden, sonst FALSE
|
||||
#endif '__ADM_LAN
|
||||
|
||||
' ---------------------------------------------- CHIP-MANAGMENT
|
||||
gc#a_mgrSetSound: mgr_setsound 'soundsubsysteme verwalten
|
||||
gc#a_mgrGetSpec: mgr_getspec 'spezifikation abfragen
|
||||
gc#a_mgrSetSound: mgr_setsound 'soundsubsysteme verwalten
|
||||
gc#a_mgrGetSpec: mgr_getspec 'spezifikation abfragen
|
||||
gc#a_mgrSetSysSound: mgr_setsyssound 'systemsound ein/ausschalten
|
||||
gc#a_mgrGetSoundSys: mgr_getsoundsys 'abfrage welches soundsystem aktiv ist
|
||||
gc#a_mgrALoad: mgr_aload 'neuen code booten
|
||||
gc#a_mgrGetCogs: mgr_getcogs 'freie cogs abfragen
|
||||
gc#a_mgrGetVer: mgr_getver 'codeversion abfragen
|
||||
gc#a_mgrReboot: reboot 'neu starten
|
||||
gc#a_mgrALoad: mgr_aload 'neuen code booten
|
||||
gc#a_mgrGetCogs: mgr_getcogs 'freie cogs abfragen
|
||||
gc#a_mgrGetVer: mgr_getver 'codeversion abfragen
|
||||
gc#a_mgrReboot: reboot 'neu starten
|
||||
|
||||
' ---------------------------------------------- HSS-FUNKTIONEN
|
||||
#ifdef __ADM_HSS
|
||||
gc#a_hssLoad: hss_load 'hss-datei in puffer laden
|
||||
gc#a_hssLoad: hss_load 'hss-datei in puffer laden
|
||||
#ifdef __ADM_HSS_PLAY
|
||||
gc#a_hssPlay: hss.hmus_load(@bgmusic) 'play
|
||||
hss.hmus_play
|
||||
gc#a_hssPlay: hss.hmus_load(@bgmusic) 'play
|
||||
hss.hmus_play
|
||||
#endif '__ADM_HSS_PLAY
|
||||
gc#a_hssStop: hss.hmus_stop 'stop
|
||||
gc#a_hssPause: hss.hmus_pause 'pause
|
||||
gc#a_hssPeek: hss_peek 'register lesen
|
||||
gc#a_hssIntReg: hss_intreg 'interfaceregister auslesen
|
||||
gc#a_hssVol: hss_vol 'lautstärke setzen
|
||||
gc#a_sfxFire: sfx_fire 'sfx abspielen
|
||||
gc#a_hssStop: hss.hmus_stop 'stop
|
||||
gc#a_hssPause: hss.hmus_pause 'pause
|
||||
gc#a_hssPeek: hss_peek 'register lesen
|
||||
gc#a_hssIntReg: hss_intreg 'interfaceregister auslesen
|
||||
gc#a_hssVol: hss_vol 'lautstärke setzen
|
||||
gc#a_sfxFire: sfx_fire 'sfx abspielen
|
||||
gc#a_sfxSetSlot: sfx_setslot 'sfx-slot setzen
|
||||
gc#a_sfxKeyOff: sfx_keyoff
|
||||
gc#a_sfxStop: sfx_stop
|
||||
gc#a_sfxKeyOff: sfx_keyoff
|
||||
gc#a_sfxStop: sfx_stop
|
||||
#endif '__ADM_HSS
|
||||
|
||||
' ---------------------------------------------- PLX-Funktionen
|
||||
#ifdef __ADM_PLX
|
||||
gc#a_plxRun: plx.run 'plx-bus freigeben
|
||||
gc#a_plxHalt: plx.halt 'plx-bus anfordern
|
||||
gc#a_plxIn: plx_in 'port einlesen
|
||||
gc#a_plxOut: plx_out 'port ausgeben
|
||||
gc#a_plxCh: plx_ch 'ad-wandler auslesen
|
||||
gc#a_plxRun: plx.run 'plx-bus freigeben
|
||||
gc#a_plxHalt: plx.halt 'plx-bus anfordern
|
||||
gc#a_plxIn: plx_in 'port einlesen
|
||||
gc#a_plxOut: plx_out 'port ausgeben
|
||||
gc#a_plxCh: plx_ch 'ad-wandler auslesen
|
||||
gc#a_plxGetReg: plx_getReg 'poller-register lesen
|
||||
gc#a_plxSetReg: plx_setReg 'poller-register setzen
|
||||
gc#a_plxStart: plx.start 'i2c-dialog starten
|
||||
gc#a_plxStop: plx.stop 'i2c-dialog beenden
|
||||
gc#a_plxWrite: plx_write 'i2c byte senden
|
||||
gc#a_plxRead: plx_read 'i2c byte empfangen
|
||||
gc#a_plxPing: plx_ping 'abfrage ob device vorhanden ist
|
||||
gc#a_plxStart: plx.start 'i2c-dialog starten
|
||||
gc#a_plxStop: plx.stop 'i2c-dialog beenden
|
||||
gc#a_plxWrite: plx_write 'i2c byte senden
|
||||
gc#a_plxRead: plx_read 'i2c byte empfangen
|
||||
gc#a_plxPing: plx_ping 'abfrage ob device vorhanden ist
|
||||
gc#a_plxSetAdr: plx_setAddr 'adressen adda/ports für poller setzen
|
||||
' ---------------------------------------------- GAMEDEVICES
|
||||
gc#a_Joy: joy_get 'Joystick abfragen (1 x 8bit Port)
|
||||
gc#a_Joy: plx_get_joy 'Joystick abfragen (1 x 8bit Port)
|
||||
gc#a_Paddle: plx_get_paddle 'Paddle abfragen (1 x 8bit Port 1 x Analog)
|
||||
gc#a_Pad: plx_get_pad 'Pad abfragen (1 x 8bit Port 2 x Analog)
|
||||
' ---------------------------------------------- Venatrix-Plexus
|
||||
gc#a_VexPut: plx_put_vex 'Register im Venatrix-Plexus schreiben
|
||||
gc#a_VexGet: plx_get_vex 'Register im Venatrix-Plexus lesen
|
||||
#endif '__ADM_PLX
|
||||
|
||||
' ---------------------------------------------- WAV-FUNKTIONEN
|
||||
#ifdef __ADM_WAV
|
||||
gc#a_sdwStart: sdw_start 'spielt wav-datei direkt von sd-card ab
|
||||
gc#a_sdwStop: sdw_stop 'stopt wav-cog
|
||||
gc#a_sdwStatus: sdw_status 'fragt status des players ab
|
||||
gc#a_sdwLeftVol: sdw_leftvol 'lautstärke links
|
||||
gc#a_sdwStart: sdw_start 'spielt wav-datei direkt von sd-card ab
|
||||
gc#a_sdwStop: sdw_stop 'stopt wav-cog
|
||||
gc#a_sdwStatus: sdw_status 'fragt status des players ab
|
||||
gc#a_sdwLeftVol: sdw_leftvol 'lautstärke links
|
||||
gc#a_sdwRightVol: sdw_rightvol 'lautstärke rechts
|
||||
gc#a_sdwPause: sdw_pause 'player pause/weiter-modus
|
||||
gc#a_sdwPause: sdw_pause 'player pause/weiter-modus
|
||||
gc#a_sdwPosition: sdw_position
|
||||
#endif '__ADM_WAV
|
||||
|
||||
' ---------------------------------------------- SIDCog: DMP-Player-Funktionen (SIDCog2)
|
||||
#ifdef __ADM_SID
|
||||
gc#a_s_mdmpplay: sid_mdmpplay 'dmp-file mono auf sid2 abspielen
|
||||
gc#a_s_sdmpplay: sid_sdmpplay 'dmp-file stereo auf beiden sids abspielen
|
||||
gc#a_s_dmpstop: sid_dmpstop 'dmp-player beenden
|
||||
gc#a_s_dmppause: sid_dmppause 'dmp-player pausenmodus
|
||||
gc#a_s_dmpstatus: sid_dmpstatus 'dmp-player statusabfrage
|
||||
gc#a_s_dmppos: sid_dmppos 'player-position im dumpfile
|
||||
gc#a_s_mute: sid_mute 'alle register löschen
|
||||
gc#a_s_mdmpplay: sid_mdmpplay 'dmp-file mono auf sid2 abspielen
|
||||
gc#a_s_sdmpplay: sid_sdmpplay 'dmp-file stereo auf beiden sids abspielen
|
||||
gc#a_s_dmpstop: sid_dmpstop 'dmp-player beenden
|
||||
gc#a_s_dmppause: sid_dmppause 'dmp-player pausenmodus
|
||||
gc#a_s_dmpstatus: sid_dmpstatus 'dmp-player statusabfrage
|
||||
gc#a_s_dmppos: sid_dmppos 'player-position im dumpfile
|
||||
gc#a_s_mute: sid_mute 'alle register löschen
|
||||
|
||||
' ---------------------------------------------- SIDCog1-Funktionen
|
||||
gc#a_s1_setRegister: sid1.setRegister(bus_getchar,bus_getchar)
|
||||
gc#a_s1_updateRegisters: sid1.updateRegisters(sub_getdat(25,@s1buffer))
|
||||
gc#a_s1_setVolume: sid1.setVolume(bus_getchar)
|
||||
gc#a_s1_play: sid1.play(bus_getchar,sub_getlong,bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_noteOn: sid1.noteOn(bus_getchar, sub_getlong)
|
||||
gc#a_s1_noteOff: sid1.noteOff(bus_getchar)
|
||||
gc#a_s1_setFreq: sid1.setFreq(bus_getchar,sub_getlong)
|
||||
gc#a_s1_setWaveform: sid1.setWaveform(bus_getchar,bus_getchar)
|
||||
gc#a_s1_setPWM: sid1.setPWM(bus_getchar,sub_getlong)
|
||||
gc#a_s1_setADSR: sid1.setADSR(bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_setResonance: sid1.setResonance(bus_getchar)
|
||||
gc#a_s1_setCutoff: sid1.setCutoff(sub_getlong)
|
||||
gc#a_s1_setFilterMask: sid1.setFilterMask(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_setFilterType: sid1.setFilterType(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_enableRingmod: sid1.enableRingmod(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_setRegister: sid1.setRegister(bus_getchar,bus_getchar)
|
||||
gc#a_s1_updateRegisters: sid1.updateRegisters(sub_getdat(25,@s1buffer))
|
||||
gc#a_s1_setVolume: sid1.setVolume(bus_getchar)
|
||||
gc#a_s1_play: sid1.play(bus_getchar,sub_getlong,bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_noteOn: sid1.noteOn(bus_getchar, sub_getlong)
|
||||
gc#a_s1_noteOff: sid1.noteOff(bus_getchar)
|
||||
gc#a_s1_setFreq: sid1.setFreq(bus_getchar,sub_getlong)
|
||||
gc#a_s1_setWaveform: sid1.setWaveform(bus_getchar,bus_getchar)
|
||||
gc#a_s1_setPWM: sid1.setPWM(bus_getchar,sub_getlong)
|
||||
gc#a_s1_setADSR: sid1.setADSR(bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_setResonance: sid1.setResonance(bus_getchar)
|
||||
gc#a_s1_setCutoff: sid1.setCutoff(sub_getlong)
|
||||
gc#a_s1_setFilterMask: sid1.setFilterMask(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_setFilterType: sid1.setFilterType(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_enableRingmod: sid1.enableRingmod(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s1_enableSynchronization: sid1.enableSynchronization(bus_getchar,bus_getchar,bus_getchar)
|
||||
|
||||
' ---------------------------------------------- SIDCog2-Funktionen
|
||||
gc#a_s2_setRegister: sid2.setRegister(bus_getchar,bus_getchar)
|
||||
gc#a_s2_updateRegisters: sid2.updateRegisters(sub_getdat(25,@s1buffer))
|
||||
gc#a_s2_setVolume: sid2.setVolume(bus_getchar)
|
||||
gc#a_s2_play: sid2.play(bus_getchar,sub_getlong,bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_noteOn: sid2.noteOn(bus_getchar, sub_getlong)
|
||||
gc#a_s2_noteOff: sid2.noteOff(bus_getchar)
|
||||
gc#a_s2_setFreq: sid2.setFreq(bus_getchar,sub_getlong)
|
||||
gc#a_s2_setWaveform: sid2.setWaveform(bus_getchar,bus_getchar)
|
||||
gc#a_s2_setPWM: sid2.setPWM(bus_getchar,sub_getlong)
|
||||
gc#a_s2_setADSR: sid2.setADSR(bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_setResonance: sid2.setResonance(bus_getchar)
|
||||
gc#a_s2_setCutoff: sid2.setCutoff(sub_getlong)
|
||||
gc#a_s2_setFilterMask: sid2.setFilterMask(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_setFilterType: sid2.setFilterType(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_enableRingmod: sid2.enableRingmod(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_setRegister: sid2.setRegister(bus_getchar,bus_getchar)
|
||||
gc#a_s2_updateRegisters: sid2.updateRegisters(sub_getdat(25,@s1buffer))
|
||||
gc#a_s2_setVolume: sid2.setVolume(bus_getchar)
|
||||
gc#a_s2_play: sid2.play(bus_getchar,sub_getlong,bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_noteOn: sid2.noteOn(bus_getchar, sub_getlong)
|
||||
gc#a_s2_noteOff: sid2.noteOff(bus_getchar)
|
||||
gc#a_s2_setFreq: sid2.setFreq(bus_getchar,sub_getlong)
|
||||
gc#a_s2_setWaveform: sid2.setWaveform(bus_getchar,bus_getchar)
|
||||
gc#a_s2_setPWM: sid2.setPWM(bus_getchar,sub_getlong)
|
||||
gc#a_s2_setADSR: sid2.setADSR(bus_getchar,bus_getchar,bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_setResonance: sid2.setResonance(bus_getchar)
|
||||
gc#a_s2_setCutoff: sid2.setCutoff(sub_getlong)
|
||||
gc#a_s2_setFilterMask: sid2.setFilterMask(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_setFilterType: sid2.setFilterType(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_enableRingmod: sid2.enableRingmod(bus_getchar,bus_getchar,bus_getchar)
|
||||
gc#a_s2_enableSynchronization: sid2.enableSynchronization(bus_getchar,bus_getchar,bus_getchar)
|
||||
|
||||
' ---------------------------------------------- SID Zusatzfunktionen
|
||||
gc#a_s2_resetRegisters: sid2.resetRegisters
|
||||
gc#a_s1_resetRegisters: sid1.resetRegisters
|
||||
gc#a_s2_resetRegisters: sid2.resetRegisters
|
||||
gc#a_s1_resetRegisters: sid1.resetRegisters
|
||||
gc#a_s_beep: sid_beep
|
||||
gc#a_s_dmpreg: sid_dmpreg 'soundinformationen senden
|
||||
gc#a_s_dmpreg: sid_dmpreg 'soundinformationen senden
|
||||
#endif '__ADM_SID
|
||||
|
||||
' ---------------------------------------------- AY-SOUNDFUNKTIONEN
|
||||
#ifdef __ADM_AYS
|
||||
gc#a_ayStart: ay_start
|
||||
gc#a_ayStop: ay_stop
|
||||
gc#a_ayStart: ay_start
|
||||
gc#a_ayStop: ay_stop
|
||||
gc#a_ayUpdateRegisters: ay_updateRegisters
|
||||
#endif '__ADM_AYS
|
||||
|
||||
|
@ -655,7 +660,7 @@ PRI init_chip | err,i,j 'chip: initialisierung d
|
|||
clr_dmarker 'dir-marker löschen
|
||||
sdfat.FATEngine
|
||||
repeat
|
||||
waitcnt(cnt + clkfreq/10)
|
||||
waitcnt(cnt + clkfreq)
|
||||
until sd_mount("B") == 0
|
||||
'err := sd_mount("B")
|
||||
'siglow(err)
|
||||
|
@ -694,6 +699,7 @@ PRI init_chip | err,i,j 'chip: initialisierung d
|
|||
#endif '__ADM_COM
|
||||
|
||||
#ifdef __ADM_PLX
|
||||
'plx-bus initialisieren
|
||||
plx.init 'defaultwerte setzen, poller-cog starten
|
||||
plx.run 'plexbus freigeben (poller läuft)
|
||||
#endif '__ADM_PLX
|
||||
|
@ -1378,7 +1384,7 @@ PRI sd_del | err 'sdcard: eine datei oder
|
|||
|
||||
sub_getstr
|
||||
err := \sdfat.deleteEntry(@tbuf)
|
||||
sighigh(err) 'fehleranzeige
|
||||
siglow(err) 'fehleranzeige
|
||||
bus_putchar(err) 'ergebnis der operation senden
|
||||
|
||||
PRI sd_rename | err 'sdcard: datei oder verzeichnis umbenennen
|
||||
|
@ -2426,13 +2432,34 @@ PRI plx_setAddr | adda, ports 'adressen adda/ports fü
|
|||
ports := bus_getchar 'address ports
|
||||
plx.setadr(adda,ports)
|
||||
|
||||
PRI joy_get | reg 'Joystick abfragen (1 x 8bit Port)
|
||||
PRI plx_get_joy 'Joystick abfragen (1 x 8bit Port)
|
||||
|
||||
bus_putchar(!plx.getreg(plx#R_INP0))
|
||||
|
||||
PRI plx_get_paddle 'Paddle abfragen (1 x 8bit Port 1 x Analog)
|
||||
|
||||
bus_putchar(!plx.getreg(plx#R_INP0))
|
||||
bus_putchar(plx.getreg(plx#R_PAD0))
|
||||
|
||||
PRI plx_get_pad 'Pad abfragen (1 x 8bit Port 2 x Analog)
|
||||
|
||||
bus_putchar(!plx.getreg(plx#R_INP0))
|
||||
bus_putchar(plx.getreg(plx#R_PAD0))
|
||||
bus_putchar(plx.getreg(plx#R_PAD1))
|
||||
|
||||
PRI plx_put_vex | data, reg, addr 'Register im Venatrix-Plexus schreiben
|
||||
|
||||
data := bus_getchar 'datum empfangen
|
||||
reg := bus_getchar 'registernummer empfangen
|
||||
addr := bus_getchar 'device-adresse ampfangen
|
||||
plx.vexput(data,reg,addr)
|
||||
|
||||
PRI plx_get_vex | reg, addr 'Register im Venatrix-Plexus lesen
|
||||
|
||||
reg := bus_getchar 'registernummer empfangen
|
||||
addr := bus_getchar 'device-adresse empfangen
|
||||
bus_putchar(plx.vexget(reg,addr))
|
||||
|
||||
reg:=bus_getchar '0-6
|
||||
if reg>3 and reg<7
|
||||
bus_putchar(!plx.getreg(reg))
|
||||
else
|
||||
bus_putchar(plx.getreg(reg))
|
||||
|
||||
CON ''------------------------------------------------- End of DCF77 FUNCTIONS
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ Logbuch :
|
|||
21-10-2012-uheld - Window-Funktionen
|
||||
28-11-2012-uheld - wahlweise Einbindung von VGA- oder TV-Treiber über #define
|
||||
15-04-2013-dr235 - konstanten für bellatrix-funktionen komplett ausgelagert
|
||||
22.02.2014-dr235 - per compilerflag wählbare monitorsettings eingefügt (57/60hz)
|
||||
|
||||
Notizen:
|
||||
- setheader
|
||||
|
@ -132,6 +133,14 @@ $0A..FF CHAR Zeichenausgabe
|
|||
'#define __TV
|
||||
'#define __VGA
|
||||
|
||||
'Hier sind verschiedene Timings für den Monitor wählbar.
|
||||
'Die Settings selbst befinden sich in der Datei /lib/bel-vga.spin und
|
||||
'können dort auch um weitere Optionen erweitert werden.
|
||||
|
||||
#define __VGA_MONSET1 '60Hz
|
||||
'#define __VGA_MONSET2 '57Hz
|
||||
|
||||
|
||||
CON
|
||||
|
||||
_CLKMODE = XTAL1 + PLL16X
|
||||
|
|
|
@ -55,9 +55,9 @@ word[7] - DCURR - Stack pointer. This is the initial value of the stack pointer.
|
|||
|
||||
|
||||
CON ' KONFIGURATION
|
||||
{
|
||||
Achtung: Nur eine Konfiguration wählen! Beim Bauen mittels Makefiles keines aktivieren"
|
||||
}
|
||||
|
||||
|
||||
'Achtung: Nur eine Konfiguration wählen! Beim Bauen mittels Makefiles keines aktivieren!
|
||||
|
||||
'#define forth ' forth + spin-loader
|
||||
'#define regime ' spin-loader OHNE FORTH, reg.sys wird sofort automatisch gestartet
|
||||
|
|
|
@ -481,5 +481,9 @@ wvariable lcog \ nummer interaktiven cog
|
|||
: _ob onboot ;
|
||||
: onboot _ob start ;
|
||||
|
||||
saveforth
|
||||
|
||||
reboot
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -28,26 +28,26 @@ Notizen :
|
|||
|
||||
|
||||
OBJ
|
||||
gc : "m-glob-con"
|
||||
gc : "glob-con"
|
||||
|
||||
|
||||
CON
|
||||
|
||||
SCL = gc#adm_scl
|
||||
SDA = gc#adm_sda
|
||||
' VNX = gc#adm_int1
|
||||
|
||||
' portadressen sepia
|
||||
|
||||
'pcf8574 %0100_ABC_0
|
||||
PORT1 = %0100_000 '$20
|
||||
PORT2 = %0100_001 '$21
|
||||
PORT3 = %0100_010 '$22
|
||||
{
|
||||
|
||||
'pcf8574a %0111_ABC_0
|
||||
PORT1 = %0111_000 '$38
|
||||
PORT2 = %0111_001 '$39
|
||||
PORT3 = %0111_010 '$3A
|
||||
}
|
||||
' PORT1 = %0111_000 '$38
|
||||
' PORT2 = %0111_001 '$39
|
||||
' PORT3 = %0111_010 '$3A
|
||||
|
||||
' ad/da-wandler-adresse
|
||||
|
||||
'pcf8591 %1001_ABC_R
|
||||
|
@ -84,7 +84,7 @@ CON
|
|||
R_INP0 = 4
|
||||
R_INP1 = 5
|
||||
R_INP2 = 6
|
||||
' R_VNX = 7
|
||||
|
||||
|
||||
|
||||
VAR
|
||||
|
@ -120,11 +120,7 @@ PUB init 'plx: io-system initiali
|
|||
|
||||
'pollcog starten
|
||||
plxcogid := cognew(poller,@plxstack)
|
||||
pub plxstop
|
||||
|
||||
if(plxcogid)
|
||||
cogstop(plxcogid~ - 1)
|
||||
lockret(-1 + plxlock~)
|
||||
PRI poller 'plx: pollcog
|
||||
|
||||
repeat
|
||||
|
@ -134,18 +130,14 @@ PRI poller 'plx: pollcog
|
|||
'analoge eingänge pollen
|
||||
plxreg[R_PAD0] := ad_ch(adr_adda,0)
|
||||
plxreg[R_PAD1] := ad_ch(adr_adda,1)
|
||||
lockclr(plxlock) 'bus freigeben
|
||||
|
||||
repeat until not lockset(plxlock) 'auf freien bus warten
|
||||
plxreg[R_PAD2] := ad_ch(adr_adda,2)
|
||||
plxreg[R_PAD3] := ad_ch(adr_adda,3)
|
||||
lockclr(plxlock) 'bus freigeben
|
||||
|
||||
repeat until not lockset(plxlock) 'auf freien bus warten
|
||||
'digitale eingabeports pollen
|
||||
plxreg[R_INP0] := in(adr_port )
|
||||
plxreg[R_INP1] := in(adr_port+1)
|
||||
plxreg[R_INP2] := in(adr_port+2)
|
||||
|
||||
'semaphore freigeben
|
||||
lockclr(plxlock) 'bus freigeben
|
||||
|
||||
|
@ -211,11 +203,27 @@ PUB ping(adr):ack 'plx: device anpingen
|
|||
|
||||
PUB setadr(adradda,adrport)
|
||||
|
||||
'halt
|
||||
halt
|
||||
adr_adda := adradda
|
||||
adr_port := adrport
|
||||
ad_init(adr_adda)
|
||||
'run
|
||||
run
|
||||
|
||||
PUB vexput(data,regnr,adr):ack 'plx: register in venatrix-plexus setzen
|
||||
|
||||
start
|
||||
ack := write(adr << 1)
|
||||
ack := (ack << 1) | write(regnr)
|
||||
ack := (ack << 1) | write(data)
|
||||
stop
|
||||
|
||||
PUB vexget(regnr,adr):data|ack 'plx: regsiter aus venatrix-plexus auslesen
|
||||
|
||||
start
|
||||
write((adr << 1) + 1)
|
||||
write(regnr)
|
||||
data := read(0)
|
||||
stop
|
||||
|
||||
CON 'I2C-FUNKTIONEN
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ CON
|
|||
ERRSOCKETCLOSED = ERR - 3 ' socket closed, could not perform operation
|
||||
|
||||
OBJ
|
||||
nic : "driver_enc28j60"
|
||||
nic : "adm-enc28j60"
|
||||
|
||||
'ser : "SerialMirror"
|
||||
'stk : "Stack Length"
|
|
@ -20,17 +20,32 @@
|
|||
|
||||
CON
|
||||
|
||||
' 1024 x 768 @ 60Hz settings
|
||||
|
||||
' 1024 x 768 @ H:48KHz V:60Hz settings
|
||||
#ifdef __VGA_MONSET1
|
||||
hp = 1024 'horizontal pixels
|
||||
vp = 768 'vertical pixels
|
||||
hf = 24 'horizontal front porch pixels
|
||||
hs = 136 'horizontal sync pixels
|
||||
hs = 136 'horizontal sync pixels
|
||||
hb = 160 'horizontal back porch pixels
|
||||
vf = 3 'vertical front porch lines
|
||||
vs = 6 'vertical sync lines
|
||||
vb = 29 'vertical back porch lines
|
||||
pr = 65 'pixel rate in MHz at 80MHz system clock (5MHz granularity)
|
||||
#endif __VGA_MONSET1
|
||||
|
||||
' 1024 x 768 @ H:45KHz V:57Hz settings
|
||||
#ifdef __VGA_MONSET2
|
||||
hp = 1024 'horizontal pixels
|
||||
vp = 768 'vertical pixels
|
||||
hf = 16 'horizontal front porch pixels
|
||||
hs = 96 'horizontal sync pixels
|
||||
hb = 176 'horizontal back porch pixels
|
||||
vf = 1 'vertical front porch lines
|
||||
vs = 3 'vertical sync lines
|
||||
vb = 28 'vertical back porch lines
|
||||
pr = 60 'pixel rate in MHz at 80MHz system clock (5MHz granularity)
|
||||
#endif __VGA_MONSET2
|
||||
|
||||
ht = hp + hf + hs + hb 'total scan line pixels
|
||||
|
||||
|
|
|
@ -52,9 +52,6 @@ FL_SEL = %0000_0001 'eintrag ist selektiert
|
|||
|
||||
FL_FOCUS = %0000_0001 'box ist selektiert
|
||||
|
||||
DR_SD = 0
|
||||
DR_RAM = 1
|
||||
DR_BLK = 2
|
||||
|
||||
PUB dummy
|
||||
|
||||
|
|
|
@ -47,6 +47,12 @@ CON 'Signaldefinitionen --------------------------------------------------------
|
|||
#21, A_Bluetooth_Line 'Key-Line des HC05-Bluetooth-Moduls
|
||||
#23, A_SELECT 'administra-auswahlsignal
|
||||
|
||||
'plexbus
|
||||
adm_sda = 19 'i2c-datenpin
|
||||
adm_scl = 20 'i2c-clockpin
|
||||
adm_int1 = 21 'interrupt port 1&2
|
||||
adm_int2 = 22 'interrupt port 3
|
||||
|
||||
CON 'KEY_CODES -------------------------------------------------------------------------------------
|
||||
|
||||
KEY_CTRL = 2
|
||||
|
@ -253,6 +259,14 @@ A_BLT = %00000000_00000000_00001000_00000000
|
|||
a_Pad 'Pad abfragen (1 x 8bit Port 2 x Analog)
|
||||
a_SetJoy 'Port für Joystick setzen
|
||||
a_SetPad '137 'Chan für Pad setzen
|
||||
' ---------------------------------------------- Venatrix-Propeller-Slave
|
||||
a_VexPut 'Register im Venatrix-Plexus schreiben
|
||||
a_VexGet '139 'Register im Venatrix-Plexus lesen
|
||||
|
||||
' ---------------------------------------------- AY-SOUNDFUNKTIONEN
|
||||
#147, a_ayStart
|
||||
a_ayStop
|
||||
a_ayUpdateRegisters '149
|
||||
|
||||
' ---------------------------------------------- WAV-FUNKTIONEN
|
||||
#150, a_sdwStart 'spielt wav-datei direkt von sd-card ab
|
||||
|
@ -314,10 +328,8 @@ A_BLT = %00000000_00000000_00001000_00000000
|
|||
a_s_beep
|
||||
a_s_dmpreg '199 'soundinformationen senden
|
||||
|
||||
' ---------------------------------------------- AY-SOUNDFUNKTIONEN
|
||||
#200, a_ayStart
|
||||
a_ayStop
|
||||
a_ayUpdateRegisters
|
||||
' ---------------------------------------------- Eigene Erweiterungen
|
||||
' 200 ... 254 frei für eigene Erweiterungen
|
||||
|
||||
CON 'BELLATRIX-FUNKTIONEN --------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ Chip : Regnatix
|
|||
Typ : Programm
|
||||
Version :
|
||||
Subversion :
|
||||
Funktion :
|
||||
Funktion : Fenster mit Dateiliste
|
||||
Komponenten : -
|
||||
COG's : -
|
||||
Logbuch :
|
||||
|
@ -79,10 +79,28 @@ PUB redraw | i
|
|||
i++
|
||||
ios.printnl
|
||||
|
||||
PUB setpos(pos)
|
||||
PUB setpos(npos)|opos,i,col,row
|
||||
|
||||
box_pos := pos
|
||||
redraw
|
||||
opos := box_pos
|
||||
box_pos := npos
|
||||
|
||||
' redrawx(npos,opos)
|
||||
|
||||
ios.winset(box_win)
|
||||
|
||||
'alte position neu zeichnen
|
||||
row := opos / box_cols
|
||||
col := (opos - (row * box_cols)) * (fm#MAX_LEN + 2)
|
||||
ios.wincursety(row)
|
||||
ios.wincursetx(col)
|
||||
print_file(box_view + opos, opos)
|
||||
|
||||
'neue position neu zeichnen
|
||||
row := npos / box_cols
|
||||
col := (npos - (row * box_cols)) * (fm#MAX_LEN + 2)
|
||||
ios.wincursety(row)
|
||||
ios.wincursetx(col)
|
||||
print_file(box_view + npos, npos)
|
||||
|
||||
PUB setview(view)
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ Chip : Regnatix
|
|||
Typ : Programm
|
||||
Version :
|
||||
Subversion :
|
||||
Funktion :
|
||||
Funktion : Eingabedialog String
|
||||
Komponenten : -
|
||||
COG's : -
|
||||
Logbuch :
|
||||
|
|
|
@ -14,7 +14,7 @@ Chip : Regnatix
|
|||
Typ : Programm
|
||||
Version :
|
||||
Subversion :
|
||||
Funktion :
|
||||
Funktion : Infodialog mit Fortschrittsbalken
|
||||
Komponenten : -
|
||||
COG's : -
|
||||
Logbuch :
|
||||
|
|
|
@ -14,7 +14,7 @@ Chip : Regnatix
|
|||
Typ : Programm
|
||||
Version :
|
||||
Subversion :
|
||||
Funktion :
|
||||
Funktion : Warndialog mit zwei Buttons
|
||||
Komponenten : -
|
||||
COG's : -
|
||||
Logbuch :
|
||||
|
@ -64,10 +64,14 @@ PUB draw(stradr1,stradr2,stradr3):button | key,bnr
|
|||
draw_buttons(stradr2,stradr3,bnr)
|
||||
key := ios.keywait
|
||||
case key
|
||||
gc#KEY_CURLEFT: bnr := 1
|
||||
gc#KEY_CURRIGHT: bnr := 2
|
||||
gc#KEY_CURLEFT: bnr := 1
|
||||
gc#KEY_CURRIGHT: bnr := 2
|
||||
gc#KEY_TAB: case bnr
|
||||
1: bnr := 2
|
||||
2: bnr := 1
|
||||
gc#KEY_ESC: bnr := 0
|
||||
|
||||
until key == gc#KEY_RETURN
|
||||
until (key == gc#KEY_RETURN) or (key == gc#KEY_ESC)
|
||||
return bnr
|
||||
|
||||
PRI draw_buttons(stradr2,stradr3,bnr)
|
||||
|
|
|
@ -46,6 +46,12 @@ con ' signaldefinitionen
|
|||
#10, ADM_SDD0,ADM_SDCLK,ADM_SDCMD,ADM_SDD3 'sd-cardreader (4 pin)
|
||||
#23, ADM_SELECT 'administra-auswahlsignal
|
||||
|
||||
'plexbus
|
||||
adm_sda = 19 'i2c-datenpin
|
||||
adm_scl = 20 'i2c-clockpin
|
||||
adm_int1 = 21 'interrupt port 1&2
|
||||
adm_int2 = 22 'interrupt port 3
|
||||
|
||||
con ' administra-funktionen
|
||||
|
||||
ADM_OPT = 0
|
||||
|
@ -85,32 +91,44 @@ ADM_COM_RX = 41 'com: zeichen empfangen
|
|||
|
||||
adm_m_run = 50 'plx: polling aktivieren
|
||||
adm_m_halt = 51 'plx: polling anhalten
|
||||
adm_m_setctrl = 52
|
||||
adm_m_in = 53
|
||||
adm_m_out = 54
|
||||
adm_m_ad_ch = 55
|
||||
adm_m_getreg = 56
|
||||
adm_m_setreg = 57
|
||||
adm_m_start = 58
|
||||
adm_m_stop = 59
|
||||
adm_m_write = 60
|
||||
adm_m_read = 61
|
||||
adm_m_ping = 62
|
||||
adm_m_in = 52
|
||||
adm_m_out = 53
|
||||
adm_m_adch = 54
|
||||
adm_m_getreg = 55
|
||||
adm_m_setreg = 56
|
||||
adm_m_start = 57
|
||||
adm_m_stop = 58
|
||||
adm_m_write = 59
|
||||
adm_m_read = 60
|
||||
adm_m_ping = 61
|
||||
adm_m_setadr = 62
|
||||
adm_m_joy = 63
|
||||
adm_m_paddle = 64
|
||||
adm_m_pad = 65
|
||||
adm_m_setjoy = 66
|
||||
adm_m_setpad = 67
|
||||
|
||||
adm_m_chan = 70
|
||||
adm_m_regclr = 71
|
||||
adm_m_setvol = 72
|
||||
adm_m_play = 73
|
||||
adm_m_noteon = 74
|
||||
adm_m_noteoff = 75
|
||||
adm_m_setfreq = 76
|
||||
adm_m_setwave = 77
|
||||
adm_m_setpw = 78
|
||||
adm_m_setadsr = 79
|
||||
adm_m_setres = 80
|
||||
adm_m_setcoff = 81
|
||||
adm_m_setfmask = 82
|
||||
adm_m_setftype = 83
|
||||
adm_m_ringmod = 84
|
||||
adm_m_sync = 85
|
||||
|
||||
adm_m_getspec = 97 'spezifikation abfragen
|
||||
adm_m_getver = 98 'codeversion abfragen
|
||||
adm_m_reboot = 99 'neu starten
|
||||
|
||||
'plexbus
|
||||
adm_sda = 19 'i2c-datenpin
|
||||
adm_scl = 20 'i2c-clockpin
|
||||
adm_int1 = 21 'interrupt port 1&2
|
||||
adm_int2 = 22 'interrupt port 3
|
||||
|
||||
|
||||
con ' bellatrix-funktionen
|
||||
|
|
109
lib/reg-ios.spin
109
lib/reg-ios.spin
|
@ -28,6 +28,7 @@ Administra
|
|||
scr : Screeninterface
|
||||
hss : Hydra-Soundsystem
|
||||
sfx : Sound-FX
|
||||
plx : Gamedevices & Plexbus
|
||||
|
||||
Bellatrix
|
||||
key : Keyboardroutinen
|
||||
|
@ -484,7 +485,7 @@ PUB admload(stradr)|dmu 'chip-mgr: neuen adminis
|
|||
''busprotokoll : [096][sub_putstr.fn]
|
||||
'' : fn - dateiname des neuen administra-codes
|
||||
|
||||
bus_putchar1(gc#a_mgrALoad) 'aktuelles userdir retten
|
||||
bus_putchar1(gc#a_mgrALoad)
|
||||
bus_putstr1(stradr)
|
||||
waitcnt(cnt + clkfreq*3) 'warte bis administra fertig ist
|
||||
|
||||
|
@ -1493,22 +1494,22 @@ PUB sid_sdmpplay(stradr): err 'sid: dmp-datei stereo a
|
|||
bus_putstr1(stradr)
|
||||
err := bus_getchar1
|
||||
|
||||
PUB sid_dmpstop
|
||||
PUB sid_dmpstop 'sid: dmp-player anhalten
|
||||
bus_putchar1(gc#a_s_dmpstop)
|
||||
|
||||
PUB sid_dmppause
|
||||
PUB sid_dmppause 'sid: dmp-player pausieren
|
||||
bus_putchar1(gc#a_s_dmppause)
|
||||
|
||||
PUB sid_dmpstatus: status
|
||||
PUB sid_dmpstatus: status 'sid: dmp-player status abfragen
|
||||
bus_putchar1(gc#a_s_dmpstatus)
|
||||
status := bus_getchar1
|
||||
|
||||
PUB sid_dmppos: wert
|
||||
PUB sid_dmppos: wert 'sid: dmp-player playposition abfragen
|
||||
bus_putchar1(gc#a_s_dmppos)
|
||||
wert := bus_getlong1
|
||||
bus_getlong1
|
||||
|
||||
PUB sid_dmplen: wert
|
||||
PUB sid_dmplen: wert 'sid: dmp-datei länge abfragen
|
||||
bus_putchar1(gc#a_s_dmppos)
|
||||
bus_getlong1
|
||||
wert := bus_getlong1
|
||||
|
@ -1726,6 +1727,98 @@ PUB com_rx:char 'com: zeichen empfangen
|
|||
bus_putchar1(gc#a_comRx)
|
||||
char := bus_getchar1
|
||||
|
||||
CON ''------------------------------------------------- Plexbus und Gamedevices
|
||||
|
||||
PUB plxrun 'plx: bus freigeben, poller starten
|
||||
|
||||
bus_putchar1(gc#a_plxRun)
|
||||
|
||||
PUB plxhalt 'plx: bus anfordern, poller anhalten
|
||||
|
||||
bus_putchar1(gc#a_plxHalt)
|
||||
|
||||
PUB plxin(adr):wert 'plx: port einlesen
|
||||
|
||||
bus_putchar1(gc#a_plxIn)
|
||||
bus_putchar1(adr)
|
||||
wert := bus_getchar1
|
||||
|
||||
PUB plxout(adr,wert) 'plx: port ausgeben
|
||||
|
||||
|
||||
bus_putchar1(gc#a_plxOut)
|
||||
bus_putchar1(adr)
|
||||
bus_putchar1(wert)
|
||||
|
||||
PUB plxch(adr,chan):wert 'plx: ad-wandlerkanal abfragen
|
||||
|
||||
bus_putchar1(gc#a_plxCh)
|
||||
bus_putchar1(adr)
|
||||
bus_putchar1(chan)
|
||||
wert := bus_getchar1
|
||||
|
||||
PUB plxgetreg(regnr):wert 'plx: poller-register lesen
|
||||
|
||||
bus_putchar1(gc#a_plxGetReg)
|
||||
bus_putchar1(regnr)
|
||||
wert := bus_getchar1
|
||||
|
||||
PUB plxsetreg(regnr,wert) 'plx: poller-register schreiben
|
||||
|
||||
bus_putchar1(gc#a_plxSetReg)
|
||||
bus_putchar1(regnr)
|
||||
bus_putchar1(wert)
|
||||
|
||||
PUB plxstart 'plx: i2c-dialog starten
|
||||
|
||||
bus_putchar1(gc#a_plxStart)
|
||||
|
||||
PUB plxstop 'plx: i2c-dialog beenden
|
||||
|
||||
bus_putchar1(gc#a_plxStop)
|
||||
|
||||
PUB plxwrite(wert):ack 'plx: i2c byte schreiben
|
||||
|
||||
bus_putchar1(gc#a_plxWrite)
|
||||
bus_putchar1(wert)
|
||||
ack := bus_getchar1
|
||||
|
||||
PUB plxread(ack):wert 'plx: i2c byte lesen
|
||||
|
||||
bus_putchar1(gc#a_plxRead)
|
||||
bus_putchar1(ack)
|
||||
wert := bus_getchar1
|
||||
|
||||
PUB plxping(adr):ack 'plx: device abfragen
|
||||
|
||||
bus_putchar1(gc#a_plxPing)
|
||||
bus_putchar1(adr)
|
||||
ack := bus_getchar1
|
||||
|
||||
PUB plxsetadr(adradda,adrport) 'plx: adressen adda/port für poller setzen
|
||||
|
||||
bus_putchar1(gc#a_plxSetAdr)
|
||||
bus_putchar1(adradda)
|
||||
bus_putchar1(adrport)
|
||||
|
||||
PUB joy:wert 'game: joystick abfragen
|
||||
|
||||
bus_putchar1(gc#a_Joy)
|
||||
wert := bus_getchar1
|
||||
|
||||
PUB paddle:wert 'game: paddle abfrage
|
||||
|
||||
bus_putchar1(gc#a_Paddle)
|
||||
wert := wert + bus_getchar1 << 8
|
||||
wert := wert + bus_getchar1
|
||||
|
||||
PUB pad:wert 'game: pad abfrage
|
||||
|
||||
bus_putchar1(gc#a_Pad)
|
||||
wert := wert + bus_getchar1 << 16
|
||||
wert := wert + bus_getchar1 << 8
|
||||
wert := wert + bus_getchar1
|
||||
|
||||
OBJ '' B E L L A T R I X
|
||||
|
||||
CON ''------------------------------------------------- CHIP-MANAGMENT
|
||||
|
@ -1950,6 +2043,10 @@ PUB printcstr(eadr) | i,len 'screen: bildschirmausga
|
|||
eadr++
|
||||
bus_putchar2(ram_rdbyte(1,eadr))
|
||||
|
||||
PUB printblk(stringptr,strlen) 'screen: bildschirmausgabe eines strings definierter länge
|
||||
|
||||
repeat strlen
|
||||
bus_putchar2(byte[stringptr++])
|
||||
|
||||
PUB printdec(value) | i 'screen: dezimalen zahlenwert auf bildschirm ausgeben
|
||||
{{printdec(value) - screen: dezimale bildschirmausgabe zahlenwertes}}
|
||||
|
|
2
make.bat
2
make.bat
|
@ -28,7 +28,7 @@ REM ----------------------------------------------------------------
|
|||
REM Flashdateien erzeugen
|
||||
REM --> \bin\flash
|
||||
|
||||
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_HSS -D __ADM_HSS_PLAY -D __ADM_WAV -D __ADM_RTC -D __ADM_COM -b -O a .\flash\administra\admflash.spin
|
||||
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_HSS -D __ADM_HSS_PLAY -D __ADM_WAV -D __ADM_RTC -D __ADM_COM -D __ADM_PLX -b -O a .\flash\administra\admflash.spin
|
||||
copy admflash.binary %flash%
|
||||
move admflash.binary %sdsys%\admsys.adm
|
||||
|
||||
|
|
2
make.sh
2
make.sh
|
@ -25,7 +25,7 @@ mkdir ${flash}
|
|||
# Flashdateien erzeugen
|
||||
# --> bin/flash
|
||||
|
||||
${BSTC} -L ${libpath} ${D} -D __ADM_FAT -D __ADM_HSS -D __ADM_HSS_PLAY -D __ADM_WAV -D __ADM_RTC -D __ADM_COM -b -O a flash/administra/admflash.spin
|
||||
${BSTC} -L ${libpath} ${D} -D __ADM_FAT -D __ADM_HSS -D __ADM_HSS_PLAY -D __ADM_WAV -D __ADM_RTC -D __ADM_COM -D __ADM_PLX -b -O a flash/administra/admflash.spin
|
||||
cp admflash.binary ${flash}
|
||||
mv admflash.binary ${sdsys}/admsys.adm
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
#! /bin/sh
|
||||
|
||||
# Definitionen
|
||||
VERSION="57"
|
||||
|
||||
# Pfade
|
||||
ARCHIV="HIVE-TriOS-R${VERSION}"
|
||||
MAKE="./make.sh"
|
||||
BIN="Bin"
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# Alte Versionen löschen
|
||||
|
||||
rm -rf ../${BIN}
|
||||
rm -f "../${ARCHIV}-bin.zip"
|
||||
rm -f "../${ARCHIV}-src.zip"
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# Binaries erstellen
|
||||
|
||||
${MAKE}
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# Archive erstellen
|
||||
|
||||
mkdir .tmp
|
||||
for file in *.md ; do cp "$file" .tmp/"${file/.md}".txt ; done
|
||||
cd .tmp
|
||||
zip -r9 ../../${ARCHIV}-bin.zip *
|
||||
zip -r9 ../../${ARCHIV}-src.zip *
|
||||
cd ..
|
||||
rm -rf .tmp
|
||||
|
||||
zip -r9 ../${ARCHIV}-src.zip flash forth lib system make*
|
||||
|
||||
cd ..
|
||||
zip -r9 ${ARCHIV}-bin.zip ${BIN}
|
|
@ -18,21 +18,23 @@ Funktion :
|
|||
Komponenten : -
|
||||
COG's : -
|
||||
Logbuch :
|
||||
|
||||
27-04-2013-dr235 - erste version
|
||||
01-11-2013-dr235 - redraw/geschwindigkeit verbessert
|
||||
- div. kleine Optimierungen und Detailverbesserungen
|
||||
|
||||
Kommandoliste :
|
||||
Notizen :
|
||||
|
||||
- view nach f9
|
||||
- tab in wbox
|
||||
|
||||
}}
|
||||
|
||||
OBJ
|
||||
|
||||
ios : "reg-ios"
|
||||
dlbox[2] : "gui-dlbox"
|
||||
pbar : "gui-pbar"
|
||||
wbox : "gui-wbox"
|
||||
input : "gui-input"
|
||||
dlbox[2] : "gui-dlbox" 'die beiden dateifenster
|
||||
pbar : "gui-pbar" 'progress-bar
|
||||
wbox : "gui-wbox" 'warnbox
|
||||
input : "gui-input" 'eingabedialog
|
||||
fm : "fm-con"
|
||||
gc : "glob-con"
|
||||
str : "glob-string"
|
||||
|
@ -53,51 +55,48 @@ VAR
|
|||
byte w_pos[2] 'positionen im fenster
|
||||
byte w_view[2] 'startposition des fensters
|
||||
byte w_cols[2] 'anzahl der spalten im fenster
|
||||
byte w_drives[2] 'zugeordnete drives
|
||||
|
||||
byte w0_list[fm#MAX_BUFFER] 'aktuelles verzeichnis
|
||||
byte w0_flags[fm#MAX_FILES] 'selected, directory usw.
|
||||
byte w0_list[fm#MAX_BUFFER] 'verzeichnisliste sdcard
|
||||
byte w0_flags[fm#MAX_FILES] 'flags (selktiert, typ)
|
||||
long w0_len[fm#MAX_FILES] 'dateilängen
|
||||
byte w0_number 'anzahl der files
|
||||
byte w0_number 'anzahl der dateien
|
||||
|
||||
byte w1_list[fm#MAX_BUFFER]
|
||||
byte w1_flags[fm#MAX_FILES]
|
||||
long w1_len[fm#MAX_FILES]
|
||||
byte w1_number
|
||||
byte w1_list[fm#MAX_BUFFER] 'verzeichnisliste ramdrive
|
||||
byte w1_flags[fm#MAX_FILES] 'flags
|
||||
long w1_len[fm#MAX_FILES] 'dateilängen
|
||||
byte w1_number 'anzahl der dateien
|
||||
|
||||
PUB main | key
|
||||
|
||||
init
|
||||
dlbox[0].focus
|
||||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
repeat
|
||||
key := ios.keywait
|
||||
case key
|
||||
gc#KEY_CURUP: f_curup
|
||||
gc#KEY_CURDOWN: f_curdown
|
||||
gc#KEY_CURLEFT: f_curleft
|
||||
gc#KEY_CURRIGHT: f_curright
|
||||
gc#KEY_PAGEUP: f_pageup
|
||||
gc#KEY_PAGEDOWN: f_pagedown
|
||||
gc#KEY_RETURN: f_open
|
||||
gc#KEY_BS: f_back
|
||||
gc#KEY_SPACE: f_select
|
||||
gc#KEY_ESC:
|
||||
gc#KEY_TAB: f_focus
|
||||
gc#KEY_POS1: f_pos1
|
||||
gc#KEY_F01: f_view
|
||||
gc#KEY_F02: f_del
|
||||
gc#KEY_F03: f_load
|
||||
gc#KEY_F04: f_save
|
||||
gc#KEY_F05: f_empty
|
||||
gc#KEY_F06: f_mount
|
||||
gc#KEY_F07: f_mkdir
|
||||
gc#KEY_F08: f_selall
|
||||
gc#KEY_F09: f_full
|
||||
gc#KEY_F10: f_quit
|
||||
gc#KEY_CURUP: f_curup
|
||||
gc#KEY_CURDOWN: f_curdown
|
||||
gc#KEY_CURLEFT: f_curleft
|
||||
gc#KEY_CURRIGHT: f_curright
|
||||
gc#KEY_PAGEUP: f_pageup
|
||||
gc#KEY_PAGEDOWN: f_pagedown
|
||||
gc#KEY_RETURN: f_open
|
||||
gc#KEY_BS: f_back
|
||||
gc#KEY_SPACE: f_select
|
||||
gc#KEY_ESC: f_menu
|
||||
gc#KEY_TAB: f_focus
|
||||
gc#KEY_POS1: f_pos1
|
||||
gc#KEY_F01: f_view
|
||||
gc#KEY_F02: f_del
|
||||
gc#KEY_F03: f_load
|
||||
gc#KEY_F04: f_save
|
||||
gc#KEY_F05: f_empty
|
||||
gc#KEY_F06: f_mount
|
||||
gc#KEY_F07: f_mkdir
|
||||
gc#KEY_F08: f_selall
|
||||
gc#KEY_F09: f_full
|
||||
gc#KEY_F10: f_quit
|
||||
"m": f_menu
|
||||
"q": f_quit
|
||||
|
||||
|
||||
PRI init
|
||||
|
||||
|
@ -112,8 +111,6 @@ PRI init
|
|||
w_view[0] := w_view[1] := 0
|
||||
w_cols[0] := (fm#W1X2-fm#W1X1)/(fm#MAX_LEN+2)
|
||||
w_cols[1] := (fm#W2X2-fm#W2X1)/(fm#MAX_LEN+2)
|
||||
w_drives[0] := fm#DR_SD
|
||||
w_drives[1] := fm#DR_RAM
|
||||
fname[0] := 0
|
||||
|
||||
frame_draw
|
||||
|
@ -128,19 +125,24 @@ PRI init
|
|||
wbox.define(5,fm#W4X1,fm#W4Y1,fm#W4X2,fm#W4Y2)
|
||||
input.define(6,fm#W4X1,fm#W4Y1,fm#W4X2,fm#W4Y2,12)
|
||||
|
||||
dlbox[0].focus
|
||||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI f_mount
|
||||
|
||||
PRI f_mount 'fkt: mount/unmount sd-card
|
||||
|
||||
if fl_mounted
|
||||
ios.sdunmount
|
||||
repeat
|
||||
wbox.draw(@str5,@str2,@str3) == 1
|
||||
wbox.draw(@str5,@str2,@str6)
|
||||
while ios.sdmount
|
||||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI f_mkdir
|
||||
PRI f_mkdir 'fkt: verzeichnis erstellen
|
||||
|
||||
ios.sdnewdir(input.draw(string("Name eingeben : ")))
|
||||
w0_clrlist
|
||||
|
@ -149,22 +151,24 @@ PRI f_mkdir
|
|||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI f_selall | i
|
||||
PRI f_selall | i 'fkt: alle dateien im verzeichnis selektieren
|
||||
|
||||
i := 0
|
||||
case w_sel
|
||||
0: repeat w0_number
|
||||
0: i := 2 'std-einträge . .. auslassen
|
||||
repeat w0_number
|
||||
w0_flags[i++] ^= fm#FL_SEL
|
||||
1: repeat w1_number
|
||||
1: i := 0
|
||||
repeat w1_number
|
||||
w1_flags[i++] ^= fm#FL_SEL
|
||||
dlbox[w_sel].redraw
|
||||
|
||||
PRI f_pos1
|
||||
PRI f_pos1 'fkt: homeposition im fenster
|
||||
|
||||
w_pos[w_sel] := 0
|
||||
dlbox[w_sel].setpos(w_pos[w_sel])
|
||||
|
||||
PRI f_full
|
||||
PRI f_full 'fkt: fenster maximieren
|
||||
|
||||
if w_sel
|
||||
dlbox[1].defocus
|
||||
|
@ -181,7 +185,7 @@ PRI f_full
|
|||
dlbox[1].draw
|
||||
w_sel := 0
|
||||
|
||||
PRI f_open
|
||||
PRI f_open 'fkt: verzeichnis öffnen
|
||||
|
||||
'nur fenster 1 und verzeichnisse
|
||||
if (w_sel == 0) & (w0_flags[w_view[w_sel] + w_pos[w_sel]] & fm#FL_DIR)
|
||||
|
@ -191,7 +195,7 @@ PRI f_open
|
|||
dlbox[w_sel].draw
|
||||
info_print
|
||||
|
||||
PRI f_back
|
||||
PRI f_back 'fkt: verzeichnisebene zurück
|
||||
|
||||
ios.sdchdir(string(".."))
|
||||
w0_clrlist
|
||||
|
@ -199,7 +203,7 @@ PRI f_back
|
|||
dlbox[w_sel].redraw
|
||||
info_print
|
||||
|
||||
PRI f_curup
|
||||
PRI f_curup 'fkt: cursor hoch
|
||||
|
||||
if w_pos[w_sel] > 1
|
||||
w_pos[w_sel] -= dlbox[w_sel].getcols
|
||||
|
@ -207,7 +211,7 @@ PRI f_curup
|
|||
info_print
|
||||
dir := 0
|
||||
|
||||
PRI f_curdown
|
||||
PRI f_curdown 'fkt: cursor runter
|
||||
|
||||
if w_pos[w_sel] < (fm#WROWS * w_cols[w_sel] - dlbox[w_sel].getcols)
|
||||
w_pos[w_sel] += dlbox[w_sel].getcols
|
||||
|
@ -215,7 +219,7 @@ PRI f_curdown
|
|||
info_print
|
||||
dir := 1
|
||||
|
||||
PRI f_curleft
|
||||
PRI f_curleft 'fkt: cursor links
|
||||
|
||||
if w_pos[w_sel]
|
||||
w_pos[w_sel]--
|
||||
|
@ -223,7 +227,7 @@ PRI f_curleft
|
|||
info_print
|
||||
dir := 0
|
||||
|
||||
PRI f_curright
|
||||
PRI f_curright 'fkt: cursor rechts
|
||||
|
||||
if w_pos[w_sel] < (fm#WROWS * w_cols[w_sel] - 1)
|
||||
w_pos[w_sel]++
|
||||
|
@ -231,7 +235,7 @@ PRI f_curright
|
|||
info_print
|
||||
dir := 1
|
||||
|
||||
PRI f_pageup
|
||||
PRI f_pageup 'fkt: seite zurück
|
||||
|
||||
if (w_view[w_sel] - fm#WROWS * w_cols[w_sel]) => 0
|
||||
w_view[w_sel] -= fm#WROWS * w_cols[w_sel]
|
||||
|
@ -240,7 +244,7 @@ PRI f_pageup
|
|||
w_pos[w_sel] := fm#WROWS * w_cols[w_sel] - 1
|
||||
dlbox[w_sel].setpos(w_pos[w_sel])
|
||||
|
||||
PRI f_pagedown | number
|
||||
PRI f_pagedown | number 'fkt: seite weiter
|
||||
|
||||
case w_sel
|
||||
0: number := w0_number
|
||||
|
@ -252,18 +256,22 @@ PRI f_pagedown | number
|
|||
w_pos[w_sel] := 0
|
||||
dlbox[w_sel].setpos(w_pos[w_sel])
|
||||
|
||||
PRI f_select | i
|
||||
PRI f_select | i 'fkt: datei selektieren
|
||||
|
||||
i := w_view[w_sel] + w_pos[w_sel]
|
||||
'flag in liste setzen
|
||||
case w_sel
|
||||
0: w0_flags[i] ^= fm#FL_SEL
|
||||
1: w1_flags[i] ^= fm#FL_SEL
|
||||
dlbox[w_sel].redraw
|
||||
'aktuelle position neu zeichnen
|
||||
dlbox[w_sel].setpos(w_pos[w_sel])
|
||||
'cursor bewegen
|
||||
case dir
|
||||
0: f_curleft
|
||||
1: f_curright
|
||||
dlbox[w_sel].setpos(w_pos[w_sel])
|
||||
|
||||
PRI f_focus
|
||||
PRI f_focus 'fkt: fokus auf anderes fenster
|
||||
|
||||
ifnot fl_full
|
||||
dlbox[w_sel].defocus
|
||||
|
@ -274,14 +282,27 @@ ifnot fl_full
|
|||
dlbox[w_sel].focus
|
||||
info_print
|
||||
|
||||
PRI f_quit
|
||||
PRI f_quit 'fkt: fm beenden
|
||||
|
||||
ios.sddmset(ios#DM_USER) 'regime soll in diesem verzeichnis landen
|
||||
ios.winset(0)
|
||||
ios.screeninit
|
||||
ios.stop
|
||||
if wbox.draw(@str7,@str3,@str2) == 2
|
||||
ios.sddmset(ios#DM_USER) 'regime soll in diesem verzeichnis landen
|
||||
ios.winset(0)
|
||||
ios.screeninit
|
||||
ios.stop
|
||||
else
|
||||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI f_load | i
|
||||
PRI f_menu 'fkt: extra-menü aufrufen
|
||||
|
||||
wbox.draw(string("Menü: Nicht implementiert!"),string("ok"),@str6)
|
||||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
|
||||
PRI f_load | i 'fkt: sdcard --> ramdrive
|
||||
|
||||
pbar.setmaxbar(w0_number)
|
||||
i := 0
|
||||
|
@ -297,7 +318,7 @@ PRI f_load | i
|
|||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
|
||||
PRI f_save | i
|
||||
PRI f_save | i 'fkt: ramdrive --> sdcard
|
||||
|
||||
pbar.setmaxbar(w1_number)
|
||||
i := 0
|
||||
|
@ -313,7 +334,7 @@ PRI f_save | i
|
|||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
|
||||
PRI f_del | i
|
||||
PRI f_del | i 'fkt: dateien löschen
|
||||
|
||||
if wbox.draw(@str1,@str2,@str3) == 1
|
||||
pbar.setmaxbar(w0_number)
|
||||
|
@ -331,7 +352,7 @@ dlbox[0].draw
|
|||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI f_empty
|
||||
PRI f_empty 'fkt: ramdrive löschen
|
||||
|
||||
if wbox.draw(@str4,@str2,@str3) == 1
|
||||
ios.ram_wrlong(ios#sysmod,ios#SYSVAR,ios#RAMEND) 'Zeiger auf letzte freie Speicherzelle setzen
|
||||
|
@ -348,7 +369,13 @@ dlbox[w_sel].setview(w_view[1])
|
|||
info_print
|
||||
|
||||
|
||||
PRI f_view | n,stradr,ch,lch
|
||||
PRI f_view 'fkt: textdatei anzeigen
|
||||
|
||||
case w_sel
|
||||
0: f_view0
|
||||
1: f_view1
|
||||
|
||||
PRI f_view0 | n,stradr,ch,lch 'fkt: texdatei von sd anzeigen
|
||||
|
||||
ios.winset(3)
|
||||
ios.curoff
|
||||
|
@ -370,7 +397,8 @@ PRI f_view | n,stradr,ch,lch
|
|||
ios.sdclose
|
||||
ios.printcls
|
||||
dlbox[0].redraw
|
||||
dlbox[1].redraw
|
||||
ifnot fl_full
|
||||
dlbox[1].redraw
|
||||
return
|
||||
else
|
||||
lch := 0
|
||||
|
@ -387,7 +415,49 @@ PRI f_view | n,stradr,ch,lch
|
|||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI w0_clrlist | i
|
||||
|
||||
PRI f_view1 | n,stradr,fn,len,ch,lch 'fkt: textdatei von ramdrive anzeigen
|
||||
|
||||
ios.winset(3)
|
||||
ios.curoff
|
||||
ios.printcls
|
||||
|
||||
stradr := get_fname(w_view[w_sel] + w_pos[w_sel])
|
||||
n := 1
|
||||
lch := 0
|
||||
fn := ios.rd_open(stradr) 'datei öffnen
|
||||
ifnot fn == -1
|
||||
len := ios.rd_len(fn)
|
||||
repeat len 'text ausgeben
|
||||
ch := ios.printchar(ios.rd_get(fn))
|
||||
if ch == ios#CHAR_NL OR ch == $0a 'CR or NL
|
||||
if ch == lch OR (lch <> ios#CHAR_NL AND lch <> $0a)
|
||||
ios.printnl
|
||||
lch := ch
|
||||
if ++n == (fm#W3Y2 - 2)
|
||||
n := 1
|
||||
if ios.keywait == "q"
|
||||
ios.rd_close(fn)
|
||||
ios.printcls
|
||||
dlbox[0].redraw
|
||||
ifnot fl_full
|
||||
dlbox[1].redraw
|
||||
return
|
||||
else
|
||||
lch := 0
|
||||
else
|
||||
ios.printchar(ch)
|
||||
lch := ch
|
||||
ios.print(string(13,"[EOF]"))
|
||||
ios.keywait
|
||||
ios.sdclose 'datei schließen
|
||||
|
||||
ios.printcls
|
||||
dlbox[0].draw
|
||||
dlbox[1].draw
|
||||
info_print
|
||||
|
||||
PRI w0_clrlist | i 'fenster 0: dateiliste löschen
|
||||
|
||||
i := 0
|
||||
repeat fm#MAX_FILES
|
||||
|
@ -400,7 +470,7 @@ PRI w0_clrlist | i
|
|||
i++
|
||||
|
||||
|
||||
PRI w1_clrlist | i
|
||||
PRI w1_clrlist | i 'fenster 1: dateiliste löschen
|
||||
|
||||
i := 0
|
||||
repeat fm#MAX_FILES
|
||||
|
@ -412,7 +482,7 @@ PRI w1_clrlist | i
|
|||
w1_list[i] := " "
|
||||
i++
|
||||
|
||||
PRI w0_readdir | stradr,i,j
|
||||
PRI w0_readdir | stradr,i,j 'fenster 0: dateiliste einlesen
|
||||
|
||||
i := 0
|
||||
ios.sddir
|
||||
|
@ -429,10 +499,11 @@ PRI w0_readdir | stradr,i,j
|
|||
|
||||
w0_number := i
|
||||
|
||||
PRI w1_readdir | stradr,i,j
|
||||
PRI w1_readdir | stradr,i,j 'fenster 1: dateiliste einlesen
|
||||
|
||||
i := 0
|
||||
ios.rd_dir
|
||||
ios.rd_next 'ramdrive-label überspringen
|
||||
repeat while (stradr := ios.rd_next)
|
||||
j := 0
|
||||
repeat fm#MAX_LEN
|
||||
|
@ -442,7 +513,7 @@ PRI w1_readdir | stradr,i,j
|
|||
w1_len[i] := ios.rd_dlen
|
||||
w1_number := i
|
||||
|
||||
PRI get_fname(fnr):adrdat | i,stradr
|
||||
PRI get_fname(fnr):adrdat | i,stradr 'datei: dateinamen aus liste holrn
|
||||
|
||||
i := fm#MAX_LEN * fnr
|
||||
case w_sel
|
||||
|
@ -456,7 +527,7 @@ PRI get_fname(fnr):adrdat | i,stradr
|
|||
fname[i] := 0
|
||||
return @fname
|
||||
|
||||
PRI load(stradr) | len,fnr,i
|
||||
PRI load(stradr) | len,fnr,i 'datei: datei --> ramdrive
|
||||
|
||||
ifnot ios.sdopen("r",stradr) 'datei öffnen
|
||||
len := ios.sdfattrib(ios#F_SIZE)
|
||||
|
@ -468,7 +539,7 @@ PRI load(stradr) | len,fnr,i
|
|||
ios.sdclose
|
||||
ios.rd_close(fnr)
|
||||
|
||||
PRI save(stradr) | fnr,len,i
|
||||
PRI save(stradr) | fnr,len,i 'datei: ramdrive --> datei
|
||||
|
||||
fnr := ios.rd_open(stradr)
|
||||
ifnot fnr == -1
|
||||
|
@ -481,7 +552,7 @@ PRI save(stradr) | fnr,len,i
|
|||
ios.rd_close(fnr)
|
||||
|
||||
|
||||
PRI frame_draw
|
||||
PRI frame_draw 'screen: bildschirmmaske ausgeben
|
||||
|
||||
ios.winset(0)
|
||||
ios.curoff
|
||||
|
@ -498,7 +569,7 @@ PRI frame_draw
|
|||
ios.printq(string(" 1: View | 2: Del | 3: SD>>RAM ◀▶ 4: SD<<RAM | 5: RAM Clear "))
|
||||
ios.setcolor(fm#COL_DEFAULT)
|
||||
|
||||
PRI info_print | pos,len
|
||||
PRI info_print | pos,len 'screen: infozeile ausgeben
|
||||
|
||||
pos := w_view[w_sel] + w_pos[w_sel]
|
||||
case w_sel
|
||||
|
@ -521,7 +592,7 @@ PRI info_print | pos,len
|
|||
ios.printdec(ios.ram_getfree)
|
||||
ios.print(string(" Bytes free"))
|
||||
|
||||
PRI testvideo 'passt div. variablen an videomodus an
|
||||
PRI testvideo 'screen: passt div. variablen an videomodus an
|
||||
|
||||
vidmod := ios.belgetspec & 1
|
||||
rows := ios.belgetrows 'zeilenzahl bei bella abfragen
|
||||
|
@ -531,13 +602,15 @@ PRI pause(sec)
|
|||
|
||||
waitcnt(cnt+clkfreq*sec)
|
||||
|
||||
DAT
|
||||
DAT 'strings
|
||||
|
||||
str1 byte "Dateien löschen?",0
|
||||
str2 byte "Ja",0
|
||||
str3 byte "Nein",0
|
||||
str4 byte "RAMDrive löschen?",0
|
||||
str5 byte "SD-Card mounten?",0
|
||||
str6 byte 0
|
||||
str7 byte "Programm beenden?",0
|
||||
|
||||
DAT
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ OBJ
|
|||
str: "glob-string"
|
||||
num: "glob-numbers" 'Number Engine
|
||||
gc : "glob-con"
|
||||
led: "led-engine"
|
||||
led: "glob-led-engine"
|
||||
|
||||
CON
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ PUB main | i,n,len,ch,lch
|
|||
repeat i from 0 to 3 'extender anhängen
|
||||
byte[@parastr][len + i] := byte[@ext1][i]
|
||||
byte[@parastr][len + i] := 0
|
||||
ios.admsetsyssnd(0) 'systemklänge aus (nervt!)
|
||||
ifnot ios.sdopen("r",@parastr)
|
||||
repeat 'text ausgeben
|
||||
ch := ios.sdgetc
|
||||
|
@ -78,6 +79,7 @@ PUB main | i,n,len,ch,lch
|
|||
'ios.print(string("Hilfetexte : ",$0d))
|
||||
cmd_dir_w(1)
|
||||
ios.sdclose 'datei schließen
|
||||
ios.admsetsyssnd(1) 'systemklänge wieder ein
|
||||
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
||||
ios.stop
|
||||
|
||||
|
|
|
@ -0,0 +1,495 @@
|
|||
{{
|
||||
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ Autor: Ingo Kripahle │
|
||||
│ Copyright (c) 2010 Ingo Kripahle │
|
||||
│ See end of file for terms of use. │
|
||||
│ Die Nutzungsbedingungen befinden sich am Ende der Datei │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
Informationen : hive-project.de
|
||||
Kontakt : drohne235@googlemail.com
|
||||
System : TriOS
|
||||
Name : blexbus-tool
|
||||
Chip : Regnatix
|
||||
Typ : Programm
|
||||
Version :
|
||||
Subversion :
|
||||
|
||||
Logbuch :
|
||||
|
||||
31-10-2013-dr235 - erste version
|
||||
|
||||
Kommandoliste:
|
||||
|
||||
Notizen:
|
||||
|
||||
|
||||
|
||||
}}
|
||||
|
||||
OBJ
|
||||
ios: "reg-ios"
|
||||
num: "glob-numbers"
|
||||
|
||||
CON
|
||||
|
||||
_CLKMODE = XTAL1 + PLL16X
|
||||
_XINFREQ = 5_000_000
|
||||
|
||||
OS_TIBLEN = 64 'gr??e des inputbuffers
|
||||
|
||||
|
||||
VAR
|
||||
'systemvariablen
|
||||
byte tib[OS_TIBLEN] 'tastatur-input-buffer
|
||||
byte cmdstr[OS_TIBLEN] 'kommandostring f?r interpreter
|
||||
byte token1[OS_TIBLEN] 'parameterstring 1 für interpreter
|
||||
byte token2[OS_TIBLEN] 'parameterstring 2 für interpreter
|
||||
byte tibpos 'aktuelle position im tib
|
||||
long ppos 'puffer für adresse
|
||||
long pcnt 'puffer für zeilenzahl
|
||||
|
||||
byte device 'adresse des geöffneten devices
|
||||
byte polling 'status polling
|
||||
byte open 'status device
|
||||
|
||||
PUB main | wflag
|
||||
|
||||
ios.start 'ios initialisieren
|
||||
polling := 1
|
||||
ios.plxRun
|
||||
ios.printnl
|
||||
|
||||
' ios.print(string("Perplex - PlexBus-Tool - DR235",$0d,$0d))
|
||||
|
||||
repeat
|
||||
os_cmdinput 'kommandoeingabe
|
||||
os_cmdint 'kommandozeileninterpreter
|
||||
|
||||
PUB os_cmdinput | charc 'sys: stringeingabe eine zeile
|
||||
''funktionsgruppe : sys
|
||||
''funktion : stringeingabe eine zeile
|
||||
''eingabe : -
|
||||
''ausgabe : -
|
||||
''variablen : tib - eingabepuffer zur string
|
||||
'' : tibpos - aktuelle position im tib
|
||||
|
||||
ios.print(@prompt2)
|
||||
tibpos := 0 'tibposition auf anfang setzen
|
||||
repeat until (charc := ios.keywait) == $0D 'tasten einlesen bis return
|
||||
if (tibpos + 1) < OS_TIBLEN 'zeile noch nicht zu lang?
|
||||
case charc
|
||||
ios#CHAR_BS: 'backspace
|
||||
if tibpos > 0 'noch nicht anfang der zeile erreeicht?
|
||||
tib[tibpos--] := 0 'ein zeichen aus puffer entfernen
|
||||
ios.printbs 'backspace an terminal senden
|
||||
other: 'zeicheneingabe
|
||||
tib[tibpos++] := charc 'zeichen speichern
|
||||
ios.printchar(charc) 'zeichen ausgeben
|
||||
ios.printnl
|
||||
tib[tibpos] := 0 'string abschließen
|
||||
tibpos := charc := 0 'werte rücksetzen
|
||||
|
||||
PUB os_nxtoken1: stradr 'sys: token 1 von tib einlesen
|
||||
''funktionsgruppe : sys
|
||||
''funktion : nächsten token im eingabestring suchen und stringzeiger übergeben
|
||||
''eingabe : -
|
||||
''ausgabe : stradr - adresse auf einen string mit dem gefundenen token
|
||||
''variablen : tib - eingabepuffer zur string
|
||||
'' : tibpos - aktuelle position im tib
|
||||
'' : token - tokenstring
|
||||
|
||||
stradr := os_tokenize(@token1)
|
||||
|
||||
PUB os_nxtoken2: stradr 'sys: token 2 von tib einlesen
|
||||
''funktionsgruppe : sys
|
||||
''funktion : nächsten token im eingabestring suchen und stringzeiger übergeben
|
||||
''eingabe : -
|
||||
''ausgabe : stradr - adresse auf einen string mit dem gefundenen token
|
||||
''variablen : tib - eingabepuffer zur string
|
||||
'' : tibpos - aktuelle position im tib
|
||||
'' : token - tokenstring
|
||||
|
||||
stradr := os_tokenize(@token2)
|
||||
|
||||
PUB os_tokenize(token):stradr | i 'sys: liest nächsten token aus tib
|
||||
|
||||
i := 0
|
||||
if tib[tibpos] <> 0 'abbruch bei leerem string
|
||||
repeat until tib[tibpos] > ios#CHAR_SPACE 'führende leerzeichen ausbenden
|
||||
tibpos++
|
||||
repeat until (tib[tibpos] == ios#CHAR_SPACE) or (tib[tibpos] == 0) 'wiederholen bis leerzeichen oder stringende
|
||||
byte[token][i] := tib[tibpos]
|
||||
tibpos++
|
||||
i++
|
||||
else
|
||||
token := 0
|
||||
byte[token][i] := 0
|
||||
stradr := token
|
||||
|
||||
PUB os_nextpos: tibpos2 'sys: setzt zeiger auf nächste position
|
||||
''funktionsgruppe : sys
|
||||
''funktion : tibpos auf nächstes token setzen
|
||||
''eingabe : -
|
||||
''ausgabe : tibpos2 - position des nächsten tokens in tib
|
||||
''variablen : tib - eingabepuffer zur string
|
||||
'' : tibpos - aktuelle position im tib
|
||||
|
||||
if tib[tibpos] <> 0
|
||||
repeat until tib[tibpos] > ios#CHAR_SPACE 'führende leerzeichen ausbenden
|
||||
tibpos++
|
||||
return tibpos
|
||||
|
||||
PUB os_cmdint 'sys: kommandointerpreter
|
||||
''funktionsgruppe : sys
|
||||
''funktion : kommandointerpreter; zeichenkette ab tibpos wird als kommando interpretiert
|
||||
'' : tibpos wird auf position hinter token gesetzt
|
||||
''eingabe : -
|
||||
''ausgabe : -
|
||||
''variablen : tib - eingabepuffer zur string
|
||||
'' : tibpos - aktuelle position im tib
|
||||
|
||||
repeat 'kommandostring kopieren
|
||||
cmdstr[tibpos] := tib[tibpos]
|
||||
tibpos++
|
||||
until (tib[tibpos] == ios#CHAR_SPACE) or (tib[tibpos] == 0) 'wiederholen bis leerzeichen oder stringende
|
||||
cmdstr[tibpos] := 0 'kommandostring abschließen
|
||||
os_cmdexec(@cmdstr) 'interpreter aufrufen
|
||||
tibpos := 0 'tastaturpuffer zurücksetzen
|
||||
tib[0] := 0
|
||||
|
||||
PUB os_cmdexec(stradr) 'sys: kommando im ?bergebenen string wird als kommando interpretiert
|
||||
{{os_smdexec - das kommando im ?bergebenen string wird als kommando interpretiert
|
||||
stradr: adresse einer stringvariable die ein kommando enth?lt}}
|
||||
if strcomp(stradr,string("help")) 'help
|
||||
ios.print(@help1)
|
||||
elseif strcomp(stradr,string("open"))
|
||||
plx_open
|
||||
elseif strcomp(stradr,string("close"))
|
||||
plx_close
|
||||
elseif strcomp(stradr,string("put"))
|
||||
plx_put
|
||||
elseif strcomp(stradr,string("get"))
|
||||
plx_get
|
||||
elseif strcomp(stradr,string("map"))
|
||||
plx_map
|
||||
elseif strcomp(stradr,string("scan"))
|
||||
plx_scan
|
||||
elseif strcomp(stradr,string("test"))
|
||||
plx_test
|
||||
elseif strcomp(stradr,string("test#"))
|
||||
plx_testnr
|
||||
elseif strcomp(stradr,string("game"))
|
||||
plx_game
|
||||
elseif strcomp(stradr,string("setgame"))
|
||||
plx_setgame
|
||||
elseif strcomp(stradr,string("polloff"))
|
||||
plx_polloff
|
||||
elseif strcomp(stradr,string("pollon"))
|
||||
plx_pollon
|
||||
elseif strcomp(stradr,string("debug"))
|
||||
plx_debug
|
||||
elseif strcomp(stradr,string("status"))
|
||||
plx_status
|
||||
elseif strcomp(stradr,string("plexuswr"))
|
||||
plx_plexuswr
|
||||
elseif strcomp(stradr,string("bye"))
|
||||
ios.stop
|
||||
else 'kommando nicht gefunden
|
||||
ios.print(stradr)
|
||||
ios.print(@prompt3)
|
||||
ios.printnl
|
||||
|
||||
PRI plx_debug|wert,i
|
||||
|
||||
' ios.plxOut($22,cnt)
|
||||
|
||||
' irgendwie funktionieren die direkten i2c-operationen noch nicht
|
||||
' von administra aus funktioniert das gleiche konstrukt
|
||||
' ???
|
||||
|
||||
ios.plxHalt
|
||||
repeat
|
||||
ios.plxStart
|
||||
ios.plxWrite($22 << 1)
|
||||
ios.plxWrite(i++)
|
||||
ios.plxStop
|
||||
waitcnt(cnt+clkfreq/3)
|
||||
ios.printhex(i,2)
|
||||
ios.printchar(" ")
|
||||
|
||||
PRI plx_plexuswr|regadr,regval
|
||||
|
||||
device := num.FromStr(os_nxtoken1,num#HEX)
|
||||
regadr := num.FromStr(os_nxtoken1,num#HEX)
|
||||
regval := num.FromStr(os_nxtoken1,num#HEX)
|
||||
|
||||
ios.plxHalt
|
||||
waitcnt(cnt+clkfreq)
|
||||
|
||||
ios.plxStart
|
||||
ios.plxWrite(device << 1)
|
||||
ios.plxWrite(regadr)
|
||||
ios.plxWrite(regval)
|
||||
ios.plxStop
|
||||
|
||||
waitcnt(cnt+clkfreq)
|
||||
ios.plxRun
|
||||
|
||||
PRI plx_status
|
||||
|
||||
ios.printnl
|
||||
ios.print(string("Device : "))
|
||||
ios.printhex(device,2)
|
||||
if open
|
||||
ios.print(string(" open"))
|
||||
else
|
||||
ios.print(string(" close"))
|
||||
ios.printnl
|
||||
ios.print(string("Polling : "))
|
||||
if polling
|
||||
ios.print(string("ON"))
|
||||
else
|
||||
ios.print(string("OFF"))
|
||||
ios.printnl
|
||||
ios.printnl
|
||||
|
||||
|
||||
PRI plx_polloff
|
||||
|
||||
ios.plxHalt
|
||||
ios.print(string("Poller wurde angehalten!",$0d))
|
||||
polling := 0
|
||||
|
||||
PRI plx_pollon
|
||||
|
||||
ios.plxRun
|
||||
ios.print(string("Poller wurde gestartet!",$0d))
|
||||
polling := 1
|
||||
open := 0
|
||||
|
||||
PRI plx_game|dev,i
|
||||
|
||||
i := 0
|
||||
ios.curoff
|
||||
ios.printcls
|
||||
repeat
|
||||
dev := ios.pad
|
||||
ios.curhome
|
||||
ios.printnl
|
||||
ios.print(string("Scan : "))
|
||||
ios.printdec(i++)
|
||||
ios.printnl
|
||||
ios.print(string("Input : ["))
|
||||
ios.printbin(dev,24)
|
||||
ios.printchar("]")
|
||||
ios.printnl
|
||||
ios.printnl
|
||||
print_joystick(dev >> 16 & $FF)
|
||||
ios.printnl
|
||||
print_paddle(0,dev >> 8 & $FF)
|
||||
print_paddle(1,dev & $FF)
|
||||
until ios.key
|
||||
ios.printnl
|
||||
ios.curon
|
||||
|
||||
PRI plx_setgame|adradda,adrport
|
||||
|
||||
adradda := num.FromStr(os_nxtoken1,num#HEX)
|
||||
adrport := num.FromStr(os_nxtoken1,num#HEX)
|
||||
ios.plxsetadr(adradda,adrport)
|
||||
|
||||
PRI plx_test
|
||||
|
||||
testsepia($48,$20)
|
||||
|
||||
PRI plx_testnr|adradda,adrport
|
||||
|
||||
adradda := num.FromStr(os_nxtoken1,num#HEX)
|
||||
adrport := num.FromStr(os_nxtoken1,num#HEX)
|
||||
testsepia(adradda,adrport)
|
||||
|
||||
PRI plx_map|ack,adr,n,i
|
||||
|
||||
ios.plxHalt
|
||||
n := 0
|
||||
i := 0
|
||||
ios.curoff
|
||||
ios.printcls
|
||||
repeat
|
||||
ios.curhome
|
||||
ios.printnl
|
||||
ios.print(string(" 0123456789ABCDEF"))
|
||||
ios.printnl
|
||||
repeat adr from 0 to 127
|
||||
|
||||
ack := ios.plxping(adr)
|
||||
if n == 0
|
||||
ios.printhex(adr,2)
|
||||
ios.printchar(" ")
|
||||
if ack
|
||||
ios.printqchar("┼")
|
||||
else
|
||||
ios.printqchar("•")
|
||||
if n++ == 15
|
||||
ios.printnl
|
||||
n := 0
|
||||
ios.printnl
|
||||
ios.print(string("Scan : "))
|
||||
ios.printdec(i++)
|
||||
until ios.key
|
||||
ios.printnl
|
||||
ios.curon
|
||||
ios.plxRun
|
||||
|
||||
PRI plx_scan|ack,adr
|
||||
|
||||
ios.plxHalt
|
||||
ios.printnl
|
||||
repeat adr from 0 to 127
|
||||
ack := ios.plxping(adr)
|
||||
ifnot ack
|
||||
ios.print(string("Ping : $"))
|
||||
ios.printhex(adr,2)
|
||||
ios.print(string(" : "))
|
||||
ios.printdec(adr)
|
||||
ios.printnl
|
||||
ios.printnl
|
||||
ios.plxRun
|
||||
|
||||
PRI plx_open|ack
|
||||
|
||||
device := num.FromStr(os_nxtoken1,num#HEX)
|
||||
ios.plxHalt
|
||||
ios.plxStart
|
||||
ifnot ios.plxWrite(device << 1)
|
||||
ios.print(string("Device geöffnet, Polling aus!"))
|
||||
polling := 0
|
||||
open := 1
|
||||
else
|
||||
ios.print(string("Device nicht vorhanden!"))
|
||||
ios.plxRun
|
||||
polling := 1
|
||||
open := 0
|
||||
ios.printnl
|
||||
|
||||
PRI plx_close
|
||||
|
||||
ios.plxRun
|
||||
ios.print(string("Device geschlossen, Polling an!"))
|
||||
ios.printnl
|
||||
polling := 1
|
||||
open := 0
|
||||
|
||||
PRI plx_put|wert
|
||||
|
||||
if open
|
||||
wert := num.FromStr(os_nxtoken1,num#HEX)
|
||||
ios.plxOut(device,wert)
|
||||
else
|
||||
ios.print(string("Kein Device geöffnet!"))
|
||||
ios.printnl
|
||||
|
||||
PRI plx_get
|
||||
|
||||
if open
|
||||
ios.print(string("Get : "))
|
||||
ios.printhex(ios.plxIn(device),2)
|
||||
ios.printnl
|
||||
else
|
||||
ios.print(string("Kein Device geöffnet!"))
|
||||
ios.printnl
|
||||
|
||||
PRI print_chan(cnr,wert)
|
||||
|
||||
ios.print(string("A/D "))
|
||||
ios.printdec(cnr)
|
||||
ios.printchar(" ")
|
||||
ios.printhex(wert,2)
|
||||
ios.printchar(" ")
|
||||
ios.printchar("[")
|
||||
repeat wert>>3
|
||||
ios.printqchar("‣")
|
||||
repeat (255-wert)>>3
|
||||
ios.printqchar(" ")
|
||||
ios.printchar("]")
|
||||
ios.printnl
|
||||
|
||||
PRI print_port(pnr,wert)
|
||||
|
||||
ios.print(string("Port "))
|
||||
ios.printdec(pnr)
|
||||
ios.print(string(" ["))
|
||||
|
||||
repeat 8
|
||||
if wert & 1
|
||||
ios.printqchar("‣")
|
||||
else
|
||||
ios.printqchar(" ")
|
||||
wert := wert >> 1
|
||||
ios.printchar("]")
|
||||
ios.printnl
|
||||
|
||||
PRI print_paddle(cnr,wert)
|
||||
|
||||
ios.print(string("Paddle "))
|
||||
ios.printdec(cnr)
|
||||
ios.printchar(" ")
|
||||
ios.printhex(wert,2)
|
||||
ios.printchar(" ")
|
||||
ios.printchar("[")
|
||||
repeat wert>>3
|
||||
ios.printqchar("‣")
|
||||
repeat (255-wert)>>3
|
||||
ios.printqchar(" ")
|
||||
ios.printchar("]")
|
||||
ios.printnl
|
||||
|
||||
PRI print_joystick(wert)
|
||||
|
||||
ios.print(string("Joystick "))
|
||||
ios.print(string(" ["))
|
||||
|
||||
repeat 8
|
||||
if wert & 1
|
||||
ios.printqchar("‣")
|
||||
else
|
||||
ios.printqchar(" ")
|
||||
wert := wert >> 1
|
||||
ios.printchar("]")
|
||||
ios.printnl
|
||||
|
||||
PRI testsepia(adda,port)
|
||||
|
||||
ios.plxHalt
|
||||
ios.curoff
|
||||
ios.printcls
|
||||
repeat
|
||||
ios.curhome
|
||||
ios.printnl
|
||||
print_port(1,ios.plxIn(port ))
|
||||
print_port(2,ios.plxIn(port+1))
|
||||
print_port(3,ios.plxIn(port+2))
|
||||
ios.printnl
|
||||
print_chan(0,ios.plxch(adda,0))
|
||||
print_chan(1,ios.plxch(adda,1))
|
||||
print_chan(2,ios.plxch(adda,2))
|
||||
print_chan(3,ios.plxch(adda,3))
|
||||
ios.plxout(port+2,!(cnt>>23))
|
||||
until ios.key
|
||||
ios.printnl
|
||||
ios.curon
|
||||
ios.plxRun
|
||||
|
||||
|
||||
DAT
|
||||
prompt1 byte "ok ", $0d, 0
|
||||
prompt2 byte "plx: ", 0
|
||||
prompt3 byte "? ",0
|
||||
wait1 byte "<WEITER? */q:>",0
|
||||
|
||||
help1 file "perplex.txt"
|
||||
byte $0d,0
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
|
||||
openwr <adr> - slave schreibend öffnen
|
||||
openrd <adr> - slave lesend öffnen
|
||||
close - slave schließen
|
||||
put <wert> - zeichen zu plexus senden
|
||||
get - zeichen von plexus empfangen
|
||||
map - slavemap anzeigen
|
||||
scan - anzeige aller slaveadressen
|
||||
test - test für interne sepia-karte
|
||||
test# adda port - test für spezifische sepia-karte
|
||||
game - gamedevice abfragen (pollregister)
|
||||
setgame adda port - adressen für poller setzen adda/port
|
||||
polloff - polling anhalten
|
||||
pollon - polling starten
|
||||
bye - programm beenden
|
||||
|
||||
Parameter hexadezimal!
|
|
@ -79,13 +79,15 @@ PUB main | tast
|
|||
PUB statistik 'ausgabe der fehlerstatistik
|
||||
|
||||
cnt_err := cnt_err + cnt_test1 + cnt_test2 + cnt_test3 + cnt_testx
|
||||
ios.setcolor(4)
|
||||
ios.setcolor(0)
|
||||
ios.printcls
|
||||
ios.printnl
|
||||
ios.print(string("Statistik eRAM-Test:", $0d, $0d))
|
||||
ios.print(string("Testdurchläufe : "))
|
||||
ios.printdec(cnt_loop)
|
||||
ios.printnl
|
||||
ios.printnl
|
||||
ios.setcolor(4)
|
||||
ios.print(string("Fehler Gesamt : "))
|
||||
ios.printdec(cnt_err)
|
||||
ios.printnl
|
||||
|
@ -102,9 +104,6 @@ PUB statistik 'ausgabe der fehlerstati
|
|||
ios.printdec(cnt_testx)
|
||||
ios.printnl
|
||||
ios.printnl
|
||||
ios.print(string("Aktueller Test:", $0d))
|
||||
ios.printnl
|
||||
ios.printnl
|
||||
cnt_test1 := 0
|
||||
cnt_test2 := 0
|
||||
cnt_test3 := 0
|
||||
|
|
|
@ -687,7 +687,7 @@ PRI cmd_color 'cmd: zeichenfarbe wähl
|
|||
|
||||
ios.setcolor(str.decimalToNumber(act_color := os_nxtoken1))
|
||||
|
||||
PRI cmd_sysinfo 'cmd: systeminformationen anzeigen
|
||||
PRI cmd_sysinfo|ack,adr 'cmd: systeminformationen anzeigen
|
||||
|
||||
ios.printnl
|
||||
os_printstr(@msg22,@syst)
|
||||
|
@ -716,6 +716,18 @@ PRI cmd_sysinfo 'cmd: systeminformatione
|
|||
else
|
||||
os_printstr(@msg36,@msg38)
|
||||
|
||||
ios.printnl
|
||||
ios.print(@msg39)
|
||||
ios.plxHalt
|
||||
repeat adr from 0 to 127
|
||||
ack := ios.plxping(adr)
|
||||
ifnot ack
|
||||
ios.print(string(" ["))
|
||||
ios.printhex(adr,2)
|
||||
ios.print(string("]"))
|
||||
ios.printnl
|
||||
ios.plxRun
|
||||
|
||||
PRI cmd_mount | err 'cmd: mount
|
||||
|
||||
repeat 16
|
||||
|
@ -873,17 +885,17 @@ PRI cmd_dir|fcnt,stradr,hflag 'cmd: verzeichnis anzeig
|
|||
ios.print(@msg10)
|
||||
ios.print(@msg5)
|
||||
ios.print(ios.sdvolname)
|
||||
ifnot ios.os_error(ios.sddir) 'verzeichnis öffnen
|
||||
if str.findCharacter(stradr,"h")
|
||||
hflag := 0
|
||||
if str.findCharacter(stradr,"w")
|
||||
fcnt := cmd_dir_w(hflag)
|
||||
else
|
||||
fcnt := cmd_dir_l(hflag) 'dir l
|
||||
ios.printnl
|
||||
ios.print(@msg10)
|
||||
ios.print(@msg9)
|
||||
ios.printdec(fcnt)
|
||||
ios.sddir 'verzeichnis öffnen
|
||||
if str.findCharacter(stradr,"h")
|
||||
hflag := 0
|
||||
if str.findCharacter(stradr,"w")
|
||||
fcnt := cmd_dir_w(hflag)
|
||||
else
|
||||
fcnt := cmd_dir_l(hflag) 'dir l
|
||||
ios.printnl
|
||||
ios.print(@msg10)
|
||||
ios.print(@msg9)
|
||||
ios.printdec(fcnt)
|
||||
else
|
||||
ios.os_error(1)
|
||||
|
||||
|
@ -1076,6 +1088,7 @@ msg35 byte "Bellatrix Auflösung Y :",0
|
|||
msg36 byte "Bellatrix Videomodus : ",0
|
||||
msg37 byte "VGA",0
|
||||
msg38 byte "TV",0
|
||||
msg39 byte "PlexBus Devices : ",0
|
||||
|
||||
ext1 byte ".BIN",0
|
||||
ext2 byte ".ADM",0
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
|
||||
/? : Hilfe
|
||||
/l : Konfiguration anzeigen
|
||||
----------- Administra-Funktionen
|
||||
/ah 0|1 : hss ab-/anschalten
|
||||
/aw 0|1 : wav ab-/anschalten
|
||||
/as 0|1 : systemklänge ab-/anschalten
|
||||
/al 0..100 : wav-lautstärke links
|
||||
/ar 0..100 : wav-lautstärke rechts
|
||||
/ah 0..15 : hss-lautstärke
|
||||
/af : administra reset, flash booten
|
||||
/at : transfergeschwindigkeit messen
|
||||
----------- Bellatrix-Funktionen
|
||||
/ci : farbtabelle anzeigen
|
||||
/cs datei : farbtabelle speichern
|
||||
/cl datei : farbtabelle laden
|
||||
----------- Port-Funktionen
|
||||
/po nr anz : Impulse an port ausgeben
|
||||
/pi : Status der Port abfragen
|
||||
/? : Hilfe
|
||||
/l : Konfiguration anzeigen
|
||||
---------------- Administra-Funktionen
|
||||
/ah 0|1 : hss ab-/anschalten
|
||||
/aw 0|1 : wav ab-/anschalten
|
||||
/as 0|1 : systemklänge ab-/anschalten
|
||||
/al 0..100 : wav-lautstärke links
|
||||
/ar 0..100 : wav-lautstärke rechts
|
||||
/ah 0..15 : hss-lautstärke
|
||||
/af : administra reset, flash booten
|
||||
/at : transfergeschwindigkeit messen
|
||||
---------------- Bellatrix-Funktionen
|
||||
/ci : farbtabelle anzeigen
|
||||
/cs datei : farbtabelle speichern
|
||||
/cl datei : farbtabelle laden
|
||||
---------------- Port-Funktionen
|
||||
/po nr anz time : Impulse an port ausgeben
|
||||
/pi : Status der Port abfragen
|
Loading…
Reference in New Issue