PASM Bootloader
Verfasst: Fr 6. Sep 2013, 21:02
Im Anhang die Schrittkette eines PASM-Loaders für Regnatix.
Die Grundstrucktur und Arbeitsweise sollte schon erkennbar sein.
Die Grundstrucktur und Arbeitsweise sollte schon erkennbar sein.
Code: Alles auswählen
OBJ
CON
_CLKMODE = XTAL1 + PLL4X
_XINFREQ = 20_000_000
VAR
DAT
DATEN
Byte "LIB",0,0,0,0,0,0,0,0,0 ' Path Administra
Long 0
Byte 0,0,0,0,0,0,0,0,0,0,0,0 ' Administra
Long 0
Byte "LIB",0,0,0,0,0,0,0,0,0 ' Path Bellatrix
Long 0
Byte 0,0,0,0,0,0,0,0,0,0,0,0 ' Bellatrix
Long 0
Byte "BOOT" ,0,0,0,0,0,0,0,0 ' Path Regnatix
Long 0
Byte "reg.bin" ,0,0,0,0,0 ' Regnatix
Long 0
DAT
org 0
'#####################################################################################
'# Warten auf Startfreigabe
'#####################################################################################
loader
'#####################################################################################
'# BUS-Init
'#####################################################################################
'#####################################################################################
'# Copy Dateinahmen
'#####################################################################################
'#####################################################################################
'# Alle anderen COG's Stoppen
'#####################################################################################
'#####################################################################################
'# sd-card: test ob volume gemounted ist
'#####################################################################################
'#####################################################################################
'# sd-card: volume unmounten
'#####################################################################################
'#####################################################################################
'# sd-card: volume mounten
'#####################################################################################
'#####################################################################################
'# sd-card: verzeichnis wechseln ADMINISTRA
'#####################################################################################
'#####################################################################################
'# 'chip-mgr: neuen ADMINISTRA-code booten
'#####################################################################################
'#####################################################################################
'# sd-card: volume mounten
'#####################################################################################
'#####################################################################################
'# sd-card: verzeichnis wechseln BELLATRIX
'#####################################################################################
'#####################################################################################
'# 'chip-mgr: neuen BELLATRIX-code booten
'#####################################################################################
'#####################################################################################
'# sd-card: verzeichnis wechseln REGNATIX
'#####################################################################################
'#####################################################################################
'# 'chip-mgr: neuen REGNATIX-code booten
'#####################################################################################
'#####################################################################################
'# Rücksprung auf Startfreigabe
'#####################################################################################
' ======================================================================================
' SUBROUTINEN : wait 1s / 2s / 3s / 4s
' ======================================================================================
' ======================================================================================
' SUBROUTINEN : sd-card: verzeichnis wechseln
' ======================================================================================
' ======================================================================================
' SUBROUTINEN : string senden
' ======================================================================================
' zeichenstring zu administra senden ende durch $00
' zeichenstring zu bellatrix senden ende durch $00
' ======================================================================================
' SUBROUTINEN : businterface
' ======================================================================================
' byte zu administra senden
' long zu administra senden
' byte zu bellatrix senden
' byte von administra empfangen
' byte von belatrix empfangen
' ======================================================================================
' SUBROUTINEN : Error
' ======================================================================================
' ======================================================================================
' KONSTANTEN & VARIABELN
' ======================================================================================
STATUSADR long $0000_7FFC
HOMEZ long @HOME
PATH1Z long @PATH1
DATEI1Z long @DATEI1
PATH2Z long @PATH2
DATEI2Z long @DATEI2
PATH3Z long @PATH3
DATEI3Z long @DATEI3
HOME byte "..",0,0
PATH1 long 0,0,0,0 ' Verzeichnis von wo geladen werden Soll
DATEI1 long 0,0,0,0
PATH2 long 0,0,0,0
DATEI2 long 0,0,0,0
PATH3 long 0,0,0,0
DATEI3 long 0,0,0,0
ERRLIST long @ERRT_01, @ERRT_02, @ERRT_03, @ERRT_04, @ERRT_05, @ERRT_06, @ERRT_07, @ERRT_08, @ERRT_09, @ERRT_10
long @ERRT_11, @ERRT_12, @ERRT_13, @ERRT_14, @ERRT_15, @ERRT_16, @ERRT_17, @ERRT_18, @ERRT_19, @ERRT_20
long @ERRT_21, @ERRT_22, @ERRT_23, @ERRT_24, @ERRT_25', @ERRT_26, @ERRT_27, @ERRT_28, @ERRT_29, @ERRT_30
ERRT_01 byte "card not moundet",$A,0
ERRT_02 byte "fsys unmounted",$A,0
ERRT_03 byte "fsys corrupted",$A,0
ERRT_04 byte "fsys unsupported",$A,0
ERRT_05 byte "not found",$A,0
ERRT_06 byte "file not found",$A,0
ERRT_07 byte "dir not found",$A,0
ERRT_08 byte "file read only",$A,0
ERRT_09 byte "end of file",$A,0
ERRT_10 byte "end of directory",$A,0
ERRT_11 byte "end of root",$A,0
ERRT_12 byte "dir is full",$A,0
ERRT_13 byte "dir is not empty",$A,0
ERRT_14 byte "checksum error",$A,0
ERRT_15 byte "reboot error",$A,0
ERRT_16 byte "bpb corrupt",$A,0
ERRT_17 byte "fsi corrupt",$A,0
ERRT_18 byte "dir already exist",$A,0
ERRT_19 byte "file already exist",$A,0
ERRT_20 byte "out of disk free space",$A,0
ERRT_21 byte "disk io error",$A,0
ERRT_22 byte "command not found",$A,0
ERRT_23 byte "timeout",$A,0
ERRT_24 byte "out of memory",$A,0
ERRT_25 byte "undefined",$A,0
fit $1F0
PUB main
waitcnt(clkfreq*2+cnt) 'kurze pause für slaves
long[$7FFC]:=0
cognew(@loader,0)
long[$7FFC]:=@DATEN
CON ' Administra =============================================================================
CON ' Bellatrix =============================================================================