diff --git a/bin/flash/admflash.binary b/bin/flash/admflash.binary deleted file mode 100644 index 2ca35bd..0000000 Binary files a/bin/flash/admflash.binary and /dev/null differ diff --git a/bin/flash/belflash.binary b/bin/flash/belflash.binary deleted file mode 100644 index e534891..0000000 Binary files a/bin/flash/belflash.binary and /dev/null differ diff --git a/bin/flash/regflash.binary b/bin/flash/regflash.binary deleted file mode 100644 index 0096d8d..0000000 Binary files a/bin/flash/regflash.binary and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem1.bel b/bin/sd-card-basic/BELDEM/beldem1.bel deleted file mode 100644 index 8d2b04c..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem1.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem10.bel b/bin/sd-card-basic/BELDEM/beldem10.bel deleted file mode 100644 index 92a30dc..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem10.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem11.bel b/bin/sd-card-basic/BELDEM/beldem11.bel deleted file mode 100644 index c2b613f..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem11.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem12.bel b/bin/sd-card-basic/BELDEM/beldem12.bel deleted file mode 100644 index 42fc642..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem12.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem13.bel b/bin/sd-card-basic/BELDEM/beldem13.bel deleted file mode 100644 index 2035b73..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem13.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem14.bel b/bin/sd-card-basic/BELDEM/beldem14.bel deleted file mode 100644 index 756fd51..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem14.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem15.bel b/bin/sd-card-basic/BELDEM/beldem15.bel deleted file mode 100644 index 2c85e82..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem15.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem16.bel b/bin/sd-card-basic/BELDEM/beldem16.bel deleted file mode 100644 index 6a74907..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem16.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem17.bel b/bin/sd-card-basic/BELDEM/beldem17.bel deleted file mode 100644 index 4559dd3..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem17.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem2.bel b/bin/sd-card-basic/BELDEM/beldem2.bel deleted file mode 100644 index 631ee2c..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem2.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem3.bel b/bin/sd-card-basic/BELDEM/beldem3.bel deleted file mode 100644 index becd062..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem3.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem4.bel b/bin/sd-card-basic/BELDEM/beldem4.bel deleted file mode 100644 index 271cd6f..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem4.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem5.bel b/bin/sd-card-basic/BELDEM/beldem5.bel deleted file mode 100644 index 55c072e..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem5.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem6.bel b/bin/sd-card-basic/BELDEM/beldem6.bel deleted file mode 100644 index e5a7ec1..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem6.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem7.bel b/bin/sd-card-basic/BELDEM/beldem7.bel deleted file mode 100644 index bbbd31d..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem7.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem8.bel b/bin/sd-card-basic/BELDEM/beldem8.bel deleted file mode 100644 index 03109ce..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem8.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/beldem9.bel b/bin/sd-card-basic/BELDEM/beldem9.bel deleted file mode 100644 index 443ab4c..0000000 Binary files a/bin/sd-card-basic/BELDEM/beldem9.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/display.bel b/bin/sd-card-basic/BELDEM/display.bel deleted file mode 100644 index 7b1fca2..0000000 Binary files a/bin/sd-card-basic/BELDEM/display.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/fishtank.bel b/bin/sd-card-basic/BELDEM/fishtank.bel deleted file mode 100644 index 38b93e4..0000000 Binary files a/bin/sd-card-basic/BELDEM/fishtank.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/grafik.txt b/bin/sd-card-basic/BELDEM/grafik.txt deleted file mode 100644 index 9ea253a..0000000 --- a/bin/sd-card-basic/BELDEM/grafik.txt +++ /dev/null @@ -1,20 +0,0 @@ -beldem1.bin vga grafikdemo + text + buttons -beldem2.bin vga startrek-interface -beldem3.bin vga 512 x 384 pixel -beldem4.bin vga 640 x 240 pixel -beldem5.bin tv parallax graphics-demo -beldem6.bin tv parallax color-palette -beldem7.bin tv parallax tv-text-demo -beldem8.bin vga parallax graphics-demo vga-version -beldem9.bin vga gui-demo -beldem10.bin vga matrix-demo -beldem11.bin vga space-invader beta -beldem12.bin tv big-fat mr heli demo -beldem13.bin tv scroller (1 byte pro pixel, 244x188) -beldem14.bin vga-text + tv scroller -beldem15.bin tv w3d-demo -beldem16.bin tv + vga graphics-demo -beldem17.bin tv + vga matrix + scroller -vga.bin vga 1024 x 768 pixel, 64 x 24 zeichen -htext.bin vga 1024 x 768 pixel, 128 x 48 zeichen -tv.bin tv-textmodus 40 x 13 zeichen \ No newline at end of file diff --git a/bin/sd-card-basic/BELDEM/vecdem1.bel b/bin/sd-card-basic/BELDEM/vecdem1.bel deleted file mode 100644 index baba2b7..0000000 Binary files a/bin/sd-card-basic/BELDEM/vecdem1.bel and /dev/null differ diff --git a/bin/sd-card-basic/BELDEM/xorgra.bel b/bin/sd-card-basic/BELDEM/xorgra.bel deleted file mode 100644 index 73e839d..0000000 Binary files a/bin/sd-card-basic/BELDEM/xorgra.bel and /dev/null differ diff --git a/bin/sd-card-basic/BOULDER/bd.bin b/bin/sd-card-basic/BOULDER/bd.bin deleted file mode 100644 index 3b68414..0000000 Binary files a/bin/sd-card-basic/BOULDER/bd.bin and /dev/null differ diff --git a/bin/sd-card-basic/BOULDER/bd.wav b/bin/sd-card-basic/BOULDER/bd.wav deleted file mode 100644 index c289dba..0000000 Binary files a/bin/sd-card-basic/BOULDER/bd.wav and /dev/null differ diff --git a/bin/sd-card-basic/BOULDER/bd_ntsc.bel b/bin/sd-card-basic/BOULDER/bd_ntsc.bel deleted file mode 100644 index f900e05..0000000 Binary files a/bin/sd-card-basic/BOULDER/bd_ntsc.bel and /dev/null differ diff --git a/bin/sd-card-basic/BOULDER/bd_pal.bel b/bin/sd-card-basic/BOULDER/bd_pal.bel deleted file mode 100644 index 57304e0..0000000 Binary files a/bin/sd-card-basic/BOULDER/bd_pal.bel and /dev/null differ diff --git a/bin/sd-card-basic/CHESS/cboard.bin b/bin/sd-card-basic/CHESS/cboard.bin deleted file mode 100644 index 13762e2..0000000 Binary files a/bin/sd-card-basic/CHESS/cboard.bin and /dev/null differ diff --git a/bin/sd-card-basic/CHESS/cbremote.bin b/bin/sd-card-basic/CHESS/cbremote.bin deleted file mode 100644 index 6d867bd..0000000 Binary files a/bin/sd-card-basic/CHESS/cbremote.bin and /dev/null differ diff --git a/bin/sd-card-basic/CHESS/cbremote.txt b/bin/sd-card-basic/CHESS/cbremote.txt deleted file mode 100644 index 3f2f241..0000000 --- a/bin/sd-card-basic/CHESS/cbremote.txt +++ /dev/null @@ -1,18 +0,0 @@ -f fnr Zeichnet ein einzelnes Schachfeld neu -b Zeichnet das gesamte Schachbrett -s fnr piece Setzt eine Figur auf ein Feld -m fnr1 fnr2 Bewegt Figur -t Fragt Status der Maus ab -z Holt die Nummer des angeklickten Feldes -x mark fnr Markiert ein Schachfeld farbig (mark 1..4, -1 aus) -d Löscht alle Feldmarkierungen -i Stellt Figuren neu auf -y Löscht alle Figuren vom Schachbrett -v modus Darstellungsmodus (0/1) -o modus Mauszeiger ON/OFF (0/1) -0 Statuszeilen kpl. löschen -1 Statuslog löschen -2 lnr string Stringausgabe in der Statuszeile lnr -3 string Stringausgabe im Satuslog -4 lnr Statuszeile lnr löschen -5 anz string anz * teststring ausgeben \ No newline at end of file diff --git a/bin/sd-card-basic/CHESS/chess.bel b/bin/sd-card-basic/CHESS/chess.bel deleted file mode 100644 index 4cd0bb1..0000000 Binary files a/bin/sd-card-basic/CHESS/chess.bel and /dev/null differ diff --git a/bin/sd-card-basic/CHESS/chess.bin b/bin/sd-card-basic/CHESS/chess.bin deleted file mode 100644 index 6d1d6a0..0000000 Binary files a/bin/sd-card-basic/CHESS/chess.bin and /dev/null differ diff --git a/bin/sd-card-basic/CHESS/chess.txt b/bin/sd-card-basic/CHESS/chess.txt deleted file mode 100644 index ad5721b..0000000 --- a/bin/sd-card-basic/CHESS/chess.txt +++ /dev/null @@ -1,18 +0,0 @@ -mount - sd-card mounten -dir wmlb .EXT - verzeichnis anzeigen -type - anzeige einer textdatei -cls - bildschirm löschen -view - boardanzeige umschalten -new - figuren neu aufstellen -clear - figuren löschen -set - setzt figur auf ein feld -move - bewegt eine figur -ver - version anzeigen -bye - programm verlassen -help - hilfe anzeigen -mmove - figur mit maus bewegen -vstack - anzeige eines puffers vom stack -load -save -play -resume diff --git a/bin/sd-card-basic/DEMO/10-ani2.bel b/bin/sd-card-basic/DEMO/10-ani2.bel deleted file mode 100644 index db5181a..0000000 Binary files a/bin/sd-card-basic/DEMO/10-ani2.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/10-logo2.bel b/bin/sd-card-basic/DEMO/10-logo2.bel deleted file mode 100644 index 3e172a2..0000000 Binary files a/bin/sd-card-basic/DEMO/10-logo2.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/3dmulti.bel b/bin/sd-card-basic/DEMO/3dmulti.bel deleted file mode 100644 index f1796d3..0000000 Binary files a/bin/sd-card-basic/DEMO/3dmulti.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/5-BOING.BEL b/bin/sd-card-basic/DEMO/5-BOING.BEL deleted file mode 100644 index d75bf9f..0000000 Binary files a/bin/sd-card-basic/DEMO/5-BOING.BEL and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/6-mouse.bel b/bin/sd-card-basic/DEMO/6-mouse.bel deleted file mode 100644 index 1ef4085..0000000 Binary files a/bin/sd-card-basic/DEMO/6-mouse.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/7-sat.bel b/bin/sd-card-basic/DEMO/7-sat.bel deleted file mode 100644 index 51ea6f2..0000000 Binary files a/bin/sd-card-basic/DEMO/7-sat.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/8-sinus.bel b/bin/sd-card-basic/DEMO/8-sinus.bel deleted file mode 100644 index 3be9809..0000000 Binary files a/bin/sd-card-basic/DEMO/8-sinus.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/9-lissa.bel b/bin/sd-card-basic/DEMO/9-lissa.bel deleted file mode 100644 index c1f8acc..0000000 Binary files a/bin/sd-card-basic/DEMO/9-lissa.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/GUIDEMO.BEL b/bin/sd-card-basic/DEMO/GUIDEMO.BEL deleted file mode 100644 index f6d92c6..0000000 Binary files a/bin/sd-card-basic/DEMO/GUIDEMO.BEL and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/SPRITES.BEL b/bin/sd-card-basic/DEMO/SPRITES.BEL deleted file mode 100644 index 60875a1..0000000 Binary files a/bin/sd-card-basic/DEMO/SPRITES.BEL and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/hallo.bin b/bin/sd-card-basic/DEMO/hallo.bin deleted file mode 100644 index 3a3741c..0000000 Binary files a/bin/sd-card-basic/DEMO/hallo.bin and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/home.bel b/bin/sd-card-basic/DEMO/home.bel deleted file mode 100644 index 055d6ac..0000000 Binary files a/bin/sd-card-basic/DEMO/home.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/jbdemo1.bel b/bin/sd-card-basic/DEMO/jbdemo1.bel deleted file mode 100644 index 0f54467..0000000 Binary files a/bin/sd-card-basic/DEMO/jbdemo1.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/matrix.bel b/bin/sd-card-basic/DEMO/matrix.bel deleted file mode 100644 index 4559dd3..0000000 Binary files a/bin/sd-card-basic/DEMO/matrix.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/para.bin b/bin/sd-card-basic/DEMO/para.bin deleted file mode 100644 index 7703378..0000000 Binary files a/bin/sd-card-basic/DEMO/para.bin and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/raygui.bel b/bin/sd-card-basic/DEMO/raygui.bel deleted file mode 100644 index d1e9acc..0000000 Binary files a/bin/sd-card-basic/DEMO/raygui.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/seven.adm b/bin/sd-card-basic/DEMO/seven.adm deleted file mode 100644 index 8b1c2b6..0000000 Binary files a/bin/sd-card-basic/DEMO/seven.adm and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/shoot1.bel b/bin/sd-card-basic/DEMO/shoot1.bel deleted file mode 100644 index 545a459..0000000 Binary files a/bin/sd-card-basic/DEMO/shoot1.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/sid1.bin b/bin/sd-card-basic/DEMO/sid1.bin deleted file mode 100644 index 9d945ad..0000000 Binary files a/bin/sd-card-basic/DEMO/sid1.bin and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/sid2.bin b/bin/sd-card-basic/DEMO/sid2.bin deleted file mode 100644 index 4e20bac..0000000 Binary files a/bin/sd-card-basic/DEMO/sid2.bin and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/singing.adm b/bin/sd-card-basic/DEMO/singing.adm deleted file mode 100644 index f82a271..0000000 Binary files a/bin/sd-card-basic/DEMO/singing.adm and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/tdemo.bel b/bin/sd-card-basic/DEMO/tdemo.bel deleted file mode 100644 index f85d7fb..0000000 Binary files a/bin/sd-card-basic/DEMO/tdemo.bel and /dev/null differ diff --git a/bin/sd-card-basic/DEMO/tut.bel b/bin/sd-card-basic/DEMO/tut.bel deleted file mode 100644 index 6a97497..0000000 Binary files a/bin/sd-card-basic/DEMO/tut.bel and /dev/null differ diff --git a/bin/sd-card-basic/HSS/ADMTEST.DAT b/bin/sd-card-basic/HSS/ADMTEST.DAT deleted file mode 100644 index c866266..0000000 Binary files a/bin/sd-card-basic/HSS/ADMTEST.DAT and /dev/null differ diff --git a/bin/sd-card-basic/HSS/genes.hss b/bin/sd-card-basic/HSS/genes.hss deleted file mode 100644 index 414d066..0000000 Binary files a/bin/sd-card-basic/HSS/genes.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/greenpuz.hss b/bin/sd-card-basic/HSS/greenpuz.hss deleted file mode 100644 index 475021c..0000000 Binary files a/bin/sd-card-basic/HSS/greenpuz.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/hssintro.hss b/bin/sd-card-basic/HSS/hssintro.hss deleted file mode 100644 index 7698612..0000000 Binary files a/bin/sd-card-basic/HSS/hssintro.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/kali766.hss b/bin/sd-card-basic/HSS/kali766.hss deleted file mode 100644 index d7d7d41..0000000 Binary files a/bin/sd-card-basic/HSS/kali766.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/kw.hss b/bin/sd-card-basic/HSS/kw.hss deleted file mode 100644 index 96fd04f..0000000 Binary files a/bin/sd-card-basic/HSS/kw.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/machine.hss b/bin/sd-card-basic/HSS/machine.hss deleted file mode 100644 index 4c8d9d5..0000000 Binary files a/bin/sd-card-basic/HSS/machine.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/metroid.hss b/bin/sd-card-basic/HSS/metroid.hss deleted file mode 100644 index 6568848..0000000 Binary files a/bin/sd-card-basic/HSS/metroid.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/mrboss.hss b/bin/sd-card-basic/HSS/mrboss.hss deleted file mode 100644 index 6f56d22..0000000 Binary files a/bin/sd-card-basic/HSS/mrboss.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/mrevil.hss b/bin/sd-card-basic/HSS/mrevil.hss deleted file mode 100644 index 95b86e5..0000000 Binary files a/bin/sd-card-basic/HSS/mrevil.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/raind.hss b/bin/sd-card-basic/HSS/raind.hss deleted file mode 100644 index a24b2b9..0000000 Binary files a/bin/sd-card-basic/HSS/raind.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/stint.bel b/bin/sd-card-basic/HSS/stint.bel deleted file mode 100644 index e056b11..0000000 Binary files a/bin/sd-card-basic/HSS/stint.bel and /dev/null differ diff --git a/bin/sd-card-basic/HSS/stplay.bin b/bin/sd-card-basic/HSS/stplay.bin deleted file mode 100644 index 2bbc780..0000000 Binary files a/bin/sd-card-basic/HSS/stplay.bin and /dev/null differ diff --git a/bin/sd-card-basic/HSS/sytrus.hss b/bin/sd-card-basic/HSS/sytrus.hss deleted file mode 100644 index 3f6dc92..0000000 Binary files a/bin/sd-card-basic/HSS/sytrus.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/tbellsp1.hss b/bin/sd-card-basic/HSS/tbellsp1.hss deleted file mode 100644 index 17aff53..0000000 Binary files a/bin/sd-card-basic/HSS/tbellsp1.hss and /dev/null differ diff --git a/bin/sd-card-basic/HSS/tbellsp2.hss b/bin/sd-card-basic/HSS/tbellsp2.hss deleted file mode 100644 index 4007234..0000000 Binary files a/bin/sd-card-basic/HSS/tbellsp2.hss and /dev/null differ diff --git a/bin/sd-card-basic/SFX/BONUS.SFX b/bin/sd-card-basic/SFX/BONUS.SFX deleted file mode 100644 index 97f538e..0000000 Binary files a/bin/sd-card-basic/SFX/BONUS.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/BONUS.SPN b/bin/sd-card-basic/SFX/BONUS.SPN deleted file mode 100644 index ada8775..0000000 --- a/bin/sd-card-basic/SFX/BONUS.SPN +++ /dev/null @@ -1 +0,0 @@ -bonus ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $03,$03,$FF,$0F,$02,$00,$05,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/COL1.SFX b/bin/sd-card-basic/SFX/COL1.SFX deleted file mode 100644 index 44be65c..0000000 Binary files a/bin/sd-card-basic/SFX/COL1.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/COL1.SPN b/bin/sd-card-basic/SFX/COL1.SPN deleted file mode 100644 index 6cf386b..0000000 --- a/bin/sd-card-basic/SFX/COL1.SPN +++ /dev/null @@ -1 +0,0 @@ -col1 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$04,$10,$0F,$88,$03,$01,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/COL2.SFX b/bin/sd-card-basic/SFX/COL2.SFX deleted file mode 100644 index e9477b5..0000000 Binary files a/bin/sd-card-basic/SFX/COL2.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/COL2.SPN b/bin/sd-card-basic/SFX/COL2.SPN deleted file mode 100644 index 24982c9..0000000 --- a/bin/sd-card-basic/SFX/COL2.SPN +++ /dev/null @@ -1 +0,0 @@ -col2 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$04,$88,$0F,$00,$05,$01,$00,$FF,$01,$50,$66 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/COL3.SFX b/bin/sd-card-basic/SFX/COL3.SFX deleted file mode 100644 index be45503..0000000 Binary files a/bin/sd-card-basic/SFX/COL3.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/COL3.SPN b/bin/sd-card-basic/SFX/COL3.SPN deleted file mode 100644 index ffbfa73..0000000 --- a/bin/sd-card-basic/SFX/COL3.SPN +++ /dev/null @@ -1 +0,0 @@ -col3 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$02,$55,$0F,$03,$03,$FF,$FF,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/CRACK.SFX b/bin/sd-card-basic/SFX/CRACK.SFX deleted file mode 100644 index f3de3e2..0000000 Binary files a/bin/sd-card-basic/SFX/CRACK.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/CRACK.SPN b/bin/sd-card-basic/SFX/CRACK.SPN deleted file mode 100644 index 424e89e..0000000 --- a/bin/sd-card-basic/SFX/CRACK.SPN +++ /dev/null @@ -1 +0,0 @@ -crack ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$22,$01,$0F,$11,$00,$05,$00,$55,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/ECHO.SFX b/bin/sd-card-basic/SFX/ECHO.SFX deleted file mode 100644 index cec46a7..0000000 Binary files a/bin/sd-card-basic/SFX/ECHO.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/ERROR.SFX b/bin/sd-card-basic/SFX/ERROR.SFX deleted file mode 100644 index c671bc0..0000000 Binary files a/bin/sd-card-basic/SFX/ERROR.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/ERROR.SPN b/bin/sd-card-basic/SFX/ERROR.SPN deleted file mode 100644 index 131169e..0000000 --- a/bin/sd-card-basic/SFX/ERROR.SPN +++ /dev/null @@ -1 +0,0 @@ -error ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $04,$01,$80,$0F,$00,$00,$00,$00,$FF,$00,$00,$80 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/EXP.SFX b/bin/sd-card-basic/SFX/EXP.SFX deleted file mode 100644 index feb669b..0000000 Binary files a/bin/sd-card-basic/SFX/EXP.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/EXP.SPN b/bin/sd-card-basic/SFX/EXP.SPN deleted file mode 100644 index bd1258f..0000000 --- a/bin/sd-card-basic/SFX/EXP.SPN +++ /dev/null @@ -1 +0,0 @@ -exp ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $06,$04,$10,$0F,$00,$00,$00,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/OFF.SFX b/bin/sd-card-basic/SFX/OFF.SFX deleted file mode 100644 index 2dee7e6..0000000 Binary files a/bin/sd-card-basic/SFX/OFF.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/OFF.SPN b/bin/sd-card-basic/SFX/OFF.SPN deleted file mode 100644 index 8e7b823..0000000 --- a/bin/sd-card-basic/SFX/OFF.SPN +++ /dev/null @@ -1 +0,0 @@ -off ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $00,$05,$33,$0F,$05,$03,$10,$00,$FF,$00,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/ON.SFX b/bin/sd-card-basic/SFX/ON.SFX deleted file mode 100644 index 6c3e5cc..0000000 Binary files a/bin/sd-card-basic/SFX/ON.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/ON.SPN b/bin/sd-card-basic/SFX/ON.SPN deleted file mode 100644 index 6433682..0000000 --- a/bin/sd-card-basic/SFX/ON.SPN +++ /dev/null @@ -1 +0,0 @@ -on ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $00,$05,$10,$0F,$08,$02,$05,$00,$FF,$00,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/PHASER1.SFX b/bin/sd-card-basic/SFX/PHASER1.SFX deleted file mode 100644 index bb330c8..0000000 Binary files a/bin/sd-card-basic/SFX/PHASER1.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/PHASER1.SPN b/bin/sd-card-basic/SFX/PHASER1.SPN deleted file mode 100644 index bed9142..0000000 --- a/bin/sd-card-basic/SFX/PHASER1.SPN +++ /dev/null @@ -1 +0,0 @@ -phaser1 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$04,$10,$0F,$00,$03,$01,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/PHASER2.SFX b/bin/sd-card-basic/SFX/PHASER2.SFX deleted file mode 100644 index 843cc12..0000000 Binary files a/bin/sd-card-basic/SFX/PHASER2.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/PHASER2.SPN b/bin/sd-card-basic/SFX/PHASER2.SPN deleted file mode 100644 index 0ff9b19..0000000 --- a/bin/sd-card-basic/SFX/PHASER2.SPN +++ /dev/null @@ -1 +0,0 @@ -phaser2 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$04,$88,$0F,$00,$01,$01,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/PHASER3.SFX b/bin/sd-card-basic/SFX/PHASER3.SFX deleted file mode 100644 index 3f95295..0000000 Binary files a/bin/sd-card-basic/SFX/PHASER3.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/PHASER3.SPN b/bin/sd-card-basic/SFX/PHASER3.SPN deleted file mode 100644 index e3629e3..0000000 --- a/bin/sd-card-basic/SFX/PHASER3.SPN +++ /dev/null @@ -1 +0,0 @@ -phaser3 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $01,$04,$88,$0F,$00,$02,$01,$00,$FF,$01,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/SHOOT.SFX b/bin/sd-card-basic/SFX/SHOOT.SFX deleted file mode 100644 index 5994a4a..0000000 Binary files a/bin/sd-card-basic/SFX/SHOOT.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/SHOOT.SPN b/bin/sd-card-basic/SFX/SHOOT.SPN deleted file mode 100644 index 3b6f357..0000000 --- a/bin/sd-card-basic/SFX/SHOOT.SPN +++ /dev/null @@ -1 +0,0 @@ -shoot ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $06,$03,$80,$0F,$08,$04,$05,$00,$FF,$40,$50,$11 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/TEST1.SFX b/bin/sd-card-basic/SFX/TEST1.SFX deleted file mode 100644 index ec73e8b..0000000 Binary files a/bin/sd-card-basic/SFX/TEST1.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/TEST2.SFX b/bin/sd-card-basic/SFX/TEST2.SFX deleted file mode 100644 index c671bc0..0000000 Binary files a/bin/sd-card-basic/SFX/TEST2.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/TEST2.SPN b/bin/sd-card-basic/SFX/TEST2.SPN deleted file mode 100644 index e225477..0000000 --- a/bin/sd-card-basic/SFX/TEST2.SPN +++ /dev/null @@ -1 +0,0 @@ -ton1 ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $04,$01,$80,$0F,$00,$00,$00,$00,$FF,$00,$00,$80 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SFX/WALL.SFX b/bin/sd-card-basic/SFX/WALL.SFX deleted file mode 100644 index dec7ab7..0000000 Binary files a/bin/sd-card-basic/SFX/WALL.SFX and /dev/null differ diff --git a/bin/sd-card-basic/SFX/WALL.SPN b/bin/sd-card-basic/SFX/WALL.SPN deleted file mode 100644 index 8465ad0..0000000 --- a/bin/sd-card-basic/SFX/WALL.SPN +++ /dev/null @@ -1 +0,0 @@ -wall ' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel byte $04,$FF,$FF,$0F,$01,$00,$01,$00,$FF,$06,$20,$00 byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 \ No newline at end of file diff --git a/bin/sd-card-basic/SHOOT/game.hss b/bin/sd-card-basic/SHOOT/game.hss deleted file mode 100644 index 6f56d22..0000000 Binary files a/bin/sd-card-basic/SHOOT/game.hss and /dev/null differ diff --git a/bin/sd-card-basic/SHOOT/menu.hss b/bin/sd-card-basic/SHOOT/menu.hss deleted file mode 100644 index 4c8d9d5..0000000 Binary files a/bin/sd-card-basic/SHOOT/menu.hss and /dev/null differ diff --git a/bin/sd-card-basic/SHOOT/shoot.bel b/bin/sd-card-basic/SHOOT/shoot.bel deleted file mode 100644 index 7776d9b..0000000 Binary files a/bin/sd-card-basic/SHOOT/shoot.bel and /dev/null differ diff --git a/bin/sd-card-basic/SHOOT/shoot.bin b/bin/sd-card-basic/SHOOT/shoot.bin deleted file mode 100644 index f42273d..0000000 Binary files a/bin/sd-card-basic/SHOOT/shoot.bin and /dev/null differ diff --git a/bin/sd-card-basic/SID/1_Emax.dmp b/bin/sd-card-basic/SID/1_Emax.dmp deleted file mode 100644 index bc43cb0..0000000 Binary files a/bin/sd-card-basic/SID/1_Emax.dmp and /dev/null differ diff --git a/bin/sd-card-basic/SID/Blitter.dmp b/bin/sd-card-basic/SID/Blitter.dmp deleted file mode 100644 index e78ce1a..0000000 Binary files a/bin/sd-card-basic/SID/Blitter.dmp and /dev/null differ diff --git a/bin/sd-card-basic/SID/Boulder_Dash.dmp b/bin/sd-card-basic/SID/Boulder_Dash.dmp deleted file mode 100644 index 40e9bd1..0000000 Binary files a/bin/sd-card-basic/SID/Boulder_Dash.dmp and /dev/null differ diff --git a/bin/sd-card-basic/SID/Boz_Hubbard.dmp b/bin/sd-card-basic/SID/Boz_Hubbard.dmp deleted file mode 100644 index 1a3d5eb..0000000 Binary files a/bin/sd-card-basic/SID/Boz_Hubbard.dmp and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/ADMSYS.ADM b/bin/sd-card-basic/SYSTEM/ADMSYS.ADM deleted file mode 100644 index 3873089..0000000 Binary files a/bin/sd-card-basic/SYSTEM/ADMSYS.ADM and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/ATERM96.ADM b/bin/sd-card-basic/SYSTEM/ATERM96.ADM deleted file mode 100644 index 8fa215c..0000000 Binary files a/bin/sd-card-basic/SYSTEM/ATERM96.ADM and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/BLUE.COL b/bin/sd-card-basic/SYSTEM/BLUE.COL deleted file mode 100644 index 0d8d9d8..0000000 --- a/bin/sd-card-basic/SYSTEM/BLUE.COL +++ /dev/null @@ -1 +0,0 @@ -<<<<ððððÀÀÀÀ0000<<<<üüüüÿ€ÿ€ÿÿ€€ˆˆˆˆ \ No newline at end of file diff --git a/bin/sd-card-basic/SYSTEM/BW.COL b/bin/sd-card-basic/SYSTEM/BW.COL deleted file mode 100644 index ecbace2..0000000 Binary files a/bin/sd-card-basic/SYSTEM/BW.COL and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/BWHALF.COL b/bin/sd-card-basic/SYSTEM/BWHALF.COL deleted file mode 100644 index d23a6fe..0000000 Binary files a/bin/sd-card-basic/SYSTEM/BWHALF.COL and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/CHESS.COL b/bin/sd-card-basic/SYSTEM/CHESS.COL deleted file mode 100644 index 1bd21ce..0000000 Binary files a/bin/sd-card-basic/SYSTEM/CHESS.COL and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/PAR.COL b/bin/sd-card-basic/SYSTEM/PAR.COL deleted file mode 100644 index 6ead846..0000000 Binary files a/bin/sd-card-basic/SYSTEM/PAR.COL and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/adm.lib b/bin/sd-card-basic/SYSTEM/adm.lib deleted file mode 100644 index 11b7154..0000000 --- a/bin/sd-card-basic/SYSTEM/adm.lib +++ /dev/null @@ -1,90 +0,0 @@ - -hex - -ifnot: lib:adm -: lib:adm ; - -\ kommandoformen - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ 0 [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!l@ \ ( fkt -- l ) -: adm:fkt!l@ b[ [a!] [a.l@] ]b ; - -ifnot: adm:fkt!s! \ ( s fkt -- ) -: adm:fkt!s! b[ [a!] [a.s!] ]b ; - -\ administra-chipmanagment-funktionen - -\ adm:setsound ( sfkt -- sstat ) - soundsystem verwalten -\ sfkt: -\ 0: hss-engine abschalten -\ 1: hss-engine anschalten -\ 2: dac-engine abschalten -\ 3: dac-engine anschalten -\ sstat - status/cognr startvorgang -ifnot: adm:setsound -: adm:setsound - 5C adm:fkt!b!b@ ; - -\ adm:getspec ( -- spec ) - chipspezifikation abfragen -\ -\ +---------- com -\ | +-------- i2c -\ | |+------- rtc -\ | ||+------ lan -\ | |||+----- sid -\ | ||||+---- wav -\ | |||||+--- hss -\ | ||||||+-- bootfähig -\ | |||||||+- dateisystem -\ %00000000_00000000_00000000_01001111 -ifnot: adm:getspec -: adm:getspec - 5D adm:fkt!l@ ; - -\ adm:setsyssound ( syssnd -- ) - systemklänge -\ syssnd = 0 - systemklänge aus -\ syssnd = 1 - systemklänge an -ifnot: adm:setsyssound -: adm:setsyssound - 5E adm:fkt!b! ; - -\ adm:getsoundsys ( -- sndsys ) - abfrage aktives soundsystem -\ 0 - sound aus -\ 1 - hss -\ 2 - wav -ifnot: adm:getsoundsys -: adm:getsoundsys - 5F adm:fkt!b@ ; - -\ adm:load ( cstr -- ) - neuen administra-code laden -ifnot: adm:aload -: adm:aload - 60 adm:fkt!s! ; - -\ adm:getcogs ( -- cogs ) - anzahl der belegten cogs -ifnot: adm:getcogs -: adm:getcogs - 61 adm:fkt!b@ ; - -\ adm:getver ( -- ver ) - abfrage der codeversion -ifnot: adm:getver -: adm:getver - 62 adm:fkt!l@ ; - -\ adm:reset ( -- ) - reset administra -ifnot: adm:reset -: adm:reset - 63 adm:fkt! ; - diff --git a/bin/sd-card-basic/SYSTEM/admini.adm b/bin/sd-card-basic/SYSTEM/admini.adm deleted file mode 100644 index 072c8da..0000000 Binary files a/bin/sd-card-basic/SYSTEM/admini.adm and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/admled.adm b/bin/sd-card-basic/SYSTEM/admled.adm deleted file mode 100644 index ce04685..0000000 Binary files a/bin/sd-card-basic/SYSTEM/admled.adm and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/admsid.adm b/bin/sd-card-basic/SYSTEM/admsid.adm deleted file mode 100644 index a95b65f..0000000 Binary files a/bin/sd-card-basic/SYSTEM/admsid.adm and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/admtest.bin b/bin/sd-card-basic/SYSTEM/admtest.bin deleted file mode 100644 index 64a43db..0000000 Binary files a/bin/sd-card-basic/SYSTEM/admtest.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/admym.adm b/bin/sd-card-basic/SYSTEM/admym.adm deleted file mode 100644 index 38cac1f..0000000 Binary files a/bin/sd-card-basic/SYSTEM/admym.adm and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/ari.lib b/bin/sd-card-basic/SYSTEM/ari.lib deleted file mode 100644 index bca39ba..0000000 --- a/bin/sd-card-basic/SYSTEM/ari.lib +++ /dev/null @@ -1,55 +0,0 @@ - -hex - -ifnot: lib:ari -: lib:ari ; - -\ abs ( n1 -- abs_n1 ) absolute value of n1 -ifnot: abs -: abs _execasm1>1 151 _cnip ; - -\ u*/mod ( u1 u2 u3 -- u4 u5 ) u5 = (u1*u2)/u3, u4 is the -\ remainder. Uses a 64bit intermediate result. -ifnot: u*/mod -: u*/mod rot2 um* rot um/mod ; - -\ u*/ ( u1 u2 u3 -- u4 ) u4 = (u1*u2)/u3 Uses a 64bit -\ intermediate result. -ifnot: u*/ -: u*/ rot2 um* rot um/mod nip ; - -\ sign ( n1 n2 -- n3 ) n3 is the xor of the sign bits of -\ n1 and n2 -ifnot: sign -: sign xor 80000000 and ; - -\ */mod ( n1 n2 n3 -- n4 n5 ) n5 = (n1*n2)/n3, n4 is the -\ remainder. Uses a 64bit intermediate result. -ifnot: */mod -: */mod 2dup sign >r abs rot dup r> sign >r abs rot abs - um* rot um/mod r> if negate swap negate swap then ; - -\ */ ( n1 n2 n3 -- n4 ) n4 = (n1*n2)/n3. Uses a 64bit -\ intermediate result. -ifnot: */ -: */ */mod nip ; - -\ /mod ( n1 n2 -- n3 n4 ) \ signed divide & mod n4 = n1/n2, -\ n3 is the remainder -ifnot: /mod -: /mod 2dup sign >r abs swap abs swap u/mod r> if negate swap - negate swap then ; - -\ * ( n1 n2 -- n1*n2) n1 multiplied by n2 -ifnot: * -: * um* drop ; - -\ / ( n1 n2 -- n1/n2) n1 divided by n2 -ifnot: / -: / /mod nip ; - -\ rnd ( -- n1 ) n1 is a random number from 00 - FF -ifnot: rnd -: rnd cnt COG@ 8 rshift cnt COG@ xor FF and ; - - diff --git a/bin/sd-card-basic/SYSTEM/basic.bin b/bin/sd-card-basic/SYSTEM/basic.bin deleted file mode 100644 index e9f5b2d..0000000 Binary files a/bin/sd-card-basic/SYSTEM/basic.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/basics.mod b/bin/sd-card-basic/SYSTEM/basics.mod deleted file mode 100644 index aa7be0a..0000000 --- a/bin/sd-card-basic/SYSTEM/basics.mod +++ /dev/null @@ -1,485 +0,0 @@ -fl - -hex - -: mod:basics ; - -\ Copyright (c) 2010 Sal Sanci -\ Anpassung für Hive-System 2011 dr235 - -\ ------------------------------------------------------ BASICS - -\ this words needs to align with the assembler code -: _stptr 5 _cv ; -: _sttop 2e _cv ; - -\ _words ( cstr -- ) -: _words lastnfa - begin - 2dup swap dup if npfx else 2drop -1 then - if dup .strname space then - nfa>next dup 0= - until 2drop cr ; - -\ words name ( -- ) prints the words in the forth dictionary -: words parsenw _words ; - -\ .long ( n -- ) emit 8 hex digits -: .long dup 10 rshift .word .word ; - -\ st? ( -- ) prints out the stack -: st? ." ST: " _stptr COG@ 2+ dup _sttop < - if _sttop swap - 0 - do _sttop 2- i - COG@ .long space loop - else drop - then cr ; - -\ variable ( -- ) skip blanks parse the next word and create -\ a variable, allocate a long, 4 bytes -: variable - lockdict create $C_a_dovarl w, 0 l, forthentry freedict ; - -\ constant ( x -- ) skip blanks parse the next word and create -\ a constant, allocate a long, 4 bytes -: constant - lockdict create $C_a_doconl w, l, forthentry freedict ; - -\ waitpeq ( n1 n2 -- ) \ wait until state n1 is equal to -\ ina anded with n2 -: waitpeq _execasm2>0 1E0 _cnip ; - -\ locknew ( -- n2 ) allocate a lock, result is in n2, -1 -\ if unsuccessful -: locknew -1 4 hubop -1 = if drop -1 then ; - -\ (forget) ( cstr -- ) wind the dictionary back to the word -\ which follows - caution -: (forget) dup -if - find if - pfa>nfa nfa>lfa dup here W! W@ wlastnfa W! - else .cstr 3f emit cr then -else drop then ; - -\ forget ( -- ) wind the dictionary back to the word which -\ follows - caution -: forget parsenw (forget) ; - -\ free ( -- ) display free main bytes and current cog longs -: free dictend W@ here W@ - . ." bytes free - " par - coghere W@ - . ." cog longs free" cr ; - -\ ifnot: name ( -- ) - bedingte compilierung; wenn name schon -\ im wörterbuch vorhanden, wird bis zum nächsten semikolon -\ der eingabestrom ignoriert -: ifnot: parsenw nip find if begin key 3B = until - key drop then ; -\ bei konstrukte, die keine doppelpunkdefinition sind, muss der -\ block mit diesem Wort abgeschlossen werden -: :; ; - -\ --------------------------------------------------------- BUS - -\ bin ( -- ) - umschaltung auf duales zahlensystem -\ : bin 2 base W! ; -\ +---------------------------- /hs -\ |+--------------------------- /wr -\ ||+-------------------------- busclk -\ |||+------------------------- hbeat -\ ||||+------------------------ al -\ |||||+----------------------- /bel -\ ||||||+---------------------- /adm -\ |||||||+--------------------- /ram2 -\ ||||||||+-------------------- /ram1 -\ ||||||||| +--------- a0..10 -\ ||||||||| | -\ ||||||||| | +- d0..7 -\ |||||||||+---------++------+ -\ 00000000000000000000000000000000 -\ bin 00000111111111111111111100000000 constant dinp hex -\ bin 00000111111111111111111111111111 constant dout hex -\ bin 00000010000000000000000000000000 constant boff hex -\ bin 00000100011110000000000000000000 constant _s1 hex -\ bin 00000000001110000000000000000000 constant _b1 hex -\ bin 00000010001110000000000000000000 constant _b2 hex -\ bin 00000110001110000000000000000000 constant _b3 hex -\ bin 00000000010110000000000000000000 constant _a1 hex -\ bin 00000010010110000000000000000000 constant _a2 hex -\ bin 00000110010110000000000000000000 constant _a3 hex -\ bin 00001000000000000000000000000000 constant ?hs hex - -8000000 constant ?hs - -: [inp] \ ( -- ) bus eingabe - 7FFFF00 dira COG! ; \ dinp - -: [out] \ ( -- ) bus ausgabe - 7FFFFFF dira COG! ; \ dout - -: [off] \ ( -- ) bus aus - 2000000 dira COG! 0 outa COG! ; \ boff - -: [end] \ ( -- ) buskommunikation beendet - 4780000 outa COG! [inp] ; \ _s1 - -: [hs=1] \ ( -- ) wartet auf hs = 1 - ?hs dup waitpeq ; - -: [hs=0] \ ( -- ) warten auf hs = 0 - 0 ?hs waitpeq ; - -: [s!] \ ( c ctrl -- ) sende 8 bit an einen slave - [out] [hs=1] swap ff and or outa COG! [hs=0] [end] ; - -: [s@] \ ( ctrl -- c ) empfängt 8 bit von einem slave - [inp] [hs=1] outa COG! [hs=0] ina COG@ ff and [end] ; - -: [b!] \ ( c -- ) sende 8 bit an bellatrix - 2380000 [s!] ; \ _b2 - -: [a!] \ ( c -- ) sende 8 bit an administra - 2580000 [s!] ; \ _a2 - -: [b@] \ ( -- c ) empfängt 8 bit von bellatrix - 6380000 [s@] ; \ _b3 - -: [a@] \ ( -- c ) empfängt 8 bit von administra - 6580000 [s@] ; \ _a3 - -: <8 \ ( -- ) - 8 lshift ; - -\ [b.l!] ( 32b -- ) - long an bellatrix senden -: [b.l!] - dup 18 rshift [b!] - dup 10 rshift [b!] - dup 8 rshift [b!] - [b!] ; - -\ [b.l@] ( -- 32b ) - long von bellatrix einlesen -: [b.l@] - [b@] <8 - [b@] or <8 - [b@] or <8 - [b@] or ; - -\ [a.s@] ( -- ) - einen cstring von administra empfangen -\ und im pad speichern -: [a.s@] - [a@] pad 2dup C! 1+ swap - 0 do dup [a@] swap C! 1+ loop drop ; - -\ [a.s!] ( cstr -- ) - einen cstring an administra senden -: [a.s!] - dup C@ dup [a!] \ ( -- cstr len ) len senden - 0 do \ ( cstr len -- cstr ) - 1+ dup C@ [a!] \ ( cstr -- cstr+1 ) zeichen senden - loop drop ; \ ( cstr -- ) - -\ [a.w@] ( -- 16b ) - 16bit-wert von administra einlesen -: [a.w@] - [a@] <8 [a@] or ; - -\ [a.l!] ( 32b -- ) - long an administra senden -: [a.l!] - dup 18 rshift [a!] - dup 10 rshift [a!] - dup 8 rshift [a!] - [a!] ; - -\ [a.l@] ( -- 32b ) - long von administra einlesen -: [a.l@] - [a@] <8 - [a@] or <8 - [a@] or <8 - [a@] or ; - -wvariable b[lock] \ nummer der semaphore für den - \ zugriff auf die bus-hardware - -\ b[ ( -- ) bus belegen; wartet bis semaphore freigegeben ist -: b[ begin b[lock] W@ lockset -1 <> until [inp] ; - -\ ]b ( -- ) bus freigeben -\ ! busclk bleibt auf ausgabe, da dieses signal sonst -\ kein definierten pegel besitzt ! -: ]b [off] b[lock] W@ lockclr drop ; - -\ administra-kommandoformate - -: b[a! b[ [a!] ; -: b[a!a! b[ [a!] [a!] ; -: adm:fkt! b[a! ]b ; \ ( fkt -- ) -: adm:fkt!b@ b[a! [a@] ]b ; \ ( fkt -- b ) -: adm:fkt!b! b[a!a! ]b ; \ ( b fkt -- ) -: adm:fkt!b!b@ b[a!a! [a@] ]b ; \ ( b fkt -- b ) -: adm:fkt!s@ b[a! [a.s@] ]b ; \ ( fkt -- ) -: adm:fkt!s!b@ b[a! [a.s!] [a@] ]b ; \ ( s fkt -- b ) -: adm:fkt!b!l@ b[a!a! [a.l@] ]b ; \ ( b fkt -- l ) - -\ ----------------------------------------------------- SD0.LIB - -\ marker-funktionen - -\ adm:dmact ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ drop ; - -\ adm:dmset ( dmnr -- ) - marker setzen -: adm:dmset 1A adm:fkt!b! ; - -\ dateisystem-funktionen - -\ adm:volname ( -- ) - name des volumes im pad ablegen -: adm:volname 0C adm:fkt!s@ ; - -\ adm:mount ( -- err ) - medium mounten -: adm:mount 01 adm:fkt!b@ ; - -\ adm:unmount ( -- err ) - medium unmounten -: adm:unmount 18 adm:fkt!b@ ; - -\ adm:checkmounted ( -- t/f ) -: adm:checkmounted 0D adm:fkt!b@ ; - -\ adm:diropen ( -- ) - verzeichnisabfrage initialisieren -: adm:diropen 02 adm:fkt! ; - -\ adm:nextfile ( -- st ) -\ st = 0 - keine gültige datei -\ st = 1 - dateiname im pad gültig -\ bei gültigem eintrag befindet sich der dateiname im pad -: adm:nextfile b[ 3 [a!] [a@] dup if [a.s@] then ]b ; - -\ adm:fattrib ( nr -- attrib ) - dateiattribut abfragen -: adm:fattrib 0B adm:fkt!b!l@ ; - -\ adm:chdir ( cstr -- err ) - verzeichnis öffnen -: adm:chdir 16 adm:fkt!s!b@ ; - -\ adm:getc ( -- c ) - ein zeichen aus der geöffneten datei lesen -: adm:getc 06 adm:fkt!b@ ; - -\ adm:eof ( -- eof ) - abfrage ob end of file erreicht ist -: adm:eof 1E adm:fkt!b@ ; - -\ adm:open ( cstr modus -- err ) - datei öffnen -\ modus "R" $52 - Read -\ modus "W" $57 - Write -\ modus "A" $41 - Append -: adm:open b[ 4 [a!] [a!] [a.s!] [a@] ]b ; - -\ adm:close ( -- ) - datei schließen -: adm:close 05 adm:fkt!b@ ; - -\ ----------------------------------------------------- SCR.LIB - -\ [dscr] ( scrnr -- ) display-screen setzen -: [dscr] 0 [b!] 59 [b!] [b!] ; - -\ [wscr] ( scrnr -- ) schreib-screen setzen -: [wscr] 0 [b!] 58 [b!] [b!] ; - -\ [key?] ( -- c ) - ungekapselte tastaturstatusabfrage -: [key?] 0 [b!] 1 [b!] [b@] ; - -\ [key] ( -- c ) - ungekapselte tastaturabfrage -: [key] 0 [b!] 2 [b!] [b@] ; - -\ [emit] ( c -- ) - ungekapselte zeichenausgabe -: [emit] emit? if emit then ; - -\ ----------------------------------------------------- TOOLS - -\ cls ( -- ) - screen löschen -: cls 01 emit ; - -\ .tab ( -- ) - tabulator -: .tab 09 emit ; - -\ .err ( err -- ) - fehlermeldung ausgeben -\ 0 no error -\ 1 fsys unmounted -\ 2 fsys corrupted -\ 3 fsys unsupported -\ 4 not found -\ 5 file not found -\ 6 dir not found -\ 7 file read only -\ 8 end of file -\ 9 end of directory -\ 10 end of root -\ 11 dir is full -\ 12 dir is not empty -\ 13 checksum error -\ 14 reboot error -\ 15 bpb corrupt -\ 16 fsi corrupt -\ 17 dir already exist -\ 18 file already exist -\ 19 out of disk free space -\ 20 disk io error -\ 21 command not found -\ 22 timeout -\ 23 parameter error -: .err dup if ERR then drop ; - -\ .pad ( -- ) - ausgabe eines strings im pad -: .pad pad .cstr ; - -\ .vname ( -- ) - ausgabe des namens der eingelegten sd-card -: .vname adm:volname .pad ; - -\ mount ( -- ) - sd-card mounten -: mount adm:mount .err ." Medium : " .vname cr ; - -\ unmount ( -- ) - sd-card unmounten -: unmount adm:unmount .err ; - -\ mount? ( -- ) - test ob medium mounted ist -\ wird als exception gewertet -: mount? adm:checkmounted 0= if 1 .err then ; - -\ padbl ( -- ) fills this cogs pad with blanks -: padbl pad padsize bl fill ; - -\ .entry ( -- st ) - einen verzeichniseintrag ausgeben -: .entry - adm:nextfile 13 adm:fattrib if 0F emit else space then - dup if .pad .tab then ; - -\ .len ( st -- st ) - dateilänge ausgeben -: .len dup if 0 adm:fattrib . then ; - -\ lscnt ( cnt1 st -- cnt2 st ) - spaltenformatierung für ls -\ cnt - spaltenzähler, st - flag verzeichnisende -: lscnt - swap 1+ dup 4 = if cr drop 0 else .tab then swap ; - -\ lsl ( -- ) - verzeichnis anzeigen, long-format -: lsl mount? - adm:diropen begin .entry .len cr 0= until padbl ; - -\ ls ( -- ) - verzeichnis in spalten anzeigen -: ls mount? - adm:diropen 0 begin .entry lscnt 0= until drop padbl cr ; - -\ cd name ( -- ) - verzeichnis wechseln -: cd mount? parsenw adm:chdir .err ; - -\ open name ( -- ) - datei lesend öffnen und auf fehler prüfen -: open - mount? parsenw dup - if 52 adm:open else drop 23 then .err ; - -\ close ( -- ) - geöffnete datei schließen -: close adm:close .err ; - -\ dload name - datei compilieren; log im gleichen screen -\ load name - datei compilieren; log screen 3 -\ sys name - datei aus sys compilieren; log screen 3 -\ die datei wird in der nächsten freien cog compiliert -\ fl ist für load nicht nötig und bringt in dem kontext -\ die cog-zuordnung durcheinander - -: (load) - begin adm:getc emit adm:eof until ; - -: (dload) - open cogid nfcog iolink - (load) - cogid iounlink close ; - -: (sload) - open cogid 3 dup b[ [wscr] ]b iolink - (load) - cogid dup b[ [wscr] ]b iounlink close ; - -: load - ." Loading... " (sload) ; - -: dload - (dload) ; - -: sys - 2 adm:dmset 1 adm:dmact ." Loading... " (sload) 2 adm:dmact ; - -\ ------------------------------------------------- SPIN-LOADER - -\ (spin) ( cstr -- ) - c" reg.sys" (spin) -: (spin) - dup C@ 1+ - 0 do - dup i + C@ - ldvar 1+ i + C! - loop drop - 1 ldvar C! -; - -\ spin name ( -- ) - spinobjekt "name" starten -: spin - parsenw (spin) ; - -\ regime ( -- ) - startet dir trios-cli "regime" -: regime - 0 adm:dmact - c" reg.sys" (spin) ; - -\ ----------------------------------------------------- DRV:INT - - -wvariable icog \ nummer der drv:int-cog -wvariable lcog \ nummer interaktiven cog - -\ xint ( n -- ) io von cog n auf drv:int umschalten -: xint icog W@ ioconn ; - -\ [cogscr] ( nr -- ) - umschaltung screen + cog -: [cogscr] - dup 2dup lcog W! xint [dscr] [wscr] ; - -\ =n ( n1 n2 -- n1 n1=n2 ) -: =n 2dup = swap drop ; - -\ [esc] ( -- ) - manager für esc-funktionen im drv:int -: [esc] - begin [key?] until [key] - 71 =n if 1b [emit] then \ esc - q : esc-char/quit - 31 =n if 1 [cogscr] then \ esc - 1 : cog-screen 0 - 32 =n if 2 [cogscr] then \ esc - 2 : cog-screen 1 - 33 =n if 3 [cogscr] then \ esc - 3 : cog-screen 2 - 62 =n if lcog W@ cogreset then \ esc - b : break (cog) - 72 =n if reboot then \ esc - r : reset (chip) - drop ; \ esc - esc : pause - -\ drv:int ( -- ) treiber für bellatrix-terminal -\ diese cog fragt in einer endlosschleife ab, ob zeichen -\ versendet oder empfangen werden sollen. um die zeichenausgabe -\ zu beschleunigen, findet ausgabe und eingabe in einem -\ verhältnis von 512:1 statt. per esc-code können spezielle -\ funktionen im driver ausgelöst werden. -: drv:int - \ name und typ der cog einstellen - cogid dup cogstate 10 swap C! c" drv:int" over - cognumpad ccopy - 20 delms 0D emit \ verzögertes cr für prompt - begin - \ input --> vga/video - 200 0 do key? \ eingabezeichen vorhanden? - if key b[ [b!] ]b then loop \ cog ---> bel.vga - \ output <-- keyboard - b[ [key?] \ tastenstatus bellatrix? - if [key] dup 1b = if drop [esc] else [emit] thens ]b - 0 until ; - -\ ----------------------------------------------------- SYSINIT - -: start \ ( -- ) initialisierung hive - locknew b[lock] W! \ b-semaphore - 0 dup cogstate 10 swap C! c" drv:ldr" over - cognumpad ccopy - 5 dup icog W! c" drv:int" swap cogx 1 b[ [cogscr] ]b ; -: _ob onboot ; -: onboot _ob start ; - - - diff --git a/bin/sd-card-basic/SYSTEM/bel.lib b/bin/sd-card-basic/SYSTEM/bel.lib deleted file mode 100644 index 0034988..0000000 --- a/bin/sd-card-basic/SYSTEM/bel.lib +++ /dev/null @@ -1,77 +0,0 @@ - -hex - -ifnot: lib:bel -: lib:bel ; - -\ kommandoformate - -ifnot: bel:fkt! \ ( fkt -- ) -: bel:fkt! b[ 0 [b!] [b!] ]b ; - -ifnot: bel:fkt!b! \ ( b fkt -- ) -: bel:fkt!b! b[ 0 [b!] [b!] [b!] ]b ; - -ifnot: bel:fkt!b!l@ \ ( b fkt -- l ) -: bel:fkt!b!l@ b[ 0 [b!] [b!] [b!] [b.l@] ]b ; - -ifnot: bel:fkt!b!l! \ ( l b fkt -- ) -: bel:fkt!b!l! b[ 0 [b!] [b!] [b!] [b.l!] ]b ; - -ifnot: bel:fkt!l@ \ ( fkt -- l ) -: bel:fkt!l@ b[ 0 [b!] [b!] [b.l@] ]b ; - -ifnot: bel:fkt!b@ \ ( fkt -- b ) -: bel:fkt!b@ b[ 0 [b!] [b!] [b@] ]b ; - -\ chipmanagment-funktionen - -ifnot: bel:wscr \ ( scrnr -- ) - schreibscreen setzen -: bel:wscr 58 bel:fkt!b! ; - -ifnot: bel:dscr \ ( scrnr -- ) - displayscreen setzen -: bel:dscr 59 bel:fkt!b! ; - -ifnot: bel:getcol \ ( colnr -- col ) - farbe abfragen -: bel:getcol 5A bel:fkt!b!l@ ; - -ifnot: bel:setcol \ ( col colnr -- ) - farbe setzen -: bel:setcol 5B bel:fkt!b!l! ; - -ifnot: bel:getresx \ ( -- resx ) - abfrage x-auflösung -: bel:getresx 5C bel:fkt!l@ ; - -ifnot: bel:getresy \ ( -- resy ) - abfrage y-auflösung -: bel:getresy 5D bel:fkt!l@ ; - -ifnot: bel:getcols \ ( -- cols ) - abfrage textspalten -: bel:getcols 5E bel:fkt!b@ ; - -ifnot: bel:getrows \ ( -- rows ) - abfrage textzeilen -: bel:getrows 5F bel:fkt!b@ ; - -ifnot: bel:getcogs \ ( -- cogs ) - abfrage belegte cogs -: bel:getcogs 60 bel:fkt!b@ ; - -ifnot: bel:getspec \ ( -- spec ) - abfrage codespezifikation -: bel:getspec 61 bel:fkt!l@ ; - -ifnot: bel:getver \ ( -- ver ) - abfrage codeversion -: bel:getver 62 bel:fkt!l@ ; - -ifnot: bel:load \ ( cstr -- ) - bellatrix-code laden -: bel:load - 52 adm:open .err \ datei öffnen - b[ - 0 [b!] 63 [b!] \ bella-loader starten - 10 0 do 06 [a!] [a@] [b!] loop \ header einlesen - 0A [a!] 0 [a.l!] \ 0 adm:seek - [b@] <8 [b@] or \ dateilänge empfangen - 0 do 06 [a!] [a@] [b!] loop \ datei senden - ]b - adm:close .err \ datei schließen -; - - - - diff --git a/bin/sd-card-basic/SYSTEM/belled.bel b/bin/sd-card-basic/SYSTEM/belled.bel deleted file mode 100644 index ce04685..0000000 Binary files a/bin/sd-card-basic/SYSTEM/belled.bel and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/beltest.bin b/bin/sd-card-basic/SYSTEM/beltest.bin deleted file mode 100644 index 2c18506..0000000 Binary files a/bin/sd-card-basic/SYSTEM/beltest.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/charmap.bin b/bin/sd-card-basic/SYSTEM/charmap.bin deleted file mode 100644 index 60406b8..0000000 Binary files a/bin/sd-card-basic/SYSTEM/charmap.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/cog.lib b/bin/sd-card-basic/SYSTEM/cog.lib deleted file mode 100644 index 14c242e..0000000 --- a/bin/sd-card-basic/SYSTEM/cog.lib +++ /dev/null @@ -1,74 +0,0 @@ - -hex - -ifnot: lib:cog -: lib:cog ; - -\ cog special register - -ifnot: ctra 1F8 wconstant ctra :; -ifnot: ctrb 1F9 wconstant ctrb :; -ifnot: frqa 1FA wconstant frqa :; -ifnot: frqb 1FB wconstant frqb :; -ifnot: phsa 1FC wconstant phsa :; -ifnot: phsb 1FD wconstant phsb :; -ifnot: vcfg 1FE wconstant vcfg :; -ifnot: vscl 1FF wconstant vscl :; - -\ this words needs to align with the assembler code - -ifnot: _faddrmask : _faddrmask 1 _cv ; -ifnot: _flongmask : _flongmask 2 _cv ; -ifnot: _stptr : _stptr 5 _cv ; -ifnot: _sttos : _sttos 7 _cv ; -ifnot: _treg1 : _treg1 8 _cv ; -ifnot: _treg2 : _treg2 9 _cv ; -ifnot: _treg3 : _treg3 a _cv ; -ifnot: _treg4 : _treg4 b _cv ; -ifnot: _treg5 : _treg5 c _cv ; -ifnot: _treg6 : _treg6 d _cv ; -ifnot: _stbot : _stbot e _cv ; -ifnot: _sttop : _sttop 2e _cv ; -ifnot: _rsbot : _rsbot _sttop ; - -\ waitcnt ( n1 n2 -- n1 ) \ wait until n1, add n2 to n1 -ifnot: waitcnt -: waitcnt _execasm2>1 1F1 _cnip ; - -\ waitpeq ( n1 n2 -- ) \ wait until state n1 is equal to -\ ina anded with n2 -ifnot: waitpeq -: waitpeq _execasm2>0 1E0 _cnip ; - -\ waitpne ( n1 n2 -- ) \ wait until state n1 is not equal -\ to ina anded with n2 -ifnot: waitpne -: waitpne _execasm2>0 1E8 _cnip ; - -\ lockret ( n1 -- ) deallocate a lock, previously allocated -\ via locknew -ifnot: lockret -: lockret 5 hubop 2drop ; - -\ locknew ( -- n2 ) allocate a lock, result is in n2, -1 -\ if unsuccessful -ifnot: locknew -: locknew -1 4 hubop -1 = if drop -1 then ; - -\ cog+ ( -- ) add a forth cog -ifnot: cog+ -: cog+ (cog+) ; - -\ (cog-) ( -- ) stop first forth cog, cannot be executed form -\ the first forth cog -ifnot: (cog-) -: (cog-) nfcog cogstop ; - -\ cog- ( -- ) stop first forth cog, cannot be executed form -\ the first forth cog -ifnot: cog- -: cog- (cog-) ; - - - - diff --git a/bin/sd-card-basic/SYSTEM/copy.bin b/bin/sd-card-basic/SYSTEM/copy.bin deleted file mode 100644 index e5f9279..0000000 Binary files a/bin/sd-card-basic/SYSTEM/copy.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/debug.mod b/bin/sd-card-basic/SYSTEM/debug.mod deleted file mode 100644 index 937129d..0000000 --- a/bin/sd-card-basic/SYSTEM/debug.mod +++ /dev/null @@ -1,65 +0,0 @@ - -hex - -ifnot: mod:debug -: mod:debug ; - -\ keycode ( -- ) - anzeige der tastaturcodes -ifnot: keycode -: keycode - begin - 0 key? if - drop key dup dup ." code : " emit ." : " . cr 1B = - then until ; - -\ -\ Noisy reset messages -\ -\ print out a reset message to the console -\ (rsm) ( n -- ) n is the last status -\ 0011FFFF - stack overflow -\ 0012FFFF - return stack overflow -\ 0021FFFF - stack underflow -\ 0022FFFF - return stack underflow -\ 8100FFFF - no free cogs -\ 8200FFFF - no free main memory -\ 8400FFFF - fl no free main memory -\ 8500FFFF - no free cog memory -\ 8800FFFF - eeprom write error -\ 9000FFFF - eeprom read error - -: (rsm) state W@ 2 and 0= swap -\ process the last status - dup 0= if c" ok" else - dup FF11 = if c" DST OVER" else - dup FF12 = if c" RST OVER" else - dup FF21 = if c" DST LOW" else - dup FF22 = if c" RST LOW" else - dup 8001 = if c" COGs OUT" else - dup 8002 = if c" hMEM OUT" else - dup 8003 = if c" ROM WR" else - dup 8004 = if c" FL" else - dup 8005 = if c" cMEM OUT" else - dup 8006 = if c" ROM RD" else - c" ?" - thens - rot if - lockdict cr c" ERR : " .cstr swap . .cstr cr freedict - else 2drop then ; -: onreset (rsm) 4 state orC! ; - -\ .byte ( n1 -- ) -: .byte <# # # #> .cstr ; - -\ [if (dumpb) -: (dumpb) cr over .addr space dup .addr _ecs bounds ; ] - -\ [if (dumpm) -: (dumpm) cr .word _ecs ; ] - -\ [if (dumpe) -: (dumpe) tbuf 8 bounds do i C@ .byte space loop 2 spaces tbuf 8 bounds do i C@ dup bl < if drop 2e then emit loop ; ] - -\ dump ( adr cnt -- ) uses tbuf -[if dump -: dump (dumpb) do i (dumpm) i tbuf 8 cmove (dumpe) 8 +loop cr ; ] diff --git a/bin/sd-card-basic/SYSTEM/eram.bin b/bin/sd-card-basic/SYSTEM/eram.bin deleted file mode 100644 index 7b637aa..0000000 Binary files a/bin/sd-card-basic/SYSTEM/eram.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/eram.txt b/bin/sd-card-basic/SYSTEM/eram.txt deleted file mode 100644 index e0054e6..0000000 --- a/bin/sd-card-basic/SYSTEM/eram.txt +++ /dev/null @@ -1,33 +0,0 @@ - -cls - bildschirm löschen -bye - player beenden -d - anzeige eram -n - anzeige fortsetzen -m ... - ram modifizieren (byte) -l ... - ram modifizieren (long) -load - ladei datei in eram -sysvar - anzeige systemvariablen -rbas - basisadresse setzen -info - speicheraufteilung anzeigen -f - speicherbereich füllen (sysmod) -fu - speicherbereich füllen (usermod) -rdinit - rdisk initialisieren -rdnew - neue datei anlegen -rdhead - header anzeigen -rddir - dir anzeigen -rddel - datei löschen -rdren - datei umbenennen -rdftab - ftab anzeigen -rdopen - datei öffnen -rdseek - zeiger positionieren -rdput - zeichen in datei schreiben -rdget - zeichenh aus datei lesen -rdwrite - wert schreiben -rdread - wert lesen -rdload - datei in rd laden -rdsave - datei fn1 auf sd fn2 speichern - -bas - basisadresse -end - endadresse (startsysvar) -sys - start systemvariablen -rd: - daten datei diff --git a/bin/sd-card-basic/SYSTEM/error.txt b/bin/sd-card-basic/SYSTEM/error.txt deleted file mode 100644 index 17013b3..0000000 --- a/bin/sd-card-basic/SYSTEM/error.txt +++ /dev/null @@ -1,40 +0,0 @@ - -Reset-Fehlercodes: - -0011FFFF - stack overflow -0012FFFF - return stack overflow -0021FFFF - stack underflow -0022FFFF - return stack underflow -8100FFFF - no free cogs -8200FFFF - no free main memory -8400FFFF - fl no free main memory -8500FFFF - no free cog memory -8800FFFF - eeprom write error -9000FFFF - eeprom read error - -.err-Fehlercodes: - -0 no error -1 fsys unmounted -2 fsys corrupted -3 fsys unsupported -4 not found -5 file not found -6 dir not found -7 file read only -8 end of file -9 end of directory -10 end of root -11 dir is full -12 dir is not empty -13 checksum error -14 reboot error -15 bpb corrupt -16 fsi corrupt -17 dir already exist -18 file already exist -19 out of disk free space -20 disk io error -21 command not found -22 timeout -23 parameter error diff --git a/bin/sd-card-basic/SYSTEM/flash.bin b/bin/sd-card-basic/SYSTEM/flash.bin deleted file mode 100644 index cf566e5..0000000 Binary files a/bin/sd-card-basic/SYSTEM/flash.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/fterm.bin b/bin/sd-card-basic/SYSTEM/fterm.bin deleted file mode 100644 index 51166a8..0000000 Binary files a/bin/sd-card-basic/SYSTEM/fterm.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/hplay.bin b/bin/sd-card-basic/SYSTEM/hplay.bin deleted file mode 100644 index 3164350..0000000 Binary files a/bin/sd-card-basic/SYSTEM/hplay.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/hplay.mod b/bin/sd-card-basic/SYSTEM/hplay.mod deleted file mode 100644 index 2916ebe..0000000 --- a/bin/sd-card-basic/SYSTEM/hplay.mod +++ /dev/null @@ -1,155 +0,0 @@ - -hex - -ifnot: mod:hplay -: mod:hplay ; - -\ kommandoformate - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!w@ \ ( b fkt -- w ) -: adm:fkt!b!w@ b[ [a!] [a!] [a.w@] ]b ; - -ifnot: adm:fkt!s!b@ \ ( cstr fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: bel:fkt!b@ \ ( fkt -- b ) -: bel:fkt!b@ b[ 0 [b!] [b!] [b@] ]b ; - -ifnot: bel:char \ ( b -- ) -: bel:char b[ [b!] ]b ; - -\ hss-funktionen - -ifnot: hss:load \ ( cstr -- err ) - hss-datei laden -: hss:load dup if 64 adm:fkt!s!b@ then ; - -ifnot: hss:play \ ( -- ) - datei im puffer abspielen -: hss:play 65 adm:fkt! ; - -ifnot: hss:stop \ ( -- ) - player stop -: hss:stop 66 adm:fkt! ; - -ifnot: hss:reg \ hreg ( regnr -- 16b ) -: hss:reg 69 b[ [a!] [a!] [a.w@] ]b ; - -ifnot: hss:vol \ hvol ( vol -- ) - lautstärke 0..15 -: hss:vol 6A adm:fkt!b! ; - -\ keyboard-funktionen - -ifnot: key:stat \ ( -- stat ) - tastenstatus abfragen -: key:stat 1 bel:fkt!b@ ; - -\ steuerzeichen - -ifnot: scr:cls \ ( -- ) - screen löschen -: scr:cls 01 bel:char ; - -ifnot: scr:home \ ( -- ) - cursor oben links -: scr:home 02 bel:char ; - -ifnot: scr:curon \ ( -- ) - cursor anschalten -: scr:curon 04 bel:char ; - -ifnot: scr:curoff \ ( -- ) - cursor abschalten -: scr:curoff 05 bel:char ; - -\ sd0-funktionen - -\ adm:diropen ( -- ) - verzeichnisabfrage initialisieren -ifnot: adm:diropen -: adm:diropen - 02 adm:fkt! ; - -\ adm:nextfile ( -- st ) -\ st = 0 - keine gültige datei -\ st = 1 - dateiname im pad gültig -\ bei gültigem eintrag befindet sich der dateiname im pad -ifnot: adm:nextfile -: adm:nextfile - b[ 03 [a!] [a@] dup if [a.s@] then ]b ; - -\ metafunktionen - -\ hload name ( -- ) - hss-datei in player laden - -ifnot: hload -: hload mount? parsenw hss:load .err ; - -ifnot: .hset -: .hset \ ( shift -- ) - eine registersatz ausgeben - 5 0 do dup i + hss:reg .word space loop drop ; - -ifnot: .hreg -: .hreg \ ( -- ) - register ausgeben - 14 0 do i .hset cr 5 +loop ; - -ifnot: fadeout -: fadeout \ ( -- ) - sound langsam ausblenden - f 0 do e i - hss:vol 50 delms loop ; - -ifnot: end? -: end? \ ( cnt -- flag ) - abfrage nach cnt wiederholungen - 4 hss:reg = ; - -ifnot: hwait -: hwait \ ( -- flag ) - wartet auf songende oder taste - begin 50 delms key? 2 end? or until key drop ; - -ifnot: hreg.. -: hreg.. \ ( -- ) - fortlaufende anzeige register - scr:curoff scr:cls begin scr:home .hreg 2 end? until - scr:curon fadeout hss:stop ; - -ifnot: (hplay) -: (hplay) \ ( cstr -- ) - ." Datei : " dup .cstr hss:load .err f hss:vol hss:play - hwait fadeout hss:stop 100 delms cr ; - -\ hplay name ( -- ) - datei abspielen -ifnot: hplay -: hplay - hload hss:play ; - -\ files? ( -- cnt ) - anzahl dateien im dir -ifnot: files? -: files? - adm:diropen - 0 begin adm:nextfile swap 1+ swap 0= until 3 - padbl ; - -\ filenr? ( nr -- ) -ifnot: filenr? -: filenr? - adm:diropen - 0 do adm:nextfile drop loop ; - -\ hdirplay ( -- ) - gesamtes verzeichnis abspielen -\ im verzeichnis dürfen nur hss-dateien sein! -ifnot: hdirplay -: hdirplay - decimal files? dup ." Dateien : " . cr - 0 do i dup 1 + . 3 + filenr? pad (hplay) loop padbl hex ; - -: (hp) ." play : " dup .cstr hss:load .err ; - -ifnot: playliste -: playliste - c" kw.hss" (hplay) - c" genes.hss" (hplay) - c" greenpuz.hss" (hplay) - c" hssintro.hss" (hplay) - c" kali766.hss" (hplay) - c" machine.hss" (hplay) - c" metroid.hss" (hplay) - c" mrboss.hss" (hplay) - c" mrevil.hss" (hplay) - c" raind.hss" (hplay) - c" sytrus.hss" (hplay) - c" tbellsp1.hss" (hplay) ; - diff --git a/bin/sd-card-basic/SYSTEM/hplay.txt b/bin/sd-card-basic/SYSTEM/hplay.txt deleted file mode 100644 index 78a0da2..0000000 --- a/bin/sd-card-basic/SYSTEM/hplay.txt +++ /dev/null @@ -1,7 +0,0 @@ -/? : hilfetext -/p name.wav : hss-datei abspielen -/d : verzeichnis abspielen -/s : wiedergabe stoppen -/t : anzeige trackerliste -/r : anzeige engine-register -/i : anzeige interface-register diff --git a/bin/sd-card-basic/SYSTEM/hss.lib b/bin/sd-card-basic/SYSTEM/hss.lib deleted file mode 100644 index 33db039..0000000 --- a/bin/sd-card-basic/SYSTEM/hss.lib +++ /dev/null @@ -1,60 +0,0 @@ - -hex - -ifnot: lib:hss -: lib:hss ; - -\ kommandoformate - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!b! \ ( b b fkt -- ) -: adm:fkt!b!b! b[ [a!] [a!] [a!] ]b ; - -ifnot: adm:fkt!b!w@ \ ( b fkt -- w ) -: adm:fkt!b!w@ b[ [a!] [a!] [a.w@] ]b ; - -ifnot: adm:fkt!s!b@ \ ( cstr fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -\ hss-funktionen - -\ ( cstr -- err ) - hss-datei laden -ifnot: hss:load -: hss:load dup if 64 adm:fkt!s!b@ then ; - -\ ( -- ) - datei im puffer abspielen -ifnot: hss:play -: hss:play 65 adm:fkt! ; - -\ ( -- ) - player stop -ifnot: hss:stop -: hss:stop 66 adm:fkt! ; - -\ ( -- ) - player pause -ifnot: hss:pause -: hss:pause 67 adm:fkt! ; - -\ hreg ( regnr -- 16b ) -\ 0 iEndFlag iRowFlag iEngineC iBeatC iRepeat Player -\ 5 iNote iOktave iVolume iEffekt iInstrument Kanal 1 -\ 10 iNote iOktave iVolume iEffekt iInstrument Kanal 2 -\ 15 iNote iOktave iVolume iEffekt iInstrument Kanal 3 -\ 20 iNote iOktave iVolume iEffekt iInstrument Kanal 4 -\ -\ iEndFlag Repeat oder Ende wurde erreicht -\ iRowFlag Trackerzeile (Row) ist fertig -\ iEngineC Patternzähler -\ iBeatC Beatzähler (Anzahl der Rows) -\ iRepeat Zähler für Loops -ifnot: hss:reg -: hss:reg 69 b[ [a!] [a!] [a.w@] ]b ; - -\ hvol ( vol -- ) - lautstärke 0..15 -ifnot: hss:vol -: hss:vol 6A adm:fkt!b! ; - diff --git a/bin/sd-card-basic/SYSTEM/htext.bel b/bin/sd-card-basic/SYSTEM/htext.bel deleted file mode 100644 index cac8969..0000000 Binary files a/bin/sd-card-basic/SYSTEM/htext.bel and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/key.lib b/bin/sd-card-basic/SYSTEM/key.lib deleted file mode 100644 index 45204a5..0000000 --- a/bin/sd-card-basic/SYSTEM/key.lib +++ /dev/null @@ -1,17 +0,0 @@ - -hex - -ifnot: lib:key -: lib:key ; - -\ kommandoformate -ifnot: bel:fkt!b@ \ ( fkt -- b ) -: bel:fkt!b@ b[ 0 [b!] [b!] [b@] ]b ; - -\ keyboard-funktionen -ifnot: key:stat \ ( -- stat ) - tastenstatus abfragen -: key:stat 1 bel:fkt!b@ ; -ifnot: key:code \ ( -- code ) - tastencode abfragen -: key:code 2 bel:fkt!b@ ; -ifnot: key:spec \ ( -- spec ) - spezialtasten abfragen -: key:spec 4 bel:fkt!b@ ; diff --git a/bin/sd-card-basic/SYSTEM/keycode.bin b/bin/sd-card-basic/SYSTEM/keycode.bin deleted file mode 100644 index 9ffd612..0000000 Binary files a/bin/sd-card-basic/SYSTEM/keycode.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/matrix.bel b/bin/sd-card-basic/SYSTEM/matrix.bel deleted file mode 100644 index 5c19f57..0000000 Binary files a/bin/sd-card-basic/SYSTEM/matrix.bel and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/perplex.bin b/bin/sd-card-basic/SYSTEM/perplex.bin deleted file mode 100644 index d94e47c..0000000 Binary files a/bin/sd-card-basic/SYSTEM/perplex.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/ramtest.bin b/bin/sd-card-basic/SYSTEM/ramtest.bin deleted file mode 100644 index 576fcda..0000000 Binary files a/bin/sd-card-basic/SYSTEM/ramtest.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/regime.txt b/bin/sd-card-basic/SYSTEM/regime.txt deleted file mode 100644 index 17682c0..0000000 Binary files a/bin/sd-card-basic/SYSTEM/regime.txt and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/regled.bin b/bin/sd-card-basic/SYSTEM/regled.bin deleted file mode 100644 index ce04685..0000000 Binary files a/bin/sd-card-basic/SYSTEM/regled.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/rom.bin b/bin/sd-card-basic/SYSTEM/rom.bin deleted file mode 100644 index 3db8d05..0000000 Binary files a/bin/sd-card-basic/SYSTEM/rom.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/rom.mod b/bin/sd-card-basic/SYSTEM/rom.mod deleted file mode 100644 index 9a91eda..0000000 --- a/bin/sd-card-basic/SYSTEM/rom.mod +++ /dev/null @@ -1,206 +0,0 @@ - -\ ACHTUNG: Diese Modifikation nicht bei einer Installation im -\ HI-EEPROM verwenden! - -hex -[if mod:rom -: mod:rom ; ] - -\ constant ( x -- ) skip blanks parse the next word and create a constant, allocate a long, 4 bytes -[if constant -: constant lockdict create $C_a_doconl w, l, forthentry freedict ; ] - -\ -\ CONFIG PARAMETERS BEGIN -\ -40 wconstant fsps \ a page size which works with 32kx8 & 64kx8 eeproms - \ and should work with larger as well. - - -8000 constant fsbot \ file-system bottom: the start adress in eeprom for the file system - - \ file system top: the end address of the file system - \ uncomment the line for your comfiguration -\ 8000 constant fstop \ the end address for the file system with one 24LC256 32k eeprom -10000 constant fstop \ the end address for the file system with one 24LC512 64k eeprom -\ 20000 constant fstop \ the end address for the file system with two 24LC512 64k eeprom -\ 30000 constant fstop \ the end address for the file system with 3 24LC512 64k eeprom -\ 40000 constant fstop \ the end address for the file system with 4 24LC512 64k eeprom -\ 50000 constant fstop \ the end address for the file system with 5 24LC512 64k eeprom -\ 60000 constant fstop \ the end address for the file system with 6 24LC512 64k eeprom -\ 70000 constant fstop \ the end address for the file system with 7 24LC512 64k eeprom - -\ NOTE IF you have DEMOBOARD or any system with 32K EEPROM, you will step on your spin image -\ when you write to the EEPROM. You can still use it (if you are tricky), but KNOW WHAT YOUR DOING!!! - -\ -\ CONFIG PARAMETERS END -\ - - -\ lasti? ( -- t/f ) true if this is the last value of i in this loop -[if lasti? -: lasti? _rsptr COG@ 2+ COG@ 1- _rsptr COG@ 3 + COG@ = ; ] - -\ padbl ( -- ) fills this cogs pad with blanks -[if padbl -: padbl pad padsize bl fill ; ] -\ _eeread ( t/f -- c1 ) read a byte from the eeprom, ackbit in, byte out -[if _eeread : _eeread _sdai 0 8 0 do 1 lshift _sclh _sda? _scll if 1 or then loop -swap if _sdah else _sdal then _sdao _sclh _scll _sdal ; ] - -\ the eereadpage and eewritePage words assume the eeprom are 64kx8 and will address up to -\ 8 sequential eeproms -\ eereadpage ( eeAddr addr u -- t/f ) return true if there was an error, use lock 1 -[if eereadpage : eereadpage begin 1 lockset 0= until -1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift dup >r -_eestart A0 or _eewrite swap _eewrite or swap _eewrite or -_eestart r> A1 or _eewrite or -rot2 bounds -do lasti? _eeread i C! loop _eestop 1 lockclr drop ; ] - -\ _eeread ( t/f -- c1 ) read a byte from the eeprom, ackbit in, byte out -[if _eeread : _eeread _sdai 0 8 0 do 1 lshift _sclh _sda? _scll if 1 or then loop -swap if _sdah else _sdal then _sdao _sclh _scll _sdal ; ] - -\ the eereadpage and eewritePage words assume the eeprom are 64kx8 and will address up to -\ 8 sequential eeproms -\ eereadpage ( eeAddr addr u -- t/f ) return true if there was an error, use lock 1 -[if eereadpage : eereadpage begin 1 lockset 0= until -1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift dup >r -_eestart A0 or _eewrite swap _eewrite or swap _eewrite or -_eestart r> A1 or _eewrite or -rot2 bounds -do lasti? _eeread i C! loop _eestop 1 lockclr drop ; ] - -\ EW@ ( eeAddr -- n1 ) -[if EW@ -: EW@ t0 2 eereadpage if 8006 ERR then t0 W@ ; ] - -\ EC@ ( eeAddr -- c1 ) -[if EC@ -: EC@ EW@ FF and ; ] - -\ (fspa) ( addr1 -- addr2) addr2 is the next page aligned address after addr1 -: (fspa) fsps 1- + fsps 1- andn ; - -\ (fsnext) ( addr1 -- addr2 t/f) addr - the current file address, addr2 - the next addr, t/f - true if we have -\ gone past the end of the eeprom. t0 -length of the current file -\ t1 - length of the file name (char) -: (fsnext) t0 W@ t1 C@ + 2+ 1+ + (fspa) dup fstop >= ; - - -\ (fswr) ( addr1 addr2 n1 -- ) addr1 - the eepropm address to write, addr2 - the address to write from -\ n1 - the number of bytes to write -: (fswr) dup >r rot dup r> + fstop 1- > if A0 ERR then rot2 eewritepage if 88 ERR then ; - -\ (fsrd) ( addr1 addr2 n1 -- ) addr1 - the eepropm address to read, addr2 - the address of the read buffer -\ n1 - the number of bytes to read -: (fsrd) dup >r rot dup r> + fstop 1- > if C0 ERR then rot2 eereadpage if 90 ERR then ; - -\ (fsfree) ( -- n1 ) n1 is the first location in the file system, -1 if there are none -: (fsfree) -1 fsbot begin -\ read 3 bytes into t0, t1 and process - dup t0 3 (fsrd) t0 W@ FFFF = if nip dup -1 else (fsnext) then -until drop ; - -\ (fsfind) ( cstr -- addr ) find the last file named cstr, addr is the eeprom address, 0 if not found -: (fsfind) fsbot 0 >r begin -\ read namesizemax 1F + 3 bytes into t0, t1, and tbuf - dup t0 22 (fsrd) t0 W@ FFFF = if -1 else - over t1 cstr= if r> drop dup >r then - (fsnext) - then -until 2drop r> ; - -\ (fslast) ( -- addr ) find the last file, 0 if not found -: (fslast) 0 fsbot begin -\ read namesizemax 1F + 3 bytes into t0, t1, and tbuf - dup t0 22 (fsrd) t0 W@ FFFF = if -1 else - nip dup - (fsnext) - then -until drop ; - -\ fsclear ( -- ) -: fsclr padbl fsbot 400 + fsbot do i pad fsps (fswr) 2e emit fsps +loop -1 fsbot EW! ; -: fsclear -1 fsbot EW! ; - -\ fsfree ( -- ) -: fsfree (fsfree) dup -1 = if 0 else fstop swap - then . ." bytes free in fs" cr ; - -\ fsls ( -- ) list the files -: fsls cr fsbot begin -\ read namesizemax 1F + 3 bytes into t0, t1, and tbuf - dup t0 22 (fsrd) t0 W@ FFFF = if -1 else - dup .addr space t0 W@ .addr space t1 .cstr cr - (fsnext) - then -until fstop swap - cr . ." bytes free in files system" cr cr ; - -\ (fsread) ( cstr -- ) -: (fsread) (fsfind) dup if -\ read 3 bytes into t0, t1 and process - dup t0 3 (fsrd) - t1 C@ + 2+ 1+ t0 W@ bounds do - ibound i - fsps >= if - i pad fsps (fsrd) pad fsps bounds - do i C@ emit loop i fsps 1- + seti - else - i EC@ emit - then - loop -else drop then padbl ; - -\ fsread ( -- ) filename -: fsread parsenw dup if (fsread) else drop then ; - -\ (fsload) ( ctsr -- ) -: (fsload) cogid nfcog iolink (fsread) d emit d emit cogid iounlink ; - -\ fsload filename ( -- ) send the file to the next free forth cog -: fsload parsenw dup if (fsload) else drop then ; - -\ (fsk) ( n1 -- n2) -: (fsk) 8 lshift key or ; - -\ fswrite filename ( -- ) writes a file until ... followed immediately by a cr is encountered -: fswrite (fsfree) dup -1 <> parsenw dup rot and if -\ set the file length to 0, copy in the file name - 0 pad W! dup C@ 2+ 1+ pad + swap pad 2+ ccopy -\ find the first free page - 0 swap key (fsk) (fsk) (fsk) -\ ( eaddr1 n1 addr2 n2 ) eaddr - start of file in the eeprom, n1 - bytes written so far, addr2 - next addr in the pad, -\ n2 - a 4 byte key buffer - begin -\ check to see if we have a ... at the end of a line - 2E2E2E0D over = if - -1 - else -\ get a key from the key buffer, write it the the pad - swap over 18 rshift dup dup d = if drop cr else emit then over C! 1+ tuck pad - fsps = if -\ we have a page worth of data, write it out - nip rot2 2dup + pad fsps (fswr) fsps + rot pad swap - then -\ get another key - (fsk) 0 - then - until -\ any keys left? - drop pad - dup 0> if -\ write the leftover, not a full page - >r 2dup + pad r> dup >r (fswr) r> + - else - drop - then -\ write the length of FFFF for the next file - 2dup + FFFF swap (fspa) dup fstop 1- < if EW! else 2drop then -\ subtract the length of the filename +1, and the 2 bytes which are the length of the file, and update the length of the file - over 2+ EC@ 2+ 1+ - swap EW! -else 2drop clearkeys then padbl -; - -\ fsdrop ( -- ) deletes last file -: fsdrop (fslast) dup -1 = if drop else FFFF swap EW! then ; - - diff --git a/bin/sd-card-basic/SYSTEM/scr.lib b/bin/sd-card-basic/SYSTEM/scr.lib deleted file mode 100644 index a879692..0000000 --- a/bin/sd-card-basic/SYSTEM/scr.lib +++ /dev/null @@ -1,69 +0,0 @@ - -hex - -ifnot: lib:scr -: lib:scr ; - -\ kommandoformate -ifnot: bel:char \ ( b -- ) -: bel:char b[ [b!] ]b ; -ifnot: bel:fkt!b! \ ( b fkt -- ) -: bel:fkt!b! b[ 0 [b!] [b!] [b!] ]b ; -ifnot: bel:fkt!b!b! \ ( b b fkt -- ) -: bel:fkt!b!b! b[ 0 [b!] [b!] [b!] [b!] ]b ; -ifnot: bel:ctrl! \ ( ctrl -- ) -: bel:ctrl! b[ 0 [b!] 3 [b!] [b!] ]b ; -ifnot: bel:ctrl!b! \ ( b ctrl -- ) -: bel:ctrl!b! b[ 0 [b!] 3 [b!] [b!] [b!] ]b ; -ifnot: bel:ctrl!b@ \ ( ctrl -- b@ ) -: bel:ctrl!b@ b[ 0 [b!] 3 [b!] [b!] [b@] ]b ; -ifnot: bel:ctrl!b!b! \ ( b b ctrl -- ) -: bel:ctrl!b!b! b[ 0 [b!] 3 [b!] [b!] [b!] [b!] [b!] ]b ; - -\ einfache steuerzeichen -ifnot: scr:cls \ ( -- ) - screen löschen -: scr:cls 01 bel:char ; -ifnot: scr:home \ ( -- ) - cursor oben links -: scr:home 02 bel:char ; -ifnot: scr:pos1 \ ( -- ) - cursor an zeilenanfang -: scr:pos1 03 bel:char ; -ifnot: scr:curon \ ( -- ) - cursor anschalten -: scr:curon 04 bel:char ; -ifnot: scr:curoff \ ( -- ) - cursor abschalten -: scr:curoff 05 bel:char ; -ifnot: scr:scrlu \ ( -- ) - screen nach oben scrollen -: scr:scrlu 06 bel:char ; -ifnot: scr:scrld \ ( -- ) - screen nach unten scrollen -: scr:scrld 07 bel:char ; -ifnot: scr:bs \ ( -- ) - backspace -: scr:bs 08 bel:char ; -ifnot: scr:tab \ ( -- ) - tabulator -: scr:tab 09 bel:char ; - -\ screen-funktionen -ifnot: scr:logo \ ( y x -- ) - hive logo -: scr:logo 5 bel:fkt!b!b! ; -ifnot: scr:char \ ( char -- ) - zeichensatz direkt ausgeben -: scr:char 6 bel:fkt!b! ; - -\ parametrisierte steuerzeichen -ifnot: scr:setcur \ ( cur -- ) - cursorzeichen setzen -: scr:setcur 01 bel:ctrl!b! ; -ifnot: scr:setx \ ( x -- ) - cursor position x setzen -: scr:setx 02 bel:ctrl!b! ; -ifnot: scr:sety \ ( y -- ) - cursor position y setzen -: scr:sety 03 bel:ctrl!b! ; -ifnot: scr:getx \ ( -- x ) - cursor position x abfragen -: scr:getx 04 bel:ctrl!b@ ; -ifnot: scr:gety \ ( -- y ) - cursor position y abfragen -: scr:gety 05 bel:ctrl!b@ ; -ifnot: scr:setcol \ ( colnr -- ) - farbe wählen 0..15 -: scr:setcol 06 bel:ctrl!b! ; -ifnot: scr:sline \ ( row -- ) - anfangszeile scrollbereich -: scr:sline 07 bel:ctrl!b! ; -ifnot: scr:eline \ ( row -- ) - endzeile scrollbereich -: scr:eline 08 bel:ctrl!b! ; -ifnot: scr:sinit \ ( -- ) - -: scr:sinit 09 bel:ctrl! ; -ifnot: scr:tabset \ ( pos nr -- ) - tabulatorposition setzen 0..7 -: scr:tabset 0A bel:ctrl!b!b! ; diff --git a/bin/sd-card-basic/SYSTEM/sd0.lib b/bin/sd-card-basic/SYSTEM/sd0.lib deleted file mode 100644 index 8cf2e49..0000000 --- a/bin/sd-card-basic/SYSTEM/sd0.lib +++ /dev/null @@ -1,176 +0,0 @@ - -hex - -ifnot: lib:sd0 -: lib:sd0 ; - -\ ------------------------------------ lib:sd0 - -\ kommandoformate - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!b!l@ \ ( b fkt -- l ) -: adm:fkt!b!l@ b[ [a!] [a!] [a.l@] ]b ; - -ifnot: adm:fkt!l! \ ( l fkt -- ) -: adm:fkt!l! b[ [a!] [a.l!] ]b ; - -ifnot: adm:fkt!l@ \ ( fkt -- l ) -: adm:fkt!l@ b[ [a!] [a.l@] ]b ; - -ifnot: adm:fkt!b!l! \ ( l b fkt -- ) -: adm:fkt!b!l! b[ [a!] [a!] [a.l!] ]b ; - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!b!s!b@ \ ( s b fkt -- b ) -: adm:fkt!b!s!b@ b[ [a!] [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!s!s!b@ \ ( s s fkt -- b ) -: adm:fkt!s!s!b@ b[ [a!] [a.s!] [a.s!] [a@] ]b ; - -\ dateisystem-funktionen - -\ adm:mount ( -- err ) - medium mounten -ifnot: adm:mount -: adm:mount - 01 adm:fkt!b@ ; - -\ adm:diropen ( -- ) - verzeichnisabfrage initialisieren -ifnot: adm:diropen -: adm:diropen - 02 adm:fkt! ; - -\ adm:nextfile ( -- st ) -\ st = 0 - keine gültige datei -\ st = 1 - dateiname im pad gültig -\ bei gültigem eintrag befindet sich der dateiname im pad -ifnot: adm:nextfile -: adm:nextfile - b[ 03 [a!] [a@] dup if [a.s@] then ]b ; - -\ adm:open ( cstr modus -- err ) - datei öffnen -\ modus "R" $52 - Read -\ modus "W" $57 - Write -\ modus "A" $41 - Append -ifnot: adm:open -: adm:open - 04 adm:fkt!b!s!b@ ; - -\ adm:close ( -- ) - datei schließen -ifnot: adm:close -: adm:close - 05 adm:fkt!b@ ; - -\ adm:getc ( -- c ) - ein zeichen aus datei lesen -ifnot: adm:getc -: adm:getc - 06 adm:fkt!b@ ; - -\ adm:putc ( c -- ) - ein zeichen in datei schreiben -ifnot: adm:putc -: adm:putc - 07 adm:fkt!b! ; - -\ adm:eof ( -- eof ) - abfrage ob end of file erreicht ist -ifnot: adm:eof -: adm:eof - 1E adm:fkt!b@ ; - -\ adm:getblk ( adr cnt -- ) - datenblock aus datei lesen - -\ adm:putblk ( adr cnt -- ) - datenblock in datei schreiben - -\ adm:seek ( pos -- ) - position in datei setzen -: adm:seek - 0A adm:fkt!l! ; - -\ adm:fattrib ( nr -- attrib ) - dateiattribut abfragen -ifnot: adm:fattrib -: adm:fattrib - 0B adm:fkt!b!l@ ; - -\ adm:volname ( -- ) - name des volumes im pad ablegen -ifnot: adm:volname -: adm:volname - 0C adm:fkt!s@ ; - -\ adm:checkmounted ( -- t/f ) -ifnot: adm:checkmounted -: adm:checkmounted - 0D adm:fkt!b@ ; - -\ adm:checkopen ( -- t/f ) -ifnot: adm:checkopen -: adm:checkopen - 0E adm:fkt!b@ ; - -\ adm:checkused ( -- used ) - anzahl benutzte sektoren -ifnot: adm:checkused -: adm:checkused - 0F adm:fkt!l@ ; - -\ adm:checkfree ( -- free ) - anzahl freie sektoren -ifnot: adm:checkfree -: adm:checkfree - 10 adm:fkt!l@ ; - -\ adm:newfile ( cstr -- ) - neue datei erstellen -ifnot: adm:newfile -: adm:newfile - 11 adm:fkt!s!b@ ; - -\ adm:newdir ( cstr -- ) - neues verzeichnis erstellen -ifnot: adm:newdir -: adm:newdir - 12 adm:fkt!s!b@ ; - -\ adm:del ( cstr -- ) - datei/verzeichnis löschen -ifnot: adm:del -: adm:del - 13 adm:fkt!s!b@ ; - -\ adm:rename ( cstr1.fn1 cstr2.fn2 -- ) -ifnot: adm:rename -: adm:rename - 14 adm:fkt!s!s!b@ ; - -\ adm:chattrib ( cstr1.fn cstr2.attrib -- ) -ifnot: adm:chattrib -: adm:chattrib - 15 adm:fkt!s!s!b@ ; - -\ adm:chdir ( cstr -- err ) - verzeichnis öffnen -ifnot: adm:chdir -: adm:chdir - 16 adm:fkt!s!b@ ; - -\ adm:format ( cstr.label -- ) - medium formatieren -ifnot: adm:format -: adm:format - 17 adm:fkt!s!b@ ; - -\ adm:unmount ( -- err ) - medium unmounten -ifnot: adm:unmount -: adm:unmount - 18 adm:fkt!b@ ; - -\ marker-funktionen - -ifnot: adm:dmact \ ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ .err ; -ifnot: adm:dmset \ ( dmnr -- ) - marker setzen -: adm:dmset 1A adm:fkt!b! ; -ifnot: adm:dmget \ ( dmnr -- dm ) - marker lesen -: adm:dmget 1B adm:fkt!b!l@ ; -ifnot: adm:dmclr \ ( dmnr -- ) - marker löschen -: adm:dmclr 1C adm:fkt!b! ; -ifnot: adm:dmput \ ( dm dmnr -- ) - marker schreiben -: adm:dmput 1D adm:fkt!b!l! ; - diff --git a/bin/sd-card-basic/SYSTEM/sfx.lib b/bin/sd-card-basic/SYSTEM/sfx.lib deleted file mode 100644 index 3c01222..0000000 --- a/bin/sd-card-basic/SYSTEM/sfx.lib +++ /dev/null @@ -1,93 +0,0 @@ - -hex - -ifnot: lib:sfx -: lib:sfx ; - -\ kommandoformen - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!b! \ ( b b fkt -- ) -: adm:fkt!b!b! b[ [a!] [a!] [a!] ]b ; - -ifnot: adm:fkt!b!64b! \ ( ptr b fkt -- ) -: adm:fkt!b!64b! b[ [a!] [a!] - 31 0 do dup i + C@ [a!] loop drop ]b ; - -\ sfx-funktionen - -\ sfx:fire( chan slot -- ) - sfx abspielen -\ slot - $00..$0f nummer der freien effektpuffer -\ slot - $f0..f5 vordefinierte effektslots -\ chan - 0/1 stereokanal -\ vordefinierte effekte -\ &f0 - warnton -\ $f1 - signalton -\ $f2 - herzschlag schnell -\ $f3 - herzschlag langsam -\ $f4 - telefon -\ $f5 - phaser :) -\ $f6 - pling -\ $f7 - on -\ $f8 - off -ifnot: sfx:fire -: sfx:fire 6B adm:fkt!b!b! ; - -\ ( ptr slot -- ) - sfx setzen -\ slot - $00..$0f nummer der freien effektpuffer -\ ptr - zeiger auf 32 byte effektdaten -\ -\ struktur der effektdaten: -\ -\ [wav ][len ][freq][vol ] grundschwingung -\ [lfo ][lfw ][fma ][ama ] modulation -\ [att ][dec ][sus ][rel ] hüllkurve -\ [seq ] (optional) -\ -\ [wav] wellenform -\ 0 sinus (0..500hz) -\ 1 schneller sinus (0..1khz) -\ 2 dreieck (0..500hz) -\ 3 rechteck (0..1khz) -\ 4 schnelles rechteck (0..4khz) -\ 5 impulse (0..1,333hz) -\ 6 rauschen -\ [len] tonlänge $0..$fe, $ff endlos -\ [freq] frequenz $00..$ff -\ [vol] lautstärke $00..$0f -\ -\ [lfo] low frequency oscillator $ff..$01 -\ [lfw] low frequency waveform -\ $00 sinus (0..8hz) -\ $01 fast sine (0..16hz) -\ $02 ramp up (0..8hz) -\ $03 ramp down (0..8hz) -\ $04 square (0..32hz) -\ $05 random -\ $ff sequencer data (es folgt eine sequenzfolge [seq]) -\ [fma] frequency modulation amount -\ $00 no modulation -\ $01..$ff -\ [ama] amplitude modulation amount -\ $00 no modulation -\ $01..$ff -\ [att] attack $00..$ff -\ [dec] decay $00..$ff -\ [sus] sustain $00..$ff -\ [rel] release $00..$ff -ifnot: sfx:setslot -: sfx:setslot - 6C adm:fkt!b!64b! ; - -\ sfx:keyoff ( chan -- ) - release-phase einleiten -ifnot: sfx:keyoff -: sfx:keyoff - 6D adm:fkt!b! ; - -\ sfx:stop ( chan -- ) -ifnot: sfx:stop -: sfx:stop - 6E adm:fkt!b! ; - diff --git a/bin/sd-card-basic/SYSTEM/sfxtool.bin b/bin/sd-card-basic/SYSTEM/sfxtool.bin deleted file mode 100644 index 4bb86b0..0000000 Binary files a/bin/sd-card-basic/SYSTEM/sfxtool.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/splay.bin b/bin/sd-card-basic/SYSTEM/splay.bin deleted file mode 100644 index ebdce7c..0000000 Binary files a/bin/sd-card-basic/SYSTEM/splay.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/splay.mod b/bin/sd-card-basic/SYSTEM/splay.mod deleted file mode 100644 index eb6e485..0000000 --- a/bin/sd-card-basic/SYSTEM/splay.mod +++ /dev/null @@ -1,116 +0,0 @@ - -\ achtung: vor verwendung muss der administra-code mit sidcog -\ geladen werden: -\ sys tools.f -\ sys splay.f <--- sid-player laden -\ aload admsid.adm <--- administra-code mit sidcog laden -\ splay xyz.dmp <--- sid-datei abspielen - - -hex - -ifnot: mod:splay -: mod:splay ; - -\ kommandoformen - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ 0 [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!s! \ ( s fkt -- ) -: adm:fkt!s! b[ [a!] [a.s!] ]b ; - -ifnot: adm:fkt!s!b@ \ ( s fkt -- err ) -: adm:fkt!s! b[ [a!] [a.s!] [b@] ]b ; - -ifnot: adm:fkt!b!l@ \ ( b fkt -- l ) -: adm:fkt!b!l@ b[ [a!] [a!] [a.l@] ]b ; - -\ dm-funktionen -ifnot: adm:dmget \ ( dmnr -- dm ) - marker lesen -: adm:dmget 1B adm:fkt!b!l@ ; - -\ adm:dmact ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ drop ; - -\ adm-funktionen - -\ adm:aload ( cstr -- ) - neuen administra-code laden -ifnot: adm:aload -: adm:aload - 60 adm:fkt!s! ; - -\ tools - -ifnot: aload -: aload - mount? parsenw dup - if 1 adm:dmact adm:aload 0 else drop 23 then .err ; - -\ sid-funktionen - -ifnot: sid:play -: sid:play \ ( cstr -- err ) - 9E adm:fkt!s!b@ ; - -ifnot: sid:stop -: sid:stop \ ( -- ) - 9F adm:fkt! ; - -ifnot: sid:status -: sid:status \ ( -- status ) - A1 adm:fkt!b@ ; - -ifnot: sid:mute -\ 1 - sid1 -\ 2 - sid2 -\ 3 - sid1 & sid2 -: sid:mute \ ( sidnr -- ) - A3 adm:fkt!b! ; - -\ send? ( -- t/f ) -ifnot: send? -: send? - begin 50 delms key? dup if key drop then sid:status 0= or - until ; - -\ (splay) ( cstr -- ) -ifnot: (splay) -: (splay) \ ( cstr -- ) - ." Datei : " dup .cstr cr sid:play .err - send? sid:stop 3 sid:mute adm:close drop ; - -\ files? ( -- cnt ) - anzahl dateien im dir -ifnot: files? -: files? - adm:diropen - 0 begin adm:nextfile swap 1+ swap 0= until 3 - padbl ; - -\ filenr? ( nr -- ) -ifnot: filenr? -: filenr? - adm:diropen - 0 do adm:nextfile drop loop ; - -\ splay name.dmp ( -- ) - sid-datei abspielen -ifnot: splay -: splay - parsenw (splay) ; - -\ sdirplay ( -- ) - gesamtes verzeichnis abspielen -\ im verzeichnis dürfen nur sid-dateien sein! -ifnot: sdirplay -: sdirplay - files? dup ." Dateien : " . cr - 0 do i dup 1 + . 3 + filenr? pad (splay) loop padbl ; - -ifnot: smute -: smute - sid:stop 3 sid:mute ; - \ No newline at end of file diff --git a/bin/sd-card-basic/SYSTEM/splay.txt b/bin/sd-card-basic/SYSTEM/splay.txt deleted file mode 100644 index 5f2eb23..0000000 --- a/bin/sd-card-basic/SYSTEM/splay.txt +++ /dev/null @@ -1,8 +0,0 @@ -/? : Hilfetext -/m name.dmp : DMP-Datei mono auf SID2 abspielen -/s name.dmp : DMP-Datei stereo auf beiden SIDs abspielen -/d : Verzeichnis wiedergeben - q - quit - n - next - p - pause - diff --git a/bin/sd-card-basic/SYSTEM/sysconf.bin b/bin/sd-card-basic/SYSTEM/sysconf.bin deleted file mode 100644 index 7b60532..0000000 Binary files a/bin/sd-card-basic/SYSTEM/sysconf.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/sysconf.txt b/bin/sd-card-basic/SYSTEM/sysconf.txt deleted file mode 100644 index 2e0aa0f..0000000 --- a/bin/sd-card-basic/SYSTEM/sysconf.txt +++ /dev/null @@ -1,15 +0,0 @@ -/? : Hilfe -/p : 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 diff --git a/bin/sd-card-basic/SYSTEM/test1.txt b/bin/sd-card-basic/SYSTEM/test1.txt deleted file mode 100644 index 15d01ca..0000000 --- a/bin/sd-card-basic/SYSTEM/test1.txt +++ /dev/null @@ -1,7 +0,0 @@ - -"Die Blütenträume -Von Faltern, wie ich hörte, -So lautlos wie sie -" -Reikan - - diff --git a/bin/sd-card-basic/SYSTEM/test2.txt b/bin/sd-card-basic/SYSTEM/test2.txt deleted file mode 100644 index 72e62d4..0000000 --- a/bin/sd-card-basic/SYSTEM/test2.txt +++ /dev/null @@ -1,115 +0,0 @@ -Johann Wolfgang Goethe - -Der Zauberlehrling - -Hat der alte Hexenmeister -Sich doch einmal wegbegeben! -Und nun sollen seine Geister -Auch nach meinem Willen leben! -Seine Wort' und Werke -Merkt' ich und den Brauch, -Und mit Geistesstärke -Tu' ich Wunder auch. - -Walle! Walle -Manche Strecke, -Dass, zum Zwecke, -Wasser fließe -Und mit reichem, vollem Schwalle -Zu dem Bade sich ergieße. - -Und nun komm, du alter Besen! -Nimm die schlechten Lumpenhüllen! -Bist schon lange Knecht gewesen; -Nun erfülle meinen Willen! -Auf zwei Beinen stehe, -Oben sei ein Kopf, -Eile nun und gehe -Mit dem Wassertopf! - -Walle! Walle -Manche Strecke, -Dass, zum Zwecke, -Wasser fließe -Und mit reichem, vollem Schwalle -Zu dem Bade sich ergieße. - -Seht, er läuft zum Ufer nieder; -Wahrlich! ist schon an dem Flusse, -Und mit Blitzesschnelle wieder -Ist er hier mit raschem Gusse. -Schon zum zweiten Male! -Wie das Becken schwillt! -Wie sich jede Schale -Voll mit Wasser füllt! - -Stehe! Stehe! -Denn wir haben -Deiner Gaben -Voll gemessen! -Ach, ich merk' es! Wehe! Wehe! -Hab' ich doch das Wort vergessen! - -Ach, das Wort, worauf am Ende -Er das wird, was er gewesen. -Ach, er läuft und bringt behände! -Wärst du doch der alte Besen! -Immer neue Güsse -Bringt er schnell herein, -Ach! und hundert Flüsse -Stürzen auf mich ein. - -Nein, nicht länger -Kann ich's lassen; -Will ihn fassen. -Das ist Tücke! -Ach! nun wird mir immer bänger! -Welche Miene! Welche Blicke! - -Oh, du Ausgeburt der Hölle! -Soll das ganze Haus ersaufen? -Seh' ich über jede Schwelle -Doch schon Wasserströme laufen. -Ein verruchter Besen, -Der nicht hören will! -Stock, der du gewesen, -Steh doch wieder still! - -Willst's am Ende -Gar nicht lassen? -Will dich fassen, -Will dich halten -Und das alte Holz behände -Mit dem scharfen Beile spalten. - -Seht, da kommt er schleppend wieder! -Wie ich mich nun auf dich werfe, -Gleich, o Kobold, liegst du nieder; -Krachend trifft die glatte Schärfe! -Wahrlich, brav getroffen! -Seht, er ist entzwei! -Und nun kann ich hoffen -Und ich atme frei! - -Wehe! Wehe! -Beide Teile -Stehn in Eile -Schon als Knechte -Völlig fertig in die Höhe! -Helft mir, ach! ihr hohen Mächte! - -Und sie laufen! Nass und nässer -Wird's im Saal und auf den Stufen. -Welch entsetzliches Gewässer! -Herr und Meister! Hör' mich rufen! - -Ach, da kommt der Meister! -Herr, die Not ist groß! -Die ich rief, die Geister, -Werd' ich nun nicht los. - -In die Ecke, -Besen! Besen! -Seid's gewesen! -Denn als Geister -Ruft euch nur, zu seinem Zwecke, -Erst hervor der alte Meister." \ No newline at end of file diff --git a/bin/sd-card-basic/SYSTEM/time.bin b/bin/sd-card-basic/SYSTEM/time.bin deleted file mode 100644 index b0fe325..0000000 Binary files a/bin/sd-card-basic/SYSTEM/time.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/tools.mod b/bin/sd-card-basic/SYSTEM/tools.mod deleted file mode 100644 index 4d74e6f..0000000 --- a/bin/sd-card-basic/SYSTEM/tools.mod +++ /dev/null @@ -1,152 +0,0 @@ - -hex - -ifnot: mod:tools -: mod:tools ; - -\ kommandoformen -ifnot: adm:fkt!b!l@ \ ( b fkt -- l ) -: adm:fkt!b!l@ b[ [a!] [a!] [a.l@] ]b ; -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; -ifnot: adm:fkt!s! \ ( s fkt -- ) -: adm:fkt!s! b[ [a!] [a.s!] ]b ; - -\ dm-funktionen -ifnot: adm:dmget \ ( dmnr -- dm ) - marker lesen -: adm:dmget 1B adm:fkt!b!l@ ; - -ifnot: adm:dmact \ adm:dmact ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ drop ; - -\ adm-funktionen - -\ adm:aload ( cstr -- ) - neuen administra-code laden -ifnot: adm:load -: adm:load - 60 adm:fkt!s! ; - -\ bel-funktionen - -\ bel:load ( cstr -- ) - bellatrix-code laden -\ achtung: die gesamte loader-operation ist eine atomare -\ operation über alle drei propellerchips, kann also auch -\ nicht aufgetrennt werden! -ifnot: bel:load -: bel:load - 52 adm:open .err \ datei öffnen - b[ - 0 [b!] 63 [b!] \ bella-loader starten - 10 0 do 06 [a!] [a@] [b!] loop \ header einlesen - 0A [a!] 0 [a.l!] \ 0 adm:seek - [b@] <8 [b@] or \ dateilänge empfangen - 0 do 06 [a!] [a@] [b!] loop \ datei senden - ]b - adm:close .err \ datei schließen -; - -\ ------------------------------------ mod:tools - -ifnot: aload -: aload \ name ( -- ) - administra-code laden - mount? parsenw dup - if adm:load 0 else drop 23 then .err ; - -ifnot: bload -: bload \ name ( -- ) - bellatrix-code laden - mount? parsenw dup - if bel:load 0 else drop 23 then .err ; - -ifnot: .dmstatus \ ( dm -- ) - ausgabe marker-status -: .dmstatus -1 = if ." frei" else ." gesetzt" then cr ; - -ifnot: dm? -: dm? - ." [root] : " 0 adm:dmget .dmstatus - ." [sys ] : " 1 adm:dmget .dmstatus - ." [usr ] : " 2 adm:dmget .dmstatus - ." [ A ] : " 3 adm:dmget .dmstatus - ." [ B ] : " 4 adm:dmget .dmstatus - ." [ C ] : " 5 adm:dmget .dmstatus ; - -\ open name ( -- ) - datei lesend öffnen und auf fehler prüfen -ifnot: open -: open - mount? parsenw dup - if 52 adm:open else drop 23 then .err ; - -\ close ( -- ) - geöffnete datei schließen -ifnot: close -: close - adm:close .err ; - -\ (cat) ( -- ) - alle zeichen der geöffneten datei ab -\ lesemarke auf ausgabekanal bis zum eof ausgeben -ifnot: (cat) -: (cat) begin adm:getc emit adm:eof until ; - -\ cat name ( -- ) - datei "name" komplett ausgeben -ifnot: cat -: cat open (cat) close ; - -\ nextline ( -- ) - ausgabe der nächsten textzeile aus der -\ geöffneten datei -ifnot: nextline -: nextline - begin adm:getc dup emit 0d = adm:eof or until ; - -\ nextlines ( n -- ) - ausgabe von n zeilen -ifnot: nextlines -: nextlines - 0 do adm:eof 0= if nextline then loop ; - -\ less name ( -- ) - zeilenweise ausgabe der datei -ifnot: less -: less - open begin 10 nextlines key 71 = adm:eof or until close ; - -\ #C ( c1 -- ) prepend the character c1 to the number -\ currently being formatted -ifnot: #C -: #C -1 >out W+! pad>out C! ; - -\ .cogch ( n1 n2 -- ) print as x(y) -ifnot: .cogch -: .cogch <# 29 #C # 28 #C drop # #> .cstr ; - -\ j ( -- n1 ) the second most current loop counter -ifnot: j -: j _rsptr COG@ 5 + COG@ ; - -\ cog? ( -- ) -ifnot: cog? -: cog? - 8 0 do ." Cog:" i dup . ." #io chan:" - dup cognchan . cogstate C@ - dup 4 and if version W@ .cstr then - dup 10 and if i cognumpad version W@ C@ over C@ - - spaces .cstr then - 14 and if i cogio i cognchan 0 do - i 4* over + 2+ W@ dup 0= if drop else - space space j i .cogch ." ->" io>cogchan .cogch - then - loop -drop then cr loop ; - -\ jede erweiterung legt ein wort als startmarke -\ nmit folgendem namen an: -\ mod:xxx - softwaremodule -\ drv:xxx - treiber -\ lib:xxx - bibliotheken -\ so kann mit den folgenden kommandos eine schnelle liste der -\ vorhandenen erweiterungen abgerufen und mit forget -\ aus dem system entfernt werden - -\ mod? ( -- ) - anzeige der module -ifnot: mod? -: mod? c" mod:" _words ; - -\ lib? ( -- ) - anzeige der bibliotheken -ifnot: lib? -: lib? c" lib:" _words ; - diff --git a/bin/sd-card-basic/SYSTEM/tv.bel b/bin/sd-card-basic/SYSTEM/tv.bel deleted file mode 100644 index 79af399..0000000 Binary files a/bin/sd-card-basic/SYSTEM/tv.bel and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/v1.mod b/bin/sd-card-basic/SYSTEM/v1.mod deleted file mode 100644 index 7b0b8cd..0000000 --- a/bin/sd-card-basic/SYSTEM/v1.mod +++ /dev/null @@ -1,325 +0,0 @@ - -: mod:vortrag ; - -24 constant rows -64 constant cols - -wvariable lcol 7 lcol W! - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ [a!] [a@] ]b ; - -ifnot: bel:char \ ( b -- ) -: bel:char b[ [b!] ]b ; -ifnot: bel:ctrl!b! \ ( b ctrl -- ) -: bel:ctrl!b! b[ 0 [b!] 3 [b!] [b!] [b!] ]b ; -ifnot: bel:fkt!b!b! \ ( b b fkt -- ) -: bel:fkt!b!b! b[ 0 [b!] [b!] [b!] [b!] ]b ; - -ifnot: scr:bs \ ( -- ) - backspace -: scr:bs 08 bel:char ; -ifnot: scr:tab \ ( -- ) - tabulator -: scr:tab 09 bel:char ; -ifnot: scr:pos1 \ ( -- ) - cursor an zeilenanfang -: scr:pos1 03 bel:char ; -ifnot: scr:setcol \ ( colnr -- ) - farbe wählen 0..15 -: scr:setcol 06 bel:ctrl!b! ; -ifnot: scr:sline \ ( row -- ) - anfangszeile scrollbereich -: scr:sline 07 bel:ctrl!b! ; -ifnot: scr:setx \ ( x -- ) - cursor position x setzen -: scr:setx 02 bel:ctrl!b! ; -ifnot: scr:sety \ ( y -- ) - cursor position y setzen -: scr:sety 03 bel:ctrl!b! ; -ifnot: scr:curon \ ( -- ) - cursor anschalten -: scr:curon 04 bel:char ; -ifnot: scr:curoff \ ( -- ) - cursor abschalten -: scr:curoff 05 bel:char ; -ifnot: scr:logo \ ( y x -- ) - hive logo -: scr:logo 5 bel:fkt!b!b! ; - -\ adm:setsound ( sfkt -- sstat ) - soundsystem verwalten -\ sfkt: -\ 0: hss-engine abschalten -\ 1: hss-engine anschalten -\ 2: dac-engine abschalten -\ 3: dac-engine anschalten -\ sstat - status/cognr startvorgang -ifnot: adm:setsound -: adm:setsound - 5C adm:fkt!b!b@ ; - -\ wav:start ( cstr -- err ) -ifnot: wav:start -: wav:start - 96 adm:fkt!s!b@ ; - -\ wav:stop ( -- ) -ifnot: wav:stop -: wav:stop - 97 adm:fkt!b@ drop ; - -\ won -ifnot: won -: won - 0 adm:setsound 3 adm:setsound 2drop ; - -\ woff -ifnot: woff -: woff - 2 adm:setsound 1 adm:setsound 2drop ; - -: lcol@ lcol W@ ; \ ( -- col ) - -: lines \ ( n -- ) - 0 do cr loop ; - -: waitkey - scr:curoff cr key drop scr:bs scr:bs scr:bs scr:curon ; - -: nextpage - scr:curoff scr:pos1 lcol@ spaces ." -->" key drop scr:bs scr:bs scr:bs scr:curon ; - -: .head \ ( -- ) - 4 scr:setcol scr:pos1 lcol@ spaces ; - -: .bullet \ ( -- ) - 0 scr:setcol scr:pos1 lcol@ spaces 0f emit space ; - -: .number \ ( n -- n ) - 0 scr:setcol scr:pos1 lcol@ spaces dup . 1+ - 2e emit space ; - -: .line \ ( -- ) - cr 0 scr:setcol scr:pos1 lcol@ 2+ spaces ; - -: .sub \ ( -- ) - 0 scr:setcol scr:pos1 lcol@ 2+ spaces ; - -wvariable xpos 1 xpos W! -wvariable ypos 1 ypos W! - -: pos! \ ( x y -- ) - ypos W! xpos W! ; - -: pos@ \ ( -- x y ) - xpos W@ ypos W@ ; - -: nextline - ypos W@ 1+ ypos W! ; - -: move \ ( x y -- ) - 1 delms pos@ scr:sety scr:setx ; - - -: btop0 \ ( -- ) - move 9f emit 6 0 do 90 emit loop 9e emit nextline ; - -: bbot0 \ ( -- ) - move 9d emit 6 0 do 90 emit loop 9c emit nextline ; - -: btop1 \ ( -- ) - move 2 spaces 9f emit 6 0 do 90 emit loop 9e emit nextline ; - -: bbot1 \ ( -- ) - move 2 spaces 9d emit 6 0 do 90 emit loop 9c emit nextline ; - -: bmid0 \ ( -- ) - move 91 emit ." COG " 95 emit 90 emit bb emit nextline - move 91 emit ." " 95 emit 90 emit aa emit nextline ; - -: bmid1 \ ( -- ) - move a9 emit 90 emit 94 emit ." COG " 91 emit nextline - move ba emit 90 emit 94 emit ." " 91 emit nextline ; - -: bmid2 \ ( -- ) - move a9 emit 90 emit 94 emit ." SER " - 95 emit 90 emit bb emit ." [TERMINAL]" nextline - move ba emit 90 emit 94 emit ." " 91 emit nextline ; - -: bmid3 \ ( -- ) - move a9 emit 90 emit 94 emit ." VGA " - 95 emit 90 emit bb emit ." [BELLATRIX]" nextline - move ba emit 90 emit 94 emit ." KBD " 91 emit nextline ; - -: bmid4 \ ( -- ) - move 91 emit ." COG " 95 emit 90 emit bb emit - ." Zeichenausgabekanal (emit)" nextline - move 91 emit ." " 95 emit 90 emit aa emit - ." Zeicheneingabekanal (key)" nextline ; - -: cog0 \ ( x y -- ) - 0 scr:setcol pos! btop0 bmid0 bbot0 ; - -: cog1 \ ( x y -- ) - 0 scr:setcol pos! btop1 bmid1 bbot1 ; - -: cog3 \ ( x y -- ) - 0 scr:setcol pos! btop0 bmid4 bbot0 ; - -: cogext \ ( x y -- ) - 0 scr:setcol pos! btop1 bmid2 bbot1 ; - -: cogint \ ( x y -- ) - 0 scr:setcol pos! btop1 bmid3 bbot1 ; - -: drvser - 0 scr:setcol 2dup cog0 swap a + swap cogext ; - -: drvint - 0 scr:setcol 2dup cog0 swap a + swap cogint ; - -: p0 - 0 scr:sline cls 5 lines - 14 1c scr:curoff scr:logo won c" woodz.wav" wav:start drop - key drop scr:curon wav:stop woff ; - -: i1 - 0 scr:sline cls 3 lines - .head ." Implementierungsvarianten" cr waitkey - .bullet ." Forth-Diamond: Master & Slaves = PropForth" waitkey cr - .sub ." Nachteil: Programmierung aller Treiber in Forth" waitkey cr - .bullet ." Forth-Spin: Forth mit SPIN-Interface" waitkey cr - .sub ." Vorteil: Nutzung fertiger Treiber" waitkey - .sub ." Nachteil: hoher Ressourcenverbrauch" waitkey cr - .bullet ." Forth-Funktionskomplexe: " cr cr - .sub ." Master = Forth" cr - .sub ." Slaves = Spin-Funktionsbibliotheken" cr - .sub ." Interface Forth <--> Spin = 8Bit-Bus" cr cr - nextpage ; - -: i2 - 0 scr:sline cls 3 lines - .head ." Implementierungsvarianten" cr cr - .bullet ." Forth-Funktionskomplexe: " cr cr - .sub ." Master = Forth" cr - .sub ." Slaves = Spin-Funktionsbibliotheken" cr - .sub ." Interface Forth <--> Spin = 8Bit-Bus" cr waitkey - .bullet ." Nachteile:" cr cr - .sub ." Spin --> Compiler noch auf Host" cr waitkey - .bullet ." Vorteile:" cr cr - .sub ." Code ist schon vorhanden (TriOS)" waitkey - .sub ." Gegenseitige Befruchtung von Forth & TriOS" waitkey - .sub ." Maximale Ressourcen für Forth im Master" waitkey - .sub ." Spin-Code kann später auch durch Forth ersetzt werden" cr - nextpage ; - -: i3 - 0 scr:sline cls 3 lines - .head ." Ablauf der Implementierung" cr waitkey - .bullet ." Ausgangslage: " cr cr - .sub ." Forth mit Terminalzugriff" cr waitkey - .bullet ." Plan:" cr cr - .sub ." 1. Busroutine um auf Slaves zuzugreifen" waitkey - .sub ." 2. Integration VGA/Keyboard/SD-Card" waitkey - .sub ." 3. Autostart" cr cr - nextpage ; - - -: p1 - 0 scr:sline cls 1 lines - .head ." Buszugriff" cr cr - .bullet ." ! ( n adr -- ) store - Wert im RAM speichern" cr - .bullet ." @ ( adr -- n ) fetch - Wert aus RAM lesen" cr waitkey - .bullet ." c! c@ p! p@ - Abwandlungen der Grundform" cr waitkey - .bullet ." s! ( c adr -- ) - Byte an Slave senden" cr - .bullet ." s@ ( adr -- c ) - Byte von Slave empfangen" cr waitkey - .bullet ." b! ( c -- ) - Byte an Bellatrix senden" cr - .bullet ." b@ ( -- c ) - Byte von Bellatrix empfangen" cr - .bullet ." a! ( c -- ) - Byte an Administra senden" cr - .bullet ." a@ ( -- c ) - Byte von Administra empfangen" cr cr - .head ." Beispiele :" cr cr - .bullet ." 01 b! - Bildschirm löschen" waitkey - .bullet ." : cls 01 b! ; " waitkey - .bullet ." : bel:key 0 b! 2 b! b@ ; \ ( -- key )" cr - nextpage ; - -: p2 - 0 scr:sline cls 5 lines - .head ." IO-Kanäle/Pipes" cr waitkey - 9 8 cog3 key drop - 9 c cog3 - .line ." ..." - 9 11 cog3 - cr cr - nextpage ; - -: p3 - 0 scr:sline cls 5 lines - .head ." Serieller Treiber" cr cr - 9 8 drvser - 9 c cog3 - .line ." ..." - 9 11 cog3 - cr cr - nextpage ; - -: p4 - 0 scr:sline cls 5 lines - .head ." VGA/Keyboard-Treiber" cr cr - 9 8 drvser - 9 c drvint - .line ." ..." - 9 11 cog3 - cr cr - nextpage ; - -: p5 - 0 scr:sline cls 5 lines - .head ." Treiber: VGA" cr cr - 9 8 drvint cr - .line ." : drv-vga " - .line ." begin" - .line ." key?" - .line ." if key b! then" - .line ." 0 until ;" - cr cr - nextpage ; - -: p6 - 0 scr:sline cls 5 lines - .head ." Treiber: Keyboard" cr cr - 9 8 drvint cr - .line ." : drv-key" - .line ." begin" - .line ." bel:keystat" - .line ." if bel:key emit then" - .line ." 0 until ;" - cr cr - nextpage ; - -: p7 - 0 scr:sline cls 5 lines - .head ." Treiber: Gesamt" cr cr - 9 8 drvint cr - .line ." : drv:int" - .line ." begin" - .line ." \ input --> vga/video" - .line ." 200 0 do key?" - .line ." if key b[ [b!] ]b then loop" - .line ." \ output <-- keyboard" - .line ." b[ [key?]" - .line ." if [key] [emit] then ]b" - .line ." 0 until ;" - cr cr - nextpage ; - -: p8 - 0 scr:sline cls 5 lines - .head ." Semaphoren" cr waitkey - .bullet ." : bel:key 0 b! 2 b! b@ ; \ ( -- key )" cr waitkey - .bullet ." : bel:key bon 0 b! 2 b! b@ boff ;" cr waitkey - .bullet ." [ ... ]" cr waitkey - .bullet ." b[ ... ]b" cr waitkey - .bullet ." : bel:key b[ 0 b! 2 b! b@ ]b ;" cr waitkey - .bullet ." : bel:key b[ 0 [b!] 2 [b!] [b@] ]b ;" cr waitkey - .bullet ." : bel:key 2 0 b[ [b!] [b!] [b@] ]b ;" cr cr - cr cr - nextpage ; - -: run - begin p0 i1 i2 i3 p1 p2 p3 p4 p5 p6 p7 p8 0 until ; - diff --git a/bin/sd-card-basic/SYSTEM/vga.bel b/bin/sd-card-basic/SYSTEM/vga.bel deleted file mode 100644 index e534891..0000000 Binary files a/bin/sd-card-basic/SYSTEM/vga.bel and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/wav.lib b/bin/sd-card-basic/SYSTEM/wav.lib deleted file mode 100644 index 4198e23..0000000 --- a/bin/sd-card-basic/SYSTEM/wav.lib +++ /dev/null @@ -1,54 +0,0 @@ - -hex - -ifnot: lib:wav -: lib:wav ; - -\ kommandoformen - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ [a!] [a@] ]b ; - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!l@l@ \ ( fkt -- l l ) -: adm:fkt!l@l@ b[ [a!] [a.l@] [a.l@] ]b ; - -\ wave-funktionen - -\ wav:start ( cstr -- err ) -ifnot: wav:start -: wav:start - 96 adm:fkt!s!b@ ; - -\ wav:stop ( -- ) -ifnot: wav:stop -: wav:stop - 97 adm:fkt!b@ drop ; - -\ wav:status ( -- status ) -ifnot: wav:status -: wav:status - 98 adm:fkt!b@ ; - -\ wav:leftvol ( vol -- ) -ifnot: wav:leftvol -: wav:leftvol - 99 adm:fkt!b! ; - -\ wav:rightvol ( vol -- ) -ifnot: wav:rightvol -: wav:rightvol - 9A adm:fkt!b! ; - -\ wav:pause ( -- ) -ifnot: wav:pause -: wav:pause - 9B adm:fkt!b@ drop ; - -\ wav:position ( -- len pos ) -ifnot: wav:position -: wav:position - 9C adm:fkt!l@l@ ; - diff --git a/bin/sd-card-basic/SYSTEM/words.mod b/bin/sd-card-basic/SYSTEM/words.mod deleted file mode 100644 index c0165f3..0000000 --- a/bin/sd-card-basic/SYSTEM/words.mod +++ /dev/null @@ -1,16 +0,0 @@ - -fl - -\ _words ( cstr -- ) prints the words in the forth dictionary starting with cstr, 0 prints all -: _words lastnfa -begin - 2dup swap dup if npfx else 2drop -1 then - if dup .strname space then - nfa>next dup 0= -until 2drop cr ; - -\ words ( -- ) prints the words in the forth dictionary, if the pad has another string following, with that prefix -: words parsenw _xwords ; - -: t1 1000 0 do i . loop ; -: t2 1000 0 do ." test " loop ; diff --git a/bin/sd-card-basic/SYSTEM/wplay.bin b/bin/sd-card-basic/SYSTEM/wplay.bin deleted file mode 100644 index 8f21c84..0000000 Binary files a/bin/sd-card-basic/SYSTEM/wplay.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/wplay.mod b/bin/sd-card-basic/SYSTEM/wplay.mod deleted file mode 100644 index faf878f..0000000 --- a/bin/sd-card-basic/SYSTEM/wplay.mod +++ /dev/null @@ -1,93 +0,0 @@ - -hex - -ifnot: mod:wplay -: mod:wplay ; - -\ kommandoformate - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ [a!] [a@] ]b ; - -\ wave-funktionen - -\ wav:start ( cstr -- err ) -ifnot: wav:start -: wav:start - 96 adm:fkt!s!b@ ; - -\ wav:stop ( -- ) -ifnot: wav:stop -: wav:stop - 97 adm:fkt!b@ drop ; - -\ wav:status ( -- status ) -ifnot: wav:status -: wav:status - 98 adm:fkt!b@ ; - -\ adm-funktionen - -\ adm:setsound ( sfkt -- sstat ) - soundsystem verwalten -\ sfkt: -\ 0: hss-engine abschalten -\ 1: hss-engine anschalten -\ 2: dac-engine abschalten -\ 3: dac-engine anschalten -\ sstat - status/cognr startvorgang -ifnot: adm:setsound -: adm:setsound - 5C adm:fkt!b!b@ ; - - -\ metafunktionen - -\ won -ifnot: won -: won - 0 adm:setsound 3 adm:setsound 2drop ; - -\ woff -ifnot: woff -: woff - 2 adm:setsound 1 adm:setsound 2drop ; - -\ wend? ( -- t/f ) -ifnot: wend? -: wend? - begin 50 delms key? dup if key drop then wav:status 0= or until ; - -\ (wplay) ( cstr -- ) -ifnot: (wplay) -: (wplay) \ ( cstr -- ) - ." Datei : " dup .cstr cr wav:start .err wend? wav:stop ; - -\ wplay name ( -- ) -ifnot: wplay -: wplay - won parsenw (wplay) woff ; - -\ files? ( -- cnt ) - anzahl dateien im dir -ifnot: files? -: files? - adm:diropen - 0 begin adm:nextfile swap 1+ swap 0= until 3 - padbl ; - -\ filenr? ( nr -- ) -ifnot: filenr? -: filenr? - adm:diropen - 0 do adm:nextfile drop loop ; - -\ wdirplay ( -- ) - gesamtes verzeichnis abspielen -\ im verzeichnis dürfen nur wav-dateien sein! -ifnot: wdirplay -: wdirplay - won files? dup ." Dateien : " . cr - 0 do i dup 1 + . 3 + filenr? pad (wplay) loop padbl woff ; diff --git a/bin/sd-card-basic/SYSTEM/wplay.txt b/bin/sd-card-basic/SYSTEM/wplay.txt deleted file mode 100644 index d2301d9..0000000 --- a/bin/sd-card-basic/SYSTEM/wplay.txt +++ /dev/null @@ -1,9 +0,0 @@ -/? : Hilfetext -/p name.wav : WAV-Datei abspielen -/d : Verzeichnis wiedergeben - q - quit - n - next - p - pause -/l 0..100 : Lautstärke links -/r 0..100 : Lautstärke rechts -/i name.wav : Info zur Datei anzeigen diff --git a/bin/sd-card-basic/SYSTEM/yplay.bin b/bin/sd-card-basic/SYSTEM/yplay.bin deleted file mode 100644 index 5a68c77..0000000 Binary files a/bin/sd-card-basic/SYSTEM/yplay.bin and /dev/null differ diff --git a/bin/sd-card-basic/SYSTEM/yplay.txt b/bin/sd-card-basic/SYSTEM/yplay.txt deleted file mode 100644 index 03f0d0d..0000000 --- a/bin/sd-card-basic/SYSTEM/yplay.txt +++ /dev/null @@ -1,8 +0,0 @@ -Wiedergabe von YM-Dateien mittels AY-3-891X / YM2149 emulator - -/? : Hilfetext -/p name.YM : YM-Datei abspielen -/d : Verzeichnis wiedergeben - q - quit - n - next - p - pause diff --git a/bin/sd-card-basic/WAV/hfunk.wav b/bin/sd-card-basic/WAV/hfunk.wav deleted file mode 100644 index ef9229d..0000000 Binary files a/bin/sd-card-basic/WAV/hfunk.wav and /dev/null differ diff --git a/bin/sd-card-basic/YM6/4stavebk_unde.ym b/bin/sd-card-basic/YM6/4stavebk_unde.ym deleted file mode 100644 index c2e7f90..0000000 Binary files a/bin/sd-card-basic/YM6/4stavebk_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Awesome 1_unde.ym b/bin/sd-card-basic/YM6/Awesome 1_unde.ym deleted file mode 100644 index fc201a1..0000000 Binary files a/bin/sd-card-basic/YM6/Awesome 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Axel Folley_unde.ym b/bin/sd-card-basic/YM6/Axel Folley_unde.ym deleted file mode 100644 index 23729bd..0000000 Binary files a/bin/sd-card-basic/YM6/Axel Folley_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Batman - The Movie 1_unde.ym b/bin/sd-card-basic/YM6/Batman - The Movie 1_unde.ym deleted file mode 100644 index c8ca87c..0000000 Binary files a/bin/sd-card-basic/YM6/Batman - The Movie 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Batman - The Movie 2_unde.ym b/bin/sd-card-basic/YM6/Batman - The Movie 2_unde.ym deleted file mode 100644 index 3abe420..0000000 Binary files a/bin/sd-card-basic/YM6/Batman - The Movie 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Batman - The Movie 3_unde.ym b/bin/sd-card-basic/YM6/Batman - The Movie 3_unde.ym deleted file mode 100644 index c992aab..0000000 Binary files a/bin/sd-card-basic/YM6/Batman - The Movie 3_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/BeBop_unde.ym b/bin/sd-card-basic/YM6/BeBop_unde.ym deleted file mode 100644 index b2ba14f..0000000 Binary files a/bin/sd-card-basic/YM6/BeBop_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Beachtro_unde.ym b/bin/sd-card-basic/YM6/Beachtro_unde.ym deleted file mode 100644 index 0112d6a..0000000 Binary files a/bin/sd-card-basic/YM6/Beachtro_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Bionic Commando 1_unde.ym b/bin/sd-card-basic/YM6/Bionic Commando 1_unde.ym deleted file mode 100644 index a566f5b..0000000 Binary files a/bin/sd-card-basic/YM6/Bionic Commando 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Bjerregard Conv_unde.ym b/bin/sd-card-basic/YM6/Bjerregard Conv_unde.ym deleted file mode 100644 index 4b966a0..0000000 Binary files a/bin/sd-card-basic/YM6/Bjerregard Conv_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Bubble Bobble 1_unde.ym b/bin/sd-card-basic/YM6/Bubble Bobble 1_unde.ym deleted file mode 100644 index c10df4e..0000000 Binary files a/bin/sd-card-basic/YM6/Bubble Bobble 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Colorz Trackmo_unde.ym b/bin/sd-card-basic/YM6/Colorz Trackmo_unde.ym deleted file mode 100644 index 1fb3a80..0000000 Binary files a/bin/sd-card-basic/YM6/Colorz Trackmo_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Commando highscore_unde.ym b/bin/sd-card-basic/YM6/Commando highscore_unde.ym deleted file mode 100644 index c49f44a..0000000 Binary files a/bin/sd-card-basic/YM6/Commando highscore_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Commando_unde.ym b/bin/sd-card-basic/YM6/Commando_unde.ym deleted file mode 100644 index 712c18a..0000000 Binary files a/bin/sd-card-basic/YM6/Commando_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Dark Fuzion_unde.ym b/bin/sd-card-basic/YM6/Dark Fuzion_unde.ym deleted file mode 100644 index 8c14530..0000000 Binary files a/bin/sd-card-basic/YM6/Dark Fuzion_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Decade Gigadist_unde.ym b/bin/sd-card-basic/YM6/Decade Gigadist_unde.ym deleted file mode 100644 index 8d53865..0000000 Binary files a/bin/sd-card-basic/YM6/Decade Gigadist_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Decade Intro_unde.ym b/bin/sd-card-basic/YM6/Decade Intro_unde.ym deleted file mode 100644 index 861da5d..0000000 Binary files a/bin/sd-card-basic/YM6/Decade Intro_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Deflektor 1_unde.ym b/bin/sd-card-basic/YM6/Deflektor 1_unde.ym deleted file mode 100644 index 592c697..0000000 Binary files a/bin/sd-card-basic/YM6/Deflektor 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Gauntlet 3_unde.ym b/bin/sd-card-basic/YM6/Gauntlet 3_unde.ym deleted file mode 100644 index 8427336..0000000 Binary files a/bin/sd-card-basic/YM6/Gauntlet 3_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Ghouls 3_unde.ym b/bin/sd-card-basic/YM6/Ghouls 3_unde.ym deleted file mode 100644 index 1bffde7..0000000 Binary files a/bin/sd-card-basic/YM6/Ghouls 3_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Gritty_unde.ym b/bin/sd-card-basic/YM6/Gritty_unde.ym deleted file mode 100644 index e683337..0000000 Binary files a/bin/sd-card-basic/YM6/Gritty_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Hit me!_unde.ym b/bin/sd-card-basic/YM6/Hit me!_unde.ym deleted file mode 100644 index 693d9e7..0000000 Binary files a/bin/sd-card-basic/YM6/Hit me!_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Hybris_unde.ym b/bin/sd-card-basic/YM6/Hybris_unde.ym deleted file mode 100644 index ce99d2f..0000000 Binary files a/bin/sd-card-basic/YM6/Hybris_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/I wonder_unde.ym b/bin/sd-card-basic/YM6/I wonder_unde.ym deleted file mode 100644 index 610050f..0000000 Binary files a/bin/sd-card-basic/YM6/I wonder_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO01.ym b/bin/sd-card-basic/YM6/JMJDMO01.ym deleted file mode 100644 index 639cd53..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO01.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO02.ym b/bin/sd-card-basic/YM6/JMJDMO02.ym deleted file mode 100644 index 0f18186..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO02.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO03.ym b/bin/sd-card-basic/YM6/JMJDMO03.ym deleted file mode 100644 index 7ab27e3..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO03.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO04.ym b/bin/sd-card-basic/YM6/JMJDMO04.ym deleted file mode 100644 index a152823..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO04.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO05.ym b/bin/sd-card-basic/YM6/JMJDMO05.ym deleted file mode 100644 index cffffcb..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO05.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO06.ym b/bin/sd-card-basic/YM6/JMJDMO06.ym deleted file mode 100644 index c5d34ff..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO06.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO07.ym b/bin/sd-card-basic/YM6/JMJDMO07.ym deleted file mode 100644 index 3134158..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO07.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO08.ym b/bin/sd-card-basic/YM6/JMJDMO08.ym deleted file mode 100644 index 0b3cbc5..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO08.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO09.ym b/bin/sd-card-basic/YM6/JMJDMO09.ym deleted file mode 100644 index c4a2b34..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO09.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/JMJDMO11.ym b/bin/sd-card-basic/YM6/JMJDMO11.ym deleted file mode 100644 index afa057f..0000000 Binary files a/bin/sd-card-basic/YM6/JMJDMO11.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 1_unde.ym b/bin/sd-card-basic/YM6/Jim Power 1_unde.ym deleted file mode 100644 index d2e7f85..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 2_unde.ym b/bin/sd-card-basic/YM6/Jim Power 2_unde.ym deleted file mode 100644 index 5fba85d..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 3_unde.ym b/bin/sd-card-basic/YM6/Jim Power 3_unde.ym deleted file mode 100644 index 64bd656..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 3_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 4_unde.ym b/bin/sd-card-basic/YM6/Jim Power 4_unde.ym deleted file mode 100644 index 77bd11d..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 4_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 5_unde.ym b/bin/sd-card-basic/YM6/Jim Power 5_unde.ym deleted file mode 100644 index 6c3b5b3..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 5_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 6_unde.ym b/bin/sd-card-basic/YM6/Jim Power 6_unde.ym deleted file mode 100644 index 42ea730..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 6_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Jim Power 9_unde.ym b/bin/sd-card-basic/YM6/Jim Power 9_unde.ym deleted file mode 100644 index 326f7cf..0000000 Binary files a/bin/sd-card-basic/YM6/Jim Power 9_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Kidney Bean 18_unde.ym b/bin/sd-card-basic/YM6/Kidney Bean 18_unde.ym deleted file mode 100644 index b274a96..0000000 Binary files a/bin/sd-card-basic/YM6/Kidney Bean 18_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Last Ninja_unde.ym b/bin/sd-card-basic/YM6/Last Ninja_unde.ym deleted file mode 100644 index 9dc4d16..0000000 Binary files a/bin/sd-card-basic/YM6/Last Ninja_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Leaving Teramis_unde.ym b/bin/sd-card-basic/YM6/Leaving Teramis_unde.ym deleted file mode 100644 index c697cd2..0000000 Binary files a/bin/sd-card-basic/YM6/Leaving Teramis_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Liberator 1_unde.ym b/bin/sd-card-basic/YM6/Liberator 1_unde.ym deleted file mode 100644 index 50b1785..0000000 Binary files a/bin/sd-card-basic/YM6/Liberator 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Megatwins 1_unde.ym b/bin/sd-card-basic/YM6/Megatwins 1_unde.ym deleted file mode 100644 index b5b0099..0000000 Binary files a/bin/sd-card-basic/YM6/Megatwins 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Misfits 19_unde.ym b/bin/sd-card-basic/YM6/Misfits 19_unde.ym deleted file mode 100644 index 7d3f2b8..0000000 Binary files a/bin/sd-card-basic/YM6/Misfits 19_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Misfits 20_unde.ym b/bin/sd-card-basic/YM6/Misfits 20_unde.ym deleted file mode 100644 index d968f8c..0000000 Binary files a/bin/sd-card-basic/YM6/Misfits 20_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Misfits 25_unde.ym b/bin/sd-card-basic/YM6/Misfits 25_unde.ym deleted file mode 100644 index 019ec9d..0000000 Binary files a/bin/sd-card-basic/YM6/Misfits 25_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Misfits 26_unde.ym b/bin/sd-card-basic/YM6/Misfits 26_unde.ym deleted file mode 100644 index dd90dc6..0000000 Binary files a/bin/sd-card-basic/YM6/Misfits 26_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Misfits 27_unde.ym b/bin/sd-card-basic/YM6/Misfits 27_unde.ym deleted file mode 100644 index 2ba3487..0000000 Binary files a/bin/sd-card-basic/YM6/Misfits 27_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Mr Boomer 1_unde.ym b/bin/sd-card-basic/YM6/Mr Boomer 1_unde.ym deleted file mode 100644 index bb97f0a..0000000 Binary files a/bin/sd-card-basic/YM6/Mr Boomer 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/New_unde.ym b/bin/sd-card-basic/YM6/New_unde.ym deleted file mode 100644 index 09b035f..0000000 Binary files a/bin/sd-card-basic/YM6/New_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Noisy Pillars_unde.ym b/bin/sd-card-basic/YM6/Noisy Pillars_unde.ym deleted file mode 100644 index 6bae4ae..0000000 Binary files a/bin/sd-card-basic/YM6/Noisy Pillars_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Offbeat_unde.ym b/bin/sd-card-basic/YM6/Offbeat_unde.ym deleted file mode 100644 index ff32fc4..0000000 Binary files a/bin/sd-card-basic/YM6/Offbeat_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Outrun 1_unde.ym b/bin/sd-card-basic/YM6/Outrun 1_unde.ym deleted file mode 100644 index 6176de4..0000000 Binary files a/bin/sd-card-basic/YM6/Outrun 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Outrun 2_unde.ym b/bin/sd-card-basic/YM6/Outrun 2_unde.ym deleted file mode 100644 index 4ae45e7..0000000 Binary files a/bin/sd-card-basic/YM6/Outrun 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Pacmania 1_unde.ym b/bin/sd-card-basic/YM6/Pacmania 1_unde.ym deleted file mode 100644 index 9987d65..0000000 Binary files a/bin/sd-card-basic/YM6/Pacmania 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Pacmania 2_unde.ym b/bin/sd-card-basic/YM6/Pacmania 2_unde.ym deleted file mode 100644 index 5549dd2..0000000 Binary files a/bin/sd-card-basic/YM6/Pacmania 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Parasol Stars 1_unde.ym b/bin/sd-card-basic/YM6/Parasol Stars 1_unde.ym deleted file mode 100644 index 34f1d4c..0000000 Binary files a/bin/sd-card-basic/YM6/Parasol Stars 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Parasol Stars 5_unde.ym b/bin/sd-card-basic/YM6/Parasol Stars 5_unde.ym deleted file mode 100644 index e81d286..0000000 Binary files a/bin/sd-card-basic/YM6/Parasol Stars 5_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Phaleon Shadow of The Beast 2_unde.ym b/bin/sd-card-basic/YM6/Phaleon Shadow of The Beast 2_unde.ym deleted file mode 100644 index 0018089..0000000 Binary files a/bin/sd-card-basic/YM6/Phaleon Shadow of The Beast 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Quick & Silva 3_unde.ym b/bin/sd-card-basic/YM6/Quick & Silva 3_unde.ym deleted file mode 100644 index 8505528..0000000 Binary files a/bin/sd-card-basic/YM6/Quick & Silva 3_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/R-Type 1 - intro_unde.ym b/bin/sd-card-basic/YM6/R-Type 1 - intro_unde.ym deleted file mode 100644 index 638fa00..0000000 Binary files a/bin/sd-card-basic/YM6/R-Type 1 - intro_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/R-Type 2 - level 1_unde.ym b/bin/sd-card-basic/YM6/R-Type 2 - level 1_unde.ym deleted file mode 100644 index 8e97bf1..0000000 Binary files a/bin/sd-card-basic/YM6/R-Type 2 - level 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/R-Type 3 - boss_unde.ym b/bin/sd-card-basic/YM6/R-Type 3 - boss_unde.ym deleted file mode 100644 index 0bbc076..0000000 Binary files a/bin/sd-card-basic/YM6/R-Type 3 - boss_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Rick Dangerous 1_unde.ym b/bin/sd-card-basic/YM6/Rick Dangerous 1_unde.ym deleted file mode 100644 index 30737bb..0000000 Binary files a/bin/sd-card-basic/YM6/Rick Dangerous 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Rick Dangerous II 1_unde.ym b/bin/sd-card-basic/YM6/Rick Dangerous II 1_unde.ym deleted file mode 100644 index 7f05033..0000000 Binary files a/bin/sd-card-basic/YM6/Rick Dangerous II 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Spunge_unde.ym b/bin/sd-card-basic/YM6/Spunge_unde.ym deleted file mode 100644 index 8faf73d..0000000 Binary files a/bin/sd-card-basic/YM6/Spunge_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Stolen_unde.ym b/bin/sd-card-basic/YM6/Stolen_unde.ym deleted file mode 100644 index f25d2fb..0000000 Binary files a/bin/sd-card-basic/YM6/Stolen_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Summer_unde.ym b/bin/sd-card-basic/YM6/Summer_unde.ym deleted file mode 100644 index 2818ff8..0000000 Binary files a/bin/sd-card-basic/YM6/Summer_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Swiv_unde.ym b/bin/sd-card-basic/YM6/Swiv_unde.ym deleted file mode 100644 index 6d6ec9f..0000000 Binary files a/bin/sd-card-basic/YM6/Swiv_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Thomas Danko_unde.ym b/bin/sd-card-basic/YM6/Thomas Danko_unde.ym deleted file mode 100644 index ae4ced2..0000000 Binary files a/bin/sd-card-basic/YM6/Thomas Danko_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Vixen 1_unde.ym b/bin/sd-card-basic/YM6/Vixen 1_unde.ym deleted file mode 100644 index 2def8fc..0000000 Binary files a/bin/sd-card-basic/YM6/Vixen 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Vixen 2_unde.ym b/bin/sd-card-basic/YM6/Vixen 2_unde.ym deleted file mode 100644 index 7cfd3d9..0000000 Binary files a/bin/sd-card-basic/YM6/Vixen 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/Xbios Ala Turka_unde.ym b/bin/sd-card-basic/YM6/Xbios Ala Turka_unde.ym deleted file mode 100644 index 8701323..0000000 Binary files a/bin/sd-card-basic/YM6/Xbios Ala Turka_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/Axel Folley_unde.ym b/bin/sd-card-basic/YM6/comp1/Axel Folley_unde.ym deleted file mode 100644 index 23729bd..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/Axel Folley_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/BeBop_unde.ym b/bin/sd-card-basic/YM6/comp1/BeBop_unde.ym deleted file mode 100644 index b2ba14f..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/BeBop_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/Jim Power 2_unde.ym b/bin/sd-card-basic/YM6/comp1/Jim Power 2_unde.ym deleted file mode 100644 index 5fba85d..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/Jim Power 2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/Misfits 25_unde.ym b/bin/sd-card-basic/YM6/comp1/Misfits 25_unde.ym deleted file mode 100644 index 019ec9d..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/Misfits 25_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/Mr Boomer 1_unde.ym b/bin/sd-card-basic/YM6/comp1/Mr Boomer 1_unde.ym deleted file mode 100644 index bb97f0a..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/Mr Boomer 1_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/Thomas Danko_unde.ym b/bin/sd-card-basic/YM6/comp1/Thomas Danko_unde.ym deleted file mode 100644 index ae4ced2..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/Thomas Danko_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/Xbios Ala Turka_unde.ym b/bin/sd-card-basic/YM6/comp1/Xbios Ala Turka_unde.ym deleted file mode 100644 index 8701323..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/Xbios Ala Turka_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/alphaville.ym b/bin/sd-card-basic/YM6/comp1/alphaville.ym deleted file mode 100644 index be668ac..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/alphaville.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/comp1/cybernet_unde.ym b/bin/sd-card-basic/YM6/comp1/cybernet_unde.ym deleted file mode 100644 index 68a45b3..0000000 Binary files a/bin/sd-card-basic/YM6/comp1/cybernet_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/cybernet_unde.ym b/bin/sd-card-basic/YM6/cybernet_unde.ym deleted file mode 100644 index 68a45b3..0000000 Binary files a/bin/sd-card-basic/YM6/cybernet_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/db96invi_unde.ym b/bin/sd-card-basic/YM6/db96invi_unde.ym deleted file mode 100644 index e00f8ac..0000000 Binary files a/bin/sd-card-basic/YM6/db96invi_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/echo2_unde.ym b/bin/sd-card-basic/YM6/echo2_unde.ym deleted file mode 100644 index c5f6963..0000000 Binary files a/bin/sd-card-basic/YM6/echo2_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/harmony_unde.ym b/bin/sd-card-basic/YM6/harmony_unde.ym deleted file mode 100644 index 9988349..0000000 Binary files a/bin/sd-card-basic/YM6/harmony_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/jingle_unde.ym b/bin/sd-card-basic/YM6/jingle_unde.ym deleted file mode 100644 index f8d02cd..0000000 Binary files a/bin/sd-card-basic/YM6/jingle_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/kurztech_unde.ym b/bin/sd-card-basic/YM6/kurztech_unde.ym deleted file mode 100644 index 2f0f00b..0000000 Binary files a/bin/sd-card-basic/YM6/kurztech_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/noro_unde.ym b/bin/sd-card-basic/YM6/noro_unde.ym deleted file mode 100644 index 91df370..0000000 Binary files a/bin/sd-card-basic/YM6/noro_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/perinded_unde.ym b/bin/sd-card-basic/YM6/perinded_unde.ym deleted file mode 100644 index 5954533..0000000 Binary files a/bin/sd-card-basic/YM6/perinded_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/q_psb_unde.ym b/bin/sd-card-basic/YM6/q_psb_unde.ym deleted file mode 100644 index a3ef883..0000000 Binary files a/bin/sd-card-basic/YM6/q_psb_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/swtchldo_unde.ym b/bin/sd-card-basic/YM6/swtchldo_unde.ym deleted file mode 100644 index c3ff9c2..0000000 Binary files a/bin/sd-card-basic/YM6/swtchldo_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/YM6/trashe_unde.ym b/bin/sd-card-basic/YM6/trashe_unde.ym deleted file mode 100644 index 4284489..0000000 Binary files a/bin/sd-card-basic/YM6/trashe_unde.ym and /dev/null differ diff --git a/bin/sd-card-basic/bel.sys b/bin/sd-card-basic/bel.sys deleted file mode 100644 index e534891..0000000 Binary files a/bin/sd-card-basic/bel.sys and /dev/null differ diff --git a/bin/sd-card-basic/reg.sys b/bin/sd-card-basic/reg.sys deleted file mode 100644 index a93f83e..0000000 Binary files a/bin/sd-card-basic/reg.sys and /dev/null differ diff --git a/bstc.exe b/bstc.exe deleted file mode 100644 index febcbd0..0000000 Binary files a/bstc.exe and /dev/null differ diff --git a/demo/3d_multicore/3d_multicore-bst-archive-100506-135649.zip b/demo/3d_multicore/3d_multicore-bst-archive-100506-135649.zip deleted file mode 100644 index 8e417a3..0000000 Binary files a/demo/3d_multicore/3d_multicore-bst-archive-100506-135649.zip and /dev/null differ diff --git a/demo/3d_multicore/3d_multicore.spin b/demo/3d_multicore/3d_multicore.spin deleted file mode 100644 index 48c4a37..0000000 --- a/demo/3d_multicore/3d_multicore.spin +++ /dev/null @@ -1,228 +0,0 @@ -{ - Multi core transform sample - - derived from "3D Graphics DEMO" by Beau Schwabe (Parallax) -} - -CON - ' enable multi core transform calculation - MultiCoreTranform = true - - ZX = 180 - ZY = 240 - - MaxPoints = 50 - - _CLKMODE = XTAL1 + PLL16X - _XINFREQ = 5_000_000 - _stack = ($3000 + $3000 + 100) >> 2 - - x_tiles = 16 - y_tiles = 12 - - paramcount = 14 - bitmap_base = $2000 - display_base = $5000 - - -VAR - long tv_status '0/1/2 = off/visible/invisible read-only - long tv_enable '0/? = off/on write-only - long tv_pins '%ppmmm = pins write-only - long tv_mode '%ccinp = chroma,interlace,ntsc/pal,swap write-only - long tv_screen 'pointer to screen (words) write-only - long tv_colors 'pointer to colors (longs) write-only - long tv_hc 'horizontal cells write-only - long tv_vc 'vertical cells write-only - long tv_hx 'horizontal cell expansion write-only - long tv_vx 'vertical cell expansion write-only - long tv_ho 'horizontal offset write-only - long tv_vo 'vertical offset write-only - long tv_broadcast 'broadcast frequency (Hz) write-only - long tv_auralcog 'aural fm cog write-only - - word screen[x_tiles * y_tiles] - long colors[64] - - long cogStack[40 * 5] - long pointData[MaxPoints * 5] - byte frame - - -OBJ - tv : "tv" 'located in default Library - gr : "PF_graphics" 'located in default Library - - -PUB start | i,dx,dy - 'start tv - longmove(@tv_status, @tvparams, paramcount) - tv_screen := @screen - tv_colors := @colors - tv.start(@tv_status) - - 'init colors - repeat i from 0 to 63 - colors[i] := $ad02ad06 - - 'init tile screen - i := 0 - repeat dy from 0 to tv_vc - 1 - repeat dx from 0 to tv_hc - 1 - screen[i++] := display_base >> 6 + dy + dx * tv_vc + (dy << 10) - - 'start and setup graphics - gr.start - gr.setup(tv_hc, tv_vc, tv_hc<<3, tv_vc<<3, bitmap_base) - - 'Start transform routines (per object) - if MultiCoreTranform - repeat i from 0 to 4 - cognew( Polyobj(@pointData[ MaxPoints * i ], @PostureData + i * 20), @cogStack[i * 40] ) - - MainLoop - - -PRI MainLoop | i, n, t - n := 0 - t := cnt & |<27 - repeat - gr.clear - gr.width(0) - - repeat i from 0 to n - if !MultiCoreTranform - TranslatePoints( @pointData[ MaxPoints * i ], @PostureData + i * 20, @PointSrc, constant((@PointSrc_End - @PointSrc)/3) ) - repeat until ( word[ @PostureData + i * 20 + 18] == frame ) - gr.lineseq( @pointData[MaxPoints * i], @SeqData) - - gr.copy(display_base) - frame++ - - if ( t <> cnt & |<27 ) - t := cnt & |<27 - n := (n + 1) <# 4 - - 'wait Vsync - repeat until ( tv_status == 1 ) - - -PRI PolyObj(destAddr, postureAddr) - repeat - repeat while word[ postureAddr + 18 ] == frame - TranslatePoints( destAddr, postureAddr, @PointSrc, constant((@PointSrc_End - @PointSrc)/3) ) - - -PRI TranslatePoints( destAddr, postureAddr, pointAddr, numPoints ) | i,dst,px,py,pz,tx,ty,tz,dx,dy,dz,S1,S2,S3,C1,C2,C3,x,y,z - tx := ( word[ postureAddr + 6 ] += word[ postureAddr + 12 ] ) - ty := ( word[ postureAddr + 8 ] += word[ postureAddr + 14 ] ) - tz := ( word[ postureAddr + 10 ] += word[ postureAddr + 16 ] ) - - S1 := Sin(tx) - S2 := Sin(ty) - S3 := Sin(tz) - - C1 := Cos(tx) - C2 := Cos(ty) - C3 := Cos(tz) - - x := ~word[ postureAddr + 0 ] - y := ~word[ postureAddr + 2 ] - z := word[ postureAddr + 4 ] + (C1 ~> 9) ' add C1~>9 for test - - repeat i from 0 to numPoints - px := ~byte[pointAddr++] - py := ~byte[pointAddr++] - pz := ~byte[pointAddr++] - - tx := ( px * C2 - pz * S2 ) ~> 16 - tz := ( px * S2 + pz * C2 ) ~> 16 - ty := ( tz * S1 + py * C1 ) ~> 16 - - dx := ( tx * C3 + ty * S3 ) ~> 16 + x - dy := ( ty * C3 - tx * S3 ) ~> 16 + y - dz := ( tz * C1 - py * S1 ) ~> 16 + z - - word[destAddr ] := dx * ZX / dz - word[destAddr+2] := dy * ZY / dz - destAddr += 4 - - word[ postureAddr + 18 ] := frame - - -pri cos(angle) : x - x := sin(angle + $800) - - -pri sin(angle) : y - '' Get sine of angle (0-8191) - y := angle << 1 & $FFE ' address - if angle & $800 - y := word[$F000 - y] - else - y := word[$E000 + y] - if angle & $1000 - -y - - -DAT -PostureData - ' trans rot rotspeed sync - word 0, 0, 400, 0, 0, 0, 0, 0, 200, 0 - word -120, -80, 400, 0, 0, 0, 50, 30, 40, 0 - word -120, 80, 400, 0, 0, 0, 40, 50, 30, 0 - word 120, -80, 400, 0, 0, 0, 30, 50, 40, 0 - word 120, 80, 400, 0, 0, 0, 50, 40, 30, 0 - -PointSrc - byte -20,-20,-20 - byte -20,-20, 20 - byte -20, 20, 20 - byte -20, 20,-20 - byte 20,-20,-20 - byte 20,-20, 20 - byte 20, 20, 20 - byte 20, 20,-20 - - byte -40,-40,-40 - byte -40,-40, 40 - byte -40, 40, 40 - byte -40, 40,-40 - byte 40,-40,-40 - byte 40,-40, 40 - byte 40, 40, 40 - byte 40, 40,-40 - - byte -70, 0, 0 - byte 70, 0, 0 -PointSrc_End - -SeqData - ' orange thing - byte 13, 1, 16, 0, 4, 17, 5, 1, 16, 2, 6, 17, 7, 3, 16 - byte 5, 1, 0, 1, 2, 3, 0 - byte 5, 1, 4, 5, 6, 7, 4 - ' black cube - byte 10, 2, 8, 9,10,11, 8,12,13,14,15,12 - byte 2, 2, 9,13 - byte 2, 2,10,14 - byte 2, 2,11,15 - byte 0 - - -tvparams long 0 'status - long 1 'enable - 'long %011_0000 'pins Old Board - long %010_0101 'pins New Board - long %0000 'mode - long 0 'screen - long 0 'colors - long x_tiles 'hc - long y_tiles 'vc - long 10 'hx - long 1 'vx - long 0 'ho - long 0 'vo - long 60_000_000 '_xinfreq<<4 'broadcast - long 0 'auralcog - diff --git a/demo/3d_multicore/PF_Graphics.spin b/demo/3d_multicore/PF_Graphics.spin deleted file mode 100644 index 1e1eeb4..0000000 Binary files a/demo/3d_multicore/PF_Graphics.spin and /dev/null differ diff --git a/demo/3d_multicore/TV.spin b/demo/3d_multicore/TV.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/demo/3d_multicore/TV.spin and /dev/null differ diff --git a/demo/3d_multicore/_readme_.txt b/demo/3d_multicore/_readme_.txt deleted file mode 100644 index 8c014a2..0000000 --- a/demo/3d_multicore/_readme_.txt +++ /dev/null @@ -1,17 +0,0 @@ -BST Propeller Archive -Created by Brads Spin Tool Compiler v0.15.4-pre5 - Copyright 2008,2009,2010 All rights reserved -Compiled for i386 Win32 at 14:24:31 on 2010/03/10 - -Archive Created at 13:56:49 On 06/05/10 -Included Objects : -3d_multicore - | - +-----tv - | - +-----PF_graphics - -, - - 3d_multicore.spin - - TV.spin - - PF_Graphics.spin -, diff --git a/demo/3d_multicore/quelle.txt b/demo/3d_multicore/quelle.txt deleted file mode 100644 index 2abe423..0000000 --- a/demo/3d_multicore/quelle.txt +++ /dev/null @@ -1 +0,0 @@ -http://propfan.wordpress.com/page/2/ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_JB_001.spin b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_JB_001.spin deleted file mode 100644 index d63cf88..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_JB_001.spin and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_JB_Demo.spin b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_JB_Demo.spin deleted file mode 100644 index 18006e4..0000000 --- a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_JB_Demo.spin +++ /dev/null @@ -1,115 +0,0 @@ -''*************************************** -''* VGA Tile + Sprite Driver Demo v1.0 * -''* (C) Jim Bagley * -''*************************************** - - _clkmode = xtal1 + pll16x ' enable external clock and pll times 16 - _xinfreq = 5_000_000 ' set frequency to 5 MHZ - -CON - -NUM_COGS = 3 'if not using sprites, you can set this to 1 :) -NUM_SPRITES = 32 '64 'buffer is 3 words ( X,Y,TILENUM), so use even numbers. - -OBJ - vga : "VGA_JB_001" - rend : "VGA_REND_JB_001" - -PUB start | i,c,x,y - vga.start(@vga_params) - rend.start(@rend_params) - - repeat y from 0 to 29 - repeat x from 0 to 63 - PutChar(x,y,word[@map][y*64+x]) - - print(0,0,string("Hallo Welt")) - - c:=$deadface - if NUM_SPRITES>0 - repeat i from 0 to rend_num_sprites-1 step 2 - x:=c? - y:=c? - SetSprite(i ,x ,y,0) - SetSprite(i+1,x+4,y,1) -' SetSprite(i,4+i*3,8+i*2,0) - - repeat - repeat while vga_params<>1 - repeat while vga_params==1 - if NUM_SPRITES>0 - wordmove(@sprite_list,@sprite_list2,3*rend_num_sprites) - repeat i from 0 to rend_num_sprites-1 - sprite_list2[i*3+0]++ - sprite_list2[i*3+1]++ - -PUB print(x,y,str) | c,a - repeat - c:=byte[str++] - if(c==0) - return - a:=-1 - if(c>"A"-1) and (c<"Z"+1) - a:=(c-"A")+10 - if(c>"a"-1) and (c<"z"+1) - a:=(c-"a")+10 - if(c>"0"-1) and (c<"9"+1) - a:=c-"0" - if(a==-1) - screen[y<<6+x++]:=0 - screen[y<<6+x++]:=0 - else - a:=(a<<6)+(@font-@chars) '*64 ( 2 4x8 chars per letter ) + offset from chars to font - screen[y<<6+x++]:=a - screen[y<<6+x++]:=a+32 - -PUB PutChar(x,y,charnum) - screen[y<<6+x]:=charnum<<5 - -PUB SetSprite(sprnum,x,y,tilenum) - sprite_list2[sprnum*3+0]:=x - sprite_list2[sprnum*3+1]:=y - sprite_list2[sprnum*3+2]:=tilenum<<5 - -DAT - -rend_params -rend_cognum long 0 -rend_image long 0 -rend_pixels long @pixelsdata+$10 'pointer to line buffers ( (256+8)*rendercogs ) -rend_screen long @screen+$10 'pointer to screen charmap buffer ( 64x30 ) -rend_chars long @chars+$10 'pointer to screen character image tiles ( 4x8 ) -rend_sprite_ptr long @sprite_list+$10 'pointer to sprite list ( X,Y,CHR ) -rend_sprchr_ptr long @sprchrs+$10 'pointer to sprite image tiles ( 4x8 ) -rend_num_sprites long NUM_SPRITES -'vga_params falls after rend_params -vga_params long 0 'sync -vga_pixels long @pixelsdata+$10 'pointer to line buffers -vga_nextlineptr long @next_line+$10 'pointer to nextline to be draw -vga_enable long 1 'enable display -vga_cogs long NUM_COGS 'number of display lines before looping to top of buffer - -sprite_list word 0[3*NUM_SPRITES] '4 words as it reads data in longs -sprite_list2 word 0[3*NUM_SPRITES] '4 words as it reads data in longs - -next_line long 0 - -pixelsdata byte 0[(256+8)*NUM_COGS] - -screen word 0*32[64*30] 'Character map layout, TILENUM*32, as you can use pixel offsets into chars if you want, or set the charset to 0, and use as pointer to area - -chars file "mario.chr" - -sprchrs -font file "font.chr" - - byte $0f,$0f,$0f,$0f - byte $0f,$03,$03,$0f - byte $0f,$ff,$ff,$0f - byte $0f,$ff,$ff,$0f - byte $0f,$ff,$ff,$0f - byte $0f,$ff,$ff,$0f - byte $0f,$03,$03,$0f - byte $0f,$0f,$0f,$0f - -map file "mario.map" diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_Rend_JB_001.spin b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_Rend_JB_001.spin deleted file mode 100644 index f0908ca..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/VGA_Rend_JB_001.spin and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/_README_.txt b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/_README_.txt deleted file mode 100644 index a29c602..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/_README_.txt and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/bmp8toLite.c b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/bmp8toLite.c deleted file mode 100644 index bcc5772..0000000 --- a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/bmp8toLite.c +++ /dev/null @@ -1,966 +0,0 @@ -#include "stdio.h" - -unsigned short header[0x36]; -unsigned char palette[256*4]; -unsigned char proppal[256]; - -unsigned char charcell[8*8]; -unsigned char convchar[8*8]; -unsigned short currentattr; - -unsigned short currentblock; -unsigned short blockcell[4]; -unsigned short blockmap[10240*10240]; -unsigned short blocks[40960*64]; -unsigned short charmap[5120*5120]; -unsigned char chars[20480*64]; -unsigned int charnum; -unsigned int blocknum; -unsigned int blockmapsize=1; -unsigned int blocksize=1; -int yfirst=0; -int justcharmap=0; -int invx=0; -int nopalette=0; -int pal16=0; -int getting_2600=0; - -#define bitmap2 0 -#define bitmap4 1 -#define bitmap16 2 -#define bitmap256 3 -#define C64bitmap2 4 -#define C64bitmap4 5 -#define AMSbitmap4 6 -#define AMSbitmap16 7 -#define charmap2 8 -#define charmap4 9 -#define charmap16 10 -#define charmap256 11 -#define C64sprites 12 -#define VGAchars4x8 13 - -int charand=0x03; -int paland=0xfc; -int palshift=2; -int mode=charmap4; -int fat=0; - -int repeatable=0; -int flipable=0; - -char extjcs[]="JCS"; //c64 mode sprites -char extcb2[]="CB2"; //c64 mode bitmap2col -char extcb4[]="CB4"; //c64 mode bitmap4col -char extjcc[]="JCC"; //c64 mode characters - -char extab4[]="AB4"; //Ams mode 4colour bitmap -char exta16[]="A16"; //Ams mode 16colour fat bitmap -char extas4[]="AS4"; //Ams mode 4colour sprite -char extas6[]="AS6"; //Ams mode 16colour fat sprite - -char extjb2[]="JB2"; -char extjb4[]="JB4"; -char extj16[]="J16"; -char extj8b[]="J8B"; -char extbm2[]="BM2"; -char extbm4[]="BM4"; -char extb16[]="B16"; -char extb8b[]="B8B"; -char extvga[]="VGA"; -char *ext=extjb4; - -char fname[1024]; -unsigned char screen[4096*4096]; - -unsigned int scrwidth; -unsigned int scrheight; - -int doingvga; - -unsigned char PropRGBs[256*4]={ - 0x04,0x05,0x05,0x00, 0x02,0x04,0x04,0x00, 0x04,0x06,0x06,0x00, 0x31,0x34,0x33,0x00, 0x64,0x66,0x66,0x00, 0x97,0x9b,0x9b,0x00, 0xcf,0xd0,0xd0,0x00, 0xf0,0xf9,0xfa,0x00, 0x29,0x8c,0xa1,0x00, 0x44,0x0a,0x0e,0x00, 0x75,0x00,0x00,0x00, 0x9f,0x2c,0x26,0x00, 0xd4,0x63,0x5c,0x00, 0xfb,0x97,0x90,0x00, 0xf4,0xc5,0xbe,0x00, 0x23,0x5e,0x72,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x99,0x99,0x00, 0xcd,0xce,0xcd,0x00, 0xef,0xf7,0xfb,0x00, 0x21,0x7b,0xd7,0x00, 0x3c,0x07,0x19,0x00, 0x6f,0x06,0x00,0x00, 0x97,0x33,0x11,0x00, 0xcc,0x69,0x43,0x00, 0xfe,0x9e,0x75,0x00, 0xf6,0xc9,0xa8,0x00, 0x1e,0x4c,0xa9,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x66,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xcd,0xcf,0xcd,0x00, 0xf1,0xf6,0xfd,0x00, 0x25,0x66,0xf4,0x00, 0x21,0x04,0x21,0x00, 0x4b,0x0e,0x00,0x00, 0x77,0x3d,0x02,0x00, 0xac,0x73,0x2d,0x00, 0xe3,0xa9,0x5e,0x00, 0xf3,0xd1,0x95,0x00, 0x1f,0x36,0xdc,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x04,0x00, 0x30,0x33,0x33,0x00, 0x62,0x66,0x65,0x00, 0x95,0x99,0x99,0x00, 0xcc,0xcf,0xcd,0x00, 0xf4,0xf5,0xfd,0x00, 0x47,0x54,0xf7,0x00, 0x08,0x03,0x22,0x00, 0x1d,0x16,0x00,0x00, 0x4c,0x45,0x01,0x00, 0x80,0x7b,0x23,0x00, 0xb8,0xb1,0x51,0x00, 0xe0,0xd8,0x8a,0x00, 0x23,0x24,0xef,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x04,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x99,0x99,0x00, 0xca,0xcf,0xcc,0x00, 0xf9,0xf4,0xfd,0x00, 0xad,0x47,0xf7,0x00, 0x14,0x05,0x23,0x00, 0x02,0x1c,0x00,0x00, 0x1e,0x4a,0x01,0x00, 0x52,0x80,0x22,0x00, 0x85,0xb7,0x50,0x00, 0xb8,0xdd,0x88,0x00, 0x7c,0x1d,0xf0,0x00, - 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x63,0x66,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xc9,0xd0,0xcc,0x00, 0xfc,0xf3,0xfc,0x00, 0xf4,0x41,0xf7,0x00, 0x24,0x05,0x23,0x00, 0x00,0x1e,0x00,0x00, 0x02,0x4c,0x01,0x00, 0x28,0x82,0x2a,0x00, 0x55,0xb9,0x5a,0x00, 0x90,0xdd,0x90,0x00, 0xe6,0x1c,0xdf,0x00, - 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x63,0x66,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xca,0xd0,0xcd,0x00, 0xfc,0xf3,0xfa,0x00, 0xfd,0x49,0xe3,0x00, 0x28,0x06,0x20,0x00, 0x00,0x1b,0x00,0x00, 0x00,0x4a,0x0c,0x00, 0x09,0x7f,0x3d,0x00, 0x31,0xb6,0x6f,0x00, 0x70,0xdb,0xa1,0x00, 0xf6,0x1c,0xb2,0x00, - 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x99,0x99,0x00, 0xca,0xcf,0xce,0x00, 0xfc,0xf3,0xf6,0x00, 0xfb,0x5b,0xa8,0x00, 0x29,0x06,0x15,0x00, 0x00,0x15,0x00,0x00, 0x00,0x44,0x21,0x00, 0x00,0x79,0x57,0x00, 0x1d,0xb0,0x8a,0x00, 0x5e,0xd5,0xb6,0x00, 0xf2,0x28,0x72,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x99,0x99,0x00, 0xc9,0xcf,0xcf,0x00, 0xfc,0xf4,0xf4,0x00, 0xfb,0x6f,0x63,0x00, 0x29,0x09,0x07,0x00, 0x00,0x0d,0x0e,0x00, 0x00,0x3c,0x3d,0x00, 0x00,0x72,0x73,0x00, 0x1b,0xa7,0xaa,0x00, 0x5d,0xce,0xd0,0x00, 0xf2,0x3c,0x2f,0x00, - 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x04,0x00, 0x30,0x33,0x33,0x00, 0x63,0x65,0x65,0x00, 0x96,0x99,0x99,0x00, 0xca,0xcf,0xd0,0x00, 0xfc,0xf6,0xf1,0x00, 0xfc,0x83,0x29,0x00, 0x28,0x0d,0x0a,0x00, 0x00,0x03,0x2a,0x00, 0x00,0x32,0x58,0x00, 0x06,0x68,0x8e,0x00, 0x2b,0x9d,0xc4,0x00, 0x6c,0xc6,0xe8,0x00, 0xf4,0x50,0x1c,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x02,0x05,0x04,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xca,0xce,0xd0,0x00, 0xfc,0xf7,0xf0,0x00, 0xfa,0x98,0x20,0x00, 0x26,0x10,0x19,0x00, 0x00,0x00,0x41,0x00, 0x00,0x29,0x6d,0x00, 0x20,0x5e,0xa2,0x00, 0x4d,0x93,0xd9,0x00, 0x89,0xbe,0xef,0x00, 0xf0,0x65,0x1c,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xca,0xce,0xd0,0x00, 0xfa,0xf8,0xf0,0x00, 0xc3,0xa9,0x21,0x00, 0x18,0x12,0x23,0x00, 0x00,0x00,0x4e,0x00, 0x17,0x22,0x79,0x00, 0x48,0x57,0xae,0x00, 0x7b,0x8b,0xe5,0x00, 0xb0,0xb8,0xf1,0x00, 0x96,0x78,0x1c,0x00, - 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xcc,0xce,0xd0,0x00, 0xf5,0xf9,0xf0,0x00, 0x57,0xb5,0x21,0x00, 0x07,0x14,0x22,0x00, 0x15,0x00,0x4f,0x00, 0x41,0x1d,0x7a,0x00, 0x78,0x52,0xaf,0x00, 0xad,0x85,0xe6,0x00, 0xd9,0xb4,0xf2,0x00, 0x2e,0x85,0x1d,0x00, - 0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xcd,0xce,0xd0,0x00, 0xf1,0xfa,0xf1,0x00, 0x27,0xba,0x22,0x00, 0x1b,0x14,0x1a,0x00, 0x41,0x00,0x45,0x00, 0x6d,0x1c,0x6f,0x00, 0xa3,0x50,0xa5,0x00, 0xdb,0x83,0xdb,0x00, 0xf1,0xb3,0xf1,0x00, 0x1e,0x8a,0x1f,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x96,0x9a,0x99,0x00, 0xcd,0xce,0xd0,0x00, 0xef,0xfa,0xf3,0x00, 0x22,0xb3,0x28,0x00, 0x36,0x12,0x0b,0x00, 0x67,0x00,0x30,0x00, 0x91,0x1e,0x5c,0x00, 0xc5,0x53,0x92,0x00, 0xfa,0x86,0xc8,0x00, 0xf6,0xb5,0xed,0x00, 0x1f,0x83,0x21,0x00, - 0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x03,0x05,0x05,0x00, 0x30,0x33,0x33,0x00, 0x62,0x65,0x65,0x00, 0x95,0x9a,0x99,0x00, 0xcd,0xce,0xcf,0x00, 0xef,0xf9,0xf6,0x00, 0x22,0xa1,0x56,0x00, 0x46,0x0e,0x02,0x00, 0x7b,0x00,0x15,0x00, 0xa3,0x23,0x43,0x00, 0xd7,0x58,0x78,0x00, 0xff,0x8b,0xaf,0x00, 0xf5,0xba,0xd8,0x00, 0x1f,0x74,0x2c,0x00, -}; - -unsigned char colours_bmp[86*3]={ - 0x78,0x02,0x2a,0x83,0x0b,0x09,0x6e,0x39,0x1a,0x3b,0x2b,0x13,0x2c,0x29,0x1d,0x27,0x30,0x20,0x15,0x3f,0x11,0x14,0x35,0x1c,0x11,0x36,0x2f,0x13,0x3a,0x48,0x0e,0x37,0x58,0x07,0x22,0x73,0x1f,0x14,0x67,0x48,0x1e,0x74,0x45,0x11,0x4f,0x65,0x0f,0x42, - 0xb7,0x09,0x45,0xa8,0x13,0x12,0xa1,0x54,0x25,0x79,0x57,0x22,0x6b,0x62,0x41,0x57,0x6b,0x44,0x27,0x7b,0x1c,0x24,0x69,0x37,0x1f,0x68,0x5a,0x20,0x5e,0x72,0x14,0x4f,0x7b,0x0e,0x33,0xa1,0x32,0x25,0x9c,0x60,0x2b,0x98,0x6c,0x1a,0x79,0x96,0x1a,0x66, - 0xcf,0x4a,0x79,0xc0,0x4f,0x4d,0xc0,0x72,0x40,0xac,0x7c,0x2e,0xa0,0x8f,0x4f,0x85,0x9c,0x6d,0x3a,0xa2,0x32,0x42,0xa6,0x69,0x4c,0xa5,0x94,0x42,0x84,0x9f,0x37,0x76,0xa3,0x4c,0x6e,0xb8,0x7f,0x73,0xbc,0x91,0x68,0xb8,0x9d,0x43,0xac,0xc9,0x5a,0x9f, - 0xcb,0x8b,0xa3,0xbe,0x81,0x7e,0xc0,0x8d,0x6d,0xbe,0x9f,0x6c,0xbb,0xae,0x7f,0xa2,0xb4,0x8e,0x7b,0xb8,0x78,0x75,0xbd,0x92,0x86,0xb6,0xad,0x72,0xa0,0xb6,0x7b,0xa0,0xbc,0x91,0xa0,0xc0,0x9e,0x97,0xbb,0xa7,0x8d,0xbe,0xb5,0x85,0xbc,0xcb,0x85,0xb0, - 0xd7,0xb3,0xc0,0xca,0xa8,0xa8,0xcc,0xb4,0xa5,0xcc,0xbb,0xa2,0xc9,0xc3,0xaf,0xbf,0xca,0xb2,0xb5,0xcb,0xb3,0xb3,0xcc,0xbe,0xb0,0xcb,0xc8,0xa8,0xc0,0xcb,0xa5,0xba,0xca,0xb2,0xba,0xcc,0xb9,0xb4,0xcb,0xbd,0xaf,0xca,0xc5,0xb2,0xc8,0xd6,0xb7,0xcb, - 0x00,0x00,0x00,0x33,0x33,0x33,0x77,0x77,0x77,0xaa,0xaa,0xaa,0xee,0xee,0xee,0xff,0xff,0xff, -}; - -unsigned char colours_idx[86]={ - 0x0a,0x1a,0x2a,0x3a,0x4a,0x5a,0x6a,0x7a,0x8a,0x9a,0xaa,0xba,0xca,0xda,0xea,0xfa, - 0x0b,0x1b,0x2b,0x3b,0x4b,0x5b,0x6b,0x7b,0x8b,0x9b,0xab,0xbb,0xcb,0xdb,0xeb,0xfb, - 0x0c,0x1c,0x2c,0x3c,0x4c,0x5c,0x6c,0x7c,0x8c,0x9c,0xac,0xbc,0xcc,0xdc,0xec,0xfc, - 0x0d,0x1d,0x2d,0x3d,0x4d,0x5d,0x6d,0x7d,0x8d,0x9d,0xad,0xbd,0xcd,0xdd,0xed,0xfd, - 0x0e,0x1e,0x2e,0x3e,0x4e,0x5e,0x6e,0x7e,0x8e,0x9e,0xae,0xbe,0xce,0xde,0xee,0xfe, - 0x02,0x03,0x04,0x05,0x06,0x07 -}; -unsigned char propcolours[256]; - -unsigned char getpixelcolour(int r,int g,int b) -{ -int tr,tg,tb; -int i,d,t; -unsigned char c; - if(doingvga) - if(r==255 && g==0 && b==255) return 0; - return ((r>>6)<<2)+((g>>6)<<4)+((b>>6)<<6)+3; - c=80; - d=10000; - - for(i=0;i<256;i++) - { - tr=PropRGBs[i*4+0]-r; - tg=PropRGBs[i*4+1]-g; - tb=PropRGBs[i*4+2]-b; - tr=abs(tr); - tg=abs(tg); - tb=abs(tb); - t=tr; - if(tg>t) t=tg; - if(tb>t) t=tb; - - if (tt) t=tg; - if(tb>t) t=tb; - - if (t>3] =((src[i]&1)<<0); - if((i&7)==1) dst[i>>3]|=((src[i]&1)<<1); - if((i&7)==2) dst[i>>3]|=((src[i]&1)<<2); - if((i&7)==3) dst[i>>3]|=((src[i]&1)<<3); - if((i&7)==4) dst[i>>3]|=((src[i]&1)<<4); - if((i&7)==5) dst[i>>3]|=((src[i]&1)<<5); - if((i&7)==6) dst[i>>3]|=((src[i]&1)<<6); - if((i&7)==7) dst[i>>3]|=((src[i]&1)<<7); - } -} - -void convcharto2bit(int chr) -{ -unsigned char *src=&chars[chr*64]; -unsigned char *dst=&convchar[0]; -int i; - if(fat) - { - for(i=0;i<64;i++) - { - if((i&7)==0) dst[i>>3] =((src[i]&3)<<0); - if((i&7)==2) dst[i>>3]|=((src[i]&3)<<2); - if((i&7)==4) dst[i>>3]|=((src[i]&3)<<4); - if((i&7)==6) dst[i>>3]|=((src[i]&3)<<6); - } - } - else - { - for(i=0;i<64;i++) - { - if((i&3)==0) dst[i>>2] =((src[i]&3)<<0); - if((i&3)==1) dst[i>>2]|=((src[i]&3)<<2); - if((i&3)==2) dst[i>>2]|=((src[i]&3)<<4); - if((i&3)==3) dst[i>>2]|=((src[i]&3)<<6); - } - } -} - -void convcharto4bit(int chr) -{ -unsigned char *src=&chars[chr*64]; -unsigned char *dst=&convchar[0]; -int i; - if(fat) - { - for(i=0;i<64;i++) - { - if((i&3)==0) dst[i>>2] =((src[i]&15)<<0); - if((i&3)==2) dst[i>>2]|=((src[i]&15)<<4); - } - } - else - { - for(i=0;i<64;i++) - { - if((i&1)==0) dst[i>>1] =((src[i]&15)<<0); - if((i&1)==1) dst[i>>1]|=((src[i]&15)<<4); - } - } -} - -void convcharto8bit(int chr) -{ -unsigned char *src=&chars[chr*64]; -unsigned char *dst=&convchar[0]; -int i; - for(i=0;i<64;i++) - { - dst[i]=src[i]; - } -} - -void getcharacter(int x,int y) -{ -int xx,yy,i,j; - currentattr=0; - for(yy=0;yy<8;yy++) - { - for(xx=0;xx<8;xx++) - { - charcell[yy*8+xx]=screen[(((y*8)+yy)*scrwidth)+((x*8)+xx)]; - if(charcell[yy*8+xx]&paland) - { - currentattr=( ( charcell[yy*8+xx] & paland ) >> palshift ); - } - charcell[yy*8+xx]&=charand; - } - } - - if(repeatable) - { - j=0; - for(i=0;i>3))+x]=currentattr; - } - else - { - for(i=0;i<64;i++) chars[(charnum*64)+i]=charcell[i]; - currentattr=(currentattr&0x3c00)+charnum; - charnum++; - } -} - -void get4x8character(int x,int y) -{ -int xx,yy,i,j; - currentattr=0; - for(yy=0;yy<8;yy++) - { - for(xx=0;xx<4;xx++) - { - charcell[yy*8+xx]=proppal[screen[(((y*8)+yy)*scrwidth)+((x*4)+xx)]]; - if(charcell[yy*8+xx]&paland) - { - currentattr=( ( charcell[yy*8+xx] & paland ) >> palshift ); - } - charcell[yy*8+xx]&=charand; - charcell[yy*8+xx+4]=0; - } - } - - if(repeatable) - { - j=0; - for(i=0;i>(7-x))&1; - } - if(mode==charmap4) - { - if(fat) - pix=(buf[y]>>(6-((x&3)*2)))&3; - else - pix=(buf[y*2+1-(x>>2)]>>(6-((x&3)*2)))&3; - } - if(mode==charmap16) - { - if(fat) - pix=(buf[y*2+1-(x>>1)]>>(4-((x&1)*4)))&15; - else - pix=(buf[y*4+3-(x>>1)]>>(4-((x&1)*4)))&15; - } - if(mode==charmap256) - { - pix=buf[y*8+x]; - } - if(mode==VGAchars4x8) - { - pix=buf[y*4+x]; - } - chars[i*64+y*8+7-x]=pix; - } - if(fat) - { - chars[i*64+y*8+0]=chars[i*64+y*8+4]; - chars[i*64+y*8+1]=chars[i*64+y*8+4]; - chars[i*64+y*8+2]=chars[i*64+y*8+5]; - chars[i*64+y*8+3]=chars[i*64+y*8+5]; - chars[i*64+y*8+4]=chars[i*64+y*8+6]; - chars[i*64+y*8+5]=chars[i*64+y*8+6]; - chars[i*64+y*8+6]=chars[i*64+y*8+7]; - chars[i*64+y*8+7]=chars[i*64+y*8+7]; - } - } - } - fclose(f); -} -int main(int c,char **s) -{ -unsigned char palbuf[256*4]; -int i,j,x,y,w,h,xx,yy; -int bytesize,byteand,byteshift,byteout; -FILE *f; -int getcharfileindex=0; - - doingvga=0; - justcharmap=0; - blocknum=0; - charnum=0; - blocksize=1; - blockmapsize=1; - charnum=0; - blocknum=0; - yfirst=0; - fat=0; - - if(c<2) - { - printf("bmp8toLite.exe (C) 2009 Jim Bagley\n"); - printf("usage :-\n"); - printf("bmp8toLite.exe Filename <-options>\n"); - printf("Filename is without the '.bmp' extension\n"); - printf("-vga use VGA colours for the palette\n"); - printf("-c64s Grab C64 sprites, C64 sprites are 24x21, it will grab the size of the bmp\n"); - printf(" C64 sprites can be either fat pixel(4colour) or fine pixel(2colour)\n"); - printf("-c64bitmap2 Grab a C64 2 colour mode bitmap image\n"); - printf("-c64bitmap4 Grab a C64 4 colour mode bitmap image ( fat pixels )\n"); - printf("-amsbitmap4 Grab Amstrad 4 colour bitmap mode ( fine pixels )\n"); - printf("-amsbitmap16 Grab Amstrad 16 colour bitmap mode ( fat pixels )\n"); - printf("-bitmap2 Grab screen as 1bit ( 2 colour with attributes ) bitmap\n"); - printf("-bitmap4 Grab screen as 2bit ( 4 colour with attributes ) bitmap\n"); - printf("-bitmap16 Grab screen as 4bit ( 16 colour with attributes ) bitmap\n"); - printf("-bitmap256 Grab screen as 8bit ( 256 colour ) bitmap\n"); - printf("-charmap2 Grab screen as 1bit ( 2 colour with attributes ) character map\n"); - printf("-charmap4 Grab screen as 2bit ( 4 colour with attributes ) character map\n"); - printf("-charmap16 Grab screen as 4bit ( 16 colour with attributes ) character map\n"); - printf("-charmap256 Grab screen as 8bit ( 256 colour ) character map\n"); - printf("-c64charmap4 Grab screen as 2bit fat pixel ( 4 colour with attributes ) character map\n"); - printf("-amscharmap16 Grab screen as 4bit fat pixel ( 16 colour with attributes ) character map\n"); - printf("-invx Invert X pixel order per byte\n"); -// printf("-flip Turns on Character repeat check and flip checking for X and Y flippable characters\n"); - printf("-rpt Turns on Character repeat check, for maps, ie doesn't store same character twice.\n"); - printf("-repeat same as -rpt.\n"); - printf("-repeatable same as -rpt.\n"); - printf("-1x1 Sets blocks to 1x1 (8x8 pixels) for charmap grabbing.\n"); - printf("-2x2 Sets blocks to 2x2 (16x16 pixels) for charmap grabbing.\n"); - printf("-4x4 Sets blocks to 4x4 (32x32 pixels) for charmap grabbing.\n"); - printf("-8x8 Sets blocks to 8x8 (64x64 pixels) for charmap grabbing.\n"); - printf("-yfirst Sets Y grab first for map layout\n"); - printf("-xfirst Sets X grab first for map layout (default)\n"); - printf("-invx inverts the pixel order in a byte for spectrum and fast spectrum\n"); - printf("-nopal Don't save palette in 8bit mode, use real colour values\n"); - printf("-2600 Grab a 2600 style background\n"); - printf("-using grab chars from screen, but using a file as a base font\n"); - } - - while(c>2) - { - if(jcmp(s[c-1],"-vga")) {doingvga=1;c--;} - else if(jcmp(s[c-1],"-c64s")) {mode=C64sprites;ext=extjcs;charand=1;paland=0xfe;palshift=1;c--;} - else if(jcmp(s[c-1],"-c64bitmap2")) {mode=C64bitmap2;ext=extcb2;charand=1;paland=0xfe;palshift=1;c--;} - else if(jcmp(s[c-1],"-c64bitmap4")) {mode=C64bitmap4;ext=extcb4;charand=3;paland=0xfc;palshift=2;c--;} - else if(jcmp(s[c-1],"-amsbitmap4")) {mode=AMSbitmap4;ext=extab4;charand=3;paland=0xfc;palshift=2;c--;} - else if(jcmp(s[c-1],"-amsbitmap16")) {mode=AMSbitmap16;ext=exta16;charand=15;paland=0xf0;palshift=4;c--;} - else if(jcmp(s[c-1],"-bitmap2")) {mode=bitmap2;ext=extbm2;charand=1;paland=0xfe;palshift=1;c--;} - else if(jcmp(s[c-1],"-bitmap4")) {mode=bitmap4;ext=extbm4;charand=3;paland=0xfc;palshift=2;c--;} - else if(jcmp(s[c-1],"-bitmap16")) {mode=bitmap16;ext=extb16;charand=15;paland=0xfe;palshift=4;c--;} - else if(jcmp(s[c-1],"-bitmap256")) {mode=bitmap256;ext=extb8b;charand=255;paland=0;palshift=0;c--;} - else if(jcmp(s[c-1],"-charmap2")) {mode=charmap2;ext=extjb2;charand=1;paland=0xfe;palshift=1;c--;} - else if(jcmp(s[c-1],"-charmap4")) {mode=charmap4;ext=extjb4;charand=3;paland=0xfc;palshift=2;c--;} - else if(jcmp(s[c-1],"-charmap16")) {mode=charmap16;ext=extj16;charand=15;paland=0xf0;palshift=4;c--;} - else if(jcmp(s[c-1],"-charmap256")) {mode=charmap256;ext=extj8b;charand=255;paland=0;palshift=0;c--;} - else if(jcmp(s[c-1],"-vga4x8")) {mode=VGAchars4x8;ext=extj8b;charand=255;paland=0;palshift=0;c--;fat=1;doingvga=1;repeatable=1;nopalette=1;justcharmap=1;blockmapsize=1;blocksize=1;} - else if(jcmp(s[c-1],"-c64charmap4")) {mode=charmap4;ext=extjb4;charand=3;paland=0xfc;palshift=2;c--;fat=1;} - else if(jcmp(s[c-1],"-amscharmap16")){mode=charmap16;ext=extj16;charand=15;paland=0xf0;palshift=4;c--;fat=1;} - else if(jcmp(s[c-1],"-flip")) {repeatable=1;flipable=1;c--;} - else if(jcmp(s[c-1],"-flipable")) {repeatable=1;flipable=1;c--;} - else if(jcmp(s[c-1],"-norpt")) {repeatable=0;c--;} - else if(jcmp(s[c-1],"-norepeat")) {repeatable=0;c--;} - else if(jcmp(s[c-1],"-notrepeatable")) {repeatable=0;c--;} - else if(jcmp(s[c-1],"-rpt")) {repeatable=1;c--;} - else if(jcmp(s[c-1],"-repeat")) {repeatable=1;c--;} - else if(jcmp(s[c-1],"-repeatable")) {repeatable=1;c--;} - else if(jcmp(s[c-1],"-1x1")) {justcharmap=1;blockmapsize=1;blocksize=1;c--;} - else if(jcmp(s[c-1],"-2x2")) {justcharmap=0;blockmapsize=2;blocksize=4;c--;} - else if(jcmp(s[c-1],"-4x4")) {justcharmap=0;blockmapsize=4;blocksize=16;c--;} - else if(jcmp(s[c-1],"-8x8")) {justcharmap=0;blockmapsize=8;blocksize=64;c--;} - else if(jcmp(s[c-1],"-yfirst")) {yfirst=1;c--;} - else if(jcmp(s[c-1],"-xfirst")) {yfirst=0;c--;} - else if(jcmp(s[c-1],"-invx")) {invx=(1-invx)&1;c--;} - else if(jcmp(s[c-1],"-nopal")) {nopalette=1;c--;} - else if(jcmp(s[c-1],"-pal16")) {pal16=1;c--;} - else if(jcmp(s[c-1],"-2600")) {getting_2600=1;c--;} - else if(jcmp(s[c-2],"-using")) {getcharfileindex=c-1;c-=2;} - else if(jcmp(s[c-2],"-fat")) {fat=1;} - else {printf("Unknown option '%s'\n",s[c-1]);exit(1);} - } - if(c!=2) - { - printf("exename filename\n"); - exit(0); - } - if(getcharfileindex) - { - getcharfile(s[getcharfileindex]); - } - setuppropcolours(); - - sprintf(fname,"%s.bmp",s[1]); - f=fopen(fname,"rb"); - if(f!=NULL) - { - fread(header,0x36,1,f); - scrwidth=header[9]; - scrheight=header[11]; - printf("w=%d\nh=%d\n",scrwidth,scrheight); - fread(palbuf,256,4,f); - for(i=0;i<256;i++) - { - proppal[i]=getpixelcolour(palbuf[i*4+0],palbuf[i*4+1],palbuf[i*4+2]); - } - - fseek(f,header[5],SEEK_SET); - for(i=0;i=charmap2 && mode<=charmap256 ) - printf("Char map size = ( %d,%d )\nChars Used = %d\n",scrwidth/8,scrheight/8,charnum); - if( mode==VGAchars4x8 ) - printf("Char map size = ( %d,%d )\nChars Used = %d\n",scrwidth/4,scrheight/8,charnum); - - if(nopalette==0) - { - sprintf(fname,"%s.pal",s[1]); - f=fopen(fname,"wb"); - if(f!=NULL) - { - if(pal16) - fwrite(proppal,16,1,f); - else - fwrite(proppal,256,1,f); - fclose(f); - } - } - - if(mode!=C64sprites && repeatable!=0) - { - if(justcharmap) - { - sprintf(fname,"%s.map",s[1]); - f=fopen(fname,"wb"); - if(f!=NULL) - { - if(mode==VGAchars4x8) - { - if(yfirst==0) - { - fwrite(charmap,scrheight/8,(scrwidth/4)*2,f); - } - else - { - for(x=0;x<(scrwidth/(blockmapsize*4));x++) - { - for(y=0;y<(scrheight/(blockmapsize*8));y++) - { - fwrite(&charmap[y*(scrwidth/(blockmapsize*4))+x],1,2,f); - } - } - } - } - else - { - if(yfirst==0) - { - fwrite(charmap,scrheight/8,(scrwidth/8)*2,f); - } - else - { - for(x=0;x<(scrwidth/(blockmapsize*8));x++) - { - for(y=0;y<(scrheight/(blockmapsize*8));y++) - { - fwrite(&charmap[y*(scrwidth/(blockmapsize*8))+x],1,2,f); - } - } - } - } - fclose(f); - } - } - else - { - sprintf(fname,"%s.mpb",s[1]); - f=fopen(fname,"wb"); - if(f!=NULL) - { - if(yfirst==0) - { - fwrite(blockmap,scrheight/(blockmapsize*8),(scrwidth/(blockmapsize*8))*2,f); - } - else - { - for(x=0;x<(scrwidth/(blockmapsize*8));x++) - { - for(y=0;y<(scrheight/(blockmapsize*8));y++) - { - fwrite(&blockmap[y*(scrwidth/(blockmapsize*8))+x],1,2,f); - } - } - } - fclose(f); - } - - sprintf(fname,"%s.blx",s[1]); - f=fopen(fname,"wb"); - if(f!=NULL) - { - fwrite(blocks,blocknum,blocksize*2,f); - fclose(f); - } - } - } - -// sprintf(fname,"%s.%s",s[1],ext); - if( (mode>=charmap2 && mode<=charmap256 ) || mode==VGAchars4x8) - { - sprintf(fname,"%s.chr",s[1]); - } - else if(mode==C64sprites) - { - sprintf(fname,"%s.JCS",s[1]); - } - else if( (mode>=bitmap2 && mode<=AMSbitmap16 ) ) - { - sprintf(fname,"%s.bit",s[1]); - } - else - { - printf("Don't know Graphics mode :(\n"); - return 0; - } - f=fopen(fname,"wb"); - if(f!=NULL) - { - if( (mode>=charmap2 && mode<=charmap256) || mode==VGAchars4x8 ) - { - for(i=0;i=bitmap2 && mode<=AMSbitmap16 ) ) - { - if(mode==C64bitmap2) {bytesize=8;byteand= 1;byteshift=1;fat=0;} - if(mode==C64bitmap4) {bytesize=4;byteand= 3;byteshift=2;fat=1;} - if(mode==AMSbitmap4) {bytesize=4;byteand= 3;byteshift=2;fat=0;} - if(mode==AMSbitmap16){bytesize=2;byteand= 15;byteshift=4;fat=1;} - if(mode==bitmap2) {bytesize=8;byteand= 1;byteshift=1;fat=0;} - if(mode==bitmap4) {bytesize=4;byteand= 3;byteshift=2;fat=0;} - if(mode==bitmap16) {bytesize=2;byteand= 15;byteshift=4;fat=0;} - if(mode==bitmap256) {bytesize=1;byteand=255;byteshift=0;fat=0;} - for(y=0;y1) - { - byteand=3;byteshift=2; - j=1; - xx=24;yy=21; - } - } - } - for(yy=0;yy<21;yy++) - { - for(xx=0;xx<24;xx+=byteshift) - { - if((xx&7)==0) byteout=0; - byteout+=((screen[((y+yy)*scrwidth)+(x+xx)]&byteand)<<((8-byteshift)-(xx&7))); - if((xx&7)==(8-(byteshift))) - { - fwrite(&byteout,1,1,f); - } - } - } - byteout=0; - fwrite(&byteout,1,1,f); // to keep nice round 64bytes per sprite :) - } - } - } - - fclose(f); - } - else - { - printf("Error Creating '%s'\n",fname); - } - } - else - { - printf("Error Opening '%s'\n",fname); - } - return 0; -} - diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/bmp8toLite.exe b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/bmp8toLite.exe deleted file mode 100644 index 10a0a0d..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/bmp8toLite.exe and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/font.bmp b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/font.bmp deleted file mode 100644 index 85b1ce0..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/font.bmp and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/font.chr b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/font.chr deleted file mode 100644 index 89083cc..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/font.chr and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/jbdemo1.bel b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/jbdemo1.bel deleted file mode 100644 index 0f54467..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/jbdemo1.bel and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.bmp b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.bmp deleted file mode 100644 index 2db3969..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.bmp and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.chr b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.chr deleted file mode 100644 index e69683f..0000000 --- a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.chr +++ /dev/null @@ -1 +0,0 @@ -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿë׃׃ƒÃÃÃÃÃÿÿÿÿÿÿÿÿÿÿÿëÿë—ƒƒƒƒÃƒÃÃÃÃÃÃÃÃÃÃÃÿÿÿÿÿÿÿÿë׃ƒƒƒƒƒÃÃÃÃÃÃÃÃÃÃÃÿÿÿÿëëë냃ƒƒƒƒƒƒÃƒƒƒÃƒƒÃƒƒƒƒƒƒƒƒÿÿÿÿ§§ëëƒCCCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒCƒ——ÿÿÿÿÿÿÿÿC—ëÿƒƒCCƒƒƒƒƒƒƒƒƒƒCƒ——“Cÿÿÿÿÿÿÿÿÿÿÿÿ—ÿÿÿCCëÿƒƒC—ƒƒCCCCCƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ—ÿÿÿC‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿëÿÿÿƒÿÿÿÿÿÿÿÿÿÿÿ×ÿÿ׃ÿ׃Ã׃ÃÃÃÃÃÃÃÃÃÃÿëƒÃëƒÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃëÃÿƒƒƒÿƒƒƒ×ƒƒëÿƒëÿÿëÿÿÿÿÿÿÿÿÿÿëÿÿÿëÿÿÿ×ëÿÿÿÿÿÿÿûÿÿÿƒ×ëÿƒƒƒ×ÃÃÃÃÃ׃ƒÃÿëÿÿÿÿÿÿëÿÿÿƒ×ÿ׃ƒëÃÃÃ׃ÃÃ냃×ë×CCƒÿëƒCÿÿëƒ×ëûûƒëûÿƒƒëûƒƒ“ë냃׃C“ÿƒCC—CƒƒCCƒCC§CƒƒëCCƒÿ“Cƒÿ×CƒÿÿÿÿÿÿÿÿëÿÿÿCÿÿÿC—ÿÿƒCëÿƒƒ‡ÿƒƒC«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿƒÿÿëƒÿÿƒÃÿÿ×ÃÿëƒÃëƒÃÃ׃ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ×ÿÃ×ÿƒƒƒÿƒÃƒÿÃ×ÃÃÃÿÿÿ×ÿÿÿƒÿÿëÃÿÿ×Ãÿÿ—ƒëÿëׇÿÿûƒ×ë냃ûÿÃûûÃûûÃÃëÿÃ×ëëƒ×ëëëëëëëë׃ë“ëëÿëëëûûëëÿëëëëëëëëëëëë×׃ƒƒƒƒëƒƒƒë׃ƒë냃ëë—ƒëëë×ëëë냃ƒƒƒƒƒƒëëCƒ××Cƒ××CCëƒCC׃CƒƒCƒƒƒƒƒƒƒƒƒƒƒƒC“CƒƒCCƒƒCCCƒƒCƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒÿÿÿÿëÿÿÿƒÿÿÿCëÿÿC“ÿÿCCëÿCCçÿƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿ×ÿÿëƒÿÿ×ÃÿëƒÃÿƒÃÃëƒÃÇÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ×ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÓƒƒÃÃÃÃÃÃÃÃCCƒƒƒCƒƒCCƒƒCWÃCCCCCCCCCCƒƒƒƒƒƒƒƒƒƒƒƒCCCCCCCCCCCCƒƒƒCƒƒƒƒƒƒƒCCCCCCCCCCCCƒCCCCCCCCS—ëÿCCCCCCCCCƒƒCƒCCCCCCCCCCCCCCÿÿÿÿëÿÿÿCëÿÿCSÿÿCCÿÿCWÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ««ûÿÿÿÿÿÿÿÿÿÿÿëÿÿëƒÿëÃÃÿ×ÃÃëÃÃÇÃÃÃÿëƒÃëƒÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃCÃCƒCÃÃÃÃÃÃÃÃÃÃÃÃCCƒCCS—§×ÃÃCCCC———C×ç×냃“ƒƒ“ƒ“S“—“C———C—“S—C—ëçCƒ“ƒƒƒƒ“—“—““““—““—“——————————ç———ƒ“SSƒ““S“—““——“—————————————ç××—SWSC—“S—“C———“————————§§CWCCC———ƒ———×——“×—“×——“——§———CCCCCCƒ—Cƒÿÿƒƒ“—׃ƒC—ƒƒC׃Cƒ×ƒCƒCC—ÿ—§««ë§—«ëÿ§«—ë«—C—ë—CC——CCS—ÿÿÿû««ûû«««««§«««§W«—««§—§—«—WWWû«««««««««««««««———«§«——————WW——§«««««««««««§§««««§«—[§§«§«§—§§§«ÿÿÿ«««ÿ«««««««««§««§§««§—§«§§§§ÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿ««ÿÿ[««ÿ«««ÿ«§§«ÿÿÿÿÿÿÿëÿÿÿ×ÿÿÿ×ÿÿÿ×ÿÿÿ×ÿÿÿ×ÿÿÿÿÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃCÃÃÃÃÃÃÃÃÃÃÃÃÃCCƒCCCCCCCÃÃÃÃÃÃÃÓ—ƒ“———ûûû—ûûû—ÿûûÃ׃××————×———çûûûûûÿûÿûûûû—CC×CC§———§×—ç—ç×——ûëëçûûëçûûûë—§—×——§—§—§—————秗W§—WWë—§«ë—«Wç××ק§———————«««WW«Wk[ookkççë×——ë秧§ç«««§««««k««ë¿ÿûk«ÿÿçç——çç××çççç§çç×ëëçëëçëëûëûëÿûÿûדח××——××——×××—×××—ëç×—ëçç—ûëç×—CCW—CW—Sk————CC«§——[«——W§§—W«—W«—W§§C§§W§«çדCƒ×—Cƒ——Cƒ—×CC—׃C—׃C—דCç§×ƒCCC—CCCWCCCSCCCSCCCSCCCSCCSSCCS—WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW——WWW—WWW—WWWWWWWWWWWWWWWWWWWW§§§§—§§——§§——§§—W——§WWW§WWW§WWW—§§§§§§«—§§«W§«§W§«§W§§«W—§«W§§««§§§[WW§§WW—§WWWWW—WWW—W§W——ÿ«Wÿÿ«ÿÿÿ«ÿÿÿ«ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ׃ƒÃÿƒƒƒÿ냃ÿÿëƒÿÿÿëÿÿÿÿÿÿÿÿÿÿÿûÃÃÃÃÃÃÃדëûûÿÿÿÿÿûûûûëçÃÃÃÃCûûë×ûûûûûÿûëççç냃CCƒƒCCƒCCCCCCCƒCCCëƒCCûçCCûëëCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCƒCSëûÿC§ÿÿC—ÿÿCC§ÿCCCçCCCCCCCCCCÿûûûûÿûûûÿÿûÿûÿûÿûûÿëÿûûSÿÿûûÿûûûûëûûûëÿûûûÿûûûûÿûëûûûûûûûûûûÿû«§«맫«««ë««ëë«Wëë««ûëë§ûûë««ÿ[WW[o[ÿÿo[¿ÿk¯ÿo«ÿ[k¯ÿ[[¿ÿ[ÿÿ¿ÿÿÿûÿûÿûûÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûûûë§ûûëëÿûûûûûûûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿ——ëëëëëÿûûëÿûÿûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûëëëëëëëëûûûûÿûûûûûûëûûûûûûûëÿûëëëëëëëëëëûëëëëçççëçççëççççççççç秗——S秗—秧맧§§ç§§«§—§§—§§§ç§ç§—WWWë«WWÿÿÿ«ëÿÿÿ§ÿÿÿ§ûÿÿ§ëÿÿ§ëÿÿWWWWWWWW«WWWÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWWWWWWWWWWWW«—WWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿW—««—«««W§§§WWW«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«§ÿÿ§«ÿÿ§ûÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûççûëçëûççûûçëûûëëûÿëëûÿûëûÿÿûûçëççûûëçûëççûç××ûç××ûçççûëççûûëçûûë×ççëë××çëד×ëç××çëëëçëëëëëûûûCCCCƒCCC×CƒCë“CCûçCCûû“CûûëCûûûSCCCCCCCCCCSCCC«CCëCCûCCSÿ«ÿCûÿÿSÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûÿÿÿÿÿÿÿûÿÿÿûÿÿÿ«ÿÿÿ«ÿÿÿÿÿÿÿÿûÿëûS§ÿû—CW««[«ëÿÿÿëûûÿCSÿÿÿÿÿÿÿÿÿûûÿ—WWWÿÿûÿÿÿûÿÿÿÿÿSCWÿûWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿûû«ûûû—ûëÿÿÿÿÿÿÿûÿÿûûûûûûûûûûûûûëûûëëëëëëûëëëûëëçûëççûëççëçççëçççëçççëë——ççç§ç秧秧—秧—秧—ç×——×——————§§×§ç—§§ç§§§§——§——§§§§§—§—§SW§C«—ëÿÿ—ÿÿÿ§ÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûëÿÿûûûÿûûÿÿûûÿÿûûÿûÿûÿÿÿûÿÿÿÿëûûûûûûÿûûÿûûûÿÿûûÿÿûûûûûûûûÿ—CSûûûÿÿûûÿÿûÿÿûÿûÿûÿûûûûÿëû«—CC«ëÿÿÿÿÿÿÿûÿÿÿûÿÿÿÿûûëûûûëÿÿCÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûûûûûûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûÿûûûûûûûûûûûûÿÿÿWûûÿ«ûÿûûûûÿûûûûûûûûûûûëëSSSÿ««—ûûëëûûëëûëëçëëëçSë—Cç맗ç秧[«W«S««WCCCCë맧C—§§CWGëç——§———C—WCWCS—C——§—CSC—C——————————————§Cÿ—«ÿ—§ëÿ§—ûÿ—ëÿÿ—ÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿ[ÿÿ[Gÿ«‡ÿ§ÿÿ[ÿ¿«¿[[[[WGGG‡ƒƒ‡ÇÃÃÇÃÃÃ[[__GGG[ƒƒƒƒÃÃÃÃÃÃÃÃWû[[_ƒG[[ƒƒC[ÃGëûûû«ëëë[«ëë[«[G_ûûûûëëûëëëëëëëëçS«ëëW—ûûëëëëëëëëëëëëëëëëëç§ëëëCW—çCëëççëëççëçççççççççççççççëçç×C———ç秧ççççç秧çççççççççççççççç——çç§C§—CC§çCCçç×Cççç—çççëçëççç××çCCCCCCCCCCC—ƒCCçç——çëëëGCCCCCCCCCCCCCCCCƒCCƒ—“———§———CC—“CC““C———“—————————————Sÿ——«ÿ———ÿ——ëÿ—«ÿÿ—ÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ뫧痗—ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«««ÿCCCSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿«ÿÿoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿ¿[ÿ¯_o/ÿ[G‡«GÃ[G‡ÃCÃÃÃÃGƒÃÃÃÃÃÃÃÃCÃÃÃÃG C[CCCƒCCCCGƒƒCGƒƒƒC    GG[G   CCC“CCCCCCCCCCCCCCCCCCCCCC———×CC“—CCCCCCCCCCCCCCCCCCCCCCCC×××——××—C“——CCCCCCCCCCCCCCCCCC———ë—““————WCCCC————W——WS——ûSWÿÿÿÿûÿWWû[«ûû—§ÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿûÿÿûçÿûççÿëëëÿûûëÿûûëÿÿë×ûëç×ççççççççëëç—ëë—Wë—W«[ ×ד“××—S§—SC—SCCWCG CCCCCCCCCCCC  C[oGCƒƒCG[ƒÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÇÃÃǃÃÃGƒÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃCCCƒƒCGÃÃÃÃÃÃÃÃÃÃÃÃƒ× GƒCGƒƒGCƒ‡ëÿ×ÿÿÿÿÿÿ«CCGCC[«««ÿÿÿ««««ÿ««ÿÿCCCCCCCCCCC—[WÿÿÿÿÿÿÿÿÿÿÿÿûÿCCCCCC«C«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿûû«û««««««§ÿÿÿÿÿÿÿûÿÿûûÿ««û««««««««««««««««ÿÿÿÿÿÿÿÿûû«ÿûû«û««««««««««««««««ÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿ««««««««««««««««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿ§«ÿÿ§—ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿûÿÿûûÿÿûÿÿÿÿûÿÿÿûÿûûûûûûûûÿÿûÿÿûûÿûûëûûû§ûûë—ûÿÿ«ûÿ«[ûë[û««[—WW[     [K‡ƒƒKG‡ƒKGƒGGG  ÃÃÃÃÃÃÃÃÃÃÃÃCƒÃÃGƒÃÃGƒƒÃGƒÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ×ÃÃëÃÃ×ÿÃëÿÃ×ûÃ×ÿÿƒÿÿëëÿÿ«ÿÿ««ÿë««ÿ«««û«««ÿû««ë««««««ÿ««¿ÿ«ûÿÿ«ÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿ«««§[««««Wÿÿ«ûÿÿÿûÿÿÿÿÿÿÿÿ««ûÿ««««««««W[[§«[WWÿÿÿÿÿÿÿÿÿÿÿÿûûÿÿ««««««««§[[§WWW§«—WWÿÿÿ§ÿÿÿÿûûÿ«««««««««§§§§§«§[W§§§WWW§«WWW«WSW««—W§W«ÿ«W«ÿ§§[ÿ§§§ÿ§§§«§§W§W§W[WWW§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿWÿÿÿÿÿÿûÿÿûûÿûûûûûûëÿûûçûûççëëç×ëëç×ûë×Wûç—CçדCç“CC§“CC““CC“ƒCC“ƒ“SWWWWWWW[      GCƒGƒGƒCGÃÃÃÃÃÃÃÃÃÃÃGƒƒƒCƒƒGCƒGCÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃCƒƒƒÃƒëÿÃÿÿƒ×ÿûƒëû«ƒëû«ƒëû«ƒëû«ƒëÿ«ë««««««ÿ«««ÿ«««ÿ«««ÿ««ÿÿ««ÿÿ««ÿÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû««««««««§§[û««[ûûûûÿûÿÿûûûûûûûÿ««««««««§««§W[W««««Wÿÿÿÿûÿÿÿÿÿÿû««««««««««««««««WWW§««WWÿÿÿ«ûÿÿ««««««««§«««§««««§§§«WW§§WWWW«WSS««§W§§§—«§§§«§§««§§«§§§«—§««WW§WWWW—WWWWWWWW—WWW—WWWWWWWWWW[WW—WWÿÿÿW«ÿÿW«ÿÿWûÿÿWÿÿÿ§ÿÿÿ«ÿÿÿÿÿÿÿëçç“ûçç“ÿë—“ÿë—“ÿûç“ÿÿû§ÿÿÿûÿÿÿÿ““CS““ƒS“ƒ“““ƒƒ“““ƒ“““““—“““ÿ«S“S[S[S[SWSW[“W[“W[“SW[     k«GGCƒƒGGCGGƒëû«Cëë«C«û«—ÿ«W¿«¿««¿«««ÿÿ««ÿÿ««ÿÿ««ûÿ«««ÿ«««ÿ««§«««««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿûÿ««««ÿÿ««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûÿÿÿûÿÿÿ«ÿÿ««ÿ«««ÿ««Wÿ«««ÿûûÿûûûÿ««ûû««««««««««««—«««§WWWû«««ÿÿÿÿû««û««««««««««««««««WW««WWSWÿ«WSûû««««««««««««««««««««««W§««SSW—«WWW«§WW«§§§«««§«««««««§«««§«§««WWWWWWWWWWWWWWW——«——«ÿÿÿÿÿÿÿÿÿÿÿW§W«W§WÿWW«ÿ§«ÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ——WWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿[ÿ¿ÿÿÿ[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ¿k[[ÿÿÿÿÿÿÿÿÿÿÿÿ[[k¿ÿÿÿÿÿÿÿÿÿÿÿÿW«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯Wÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿kÿÿÿÿÿÿ[ÿÿ[ÿÿkÿÿ« [«««««««W««««û[««ûû««««§««««§««««««««««ûûû«ÿ««««««««««««««««û«WW«ûÿÿÿ«ûûû««ûû««««««««««««««««ÿÿû«ûûûûû«««««««««««««««««««««««««««ûÿÿÿ«ûÿÿ«ûûû«««««««««««««««««ûÿÿÿû«Wÿ««§««§W««««««««««««««««û«««WSSWWWWW——WS§§§W«§§—««§««««ÿ«ûÿÿW—«ÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ÿÿ¯ÿÿ¿ÿÿ¿ÿÿÿÿÿÿÿÿÿoÿÿÿo          «ÿÿÿkÿÿÿWÿÿÿÿÿÿÿÿÿ¿ÿÿ«ÿÿ[ÿÿÿÿÿoÿÿÿ¯ÿÿÿ¯ÿÿÿoÿÿÿoÿÿÿoÿÿÿoÿÿÿ¯        [ÿÿÿÿÿÿ¿ÿ«ÿ[ÿÿÿÿÿÿ¯ÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿÿÿooo///         ÿ¿«[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿkÿÿÿo/¯/¿/¿/¯/o/o//o_   _   S§W«ë«ûûûCWW§«§ëëëçëëççûûûëCSW————§çççççç×ççççççç×—————“——çד“×ד“×ד“ד““ÿÿÿÿÿÿS——«“““C““S—““SC“SCCSSCCÿÿÿÿÿÿÿÿûÿÿÿCC«ÿCWSCCCCCCCCCCCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿûÿÿÿÿCÿoook¿[ÿ¿¿ÿÿ«ÿûÿ«ëëÿ—§çÿ——§_[S—««ûûûûûëçççëçççç—ç×ç[«W«ÿûûûûûûûûûûûûûëëëçççççççççûûûûûûëûûëëûûûëëëçëçççççççççççç×ûûûëûûûëëëëçëççççççççç××ç××××ד“ççç×ççç×ççדç×—“×———ד““ד“““““Cד““—““C““ƒC““CC“ƒCC“CCCSCCCCCCCSCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC«CCCCCCCCCCCCCCCCCCCCCCCCCÿÿÿÿÿÿÿÿ«ÿÿÿWÿÿÿÿÿÿûÿÿ«ÿÿ§ÿÿÿ§S—ÿëS“ÿÿSSÿÿûCÿÿÿëÿÿÿÿÿÿÿûÿÿÿÿ““×ד“““C“““CCC“§—“Cûûëûëëëëÿûëë×××ד××ד“““““““CC““—CCSë—CCë§ë§×××ד““““““—“““““““““CC“CCCCSCCCד““———————“““““““ƒƒƒCCCCCCCCCCC—““C—“SC“CCCƒCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSS—CCCCCCCCCCCCCCCCCCCCCCCCCCCC————CCCCCCCCCCCCCCCCCCCC—SSSû—SS«—ÿÿ—ÿÿ«ÿÿûÿÿ—ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëë—ûûëëÿûûëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“““Sëçççëëë«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““——§——“ççç«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ————“““Sëëëûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ————“———ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSWSS§«ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ—§«ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.map b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.map deleted file mode 100644 index 7a4f5e3..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/mario.map and /dev/null differ diff --git a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/spiderman.bmp b/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/spiderman.bmp deleted file mode 100644 index c871ab4..0000000 Binary files a/demo/VGA_JB_Demo - Archive [Date 2010.11.22 Time 14.53] - Hive/spiderman.bmp and /dev/null differ diff --git a/demo/hallo.spin b/demo/hallo.spin deleted file mode 100644 index b4a7654..0000000 Binary files a/demo/hallo.spin and /dev/null differ diff --git a/demo/ios.spin b/demo/ios.spin deleted file mode 100644 index caf5b03..0000000 Binary files a/demo/ios.spin and /dev/null differ diff --git a/demo/para.spin b/demo/para.spin deleted file mode 100644 index 4744617..0000000 Binary files a/demo/para.spin and /dev/null differ diff --git a/demo/sid/sid1.spin b/demo/sid/sid1.spin deleted file mode 100644 index 6efa65a..0000000 Binary files a/demo/sid/sid1.spin and /dev/null differ diff --git a/demo/sid/sid2.spin b/demo/sid/sid2.spin deleted file mode 100644 index e267437..0000000 Binary files a/demo/sid/sid2.spin and /dev/null differ diff --git a/demo/spritedriver/NTSC240H.zip b/demo/spritedriver/NTSC240H.zip deleted file mode 100644 index f6efad1..0000000 Binary files a/demo/spritedriver/NTSC240H.zip and /dev/null differ diff --git a/demo/spritedriver/NTSC240H/NTSC240H.spin b/demo/spritedriver/NTSC240H/NTSC240H.spin deleted file mode 100644 index 266955e..0000000 Binary files a/demo/spritedriver/NTSC240H/NTSC240H.spin and /dev/null differ diff --git a/demo/spritedriver/NTSC240H/demo240H.spin b/demo/spritedriver/NTSC240H/demo240H.spin deleted file mode 100644 index ea1c55e..0000000 Binary files a/demo/spritedriver/NTSC240H/demo240H.spin and /dev/null differ diff --git a/demo/spritedriver/NTSC240H/ppm2ntsc.c b/demo/spritedriver/NTSC240H/ppm2ntsc.c deleted file mode 100644 index a186f6d..0000000 --- a/demo/spritedriver/NTSC240H/ppm2ntsc.c +++ /dev/null @@ -1,72 +0,0 @@ -#include -#include -#include - -unsigned int clut[] = {0x22222222, 0x33333333, 0x44444444, 0x55555555, 0x66666666, 0x77777777, 0x1144EE55, 0x11337755, 0x2244EE66, 0x22447755, 0x3355EE66, 0x22335544, 0x33446655, 0x44557766, 0x1133EE66, 0x2233EE77, 0x22337766, 0x3344EE77, 0x22336655, 0x33447766, 0x4455EE77, 0x3333EEEE, 0x33337777, 0x33336666, 0x44447777, 0x33335555, 0x44446666, 0x55557777, 0x33334444, 0x44445555, 0x55556666, 0x66667777, 0x443377EE, 0x44336677, 0x554477EE, 0x553366EE, 0x44335566, 0x55446677, 0x665577EE, 0x55335577, 0x664466EE, 0x44334455, 0x55445566, 0x66556677, 0x663355EE, 0x55334466, 0x66445577, 0x775566EE, 0x773344EE, 0x66334477, 0x774455EE, 0x77333377, 0x66333366, 0x77444477, 0x55333355, 0x66444466, 0x77555577, 0x44333344, 0x55444455, 0x66555566, 0x77666677, 0xEE331166, 0xEE332277, 0x77332266, 0x66332255, 0x77443366, 0xEE330055, 0x77330044, 0xEE441155, 0x77331155, 0xEE442266, 0x66331144, 0x77442255, 0x55332244, 0x66443355, 0x77554466, 0xEE440044, 0x66330033, 0x77441144, 0xEE552255, 0x55331133, 0x66442244, 0x77553355, \ -0x44332233, 0x55443344, 0x66554455, 0x77665566, 0xEE550033, 0x77440033, 0xEE551144, 0x77551133, 0xEE662244, 0x66441133, 0x77552244, 0x55442233, 0x66553344, 0x77664455, 0xEE660022, 0x77550022, 0xEE661133, 0x77661122, 0x66551122, 0x77662233, 0x55441122, 0x66552233, 0x77663344, 0x66661111, 0x66662222, 0x55552222, 0x66663333, 0x44442222, 0x55553333, 0x66664444, 0x33332222, 0x44443333, 0x55554444, 0x66665555, 0x55662211, 0x44552211, 0x55663322, 0x44662200, 0x44663311, 0x33442211, 0x44553322, 0x55664433, 0x33663300, 0x33553311, 0x44664422, 0x33443322, 0x44554433, 0x55665544, 0x22664400, 0x22553300, 0x33664411, 0x22443311, 0x33554422, 0x44665533, 0x22665511, 0x22554411, 0x33665522, 0x22666622, 0x22555522, 0x33666633, 0x22444422, 0x33555533, 0x44666644, 0x22333322, 0x33444433, 0x44555544, 0x55666655, 0x1166EE33, 0x11667722, 0x22667733, 0x22556633, 0x33667744, 0x1155EE44, 0x11557733, 0x2266EE44, 0x22557744, 0x3366EE55, 0x22445533, 0x33556644, 0x44667755, 0x11447744, 0x2255EE55, 0x22446644, 0x33557755, 0x4466EE66, \ -0x22334433, 0x33445544, 0x44556655, 0x55667766}; -int red[] = {-1, 0, 51, 102, 153, 204, 255, 17, 8, 59, 49, 100, 29, 80, 131, 17, 59, 49, 100, 39, 90, 141, 100, 90, 80, 131, 71, 122, 173, 61, 112, 163, 214, 131, 122, 173, 163, 112, 163, 214, 153, 204, 102, 153, 204, 194, 143, 194, 245, 226, 184, 235, 216, 175, 226, 133, 184, 235, 92, 143, 194, 245, 238, 247, 206, 165, 216, 228, 187, 238, 196, 247, 155, 206, 124, 175, 226, 228, 145, 196, 247, 114, 165, 216, 82, 133, 184, 235, 228, 187, 238, 196, 247, 155, 206, 124, 175, 226, 228, 187, 238, 196, 155, 206, 114, 165, 216, 155, 165, 124, 175, 82, 133, 184, 41, 92, 143, 194, 124, 82, 133, 82, 92, 41, 92, 143, 51, 51, 102, 51, 102, 153, 20, 10, 61, 10, 61, 112, 29, 20, 71, 39, 29, 80, 20, 71, 122, 10, 61, 112, 163, 17, 8, 49, 39, 90, 17, 8, 59, 49, 100, 29, 80, 131, 8, 59, 39, 90, 141, 20, 71, 122, 173, -1}; -int grn[] = {-1, 0, 51, 102, 153, 204, 255, 189, 161, 212, 173, 224, 106, 157, 208, 200, 223, 184, 235, 145, 196, 247, 246, 207, 168, 219, 129, 180, 231, 90, 141, 192, 243, 230, 191, 242, 214, 152, 203, 254, 175, 226, 113, 164, 215, 198, 136, 187, 238, 182, 159, 210, 143, 120, 171, 97, 148, 199, 74, 125, 176, 227, 88, 127, 104, 81, 132, 49, 26, 77, 65, 116, 42, 93, 58, 109, 160, 38, 3, 54, 105, 19, 70, 121, 35, 86, 137, 188, 27, 15, 66, 43, 94, 31, 82, 47, 98, 149, 16, 4, 55, 32, 20, 71, 8, 59, 110, 9, 48, 36, 87, 24, 75, 126, 12, 63, 114, 165, 25, 13, 64, 2, 41, 1, 52, 103, 18, 29, 80, 40, 91, 142, 34, 6, 57, 17, 68, 119, 73, 45, 96, 112, 84, 135, 56, 107, 158, 28, 79, 130, 181, 167, 128, 151, 123, 174, 178, 139, 190, 162, 213, 95, 146, 197, 150, 201, 134, 185, 236, 67, 118, 169, 220, -1}; -int blu[] = {-1, 0, 51, 102, 153, 204, 255, 99, 46, 97, 99, 150, 48, 99, 150, 43, 41, 43, 94, 46, 97, 148, 38, 41, 43, 94, 46, 97, 148, 48, 99, 150, 201, 38, 41, 92, 38, 43, 94, 145, 41, 92, 46, 97, 148, 38, 43, 94, 145, 38, 41, 92, 41, 43, 94, 46, 97, 148, 48, 99, 150, 201, 43, 41, 43, 46, 97, 46, 48, 99, 46, 97, 48, 99, 48, 99, 150, 102, 51, 102, 153, 51, 102, 153, 51, 102, 153, 204, 158, 105, 156, 158, 209, 105, 156, 105, 156, 207, 214, 161, 212, 214, 161, 212, 107, 158, 209, 217, 214, 161, 212, 107, 158, 209, 54, 105, 156, 207, 217, 163, 214, 219, 217, 110, 161, 212, 219, 163, 214, 107, 158, 209, 219, 166, 217, 110, 161, 212, 217, 163, 214, 214, 161, 212, 107, 158, 209, 54, 105, 156, 207, 212, 214, 212, 158, 209, 156, 158, 209, 156, 207, 105, 156, 207, 102, 153, 102, 153, 204, 51, 102, 153, 204, -1}; -int num[256]; -char iline[1024]; - - -void main( void ) -{ - int x, y, r, g, b, i, j, m, n; - unsigned char *ptr, *dat; - - if ( ( ptr = dat = malloc( 2<<16 ) ) == NULL ) - return; - - for ( i = 0; i < 256; i++ ) - num[i] = 0; - - fgets( iline, 1024, stdin ); - if ( strncmp( iline, "P3", 2 ) ) - return; - fgets( iline, 1024, stdin ); - fscanf( stdin, "%d %d\n", &x, &y ); - fgets( iline, 1024, stdin ); - while( !feof( stdin ) ) - { - fscanf( stdin, "%d %d %d", &r, &g, &b ); - if ( feof( stdin ) ) - break; - if ( red[0] < 0 ) - { - red[0] = r; grn[0] = g; blu[0] = b; - } - for ( i = 0; red[i] >=0; i++ ) - { - m = (red[i]-r)*(red[i]-r)+(grn[i]-g)*(grn[i]-g)+(blu[i]-b)*(blu[i]-b); - if ( i == 0 || m < n ) - { - j = i; n = m; - } - } - num[j]++; - *ptr++ = j; - } - for ( j = i = 0; i < 256; i++ ) - { - if ( num[i] ) - { - num[i] = j++; - if ( i > 0 ) - fprintf( stdout, "%08X\n", clut[i-1] ); - } - } - for ( i = 0; dat < ptr; dat++) - if ( ++i == x ) - { - fprintf( stdout, "%2d\n", num[*dat] ); - i = 0; - } - else - { - fprintf( stdout, "%2d, ", num[*dat] ); - } - fprintf( stdout, "\n" ); -} diff --git a/demo/spritedriver/NTSC240H/ppm2ntsc.exe b/demo/spritedriver/NTSC240H/ppm2ntsc.exe deleted file mode 100644 index 2bce2a4..0000000 Binary files a/demo/spritedriver/NTSC240H/ppm2ntsc.exe and /dev/null differ diff --git a/demo/spritedriver/composite NTSC sprite driver Parallax Forums.URL b/demo/spritedriver/composite NTSC sprite driver Parallax Forums.URL deleted file mode 100644 index 580e40c..0000000 --- a/demo/spritedriver/composite NTSC sprite driver Parallax Forums.URL +++ /dev/null @@ -1,2 +0,0 @@ -[InternetShortcut] -URL=http://forums.parallax.com/forums/default.aspx?f=25&m=343999 diff --git a/demo/toolbox1/Graphics.spin b/demo/toolbox1/Graphics.spin deleted file mode 100644 index dbe7e03..0000000 Binary files a/demo/toolbox1/Graphics.spin and /dev/null differ diff --git a/demo/toolbox1/TV.spin b/demo/toolbox1/TV.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/demo/toolbox1/TV.spin and /dev/null differ diff --git a/demo/toolbox1/bel-keyb.spin b/demo/toolbox1/bel-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/demo/toolbox1/bel-keyb.spin and /dev/null differ diff --git a/demo/toolbox1/bel-mouse.spin b/demo/toolbox1/bel-mouse.spin deleted file mode 100644 index c37ad5c..0000000 Binary files a/demo/toolbox1/bel-mouse.spin and /dev/null differ diff --git a/demo/toolbox1/demo-1-koord.spin b/demo/toolbox1/demo-1-koord.spin deleted file mode 100644 index 3909ca5..0000000 Binary files a/demo/toolbox1/demo-1-koord.spin and /dev/null differ diff --git a/demo/toolbox1/demo-10-animation1.spin b/demo/toolbox1/demo-10-animation1.spin deleted file mode 100644 index d2cd217..0000000 Binary files a/demo/toolbox1/demo-10-animation1.spin and /dev/null differ diff --git a/demo/toolbox1/demo-10-animation2.spin b/demo/toolbox1/demo-10-animation2.spin deleted file mode 100644 index 706c059..0000000 Binary files a/demo/toolbox1/demo-10-animation2.spin and /dev/null differ diff --git a/demo/toolbox1/demo-11-logo1.spin b/demo/toolbox1/demo-11-logo1.spin deleted file mode 100644 index f51bb62..0000000 Binary files a/demo/toolbox1/demo-11-logo1.spin and /dev/null differ diff --git a/demo/toolbox1/demo-11-logo2.spin b/demo/toolbox1/demo-11-logo2.spin deleted file mode 100644 index ee84762..0000000 Binary files a/demo/toolbox1/demo-11-logo2.spin and /dev/null differ diff --git a/demo/toolbox1/demo-12-matrix.spin b/demo/toolbox1/demo-12-matrix.spin deleted file mode 100644 index 8e4199b..0000000 Binary files a/demo/toolbox1/demo-12-matrix.spin and /dev/null differ diff --git a/demo/toolbox1/demo-13-graphics_demo.spin b/demo/toolbox1/demo-13-graphics_demo.spin deleted file mode 100644 index 443dc65..0000000 Binary files a/demo/toolbox1/demo-13-graphics_demo.spin and /dev/null differ diff --git a/demo/toolbox1/demo-14-graphics_palette.spin b/demo/toolbox1/demo-14-graphics_palette.spin deleted file mode 100644 index 19a55d7..0000000 Binary files a/demo/toolbox1/demo-14-graphics_palette.spin and /dev/null differ diff --git a/demo/toolbox1/demo-15-sid1.spin b/demo/toolbox1/demo-15-sid1.spin deleted file mode 100644 index 6efa65a..0000000 Binary files a/demo/toolbox1/demo-15-sid1.spin and /dev/null differ diff --git a/demo/toolbox1/demo-15-sid2.spin b/demo/toolbox1/demo-15-sid2.spin deleted file mode 100644 index e267437..0000000 Binary files a/demo/toolbox1/demo-15-sid2.spin and /dev/null differ diff --git a/demo/toolbox1/demo-2-dots.spin b/demo/toolbox1/demo-2-dots.spin deleted file mode 100644 index b4cab3d..0000000 Binary files a/demo/toolbox1/demo-2-dots.spin and /dev/null differ diff --git a/demo/toolbox1/demo-3-objekte.spin b/demo/toolbox1/demo-3-objekte.spin deleted file mode 100644 index f26008a..0000000 Binary files a/demo/toolbox1/demo-3-objekte.spin and /dev/null differ diff --git a/demo/toolbox1/demo-4-boing.spin b/demo/toolbox1/demo-4-boing.spin deleted file mode 100644 index bc2217c..0000000 Binary files a/demo/toolbox1/demo-4-boing.spin and /dev/null differ diff --git a/demo/toolbox1/demo-5-scroller.spin b/demo/toolbox1/demo-5-scroller.spin deleted file mode 100644 index afd4876..0000000 Binary files a/demo/toolbox1/demo-5-scroller.spin and /dev/null differ diff --git a/demo/toolbox1/demo-6-mouse1.spin b/demo/toolbox1/demo-6-mouse1.spin deleted file mode 100644 index f84dc3f..0000000 Binary files a/demo/toolbox1/demo-6-mouse1.spin and /dev/null differ diff --git a/demo/toolbox1/demo-6-mouse2.spin b/demo/toolbox1/demo-6-mouse2.spin deleted file mode 100644 index 6b09813..0000000 Binary files a/demo/toolbox1/demo-6-mouse2.spin and /dev/null differ diff --git a/demo/toolbox1/demo-7-satellite.spin b/demo/toolbox1/demo-7-satellite.spin deleted file mode 100644 index 77583ab..0000000 Binary files a/demo/toolbox1/demo-7-satellite.spin and /dev/null differ diff --git a/demo/toolbox1/demo-8-sinus.spin b/demo/toolbox1/demo-8-sinus.spin deleted file mode 100644 index a580772..0000000 Binary files a/demo/toolbox1/demo-8-sinus.spin and /dev/null differ diff --git a/demo/toolbox1/demo-9-lissajou1.spin b/demo/toolbox1/demo-9-lissajou1.spin deleted file mode 100644 index 9a14ff8..0000000 Binary files a/demo/toolbox1/demo-9-lissajou1.spin and /dev/null differ diff --git a/demo/toolbox1/demo-9-lissajou2.spin b/demo/toolbox1/demo-9-lissajou2.spin deleted file mode 100644 index 442f8d3..0000000 Binary files a/demo/toolbox1/demo-9-lissajou2.spin and /dev/null differ diff --git a/demo/toolbox1/gfx1.spin b/demo/toolbox1/gfx1.spin deleted file mode 100644 index fc2226a..0000000 --- a/demo/toolbox1/gfx1.spin +++ /dev/null @@ -1,178 +0,0 @@ -DAT -{ - video-treiber-frame - - basiert auf dem tollen tutorial von bamse - -30-09-2009-dr235 driver 1 - originalcode, anpassung an hive - driver 2 - senkrechte balken - driver 3 - einfarbige fläche - driver 4 - wandernde farbbalken, 1 byte pro pixel :) - driver 5 - - - -} - -CON - _CLKMODE = xtal1 + pll16x - _XINFREQ = 5_000_000 - -PUB start - - cognew(@entry,0) ' neue cog mit video-treiber starten - -DAT org 0 -entry jmp #Start_of_driver ' Start here... - -' NTSC sync stuff. -NTSC_color_freq long 3_579_545 ' NTSC Color Frequency -NTSC_hsync_VSCL long 39 << 12 + 624 ' Used for the Horisontal Sync -NTSC_active_VSCL long 188 << 12 + 3008 ' Used for the Vertical sync -NTSC_hsync_pixels long %%11_0000_1_2222222_11 ' Horizontal sync pixels -NTSC_vsync_high_1 long %%1111111_2222222_11 ' Vertical sync signal part one for lines 1-6 and 13 to 18 -NTSC_vsync_high_2 long %%1111111111111111 ' Vertical sync signal part two for lines 1-6 and 13 to 18 -NTSC_vsync_low_1 long %%2222222222222222 ' Vertical sync signal part one for lines 7-12 -NTSC_vsync_low_2 long %%22_1111111_2222222 ' Vertical sync signal part two for lines 7-12 -NTSC_sync_signal_palette long $00_00_02_8A ' The sync Palette - -' hbeat --------+ +------------------------- /cs -' clk -------+| | -' /wr ------+|| | +---------------------- videopins -' /hs -----+||| | | -' |||| |--+ -------- d0..d7 -tvport_mask long %00000000_01110000_00000000_00000000 ' Maske für Video-Pins am Hive -vsu_cfg long %01110100_00000000_00000100_01110000 ' Wert für VCFG-Register - -NTSC_Graphic_Lines long 244 ' Anzahl der sichtbaren Zeilen -NTSC_Graphics_Pixels_VSCL long 16 << 12 + 16 ' 16 clocks per pixel, 64 clocks per frame. - - -PAL0 long $01 -PAL1 long $0E -PAL2 long $0D -PAL3 long $0C -PAL4 long $0B -DIF1 long $00_10 -CNT_ANIM long $4 - -' Loop counters. -line_loop long $0 ' Line counter... -pix_loop long $0 -anim_loop long $0 - -' General Purpose Registers -r0 long $0 ' Initialize to 0 -r1 long $0 -r2 long $0 -r3 long $0 -c1 long $0 ' colorregister -c2 long $0 -c3 long $0 - -'========================== Start of the actual driver ============================================= - -Start_of_driver - ' VCFG, setup Video Configuration register and 3-bit tv DAC pins to output - mov VCFG, vsu_cfg ' Konfiguration der VSU - or DIRA, tvport_mask ' Set DAC pins to output - - ' CTRA, setup Frequency to Drive Video - movi CTRA,#%00001_111 ' pll internal routed to Video, PHSx+=FRQx (mode 1) + pll(16x) - mov r1, NTSC_color_freq ' r1: Color frequency in Hz (3.579_545MHz) - rdlong r2, #0 ' Copy system clock from main memory location 0. (80Mhz) - ' perform r3 = 2^32 * r1 / r2 - mov r0,#32+1 -:loop cmpsub r1,r2 wc - rcl r3,#1 - shl r1,#1 - djnz r0,#:loop - mov FRQA, r3 ' Set frequency for counter A - - -'========================== Start of Frame Loop ============================================== - -frame_loop - mov anim_loop, CNT_ANIM -frame_loop2 - -'========================== Screen ============================================= - - mov line_loop, NTSC_Graphic_Lines ' anzahl der zeilen laden (244) - -user_lines - '------ zeilensynchronisation - mov VSCL, NTSC_hsync_VSCL ' Setup VSCL for horizontal sync. - waitvid NTSC_sync_signal_palette, NTSC_hsync_pixels ' Generate sync. - - - '------ sichtbarer zeileninhalt - mov VSCL, NTSC_Graphics_Pixels_VSCL ' Setup VSCL for user pixels. - - '------ verschiedenfarbige balken ausgeben - mov c1, PAL4 - add c1, c3 - mov pix_loop, #23 -bar_loop - add c1, #$10 ' 8 x pixel einzeln! ausgeben - mov c2, c1 ' also 2 tiles - waitvid c2, #0 ' 8 bit pro pixel! - add c2, #1 - waitvid c2, #0 - add c2, #1 - waitvid c2, #0 - add c2, #1 - waitvid c2, #0 - sub c2, #1 - waitvid c2, #0 - sub c2, #1 - waitvid c2, #0 - sub c2, #1 - waitvid c2, #0 - sub c2, #1 - waitvid c2, #0 - - djnz pix_loop, #bar_loop - - sub c2, #1 - waitvid c2, #0 ' 4 mal extrapixel, für das timing - sub c2, #1 ' also insgesamt 188 pixel pro zeile - waitvid c2, #0 - sub c2, #1 - waitvid c2, #0 - sub c2, #1 - waitvid c2, #0 - - djnz line_loop, #user_lines ' schleife durch alle zeilen - -'========================== The 16 lines of Horizontal sync ================================== - - mov line_loop, #6 ' Line 244, start of first high sync. -vsync_high1 mov VSCL, NTSC_hsync_VSCL - waitvid NTSC_sync_signal_palette, NTSC_vsync_high_1 - mov VSCL, NTSC_active_VSCL - waitvid NTSC_sync_signal_palette, NTSC_vsync_high_2 - djnz line_loop, #vsync_high1 - - mov line_loop, #6 ' Line 250, start of the Seration pulses. -vsync_low mov VSCL, NTSC_active_VSCL - waitvid NTSC_sync_signal_palette, NTSC_vsync_low_1 - mov VSCL,NTSC_hsync_VSCL - waitvid NTSC_sync_signal_palette, NTSC_vsync_low_2 - djnz line_loop, #vsync_low - - mov line_loop, #6 ' Line 256, start of second high sync. -vsync_high2 mov VSCL, NTSC_hsync_VSCL - waitvid NTSC_sync_signal_palette, NTSC_vsync_high_1 - mov VSCL, NTSC_active_VSCL - waitvid NTSC_sync_signal_palette, NTSC_vsync_high_2 - djnz line_loop, #vsync_high2 - -'========================== End of Frame Loop ============================================= - djnz anim_loop, #frame_loop2 - add c3, #$10 - - -'========================== Animation ================================== - - jmp #frame_loop ' And repeat for ever... -FIT - \ No newline at end of file diff --git a/demo/toolbox1/vga.spin b/demo/toolbox1/vga.spin deleted file mode 100644 index 9acf513..0000000 Binary files a/demo/toolbox1/vga.spin and /dev/null differ diff --git a/doku/Thumbs.db b/doku/Thumbs.db deleted file mode 100644 index 9c9b300..0000000 Binary files a/doku/Thumbs.db and /dev/null differ diff --git a/doku/TriOS - Logo 1.jpg b/doku/TriOS - Logo 1.jpg deleted file mode 100644 index 82b891e..0000000 Binary files a/doku/TriOS - Logo 1.jpg and /dev/null differ diff --git a/doku/TriOS - Logo 2.jpg b/doku/TriOS - Logo 2.jpg deleted file mode 100644 index 44ee962..0000000 Binary files a/doku/TriOS - Logo 2.jpg and /dev/null differ diff --git a/doku/TriOS-1.jpg b/doku/TriOS-1.jpg deleted file mode 100644 index aa72063..0000000 Binary files a/doku/TriOS-1.jpg and /dev/null differ diff --git a/doku/TriOS.ods b/doku/TriOS.ods deleted file mode 100644 index 5424920..0000000 Binary files a/doku/TriOS.ods and /dev/null differ diff --git a/flash/administra/admflash-fat.spin b/flash/administra/admflash-fat.spin deleted file mode 100644 index 896f90a..0000000 Binary files a/flash/administra/admflash-fat.spin and /dev/null differ diff --git a/flash/administra/admflash-hss.spin b/flash/administra/admflash-hss.spin deleted file mode 100644 index a41aeef..0000000 --- a/flash/administra/admflash-hss.spin +++ /dev/null @@ -1,738 +0,0 @@ -''***************************** -''* Hydra Sound System v1.2 * -''* (C)2007 Andrew Arsenault * -''***************************** -''http://www.andrewarsenault.com/hss/ -''e-mail: ym2413a@yahoo.com -'' -'' Cogs used: 2 -'' HUB-RAM: ~2.7k - -'' Please visit the website for the latest version, documentation, examples and media files. -'' Thank you! --Ym2413a - -'' 25.01.2009 Anpassungen für ein komfortableres Interface zur Visualisierung und Steuerung - -CON -#0, iEndFlag 'Repeat oder Ende wurde erreicht - iRowFlag 'Flag das Songzeile fertig ist - iEngineC 'Patternzähler - iBeatC 'Beatzähler - iRepeat 'zähler für loops -#5, iChannel -#5, iChannel1 -#10, iChannel2 -#15, iChannel3 -#16, iChannel4 -#0, iNote - iOktave - iVolume - iEffekt - iInstrument - -VAR - -'Interface - word intreg[5 * 5] - -'Sound Engine Stack - long hsnd_stack[18] - long cog1, cog2 - -'WavSynth Parameters - long snd_regs[48] 'Regs for Sound Hardware (8x6)+5dpcm - long dpcm_regs[5] - -'DPCM Command Variables - word dpcmreg_ptr - -'Global Hmus Player Vars - word tempo - word song_pc - word song_div - word song_ptr - word chfre[4] - byte chfx[4] - byte chvol[4] - byte hmus_state - byte hmvol - byte fxphs - -'Sound FX Variables - word runlen[2] - word envamp[2] - word sfx_ptr[2] - byte envphs[2] - byte fmcnt[2], fmfreq[2] - byte loadsfx[2] - -CON - -'' Hss Master Control - -PUB start: okay - - okay := cog1 := cognew(@entry, @snd_regs) - okay := cog2 := cognew(hsound, @hsnd_stack) - -PUB stop - - cogstop(cog2) - cogstop(cog1) - -PUB peek(addrptr) : var1 - - var1 := LONG[@snd_regs][addrptr] - -PUB intread(index): wert 'interface: auslesen eines interfaceregisters - - wert := intreg[index] - - -CON - -'' Hydra Music Commands - -PUB hmus_load(songptr) | z - - hmvol := 15 - song_div := 0 - song_ptr := songptr - song_pc := WORD[songptr][8] - tempo := WORD[songptr][12] - repeat z from 0 to 3 - chfx[z] := 0 - - repeat z from 0 to 5*5 'interface: playerinterface alle werte löschen - intreg[z] := 0 - - -PUB hmus_play - - hmus_state := 1 - -PUB hmus_stop | z - - hmus_state := 0 - repeat z from 0 to 3 - chvol[z] := 0 - -PUB hmus_pause - - hmus_state := 0 - -PUB hmus_tempo(var1) - - tempo := var1 - -PUB get_hmus_tempo : var1 - - var1 := tempo - -PUB hmus_vol(var1) - - hmvol := var1 <# 15 #> 0 - -PUB get_hmus_vol : var1 - - var1 := hmvol - -CON - -'' FXsynth Commands - -PUB sfx_play(chan, soundptr) - - if(chan == 1) - sfx_ptr[0] := soundptr - loadsfx[0] := 0 - if(chan == 2) - sfx_ptr[1] := soundptr - loadsfx[1] := 0 - -PUB sfx_stop(chan) - - if(chan == 1) - sfx_ptr[0] := 0 - if(chan == 2) - sfx_ptr[1] := 0 - -PUB sfx_keyoff(chan) - - if(chan == 1) - envphs[0] := 3 - if(chan == 2) - envphs[1] := 3 - -CON - -'' Hydra DPCM Commands - -PUB dpcm_play(soundptr) - - dpcmreg_ptr := soundptr - -PUB dpcm_stop - - dpcmreg_ptr := 1 - -CON -''***************************** -''* Hss Sound Engine * -''***************************** -PRI Hsound -repeat - 'Update Music Engine - UpdateMus(song_ptr, Hmus_state) 'Update Music Player - 'volume/frequenzwerte werden in die soundregister geschrieben - VolumeInterpol 'Delay and Interpolate Volume to Remove Pops and Clicks. - - 'Update DPCM Engine - if(dpcmreg_ptr) - DpcmUpdate 'Update the DPCM registers - - 'Update SoundFX Engine - - 'FX channel A - FXSynth(0,32) - 'FX channel B - FXSynth(1, 40) - -PRI VolumeInterpol | z, channelmul, musvar, freqval - - fxphs += 5 - -'Volume Interpolation - repeat z from 0 to 3 step 1 - channelmul := 4+(8*z) - musvar := (chvol[z]*(hmvol+1))&$F0 - snd_regs[channelmul] := (snd_regs[channelmul] & 15)+musvar - - 'Freq Interpolation - channelmul -= 1 'Jump down a REG to Freq - musvar := chfre[z]<<16 - - if(chfx[z] == 0) 'None - snd_regs[channelmul] := musvar - - elseif(chfx[z] < 3) 'Vibrato (light/hard) - if(fxphs < 128) - snd_regs[channelmul] := musvar+(chfre[z]<<(7+chfx[z])) - else - snd_regs[channelmul] := musvar-(chfre[z]<<(7+chfx[z])) - - elseif(chfx[z] == 3) 'Tremolo - if(fxphs < 128) - snd_regs[channelmul] := musvar - else - snd_regs[channelmul] := musvar<<1 - - else 'Portamento - freqval := snd_regs[channelmul]>>16 - if(freqval & $F000 == chfre[z] & $F000) - snd_regs[channelmul] := musvar - elseif(freqval < chfre[z]) - snd_regs[channelmul] := snd_regs[channelmul]+(chfx[z]<<22) - else - snd_regs[channelmul] := snd_regs[channelmul]-(chfx[z]<<22) - -PRI UpdateMus(songptr, state) | i, channel, channelmul, scrdat, freq, freqoct, flag - - if(state == 0) - return ''Song is not playing. - - song_div++ 'zeitfaktor; wird erhöht bis... - - if(song_div => tempo) 'Tempo Divider 'schwellwert erreicht, dann nächster beat - song_div := 0 - flag := 0 - intreg[iBeatC] := intreg[iBeatC] + 1 'interface: beatconter erhöhen - intreg[iRowFlag] := 0 'interface: Kennung das Zeile bearbeitet wird - repeat i from 5 to 5*5 'interface: channelwerte löschen - intreg[i] := 0 - - repeat 'Score Decoder and Processor - scrdat := BYTE[song_ptr][song_pc] 'song_pc ist zeiger auf wert in MusicDat - channel := scrdat & 3 'untere zwei bit enthalten die kanalnummer - channelmul := channel<<3 'jedem channel sind 8 registerwerte zugeordent - intreg[iEngineC] := song_pc 'interface: enginecounter setzen - song_pc++ 'zeiger auf nächsten wert setzen - - ''Base Commands - if(scrdat == 0) 'End Row 'nächste trackerzeile - intreg[iRowFlag] := 1 'interface: Zeile fertig bearbeitet - quit - - if(scrdat == 1) 'Repeat Song 'wiederholt ab MusicLoop (MusicDat ist also die einleitung) - song_pc := WORD[songptr][9] - intreg[iRepeat] := intreg[iRepeat] + 1 'interface: flag das songende erreicht wurde - quit - - if(scrdat == 2) 'End Song 'status wird auf 0 gesetzt - intreg[iEndFlag] := 1 'interface: flag das songende erreicht wurde - hmus_stop - quit - - if(scrdat == 3) 'Set Flag - flag := 1 - next - - if((scrdat & $3C) == $20) 'Patch HI Note 'oktave erhöhen und veränderung zu "Change Note" - flag := 2 - scrdat := scrdat>>3 - scrdat += 64+channel - - if(scrdat & 4) 'Change Note - freq := scrdat>>3 'note Bit3 bis Bit7 (32 Noten) - freqoct := freq/12 - freq -= freqoct*12 - case flag - 1 : freqoct += 2 - 2 : freqoct += 6 - other : freqoct += 4 - flag := 0 - snd_regs[4+channelmul] := snd_regs[4+channelmul] & $FE - intreg[(channel*iChannel)+iChannel+iNote] := freq + 1 'interface: note setzen (0 ist erste note!) - intreg[(channel*iChannel)+iChannel+iOktave] := freqoct 'interface: oktave setzen - 'frequenz aus tabelle holen - 'je nach oktave wird nach rechts verschoben (/2) - chfre[channel] := NoteFreqs[freq]>>(6-freqoct) - snd_regs[4+channelmul] := (snd_regs[4+channelmul] & $FE)+1 - next 'Repeat To Next Datum - - if(scrdat & 8) 'Change Evelope / Channel Effect - if(flag) - intreg[(channel*iChannel)+iChannel+iEffekt] := scrdat>>4 + 1 'interface: effektwert setzen - chfx[channel] := scrdat>>4 - flag := 0 - else - intreg[(channel*iChannel)+iChannel+iVolume] := scrdat>>4 'interface: volume setzen - chvol[channel] := scrdat>>4 - next 'Repeat To Next Datum - - if(scrdat & 16) 'Change Instrument - freq := (scrdat & $E0)>>3 - freq += flag<<5 - flag := 0 - intreg[(channel*iChannel)+iChannel+iInstrument] := freq>>2 + 1 'interface: instrument setzen - snd_regs[0+channelmul] := songptr+WORD[songptr+32][freq] 'zeiger auf neues instrumentensample - snd_regs[1+channelmul] := WORD[songptr+32][freq+1] 'ende des samples - snd_regs[2+channelmul] := WORD[songptr+32][freq+2] 'loop - snd_regs[4+channelmul] := WORD[songptr+32][freq+3] & $0F 'flags? - next 'Repeat To Next Datum - - if(scrdat & 64) 'Detune - chfre[channel] := chfre[channel]+(chfre[channel]>>8) - - - -PRI DpcmUpdate - - if(dpcmreg_ptr > 15) 'Play Sample. - dpcm_regs[2] := 65535 'End sample if one was playing - dpcm_regs[0] := dpcmreg_ptr+8 - dpcm_regs[4] := 128 - dpcm_regs[3] := LONG[dpcmreg_ptr][1] 'Get sampling rate - dpcm_regs[1] := WORD[dpcmreg_ptr][1] 'Get length - dpcm_regs[2] := 0 'Reset play counter - elseif(dpcmreg_ptr == 1) 'Stop Sample - dpcm_regs[2] := 65535 'End sample - dpcm_regs[4] := 128 - - dpcmreg_ptr := 0 - -PRI FXSynth(SoundVars, ChannelFX) | TimeCnt, SoundFX, Modwav, FMwav, AMwav - TimeCnt := Cnt - SoundFX := sfx_ptr[SoundVars] - - if(loadsfx[SoundVars] == 0) - 'Setup OSC WaveForm - case BYTE[SoundFX][0] - $00: 'Sine - snd_regs[ChannelFX] := @SineTable - snd_regs[1+ChannelFX] := 64 - $01: 'Fast Sine - snd_regs[ChannelFX] := @FastSine - snd_regs[1+ChannelFX] := 32 - $02: 'Sawtooth - snd_regs[ChannelFX] := @Sawtooth - snd_regs[1+ChannelFX] := 64 - $03: 'Square - snd_regs[ChannelFX] := @SqrTable - snd_regs[1+ChannelFX] := 32 - $04: 'Fast Square - snd_regs[ChannelFX] := @FastSqr - snd_regs[1+ChannelFX] := 8 - $05: 'Buzz - snd_regs[ChannelFX] := @NoteFreqs - snd_regs[1+ChannelFX] := 24 - $06: 'Noise - snd_regs[ChannelFX] := $F002 - snd_regs[1+ChannelFX] := 3000 - - snd_regs[2+ChannelFX] := 0 - snd_regs[4+ChannelFX] := $01 - - loadsfx[SoundVars] := 1 - runlen[SoundVars] := 0 - fmcnt[SoundVars] := 0 - fmfreq[SoundVars] := 0 - envamp[SoundVars] := 0 - envphs[SoundVars] := 0 - -''Modulation Code - fmfreq[SoundVars]++ - if(fmfreq[SoundVars] => BYTE[SoundFX][4]) - fmfreq[SoundVars] := 0 - fmcnt[SoundVars]++ - fmcnt[SoundVars] := fmcnt[SoundVars] & $3F - - case BYTE[SoundFX][5] - $00: - Modwav := BYTE[@SineTable][fmcnt[SoundVars]] - $01: - Modwav := BYTE[@FastSine][fmcnt[SoundVars] & 31] - $02: - Modwav := fmcnt[SoundVars]<<2 - $03: - Modwav := !fmcnt[SoundVars]<<2 - $04: - if(fmcnt[SoundVars] & 8) - Modwav := $ff - else - Modwav := $00 - $05: - Modwav := BYTE[$F002][fmcnt[SoundVars]] - $FF: - Modwav := BYTE[SoundFX+12][fmcnt[SoundVars] & 15] - - fmwav := Modwav/(BYTE[SoundFX][6]) 'FM amount - amwav := 256-(Modwav/(BYTE[SoundFX][7])) 'AM amount - amwav := (BYTE[SoundFX][3]*amwav)>>8 - -''Envelope Generator - if(envphs[SoundVars] == 0) 'Attack - envamp[SoundVars] += BYTE[SoundFX][8] - if(envamp[SoundVars] > 8191) - envamp[SoundVars] := 8191 - envphs[SoundVars] := 1 - if(BYTE[SoundFX][8] == $ff) - envamp[SoundVars] := 8191 - if(envphs[SoundVars] == 1) 'Decay - envamp[SoundVars] -= BYTE[SoundFX][9] - if(envamp[SoundVars] & $8000) - envphs[SoundVars] := 2 - if(envamp[SoundVars] =< (BYTE[SoundFX][10]<<5)) - envphs[SoundVars] := 2 - if(envphs[SoundVars] == 2) 'Sustain - envamp[SoundVars] := (BYTE[SoundFX][10]<<5) - if(envphs[SoundVars] == 3) 'Release - envamp[SoundVars] -= BYTE[SoundFX][11] - if(envamp[SoundVars] & $8000) - envamp[SoundVars] := 4 - - amwav := ((envamp[SoundVars]>>9)*(amwav+1))>>4 - -''Run Length and Outputing - if(SoundFX > 15) - runlen[SoundVars]++ - snd_regs[3+ChannelFX] := (BYTE[SoundFX][2]+fmwav)<<24 'Update Frequency - snd_regs[4+ChannelFX] := (amwav<<4)+(snd_regs[4+ChannelFX] & $0F) 'Update Amplitude - else - snd_regs[4+ChannelFX] := $00 'Mute - - if(BYTE[SoundFX][1] == $ff) '$ff = never stop - runlen[SoundVars] := 0 - - if(runlen[SoundVars] > (BYTE[SoundFX][1]<<5)) 'Duration KeyOff - envphs[SoundVars] := 3 - -WaitCnt(TimeCnt + 52_000) ''Delay for Synth Engine Update. - -DAT - -SineTable byte $80, $8c, $98, $a5, $b0, $bc, $c6, $d0 - byte $da, $e2, $ea, $f0, $f5, $fa, $fd, $fe - byte $ff, $fe, $fd, $fa, $f5, $f0, $ea, $e2 - byte $da, $d0, $c6, $bc, $b0, $a5, $98, $8c - byte $80, $73, $67, $5a, $4f, $43, $39, $2f - byte $25, $1d, $15, $0f, $0a, $05, $02, $01 - byte $00, $01, $02, $05, $0a, $0f, $15, $1d - byte $25, $2f, $39, $43, $4f, $5a, $67, $73 - -Sawtooth byte $ff, $fb, $f7, $f3, $ef, $eb, $e7, $e3 - byte $df, $db, $d7, $d3, $cf, $cb, $c7, $c3 - byte $bf, $bb, $b7, $b3, $af, $ab, $a7, $a3 - byte $9f, $9b, $97, $93, $8f, $8b, $87, $83 - byte $80, $7c, $78, $74, $70, $6c, $68, $64 - byte $60, $5c, $58, $54, $50, $4c, $48, $44 - byte $40, $3c, $38, $34, $30, $2c, $28, $24 - byte $20, $1c, $18, $14, $10, $0c, $08, $04 - -FastSine byte $80, $98, $b0, $c6, $da, $ea, $f5, $fd - byte $ff, $fd, $f5, $ea, $da, $c6, $b0, $98 - byte $80, $67, $4f, $39, $25, $15, $0a, $02 - byte $00, $02, $0a, $15, $25, $39, $4f, $67 - -SqrTable byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - byte $00, $00, $00, $00, $00, $00, $00, $00 - byte $00, $00, $00, $00, $00, $00, $00, $00 - -FastSqr byte $ff, $ff, $ff, $ff, $00, $00, $00, $00 - -'Note LookupTable. -NoteFreqs word $85F3, $8DEA, $965B, $9F4B, $A8C4, $B2CD, $BD6F, $C8B3, $D4A2, $E147, $EEAC, $FCDE 'Top Octave Lookup - -CON -''***************************** -''* WaveTable Synth v1.2 * -''* DPCM Synth v1.1 * -''* (C)2006 Andrew Arsenault * -''***************************** -DAT - org -entry mov dira,Port_Pins 'Setup output pins - - mov ctra,Right_ctra 'Setup Right Audio Channel - mov ctrb,Left_ctra 'Setup Left Audio Channel - - mov ChlA_wave,#256 'Set channel signals. - mov ChlA_offset,#0 'Set channel's offset. - mov ChlA_counter,#0 - - mov Time,#10 - add Time,cnt 'Prepare for asm type WAITCNT loop. - -'MAIN LOOP -update waitcnt Time,Timing_delay 'Wait for CNT = D, then add S into D - - 'Transfer Sound Registers - mov addrregs,par - mov y,NumberOfChannels - - 'Fetch Channel's Registers -transferchl rdlong ChlAp_sampptr,addrregs - add addrregs,#4 - rdlong ChlAp_sampend,addrregs - add addrregs,#4 - rdlong Ch1Ap_samplpp,addrregs - add addrregs,#4 - rdlong Ch1Ap_freq,addrregs - add addrregs,#4 - rdlong ChlAp_keyon,addrregs - - 'Fetch Channel's Static Variables - add addrregs,#8 - rdlong ChlA_offset,addrregs - add addrregs,#4 - rdlong ChlA_counter,addrregs - - 'Run Synth Engine on Channel - call #wvsynth - - 'Store Channel's Static Variables (Tucked Center X move to Wave) - wrlong ChlA_counter,addrregs - sub addrregs,#4 - sub x,#256 - wrlong ChlA_offset,addrregs - sub addrregs,#4 - mov ChlA_wave,x 'Doesn't Waste anything doing this. - wrlong ChlA_wave,addrregs - add addrregs,#12 - - 'Loop Until All Channel's Are Done. - djnz y,#transferchl - - 'Run DPCM Engine - call #dpcm - - 'Mix Channels Together - mov addrregs,par - mov ChlA_wave,#0 - add addrregs,#5*4 - mov y,NumberOfChannels - -mixchls rdlong x,addrregs - add ChlA_wave,x - add addrregs,#8*4 - djnz y,#mixchls - - mov x,DPCM_wave 'Add DPCM - shl x,#2 - add ChlA_wave,x - - shl ChlA_wave,#20 'Convert 12bit singal into a 32bit one. - - 'Update output Channels then repeat again. - mov frqa,ChlA_wave - mov frqb,ChlA_wave - - jmp #update - - - - -'-------------------------Dpcm Engine-------------------------' - -dpcm mov addrregs,par - add addrregs,#192 - - rdlong DPCM_address,addrregs 'Start Address - add addrregs,#4 - rdlong DPCM_runlen,addrregs 'File Lenght - add addrregs,#4 - rdlong DPCM_offset,addrregs 'File Offset - add addrregs,#4 - rdlong DPCM_freq,addrregs 'Playback Speed - add addrregs,#4 - rdlong DPCM_wave,addrregs 'Waveform Amp - - 'Check for if keyon/length is set. - cmp DPCM_offset,DPCM_runlen wc - if_ae jmp #mute_dpcm 'End of file - - 'Freq Timer/Divider and Increase sampling offset - add DPCM_counter,DPCM_freq wc - if_nc jmp #done_dpcm - - 'Decode DPCM - add DPCM_address,DPCM_offset - rdbyte x,DPCM_address 'Fetch Datum - - mov DPCM_delta,x - shr DPCM_delta,#6 - mov y,#1 - shl y,DPCM_delta - mov DPCM_delta,y - - mov y,#1 - shl y,DPCM_phs - test x,y wc - if_c add DPCM_wave,DPCM_delta - if_nc sub DPCM_wave,DPCM_delta - - add DPCM_phs,#1 - cmp DPCM_phs,#6 wc - if_b jmp #done_dpcm - - mov DPCM_phs,#0 - add DPCM_offset,#1 - jmp #done_dpcm - -mute_dpcm mov DPCM_wave, #128 - -done_dpcm mov addrregs,par - add addrregs,#200 - wrlong DPCM_offset,addrregs 'File Offset - add addrregs,#8 - wrlong DPCM_wave,addrregs 'Wave -dpcm_ret ret - -'-----------------------Dpcm Engine End-----------------------' - - - -'-------------------------Sound Engine-------------------------' - - 'Freq Timer/Divider and Increase sampling offset -wvsynth add ChlA_counter,Ch1Ap_freq wc - if_c add ChlA_offset,#1 - - 'Reset sample position and lock at zero if Keyoff. - test ChlAp_keyon,#%0001 wc - if_nc mov ChlA_offset,#0 - - 'Reset(loop) if needed - cmp ChlA_offset,ChlAp_sampend wc - if_ae mov ChlA_offset,Ch1Ap_samplpp - - 'Check BitRate and Set Offset - mov x,ChlA_offset - test ChlAp_keyon,#%0010 wc - if_c shr x,#1 - - 'Fetch WaveTable - mov ChlA_wave,ChlAp_sampptr - add ChlA_wave,x - rdbyte ChlA_wave,ChlA_wave - - 'Check BitRate and Skip if 8bit - test ChlAp_keyon,#%0010 wc - if_nc jmp #skip_4bitsam - - 'Convert 4bit to 8bit - test ChlA_offset,#%0001 wc - if_c shr ChlA_wave,#4 - if_nc and ChlA_wave,#%00001111 - - mov x,ChlA_wave - shl ChlA_wave,#4 - add ChlA_wave,x - - 'Center Amplitude and mute if Keyoff. -skip_4bitsam test ChlAp_keyon,#%0001 wc - if_nc mov ChlA_wave,#128 - - 'Volume Multiply - mov x,#0 - test ChlAp_keyon,#%10000000 wc - if_c add x,ChlA_wave - if_nc add x,#128 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%01000000 wc - if_c add x,ChlA_wave - if_nc add x,#64 - add x,#64 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%00100000 wc - if_c add x,ChlA_wave - if_nc add x,#32 - add x,#96 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%00010000 wc - if_c add x,ChlA_wave - if_nc add x,#16 - add x,#112 - -'Return Audio as X. -wvsynth_ret ret - -'-----------------------Sound Engine End-----------------------' - -Port_Pins long %00000000_00000000_00000011_00000000 - - '- CTR PLL -------- BPIN --- APIN -Right_ctra long %0_00110_000_00000000_000000_000_001000 -Left_ctra long %0_00110_000_00000000_000000_000_001001 - -Timing_delay long 2500 'Sampling Rate = 32,000.00hz -NumberOfChannels long 6 - -Time res 1 -addrregs res 1 -x res 1 -y res 1 - -'WaveTable Synth Accumulators -ChlA_wave res 1 -ChlA_offset res 1 -ChlA_counter res 1 -ChlAp_sampptr res 1 -ChlAp_sampend res 1 -Ch1Ap_samplpp res 1 -Ch1Ap_freq res 1 -ChlAp_keyon res 1 - -'DPCM Accumulators -DPCM_wave res 1 -DPCM_address res 1 -DPCM_offset res 1 -DPCM_counter res 1 -DPCM_freq res 1 -DPCM_runlen res 1 -DPCM_phs res 1 -DPCM_delta res 1 \ No newline at end of file diff --git a/flash/administra/admflash-plx.spin b/flash/administra/admflash-plx.spin deleted file mode 100644 index 6917a14..0000000 Binary files a/flash/administra/admflash-plx.spin and /dev/null differ diff --git a/flash/administra/admflash-rtc.spin b/flash/administra/admflash-rtc.spin deleted file mode 100644 index 8cd6854..0000000 Binary files a/flash/administra/admflash-rtc.spin and /dev/null differ diff --git a/flash/administra/admflash-wav.spin b/flash/administra/admflash-wav.spin deleted file mode 100644 index a623355..0000000 Binary files a/flash/administra/admflash-wav.spin and /dev/null differ diff --git a/flash/administra/admflash.spin b/flash/administra/admflash.spin deleted file mode 100644 index e3228ee..0000000 Binary files a/flash/administra/admflash.spin and /dev/null differ diff --git a/flash/administra/pterm.spin b/flash/administra/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/flash/administra/pterm.spin and /dev/null differ diff --git a/flash/bellatrix/PASD_AsmDebugDemo.spin b/flash/bellatrix/PASD_AsmDebugDemo.spin deleted file mode 100644 index b436cfa..0000000 --- a/flash/bellatrix/PASD_AsmDebugDemo.spin +++ /dev/null @@ -1,89 +0,0 @@ -''*************** -''* PASD Test * -''*************** -'' - -CON - - 'Use the following 2 lines if running on a Parallax PropDemo board - _clkmode = xtal1 + pll16x - _xinfreq = 5_000_000 - - 'Use the following 2 lines if running on a Hydra board - '_clkmode = xtal1 + pll8x - '_xinfreq = 10_000_000 - -VAR - - long Cog, TestVar - -OBJ - dbg : "PASDebug" '<---- Add for Debugger - - -PUB main - - Cog := cognew(@entry, @TestVar) + 1 - - dbg.start(31,30,@entry) '<---- Add for Debugger - - -PUB stop - - if Cog - cogstop(Cog~ - 1) - - -DAT - - org 0 -entry - -' --------- Debugger Kernel add this at Entry (Addr 0) --------- - long $34FC1202,$6CE81201,$83C120B,$8BC0E0A,$E87C0E03,$8BC0E0A - long $EC7C0E05,$A0BC1207,$5C7C0003,$5C7C0003,$7FFC,$7FF8 -' -------------------------------------------------------------- - -' -' Test code with modify, MainRAM access, jumps, subroutine and waitcnt. -' -:init mov dira,LEDS ' Configure LEDs as outputs (1) - andn outa,LEDS ' Set LEDs to the 'Off' state (0) - mov BlinkCounter,#0 ' Clear blink counter - -:led_state_1 or outa,LED_0 ' Turn on LED 0 (Hydra) - or outa,LED_16 ' Turn on LED 16 (PropDemo) - andn outa,LED_17 ' Turn off LED 17 (PropDemo) - - call #wait ' Delay - -:led_state_2 andn outa,LED_0 ' Turn off LED 0 (Hydra) - andn outa,LED_16 ' Turn off LED 16 (PropDemo) - or outa,LED_17 ' Turn on LED 17 (PropDemo) - - call #wait - - add BlinkCounter,#1 - cmp BlinkCounter,#5 wz - if_z jmp #:init - - jmp #:led_state_1 - -wait mov WaitCounter,cnt - add WaitCounter,BlinkFreq - waitcnt WaitCounter,BlinkFreq -wait_ret ret - -' -' VARIABLES -' -BlinkCounter long 0 -LEDS long $00FF_0001 ' Bits 16-23 are PropDemo board leds. Bit 0 is Hydra LED. -LED_0 long $0000_0001 ' Hydra LED. -LED_16 long $0001_0000 ' PropDemo board LED. -LED_17 long $0002_0000 ' PropDemo board LED. -BlinkFreq long 40_000_000 -WaitCounter res 1 - - fit - \ No newline at end of file diff --git a/flash/bellatrix/PasDebug.spin b/flash/bellatrix/PasDebug.spin deleted file mode 100644 index d06278f..0000000 --- a/flash/bellatrix/PasDebug.spin +++ /dev/null @@ -1,355 +0,0 @@ -''**************************************** -''* Propeller Assembly Source Debugger * -''* (PASD) needs PASD.exe on PC * -''**************************************** -'' version 0.2 , August 2007 -'' -'' (c)2007 Andy Schenk, Insonix GmbH -'' www.insonix.ch/propeller -'' It's allowed to use this only for non commercial projects. - -CON - - BAUDRATE = 115200 - - -VAR - - long cog 'cog flag/id - - long serpins '11 contiguous longs - long bitticks - long cpntr 'pointer to code in main ram - - -PUB start(rxpin, txpin, codeptr) : okay - -'' Start PASD driver - starts a cog -'' returns false if no cog available -'' - longfill(@serpins, 0, 3) - serpins := txpin<<16 + rxpin - bitticks := clkfreq / BAUDRATE - cpntr := codeptr - okay := cog := cognew(@entry, @serpins) + 1 - - repeat until bitticks == 0 'wait until PC ready - - -PUB stop - -'' Stop the driver - frees a cog - - if cog - cogstop(cog~ - 1) - - -DAT - -'********************************* -'* Assembly language PASD driver * -'********************************* - - org -entry - mov t1,par 'get parameter address - - rdword t2,t1 'get rx_pin - mov rxmask,#1 - shl rxmask,t2 - - add t1,#2 'get tx_pin - rdword t2,t1 - mov txmask,#1 -pasdi shl txmask,t2 - - add t1,#2 'get bit ticks -pasdd rdlong bittime,t1 - -pasdp add t1,#4 'get codepointer -pasdr rdlong cogadr,t1 - sub t1,#4 - - or outa,txmask 'tx_pin = output/idle - or dira,txmask - - call #charin 'wait until PC sends start - wrlong K0,t1 'report ready to spin - wrlong K0,sharep 'prepare execute - -cmdloop call #charin 'wait for cmd from PC - cmp rxd,#5 wz 'mouse/debugger command? - if_nz jmp #cmdloop - call #charin 'Command - mov t1,rxd - and t1,#$7F - call #charin 'Val L - mov t2,rxd - call #charin 'Val H - shl rxd,#8 - or t2,rxd - - cmp t1,#"d" wz 'dump cog ram? - if_z jmp #dumpcog - cmp t1,#"m" wz 'dump hub-ram? - if_z jmp #dumphub - - cmp t1,#"i" wz 'Init? - if_z jmp #initpar - cmp t1,#"r" wz 'Run/Cont? - if_z jmp #runcont - cmp t1,#"p" wz 'Stop? = Restart - if_z jmp #resetcog - cmp t1,#"s" wz 'Step? - if_z jmp #single - cmp t1,#"b" wz 'Set Break? - if_z jmp #setbrk - cmp t1,#"w" wz 'Write clong? - if_z jmp #wrcode - cmp t1,#"l" wz 'Low word clong - if_z jmp #lowword - cmp t1,#"h" wz 'High word clong - if_z jmp #highword - cmp t1,#"e" wz 'Execute clong - if_z jmp #execlong - - jmp #cmdloop - -'------------- -dumpcog mov t3,#511 - movs i_getind,#0 - -dcloop mov op,i_getind - call #execute - mov op,i_write - call #execute - add i_getind,#1 - rdlong t1,shareg - call #sendlong - djnz t3,#dcloop - - mov op,i_nop - call #execute - jmp #cmdloop - -'------------- -dumphub mov t3,#128 -dhloop rdlong t1,t2 - call #sendlong - add t2,#4 - djnz t3,#dhloop - - mov op,i_nop - call #execute - jmp #cmdloop - -'------------- -resetcog cogstop cognr - mov t1,cogpar 'restart cog - shl t1,#14 - or t1,cogadr - shl t1,#2 - or t1,cognr - coginit t1 - jmp #cmdloop - -'------------- -initpar mov op,i_cogid 'get cogid - call #execute - mov op,i_write - call #execute - rdlong cognr,shareg - movs i_getind,#$1F0 'get cogpar-reg - mov op,i_getind - call #execute - mov op,i_write - call #execute - rdlong cogpar,shareg - - mov t1,cogadr - call #sendlong - - jmp #cmdloop - -'------------- -runcont movs i_jump,t2 'start addr - wrlong K0,shareg 'clr brk addr - mov op,i_jump - call #execute 'jump -'------------- -waitbrk mov dtime,rate -waitlp test rxmask,ina wz 'if not rx start - if_z jmp #cmdloop - djnz dtime,#waitlp 'wait rate - - mov t1,watchId - call #sendlong 'send ina repeatly - mov t1,ina - call #sendlong - - rdlong t1,shareg - tjz t1,#waitbrk 'wait for break - - shl t1,#16 - or t1,brkId 'add Break ID - call #sendlong - jmp #cmdloop - -'------------- -single movs i_getind,t2 'get Instr from addr -getsngl mov op,i_getind - call #execute - mov op,i_write -'dosngle call #execute - call #execute - rdlong op,shareg 'and execute -dosngle wrlong K0,shareg 'clr brk addr - call #execute - rdlong t1,shareg wz 'get addr+c/z - if_nz jmp #waitbrk 'if no break - mov op,i_break - call #execute 'force break ?? - jmp #waitbrk - -'------------- -execlong mov op,clong 'Exec 1 op in clong - jmp #dosngle - -'------------- -lowword mov clong,t2 - jmp #cmdloop -'------------- -highword shl t2,#16 - or clong,t2 - jmp #cmdloop - -'------------- -setbrk wrlong i_break,shareg 'break instr - jmp #wrtoadr - -'------------- -wrcode wrlong clong,shareg 'write code -wrtoadr movd i_setind,t2 'to addr - mov op,i_setind - call #execute - jmp #cmdloop - -'------------- -i_getind mov pasdd,0-0 'opcodes for asm cog -i_write wrlong pasdd,pasdr -i_nop nop -i_cogid cogid pasdd -i_jump jmp #0-0 -i_setind rdlong 0-0,pasdr -i_break jmpret pasdd,#0 -i_clrd mov pasdd,#0 -'------------- -execute wrlong op,sharep 'set instruction - mov dtime,#72 - add dtime,cnt 'wait for execution - waitcnt dtime,#48 - wrlong K0,sharep 'sync - waitcnt dtime,#32 -execute_ret ret - -'------------- -sendlong mov txd,t1 'send long t1 as 4 bytes - call #charout - mov txd,t1 - shr txd,#8 - call #charout - mov txd,t1 - shr txd,#16 - call #charout - mov txd,t1 - shr txd,#24 - call #charout -sendlong_ret ret - -'------------- -charout and txd,#$FF 'send 1 character - - mov txcnt,#10 - or txd,#$100 'add stoppbit - shl txd,#1 'add startbit - mov dtime,cnt - add dtime,bittime - -sendbit shr txd,#1 wc 'test LSB - mov ti,outa - if_nc andn ti,txmask 'bit=0 or - if_c or ti,txmask 'bit=1 - mov outa,ti - waitcnt dtime,bittime 'wait 1 bit - djnz txcnt,#sendbit '10 times - - waitcnt dtime,bittime '2 stopbits -charout_ret ret - -'------------ -charin test rxmask,ina wz 'wait until stop - if_z jmp #charin -charstart test rxmask,ina wz 'wait until startbit - if_nz jmp #charstart - mov dtime,bittime - shr dtime,#1 - add dtime,bittime '1.5 bittime - add dtime,cnt - mov rxcnt,#8 - mov rxd,#0 -charbits waitcnt dtime,bittime - shr rxd,#1 - test rxmask,ina wz 'shift in bits - if_nz or rxd,#$80 - djnz rxcnt,#charbits - - waitcnt dtime,bittime 'wait until stopbit -charin_ret ret - -'------------ -' -' Initialized data -' -sharep long $7FFC -shareg long $7FF8 -K512 long 512 -K0 long 0 -d_inc long $200 -brkId long $7F06 -rate long 400_000 -watchId long $0006 -' -' Uninitialized data -' -t1 res 1 -t2 res 1 -t3 res 1 -bittime res 1 -dtime res 1 - -rxmask res 1 -rxd res 1 -rxbits res 1 -rxcnt res 1 - -txmask res 1 -txd res 1 -txcnt res 1 -ti res 1 - -clong res 1 -op res 1 -cognr res 1 -cogadr res 1 -cogpar res 1 -vp res 1 -vparr res 1 - - -' Add this little debugger kernel at the begin of your Assembly code: -{ -' --------- Debugger Kernel add this at Entry (Addr 0) --------- - long $34FC1202,$6CE81201,$83C120B,$8BC0E0A,$E87C0E03,$8BC0E0A - long $EC7C0E05,$A0BC1207,$5C7C0003,$5C7C0003,$7FFC,$7FF8 -' -------------------------------------------------------------- -} diff --git a/flash/bellatrix/belflash.spin b/flash/bellatrix/belflash.spin deleted file mode 100644 index 3a99572..0000000 Binary files a/flash/bellatrix/belflash.spin and /dev/null differ diff --git a/flash/bellatrix/logo-hive-8x2.dat b/flash/bellatrix/logo-hive-8x2.dat deleted file mode 100644 index 109ef59..0000000 Binary files a/flash/bellatrix/logo-hive-8x2.dat and /dev/null differ diff --git a/flash/bellatrix/logo-hive-8x2/dat.rtf b/flash/bellatrix/logo-hive-8x2/dat.rtf deleted file mode 100644 index e758f9d..0000000 --- a/flash/bellatrix/logo-hive-8x2/dat.rtf +++ /dev/null @@ -1,275 +0,0 @@ -{\rtf1\ansi\deff0{\fonttbl{\f0\fswiss\fcharset0 Arial;}} -{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\lang1031\f0\fs20 char y=0, x=0 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=0, x=1 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0003_3333_3300_0000\par - LONG %%0033_3000_3330_0000\par - LONG %%0330_0000_0033_0000\par - LONG %%3300_0000_0003_3000\par - LONG %%3300_0000_0000_3000\par - LONG %%3000_0000_0000_3300\par - LONG %%3000_0000_0000_3300\par - LONG %%3300_0000_0000_3000\par - LONG %%3300_0000_0003_3000\par - LONG %%0330_0000_0033_0000\par - LONG %%0033_3000_0333_0000\par - LONG %%0033_3333_3330_0000\par - LONG %%0333_0000_0333_0000\par -char y=0, x=2 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=0, x=3 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3003_3330_0333_3300\par - LONG %%3033_3333_0333_3300\par - LONG %%3033_3333_0333_3300\par -char y=0, x=4 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%3000_3333_0000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3000_3333_0000_3333\par - LONG %%3000_0000_0000_3333\par - LONG %%3000_0000_0000_3333\par -char y=0, x=5 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par -char y=0, x=6 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%3333_3000_0000_0033\par - LONG %%3333_3333_0000_0033\par - LONG %%3333_3333_3000_0033\par - LONG %%3333_3333_3300_0033\par - LONG %%3333_3333_3330_0033\par - LONG %%0000_3333_3330_0033\par - LONG %%0000_0033_3333_0033\par - LONG %%3333_0003_3333_0033\par -char y=0, x=7 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=0 \par - LONG %%0000_0000_0000_0000\par - LONG %%3330_0000_0000_0000\par - LONG %%0033_3000_0000_0000\par - LONG %%0000_3300_0000_0000\par - LONG %%0000_3300_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_3300_0000_0000\par - LONG %%0003_3000_0000_0000\par - LONG %%0333_0000_0000_0000\par - LONG %%3330_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=1 \par - LONG %%3330_0000_0033_3000\par - LONG %%3300_0000_0003_3333\par - LONG %%3300_0000_0003_3300\par - LONG %%0330_0000_0033_0000\par - LONG %%0033_0000_0030_0000\par - LONG %%0033_0000_0330_0000\par - LONG %%0003_3333_3330_0000\par - LONG %%0003_3333_3330_0000\par - LONG %%0033_0000_0330_0000\par - LONG %%0033_0000_0030_0000\par - LONG %%0330_0000_0033_0000\par - LONG %%3300_0000_0003_3330\par - LONG %%0000_0000_0000_0333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=2 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0033_3333\par - LONG %%0000_0000_3330_0000\par - LONG %%0000_0000_3300_0000\par - LONG %%0000_0003_3000_0000\par - LONG %%0000_0003_0000_0000\par - LONG %%0000_0033_0000_0000\par - LONG %%0000_0003_0000_0000\par - LONG %%0000_0003_0000_0000\par - LONG %%0000_0003_3000_0000\par - LONG %%0000_0000_3300_0000\par - LONG %%0000_0000_0333_3033\par - LONG %%0000_0000_0003_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=3 \par - LONG %%3033_3333_0333_3300\par - LONG %%3033_3333_0333_3300\par - LONG %%3003_3330_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=4 \par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=5 \par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0003_3333\par - LONG %%3330_0000_0003_3333\par - LONG %%3330_0000_0033_3333\par - LONG %%3333_3333_3333_3333\par - LONG %%3333_3333_3333_3330\par - LONG %%3333_3333_3333_3300\par - LONG %%3333_3333_3333_3000\par - LONG %%3333_3333_3330_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=6 \par - LONG %%3333_3003_3333_0033\par - LONG %%3333_3003_3333_0033\par - LONG %%3333_3003_3333_0033\par - LONG %%3333_3003_3333_0033\par - LONG %%3333_0033_3333_0033\par - LONG %%0000_3333_3330_0033\par - LONG %%3333_3333_3330_0033\par - LONG %%3333_3333_3300_0033\par - LONG %%3333_3333_3000_0033\par - LONG %%3333_3333_0000_0033\par - LONG %%3333_3000_0000_0033\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=7 \par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -} - \ No newline at end of file diff --git a/flash/bellatrix/logo-hive-8x2/logo-hive-8x2.dat b/flash/bellatrix/logo-hive-8x2/logo-hive-8x2.dat deleted file mode 100644 index 109ef59..0000000 Binary files a/flash/bellatrix/logo-hive-8x2/logo-hive-8x2.dat and /dev/null differ diff --git a/flash/bellatrix/vga-keyb.spin b/flash/bellatrix/vga-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/flash/bellatrix/vga-keyb.spin and /dev/null differ diff --git a/flash/bellatrix/vga-vid.spin b/flash/bellatrix/vga-vid.spin deleted file mode 100644 index bd9321d..0000000 Binary files a/flash/bellatrix/vga-vid.spin and /dev/null differ diff --git a/flash/regnatix/regflash.spin b/flash/regnatix/regflash.spin deleted file mode 100644 index 6ad1db6..0000000 Binary files a/flash/regnatix/regflash.spin and /dev/null differ diff --git a/forth/adm.lib b/forth/adm.lib deleted file mode 100644 index 11b7154..0000000 --- a/forth/adm.lib +++ /dev/null @@ -1,90 +0,0 @@ - -hex - -ifnot: lib:adm -: lib:adm ; - -\ kommandoformen - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ 0 [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!l@ \ ( fkt -- l ) -: adm:fkt!l@ b[ [a!] [a.l@] ]b ; - -ifnot: adm:fkt!s! \ ( s fkt -- ) -: adm:fkt!s! b[ [a!] [a.s!] ]b ; - -\ administra-chipmanagment-funktionen - -\ adm:setsound ( sfkt -- sstat ) - soundsystem verwalten -\ sfkt: -\ 0: hss-engine abschalten -\ 1: hss-engine anschalten -\ 2: dac-engine abschalten -\ 3: dac-engine anschalten -\ sstat - status/cognr startvorgang -ifnot: adm:setsound -: adm:setsound - 5C adm:fkt!b!b@ ; - -\ adm:getspec ( -- spec ) - chipspezifikation abfragen -\ -\ +---------- com -\ | +-------- i2c -\ | |+------- rtc -\ | ||+------ lan -\ | |||+----- sid -\ | ||||+---- wav -\ | |||||+--- hss -\ | ||||||+-- bootfähig -\ | |||||||+- dateisystem -\ %00000000_00000000_00000000_01001111 -ifnot: adm:getspec -: adm:getspec - 5D adm:fkt!l@ ; - -\ adm:setsyssound ( syssnd -- ) - systemklänge -\ syssnd = 0 - systemklänge aus -\ syssnd = 1 - systemklänge an -ifnot: adm:setsyssound -: adm:setsyssound - 5E adm:fkt!b! ; - -\ adm:getsoundsys ( -- sndsys ) - abfrage aktives soundsystem -\ 0 - sound aus -\ 1 - hss -\ 2 - wav -ifnot: adm:getsoundsys -: adm:getsoundsys - 5F adm:fkt!b@ ; - -\ adm:load ( cstr -- ) - neuen administra-code laden -ifnot: adm:aload -: adm:aload - 60 adm:fkt!s! ; - -\ adm:getcogs ( -- cogs ) - anzahl der belegten cogs -ifnot: adm:getcogs -: adm:getcogs - 61 adm:fkt!b@ ; - -\ adm:getver ( -- ver ) - abfrage der codeversion -ifnot: adm:getver -: adm:getver - 62 adm:fkt!l@ ; - -\ adm:reset ( -- ) - reset administra -ifnot: adm:reset -: adm:reset - 63 adm:fkt! ; - diff --git a/forth/ari.lib b/forth/ari.lib deleted file mode 100644 index bca39ba..0000000 --- a/forth/ari.lib +++ /dev/null @@ -1,55 +0,0 @@ - -hex - -ifnot: lib:ari -: lib:ari ; - -\ abs ( n1 -- abs_n1 ) absolute value of n1 -ifnot: abs -: abs _execasm1>1 151 _cnip ; - -\ u*/mod ( u1 u2 u3 -- u4 u5 ) u5 = (u1*u2)/u3, u4 is the -\ remainder. Uses a 64bit intermediate result. -ifnot: u*/mod -: u*/mod rot2 um* rot um/mod ; - -\ u*/ ( u1 u2 u3 -- u4 ) u4 = (u1*u2)/u3 Uses a 64bit -\ intermediate result. -ifnot: u*/ -: u*/ rot2 um* rot um/mod nip ; - -\ sign ( n1 n2 -- n3 ) n3 is the xor of the sign bits of -\ n1 and n2 -ifnot: sign -: sign xor 80000000 and ; - -\ */mod ( n1 n2 n3 -- n4 n5 ) n5 = (n1*n2)/n3, n4 is the -\ remainder. Uses a 64bit intermediate result. -ifnot: */mod -: */mod 2dup sign >r abs rot dup r> sign >r abs rot abs - um* rot um/mod r> if negate swap negate swap then ; - -\ */ ( n1 n2 n3 -- n4 ) n4 = (n1*n2)/n3. Uses a 64bit -\ intermediate result. -ifnot: */ -: */ */mod nip ; - -\ /mod ( n1 n2 -- n3 n4 ) \ signed divide & mod n4 = n1/n2, -\ n3 is the remainder -ifnot: /mod -: /mod 2dup sign >r abs swap abs swap u/mod r> if negate swap - negate swap then ; - -\ * ( n1 n2 -- n1*n2) n1 multiplied by n2 -ifnot: * -: * um* drop ; - -\ / ( n1 n2 -- n1/n2) n1 divided by n2 -ifnot: / -: / /mod nip ; - -\ rnd ( -- n1 ) n1 is a random number from 00 - FF -ifnot: rnd -: rnd cnt COG@ 8 rshift cnt COG@ xor FF and ; - - diff --git a/forth/basics.mod b/forth/basics.mod deleted file mode 100644 index aa7be0a..0000000 --- a/forth/basics.mod +++ /dev/null @@ -1,485 +0,0 @@ -fl - -hex - -: mod:basics ; - -\ Copyright (c) 2010 Sal Sanci -\ Anpassung für Hive-System 2011 dr235 - -\ ------------------------------------------------------ BASICS - -\ this words needs to align with the assembler code -: _stptr 5 _cv ; -: _sttop 2e _cv ; - -\ _words ( cstr -- ) -: _words lastnfa - begin - 2dup swap dup if npfx else 2drop -1 then - if dup .strname space then - nfa>next dup 0= - until 2drop cr ; - -\ words name ( -- ) prints the words in the forth dictionary -: words parsenw _words ; - -\ .long ( n -- ) emit 8 hex digits -: .long dup 10 rshift .word .word ; - -\ st? ( -- ) prints out the stack -: st? ." ST: " _stptr COG@ 2+ dup _sttop < - if _sttop swap - 0 - do _sttop 2- i - COG@ .long space loop - else drop - then cr ; - -\ variable ( -- ) skip blanks parse the next word and create -\ a variable, allocate a long, 4 bytes -: variable - lockdict create $C_a_dovarl w, 0 l, forthentry freedict ; - -\ constant ( x -- ) skip blanks parse the next word and create -\ a constant, allocate a long, 4 bytes -: constant - lockdict create $C_a_doconl w, l, forthentry freedict ; - -\ waitpeq ( n1 n2 -- ) \ wait until state n1 is equal to -\ ina anded with n2 -: waitpeq _execasm2>0 1E0 _cnip ; - -\ locknew ( -- n2 ) allocate a lock, result is in n2, -1 -\ if unsuccessful -: locknew -1 4 hubop -1 = if drop -1 then ; - -\ (forget) ( cstr -- ) wind the dictionary back to the word -\ which follows - caution -: (forget) dup -if - find if - pfa>nfa nfa>lfa dup here W! W@ wlastnfa W! - else .cstr 3f emit cr then -else drop then ; - -\ forget ( -- ) wind the dictionary back to the word which -\ follows - caution -: forget parsenw (forget) ; - -\ free ( -- ) display free main bytes and current cog longs -: free dictend W@ here W@ - . ." bytes free - " par - coghere W@ - . ." cog longs free" cr ; - -\ ifnot: name ( -- ) - bedingte compilierung; wenn name schon -\ im wörterbuch vorhanden, wird bis zum nächsten semikolon -\ der eingabestrom ignoriert -: ifnot: parsenw nip find if begin key 3B = until - key drop then ; -\ bei konstrukte, die keine doppelpunkdefinition sind, muss der -\ block mit diesem Wort abgeschlossen werden -: :; ; - -\ --------------------------------------------------------- BUS - -\ bin ( -- ) - umschaltung auf duales zahlensystem -\ : bin 2 base W! ; -\ +---------------------------- /hs -\ |+--------------------------- /wr -\ ||+-------------------------- busclk -\ |||+------------------------- hbeat -\ ||||+------------------------ al -\ |||||+----------------------- /bel -\ ||||||+---------------------- /adm -\ |||||||+--------------------- /ram2 -\ ||||||||+-------------------- /ram1 -\ ||||||||| +--------- a0..10 -\ ||||||||| | -\ ||||||||| | +- d0..7 -\ |||||||||+---------++------+ -\ 00000000000000000000000000000000 -\ bin 00000111111111111111111100000000 constant dinp hex -\ bin 00000111111111111111111111111111 constant dout hex -\ bin 00000010000000000000000000000000 constant boff hex -\ bin 00000100011110000000000000000000 constant _s1 hex -\ bin 00000000001110000000000000000000 constant _b1 hex -\ bin 00000010001110000000000000000000 constant _b2 hex -\ bin 00000110001110000000000000000000 constant _b3 hex -\ bin 00000000010110000000000000000000 constant _a1 hex -\ bin 00000010010110000000000000000000 constant _a2 hex -\ bin 00000110010110000000000000000000 constant _a3 hex -\ bin 00001000000000000000000000000000 constant ?hs hex - -8000000 constant ?hs - -: [inp] \ ( -- ) bus eingabe - 7FFFF00 dira COG! ; \ dinp - -: [out] \ ( -- ) bus ausgabe - 7FFFFFF dira COG! ; \ dout - -: [off] \ ( -- ) bus aus - 2000000 dira COG! 0 outa COG! ; \ boff - -: [end] \ ( -- ) buskommunikation beendet - 4780000 outa COG! [inp] ; \ _s1 - -: [hs=1] \ ( -- ) wartet auf hs = 1 - ?hs dup waitpeq ; - -: [hs=0] \ ( -- ) warten auf hs = 0 - 0 ?hs waitpeq ; - -: [s!] \ ( c ctrl -- ) sende 8 bit an einen slave - [out] [hs=1] swap ff and or outa COG! [hs=0] [end] ; - -: [s@] \ ( ctrl -- c ) empfängt 8 bit von einem slave - [inp] [hs=1] outa COG! [hs=0] ina COG@ ff and [end] ; - -: [b!] \ ( c -- ) sende 8 bit an bellatrix - 2380000 [s!] ; \ _b2 - -: [a!] \ ( c -- ) sende 8 bit an administra - 2580000 [s!] ; \ _a2 - -: [b@] \ ( -- c ) empfängt 8 bit von bellatrix - 6380000 [s@] ; \ _b3 - -: [a@] \ ( -- c ) empfängt 8 bit von administra - 6580000 [s@] ; \ _a3 - -: <8 \ ( -- ) - 8 lshift ; - -\ [b.l!] ( 32b -- ) - long an bellatrix senden -: [b.l!] - dup 18 rshift [b!] - dup 10 rshift [b!] - dup 8 rshift [b!] - [b!] ; - -\ [b.l@] ( -- 32b ) - long von bellatrix einlesen -: [b.l@] - [b@] <8 - [b@] or <8 - [b@] or <8 - [b@] or ; - -\ [a.s@] ( -- ) - einen cstring von administra empfangen -\ und im pad speichern -: [a.s@] - [a@] pad 2dup C! 1+ swap - 0 do dup [a@] swap C! 1+ loop drop ; - -\ [a.s!] ( cstr -- ) - einen cstring an administra senden -: [a.s!] - dup C@ dup [a!] \ ( -- cstr len ) len senden - 0 do \ ( cstr len -- cstr ) - 1+ dup C@ [a!] \ ( cstr -- cstr+1 ) zeichen senden - loop drop ; \ ( cstr -- ) - -\ [a.w@] ( -- 16b ) - 16bit-wert von administra einlesen -: [a.w@] - [a@] <8 [a@] or ; - -\ [a.l!] ( 32b -- ) - long an administra senden -: [a.l!] - dup 18 rshift [a!] - dup 10 rshift [a!] - dup 8 rshift [a!] - [a!] ; - -\ [a.l@] ( -- 32b ) - long von administra einlesen -: [a.l@] - [a@] <8 - [a@] or <8 - [a@] or <8 - [a@] or ; - -wvariable b[lock] \ nummer der semaphore für den - \ zugriff auf die bus-hardware - -\ b[ ( -- ) bus belegen; wartet bis semaphore freigegeben ist -: b[ begin b[lock] W@ lockset -1 <> until [inp] ; - -\ ]b ( -- ) bus freigeben -\ ! busclk bleibt auf ausgabe, da dieses signal sonst -\ kein definierten pegel besitzt ! -: ]b [off] b[lock] W@ lockclr drop ; - -\ administra-kommandoformate - -: b[a! b[ [a!] ; -: b[a!a! b[ [a!] [a!] ; -: adm:fkt! b[a! ]b ; \ ( fkt -- ) -: adm:fkt!b@ b[a! [a@] ]b ; \ ( fkt -- b ) -: adm:fkt!b! b[a!a! ]b ; \ ( b fkt -- ) -: adm:fkt!b!b@ b[a!a! [a@] ]b ; \ ( b fkt -- b ) -: adm:fkt!s@ b[a! [a.s@] ]b ; \ ( fkt -- ) -: adm:fkt!s!b@ b[a! [a.s!] [a@] ]b ; \ ( s fkt -- b ) -: adm:fkt!b!l@ b[a!a! [a.l@] ]b ; \ ( b fkt -- l ) - -\ ----------------------------------------------------- SD0.LIB - -\ marker-funktionen - -\ adm:dmact ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ drop ; - -\ adm:dmset ( dmnr -- ) - marker setzen -: adm:dmset 1A adm:fkt!b! ; - -\ dateisystem-funktionen - -\ adm:volname ( -- ) - name des volumes im pad ablegen -: adm:volname 0C adm:fkt!s@ ; - -\ adm:mount ( -- err ) - medium mounten -: adm:mount 01 adm:fkt!b@ ; - -\ adm:unmount ( -- err ) - medium unmounten -: adm:unmount 18 adm:fkt!b@ ; - -\ adm:checkmounted ( -- t/f ) -: adm:checkmounted 0D adm:fkt!b@ ; - -\ adm:diropen ( -- ) - verzeichnisabfrage initialisieren -: adm:diropen 02 adm:fkt! ; - -\ adm:nextfile ( -- st ) -\ st = 0 - keine gültige datei -\ st = 1 - dateiname im pad gültig -\ bei gültigem eintrag befindet sich der dateiname im pad -: adm:nextfile b[ 3 [a!] [a@] dup if [a.s@] then ]b ; - -\ adm:fattrib ( nr -- attrib ) - dateiattribut abfragen -: adm:fattrib 0B adm:fkt!b!l@ ; - -\ adm:chdir ( cstr -- err ) - verzeichnis öffnen -: adm:chdir 16 adm:fkt!s!b@ ; - -\ adm:getc ( -- c ) - ein zeichen aus der geöffneten datei lesen -: adm:getc 06 adm:fkt!b@ ; - -\ adm:eof ( -- eof ) - abfrage ob end of file erreicht ist -: adm:eof 1E adm:fkt!b@ ; - -\ adm:open ( cstr modus -- err ) - datei öffnen -\ modus "R" $52 - Read -\ modus "W" $57 - Write -\ modus "A" $41 - Append -: adm:open b[ 4 [a!] [a!] [a.s!] [a@] ]b ; - -\ adm:close ( -- ) - datei schließen -: adm:close 05 adm:fkt!b@ ; - -\ ----------------------------------------------------- SCR.LIB - -\ [dscr] ( scrnr -- ) display-screen setzen -: [dscr] 0 [b!] 59 [b!] [b!] ; - -\ [wscr] ( scrnr -- ) schreib-screen setzen -: [wscr] 0 [b!] 58 [b!] [b!] ; - -\ [key?] ( -- c ) - ungekapselte tastaturstatusabfrage -: [key?] 0 [b!] 1 [b!] [b@] ; - -\ [key] ( -- c ) - ungekapselte tastaturabfrage -: [key] 0 [b!] 2 [b!] [b@] ; - -\ [emit] ( c -- ) - ungekapselte zeichenausgabe -: [emit] emit? if emit then ; - -\ ----------------------------------------------------- TOOLS - -\ cls ( -- ) - screen löschen -: cls 01 emit ; - -\ .tab ( -- ) - tabulator -: .tab 09 emit ; - -\ .err ( err -- ) - fehlermeldung ausgeben -\ 0 no error -\ 1 fsys unmounted -\ 2 fsys corrupted -\ 3 fsys unsupported -\ 4 not found -\ 5 file not found -\ 6 dir not found -\ 7 file read only -\ 8 end of file -\ 9 end of directory -\ 10 end of root -\ 11 dir is full -\ 12 dir is not empty -\ 13 checksum error -\ 14 reboot error -\ 15 bpb corrupt -\ 16 fsi corrupt -\ 17 dir already exist -\ 18 file already exist -\ 19 out of disk free space -\ 20 disk io error -\ 21 command not found -\ 22 timeout -\ 23 parameter error -: .err dup if ERR then drop ; - -\ .pad ( -- ) - ausgabe eines strings im pad -: .pad pad .cstr ; - -\ .vname ( -- ) - ausgabe des namens der eingelegten sd-card -: .vname adm:volname .pad ; - -\ mount ( -- ) - sd-card mounten -: mount adm:mount .err ." Medium : " .vname cr ; - -\ unmount ( -- ) - sd-card unmounten -: unmount adm:unmount .err ; - -\ mount? ( -- ) - test ob medium mounted ist -\ wird als exception gewertet -: mount? adm:checkmounted 0= if 1 .err then ; - -\ padbl ( -- ) fills this cogs pad with blanks -: padbl pad padsize bl fill ; - -\ .entry ( -- st ) - einen verzeichniseintrag ausgeben -: .entry - adm:nextfile 13 adm:fattrib if 0F emit else space then - dup if .pad .tab then ; - -\ .len ( st -- st ) - dateilänge ausgeben -: .len dup if 0 adm:fattrib . then ; - -\ lscnt ( cnt1 st -- cnt2 st ) - spaltenformatierung für ls -\ cnt - spaltenzähler, st - flag verzeichnisende -: lscnt - swap 1+ dup 4 = if cr drop 0 else .tab then swap ; - -\ lsl ( -- ) - verzeichnis anzeigen, long-format -: lsl mount? - adm:diropen begin .entry .len cr 0= until padbl ; - -\ ls ( -- ) - verzeichnis in spalten anzeigen -: ls mount? - adm:diropen 0 begin .entry lscnt 0= until drop padbl cr ; - -\ cd name ( -- ) - verzeichnis wechseln -: cd mount? parsenw adm:chdir .err ; - -\ open name ( -- ) - datei lesend öffnen und auf fehler prüfen -: open - mount? parsenw dup - if 52 adm:open else drop 23 then .err ; - -\ close ( -- ) - geöffnete datei schließen -: close adm:close .err ; - -\ dload name - datei compilieren; log im gleichen screen -\ load name - datei compilieren; log screen 3 -\ sys name - datei aus sys compilieren; log screen 3 -\ die datei wird in der nächsten freien cog compiliert -\ fl ist für load nicht nötig und bringt in dem kontext -\ die cog-zuordnung durcheinander - -: (load) - begin adm:getc emit adm:eof until ; - -: (dload) - open cogid nfcog iolink - (load) - cogid iounlink close ; - -: (sload) - open cogid 3 dup b[ [wscr] ]b iolink - (load) - cogid dup b[ [wscr] ]b iounlink close ; - -: load - ." Loading... " (sload) ; - -: dload - (dload) ; - -: sys - 2 adm:dmset 1 adm:dmact ." Loading... " (sload) 2 adm:dmact ; - -\ ------------------------------------------------- SPIN-LOADER - -\ (spin) ( cstr -- ) - c" reg.sys" (spin) -: (spin) - dup C@ 1+ - 0 do - dup i + C@ - ldvar 1+ i + C! - loop drop - 1 ldvar C! -; - -\ spin name ( -- ) - spinobjekt "name" starten -: spin - parsenw (spin) ; - -\ regime ( -- ) - startet dir trios-cli "regime" -: regime - 0 adm:dmact - c" reg.sys" (spin) ; - -\ ----------------------------------------------------- DRV:INT - - -wvariable icog \ nummer der drv:int-cog -wvariable lcog \ nummer interaktiven cog - -\ xint ( n -- ) io von cog n auf drv:int umschalten -: xint icog W@ ioconn ; - -\ [cogscr] ( nr -- ) - umschaltung screen + cog -: [cogscr] - dup 2dup lcog W! xint [dscr] [wscr] ; - -\ =n ( n1 n2 -- n1 n1=n2 ) -: =n 2dup = swap drop ; - -\ [esc] ( -- ) - manager für esc-funktionen im drv:int -: [esc] - begin [key?] until [key] - 71 =n if 1b [emit] then \ esc - q : esc-char/quit - 31 =n if 1 [cogscr] then \ esc - 1 : cog-screen 0 - 32 =n if 2 [cogscr] then \ esc - 2 : cog-screen 1 - 33 =n if 3 [cogscr] then \ esc - 3 : cog-screen 2 - 62 =n if lcog W@ cogreset then \ esc - b : break (cog) - 72 =n if reboot then \ esc - r : reset (chip) - drop ; \ esc - esc : pause - -\ drv:int ( -- ) treiber für bellatrix-terminal -\ diese cog fragt in einer endlosschleife ab, ob zeichen -\ versendet oder empfangen werden sollen. um die zeichenausgabe -\ zu beschleunigen, findet ausgabe und eingabe in einem -\ verhältnis von 512:1 statt. per esc-code können spezielle -\ funktionen im driver ausgelöst werden. -: drv:int - \ name und typ der cog einstellen - cogid dup cogstate 10 swap C! c" drv:int" over - cognumpad ccopy - 20 delms 0D emit \ verzögertes cr für prompt - begin - \ input --> vga/video - 200 0 do key? \ eingabezeichen vorhanden? - if key b[ [b!] ]b then loop \ cog ---> bel.vga - \ output <-- keyboard - b[ [key?] \ tastenstatus bellatrix? - if [key] dup 1b = if drop [esc] else [emit] thens ]b - 0 until ; - -\ ----------------------------------------------------- SYSINIT - -: start \ ( -- ) initialisierung hive - locknew b[lock] W! \ b-semaphore - 0 dup cogstate 10 swap C! c" drv:ldr" over - cognumpad ccopy - 5 dup icog W! c" drv:int" swap cogx 1 b[ [cogscr] ]b ; -: _ob onboot ; -: onboot _ob start ; - - - diff --git a/forth/bel.lib b/forth/bel.lib deleted file mode 100644 index 0034988..0000000 --- a/forth/bel.lib +++ /dev/null @@ -1,77 +0,0 @@ - -hex - -ifnot: lib:bel -: lib:bel ; - -\ kommandoformate - -ifnot: bel:fkt! \ ( fkt -- ) -: bel:fkt! b[ 0 [b!] [b!] ]b ; - -ifnot: bel:fkt!b! \ ( b fkt -- ) -: bel:fkt!b! b[ 0 [b!] [b!] [b!] ]b ; - -ifnot: bel:fkt!b!l@ \ ( b fkt -- l ) -: bel:fkt!b!l@ b[ 0 [b!] [b!] [b!] [b.l@] ]b ; - -ifnot: bel:fkt!b!l! \ ( l b fkt -- ) -: bel:fkt!b!l! b[ 0 [b!] [b!] [b!] [b.l!] ]b ; - -ifnot: bel:fkt!l@ \ ( fkt -- l ) -: bel:fkt!l@ b[ 0 [b!] [b!] [b.l@] ]b ; - -ifnot: bel:fkt!b@ \ ( fkt -- b ) -: bel:fkt!b@ b[ 0 [b!] [b!] [b@] ]b ; - -\ chipmanagment-funktionen - -ifnot: bel:wscr \ ( scrnr -- ) - schreibscreen setzen -: bel:wscr 58 bel:fkt!b! ; - -ifnot: bel:dscr \ ( scrnr -- ) - displayscreen setzen -: bel:dscr 59 bel:fkt!b! ; - -ifnot: bel:getcol \ ( colnr -- col ) - farbe abfragen -: bel:getcol 5A bel:fkt!b!l@ ; - -ifnot: bel:setcol \ ( col colnr -- ) - farbe setzen -: bel:setcol 5B bel:fkt!b!l! ; - -ifnot: bel:getresx \ ( -- resx ) - abfrage x-auflösung -: bel:getresx 5C bel:fkt!l@ ; - -ifnot: bel:getresy \ ( -- resy ) - abfrage y-auflösung -: bel:getresy 5D bel:fkt!l@ ; - -ifnot: bel:getcols \ ( -- cols ) - abfrage textspalten -: bel:getcols 5E bel:fkt!b@ ; - -ifnot: bel:getrows \ ( -- rows ) - abfrage textzeilen -: bel:getrows 5F bel:fkt!b@ ; - -ifnot: bel:getcogs \ ( -- cogs ) - abfrage belegte cogs -: bel:getcogs 60 bel:fkt!b@ ; - -ifnot: bel:getspec \ ( -- spec ) - abfrage codespezifikation -: bel:getspec 61 bel:fkt!l@ ; - -ifnot: bel:getver \ ( -- ver ) - abfrage codeversion -: bel:getver 62 bel:fkt!l@ ; - -ifnot: bel:load \ ( cstr -- ) - bellatrix-code laden -: bel:load - 52 adm:open .err \ datei öffnen - b[ - 0 [b!] 63 [b!] \ bella-loader starten - 10 0 do 06 [a!] [a@] [b!] loop \ header einlesen - 0A [a!] 0 [a.l!] \ 0 adm:seek - [b@] <8 [b@] or \ dateilänge empfangen - 0 do 06 [a!] [a@] [b!] loop \ datei senden - ]b - adm:close .err \ datei schließen -; - - - - diff --git a/forth/cog.lib b/forth/cog.lib deleted file mode 100644 index 14c242e..0000000 --- a/forth/cog.lib +++ /dev/null @@ -1,74 +0,0 @@ - -hex - -ifnot: lib:cog -: lib:cog ; - -\ cog special register - -ifnot: ctra 1F8 wconstant ctra :; -ifnot: ctrb 1F9 wconstant ctrb :; -ifnot: frqa 1FA wconstant frqa :; -ifnot: frqb 1FB wconstant frqb :; -ifnot: phsa 1FC wconstant phsa :; -ifnot: phsb 1FD wconstant phsb :; -ifnot: vcfg 1FE wconstant vcfg :; -ifnot: vscl 1FF wconstant vscl :; - -\ this words needs to align with the assembler code - -ifnot: _faddrmask : _faddrmask 1 _cv ; -ifnot: _flongmask : _flongmask 2 _cv ; -ifnot: _stptr : _stptr 5 _cv ; -ifnot: _sttos : _sttos 7 _cv ; -ifnot: _treg1 : _treg1 8 _cv ; -ifnot: _treg2 : _treg2 9 _cv ; -ifnot: _treg3 : _treg3 a _cv ; -ifnot: _treg4 : _treg4 b _cv ; -ifnot: _treg5 : _treg5 c _cv ; -ifnot: _treg6 : _treg6 d _cv ; -ifnot: _stbot : _stbot e _cv ; -ifnot: _sttop : _sttop 2e _cv ; -ifnot: _rsbot : _rsbot _sttop ; - -\ waitcnt ( n1 n2 -- n1 ) \ wait until n1, add n2 to n1 -ifnot: waitcnt -: waitcnt _execasm2>1 1F1 _cnip ; - -\ waitpeq ( n1 n2 -- ) \ wait until state n1 is equal to -\ ina anded with n2 -ifnot: waitpeq -: waitpeq _execasm2>0 1E0 _cnip ; - -\ waitpne ( n1 n2 -- ) \ wait until state n1 is not equal -\ to ina anded with n2 -ifnot: waitpne -: waitpne _execasm2>0 1E8 _cnip ; - -\ lockret ( n1 -- ) deallocate a lock, previously allocated -\ via locknew -ifnot: lockret -: lockret 5 hubop 2drop ; - -\ locknew ( -- n2 ) allocate a lock, result is in n2, -1 -\ if unsuccessful -ifnot: locknew -: locknew -1 4 hubop -1 = if drop -1 then ; - -\ cog+ ( -- ) add a forth cog -ifnot: cog+ -: cog+ (cog+) ; - -\ (cog-) ( -- ) stop first forth cog, cannot be executed form -\ the first forth cog -ifnot: (cog-) -: (cog-) nfcog cogstop ; - -\ cog- ( -- ) stop first forth cog, cannot be executed form -\ the first forth cog -ifnot: cog- -: cog- (cog-) ; - - - - diff --git a/forth/debug.mod b/forth/debug.mod deleted file mode 100644 index 937129d..0000000 --- a/forth/debug.mod +++ /dev/null @@ -1,65 +0,0 @@ - -hex - -ifnot: mod:debug -: mod:debug ; - -\ keycode ( -- ) - anzeige der tastaturcodes -ifnot: keycode -: keycode - begin - 0 key? if - drop key dup dup ." code : " emit ." : " . cr 1B = - then until ; - -\ -\ Noisy reset messages -\ -\ print out a reset message to the console -\ (rsm) ( n -- ) n is the last status -\ 0011FFFF - stack overflow -\ 0012FFFF - return stack overflow -\ 0021FFFF - stack underflow -\ 0022FFFF - return stack underflow -\ 8100FFFF - no free cogs -\ 8200FFFF - no free main memory -\ 8400FFFF - fl no free main memory -\ 8500FFFF - no free cog memory -\ 8800FFFF - eeprom write error -\ 9000FFFF - eeprom read error - -: (rsm) state W@ 2 and 0= swap -\ process the last status - dup 0= if c" ok" else - dup FF11 = if c" DST OVER" else - dup FF12 = if c" RST OVER" else - dup FF21 = if c" DST LOW" else - dup FF22 = if c" RST LOW" else - dup 8001 = if c" COGs OUT" else - dup 8002 = if c" hMEM OUT" else - dup 8003 = if c" ROM WR" else - dup 8004 = if c" FL" else - dup 8005 = if c" cMEM OUT" else - dup 8006 = if c" ROM RD" else - c" ?" - thens - rot if - lockdict cr c" ERR : " .cstr swap . .cstr cr freedict - else 2drop then ; -: onreset (rsm) 4 state orC! ; - -\ .byte ( n1 -- ) -: .byte <# # # #> .cstr ; - -\ [if (dumpb) -: (dumpb) cr over .addr space dup .addr _ecs bounds ; ] - -\ [if (dumpm) -: (dumpm) cr .word _ecs ; ] - -\ [if (dumpe) -: (dumpe) tbuf 8 bounds do i C@ .byte space loop 2 spaces tbuf 8 bounds do i C@ dup bl < if drop 2e then emit loop ; ] - -\ dump ( adr cnt -- ) uses tbuf -[if dump -: dump (dumpb) do i (dumpm) i tbuf 8 cmove (dumpe) 8 +loop cr ; ] diff --git a/forth/error.txt b/forth/error.txt deleted file mode 100644 index 17013b3..0000000 --- a/forth/error.txt +++ /dev/null @@ -1,40 +0,0 @@ - -Reset-Fehlercodes: - -0011FFFF - stack overflow -0012FFFF - return stack overflow -0021FFFF - stack underflow -0022FFFF - return stack underflow -8100FFFF - no free cogs -8200FFFF - no free main memory -8400FFFF - fl no free main memory -8500FFFF - no free cog memory -8800FFFF - eeprom write error -9000FFFF - eeprom read error - -.err-Fehlercodes: - -0 no error -1 fsys unmounted -2 fsys corrupted -3 fsys unsupported -4 not found -5 file not found -6 dir not found -7 file read only -8 end of file -9 end of directory -10 end of root -11 dir is full -12 dir is not empty -13 checksum error -14 reboot error -15 bpb corrupt -16 fsi corrupt -17 dir already exist -18 file already exist -19 out of disk free space -20 disk io error -21 command not found -22 timeout -23 parameter error diff --git a/forth/hplay.mod b/forth/hplay.mod deleted file mode 100644 index 2916ebe..0000000 --- a/forth/hplay.mod +++ /dev/null @@ -1,155 +0,0 @@ - -hex - -ifnot: mod:hplay -: mod:hplay ; - -\ kommandoformate - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!w@ \ ( b fkt -- w ) -: adm:fkt!b!w@ b[ [a!] [a!] [a.w@] ]b ; - -ifnot: adm:fkt!s!b@ \ ( cstr fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: bel:fkt!b@ \ ( fkt -- b ) -: bel:fkt!b@ b[ 0 [b!] [b!] [b@] ]b ; - -ifnot: bel:char \ ( b -- ) -: bel:char b[ [b!] ]b ; - -\ hss-funktionen - -ifnot: hss:load \ ( cstr -- err ) - hss-datei laden -: hss:load dup if 64 adm:fkt!s!b@ then ; - -ifnot: hss:play \ ( -- ) - datei im puffer abspielen -: hss:play 65 adm:fkt! ; - -ifnot: hss:stop \ ( -- ) - player stop -: hss:stop 66 adm:fkt! ; - -ifnot: hss:reg \ hreg ( regnr -- 16b ) -: hss:reg 69 b[ [a!] [a!] [a.w@] ]b ; - -ifnot: hss:vol \ hvol ( vol -- ) - lautstärke 0..15 -: hss:vol 6A adm:fkt!b! ; - -\ keyboard-funktionen - -ifnot: key:stat \ ( -- stat ) - tastenstatus abfragen -: key:stat 1 bel:fkt!b@ ; - -\ steuerzeichen - -ifnot: scr:cls \ ( -- ) - screen löschen -: scr:cls 01 bel:char ; - -ifnot: scr:home \ ( -- ) - cursor oben links -: scr:home 02 bel:char ; - -ifnot: scr:curon \ ( -- ) - cursor anschalten -: scr:curon 04 bel:char ; - -ifnot: scr:curoff \ ( -- ) - cursor abschalten -: scr:curoff 05 bel:char ; - -\ sd0-funktionen - -\ adm:diropen ( -- ) - verzeichnisabfrage initialisieren -ifnot: adm:diropen -: adm:diropen - 02 adm:fkt! ; - -\ adm:nextfile ( -- st ) -\ st = 0 - keine gültige datei -\ st = 1 - dateiname im pad gültig -\ bei gültigem eintrag befindet sich der dateiname im pad -ifnot: adm:nextfile -: adm:nextfile - b[ 03 [a!] [a@] dup if [a.s@] then ]b ; - -\ metafunktionen - -\ hload name ( -- ) - hss-datei in player laden - -ifnot: hload -: hload mount? parsenw hss:load .err ; - -ifnot: .hset -: .hset \ ( shift -- ) - eine registersatz ausgeben - 5 0 do dup i + hss:reg .word space loop drop ; - -ifnot: .hreg -: .hreg \ ( -- ) - register ausgeben - 14 0 do i .hset cr 5 +loop ; - -ifnot: fadeout -: fadeout \ ( -- ) - sound langsam ausblenden - f 0 do e i - hss:vol 50 delms loop ; - -ifnot: end? -: end? \ ( cnt -- flag ) - abfrage nach cnt wiederholungen - 4 hss:reg = ; - -ifnot: hwait -: hwait \ ( -- flag ) - wartet auf songende oder taste - begin 50 delms key? 2 end? or until key drop ; - -ifnot: hreg.. -: hreg.. \ ( -- ) - fortlaufende anzeige register - scr:curoff scr:cls begin scr:home .hreg 2 end? until - scr:curon fadeout hss:stop ; - -ifnot: (hplay) -: (hplay) \ ( cstr -- ) - ." Datei : " dup .cstr hss:load .err f hss:vol hss:play - hwait fadeout hss:stop 100 delms cr ; - -\ hplay name ( -- ) - datei abspielen -ifnot: hplay -: hplay - hload hss:play ; - -\ files? ( -- cnt ) - anzahl dateien im dir -ifnot: files? -: files? - adm:diropen - 0 begin adm:nextfile swap 1+ swap 0= until 3 - padbl ; - -\ filenr? ( nr -- ) -ifnot: filenr? -: filenr? - adm:diropen - 0 do adm:nextfile drop loop ; - -\ hdirplay ( -- ) - gesamtes verzeichnis abspielen -\ im verzeichnis dürfen nur hss-dateien sein! -ifnot: hdirplay -: hdirplay - decimal files? dup ." Dateien : " . cr - 0 do i dup 1 + . 3 + filenr? pad (hplay) loop padbl hex ; - -: (hp) ." play : " dup .cstr hss:load .err ; - -ifnot: playliste -: playliste - c" kw.hss" (hplay) - c" genes.hss" (hplay) - c" greenpuz.hss" (hplay) - c" hssintro.hss" (hplay) - c" kali766.hss" (hplay) - c" machine.hss" (hplay) - c" metroid.hss" (hplay) - c" mrboss.hss" (hplay) - c" mrevil.hss" (hplay) - c" raind.hss" (hplay) - c" sytrus.hss" (hplay) - c" tbellsp1.hss" (hplay) ; - diff --git a/forth/hss.lib b/forth/hss.lib deleted file mode 100644 index 33db039..0000000 --- a/forth/hss.lib +++ /dev/null @@ -1,60 +0,0 @@ - -hex - -ifnot: lib:hss -: lib:hss ; - -\ kommandoformate - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!b! \ ( b b fkt -- ) -: adm:fkt!b!b! b[ [a!] [a!] [a!] ]b ; - -ifnot: adm:fkt!b!w@ \ ( b fkt -- w ) -: adm:fkt!b!w@ b[ [a!] [a!] [a.w@] ]b ; - -ifnot: adm:fkt!s!b@ \ ( cstr fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -\ hss-funktionen - -\ ( cstr -- err ) - hss-datei laden -ifnot: hss:load -: hss:load dup if 64 adm:fkt!s!b@ then ; - -\ ( -- ) - datei im puffer abspielen -ifnot: hss:play -: hss:play 65 adm:fkt! ; - -\ ( -- ) - player stop -ifnot: hss:stop -: hss:stop 66 adm:fkt! ; - -\ ( -- ) - player pause -ifnot: hss:pause -: hss:pause 67 adm:fkt! ; - -\ hreg ( regnr -- 16b ) -\ 0 iEndFlag iRowFlag iEngineC iBeatC iRepeat Player -\ 5 iNote iOktave iVolume iEffekt iInstrument Kanal 1 -\ 10 iNote iOktave iVolume iEffekt iInstrument Kanal 2 -\ 15 iNote iOktave iVolume iEffekt iInstrument Kanal 3 -\ 20 iNote iOktave iVolume iEffekt iInstrument Kanal 4 -\ -\ iEndFlag Repeat oder Ende wurde erreicht -\ iRowFlag Trackerzeile (Row) ist fertig -\ iEngineC Patternzähler -\ iBeatC Beatzähler (Anzahl der Rows) -\ iRepeat Zähler für Loops -ifnot: hss:reg -: hss:reg 69 b[ [a!] [a!] [a.w@] ]b ; - -\ hvol ( vol -- ) - lautstärke 0..15 -ifnot: hss:vol -: hss:vol 6A adm:fkt!b! ; - diff --git a/forth/key.lib b/forth/key.lib deleted file mode 100644 index 45204a5..0000000 --- a/forth/key.lib +++ /dev/null @@ -1,17 +0,0 @@ - -hex - -ifnot: lib:key -: lib:key ; - -\ kommandoformate -ifnot: bel:fkt!b@ \ ( fkt -- b ) -: bel:fkt!b@ b[ 0 [b!] [b!] [b@] ]b ; - -\ keyboard-funktionen -ifnot: key:stat \ ( -- stat ) - tastenstatus abfragen -: key:stat 1 bel:fkt!b@ ; -ifnot: key:code \ ( -- code ) - tastencode abfragen -: key:code 2 bel:fkt!b@ ; -ifnot: key:spec \ ( -- spec ) - spezialtasten abfragen -: key:spec 4 bel:fkt!b@ ; diff --git a/forth/rom.mod b/forth/rom.mod deleted file mode 100644 index 9a91eda..0000000 --- a/forth/rom.mod +++ /dev/null @@ -1,206 +0,0 @@ - -\ ACHTUNG: Diese Modifikation nicht bei einer Installation im -\ HI-EEPROM verwenden! - -hex -[if mod:rom -: mod:rom ; ] - -\ constant ( x -- ) skip blanks parse the next word and create a constant, allocate a long, 4 bytes -[if constant -: constant lockdict create $C_a_doconl w, l, forthentry freedict ; ] - -\ -\ CONFIG PARAMETERS BEGIN -\ -40 wconstant fsps \ a page size which works with 32kx8 & 64kx8 eeproms - \ and should work with larger as well. - - -8000 constant fsbot \ file-system bottom: the start adress in eeprom for the file system - - \ file system top: the end address of the file system - \ uncomment the line for your comfiguration -\ 8000 constant fstop \ the end address for the file system with one 24LC256 32k eeprom -10000 constant fstop \ the end address for the file system with one 24LC512 64k eeprom -\ 20000 constant fstop \ the end address for the file system with two 24LC512 64k eeprom -\ 30000 constant fstop \ the end address for the file system with 3 24LC512 64k eeprom -\ 40000 constant fstop \ the end address for the file system with 4 24LC512 64k eeprom -\ 50000 constant fstop \ the end address for the file system with 5 24LC512 64k eeprom -\ 60000 constant fstop \ the end address for the file system with 6 24LC512 64k eeprom -\ 70000 constant fstop \ the end address for the file system with 7 24LC512 64k eeprom - -\ NOTE IF you have DEMOBOARD or any system with 32K EEPROM, you will step on your spin image -\ when you write to the EEPROM. You can still use it (if you are tricky), but KNOW WHAT YOUR DOING!!! - -\ -\ CONFIG PARAMETERS END -\ - - -\ lasti? ( -- t/f ) true if this is the last value of i in this loop -[if lasti? -: lasti? _rsptr COG@ 2+ COG@ 1- _rsptr COG@ 3 + COG@ = ; ] - -\ padbl ( -- ) fills this cogs pad with blanks -[if padbl -: padbl pad padsize bl fill ; ] -\ _eeread ( t/f -- c1 ) read a byte from the eeprom, ackbit in, byte out -[if _eeread : _eeread _sdai 0 8 0 do 1 lshift _sclh _sda? _scll if 1 or then loop -swap if _sdah else _sdal then _sdao _sclh _scll _sdal ; ] - -\ the eereadpage and eewritePage words assume the eeprom are 64kx8 and will address up to -\ 8 sequential eeproms -\ eereadpage ( eeAddr addr u -- t/f ) return true if there was an error, use lock 1 -[if eereadpage : eereadpage begin 1 lockset 0= until -1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift dup >r -_eestart A0 or _eewrite swap _eewrite or swap _eewrite or -_eestart r> A1 or _eewrite or -rot2 bounds -do lasti? _eeread i C! loop _eestop 1 lockclr drop ; ] - -\ _eeread ( t/f -- c1 ) read a byte from the eeprom, ackbit in, byte out -[if _eeread : _eeread _sdai 0 8 0 do 1 lshift _sclh _sda? _scll if 1 or then loop -swap if _sdah else _sdal then _sdao _sclh _scll _sdal ; ] - -\ the eereadpage and eewritePage words assume the eeprom are 64kx8 and will address up to -\ 8 sequential eeproms -\ eereadpage ( eeAddr addr u -- t/f ) return true if there was an error, use lock 1 -[if eereadpage : eereadpage begin 1 lockset 0= until -1 max rot dup ff and swap dup 8 rshift ff and swap 10 rshift 7 and 1 lshift dup >r -_eestart A0 or _eewrite swap _eewrite or swap _eewrite or -_eestart r> A1 or _eewrite or -rot2 bounds -do lasti? _eeread i C! loop _eestop 1 lockclr drop ; ] - -\ EW@ ( eeAddr -- n1 ) -[if EW@ -: EW@ t0 2 eereadpage if 8006 ERR then t0 W@ ; ] - -\ EC@ ( eeAddr -- c1 ) -[if EC@ -: EC@ EW@ FF and ; ] - -\ (fspa) ( addr1 -- addr2) addr2 is the next page aligned address after addr1 -: (fspa) fsps 1- + fsps 1- andn ; - -\ (fsnext) ( addr1 -- addr2 t/f) addr - the current file address, addr2 - the next addr, t/f - true if we have -\ gone past the end of the eeprom. t0 -length of the current file -\ t1 - length of the file name (char) -: (fsnext) t0 W@ t1 C@ + 2+ 1+ + (fspa) dup fstop >= ; - - -\ (fswr) ( addr1 addr2 n1 -- ) addr1 - the eepropm address to write, addr2 - the address to write from -\ n1 - the number of bytes to write -: (fswr) dup >r rot dup r> + fstop 1- > if A0 ERR then rot2 eewritepage if 88 ERR then ; - -\ (fsrd) ( addr1 addr2 n1 -- ) addr1 - the eepropm address to read, addr2 - the address of the read buffer -\ n1 - the number of bytes to read -: (fsrd) dup >r rot dup r> + fstop 1- > if C0 ERR then rot2 eereadpage if 90 ERR then ; - -\ (fsfree) ( -- n1 ) n1 is the first location in the file system, -1 if there are none -: (fsfree) -1 fsbot begin -\ read 3 bytes into t0, t1 and process - dup t0 3 (fsrd) t0 W@ FFFF = if nip dup -1 else (fsnext) then -until drop ; - -\ (fsfind) ( cstr -- addr ) find the last file named cstr, addr is the eeprom address, 0 if not found -: (fsfind) fsbot 0 >r begin -\ read namesizemax 1F + 3 bytes into t0, t1, and tbuf - dup t0 22 (fsrd) t0 W@ FFFF = if -1 else - over t1 cstr= if r> drop dup >r then - (fsnext) - then -until 2drop r> ; - -\ (fslast) ( -- addr ) find the last file, 0 if not found -: (fslast) 0 fsbot begin -\ read namesizemax 1F + 3 bytes into t0, t1, and tbuf - dup t0 22 (fsrd) t0 W@ FFFF = if -1 else - nip dup - (fsnext) - then -until drop ; - -\ fsclear ( -- ) -: fsclr padbl fsbot 400 + fsbot do i pad fsps (fswr) 2e emit fsps +loop -1 fsbot EW! ; -: fsclear -1 fsbot EW! ; - -\ fsfree ( -- ) -: fsfree (fsfree) dup -1 = if 0 else fstop swap - then . ." bytes free in fs" cr ; - -\ fsls ( -- ) list the files -: fsls cr fsbot begin -\ read namesizemax 1F + 3 bytes into t0, t1, and tbuf - dup t0 22 (fsrd) t0 W@ FFFF = if -1 else - dup .addr space t0 W@ .addr space t1 .cstr cr - (fsnext) - then -until fstop swap - cr . ." bytes free in files system" cr cr ; - -\ (fsread) ( cstr -- ) -: (fsread) (fsfind) dup if -\ read 3 bytes into t0, t1 and process - dup t0 3 (fsrd) - t1 C@ + 2+ 1+ t0 W@ bounds do - ibound i - fsps >= if - i pad fsps (fsrd) pad fsps bounds - do i C@ emit loop i fsps 1- + seti - else - i EC@ emit - then - loop -else drop then padbl ; - -\ fsread ( -- ) filename -: fsread parsenw dup if (fsread) else drop then ; - -\ (fsload) ( ctsr -- ) -: (fsload) cogid nfcog iolink (fsread) d emit d emit cogid iounlink ; - -\ fsload filename ( -- ) send the file to the next free forth cog -: fsload parsenw dup if (fsload) else drop then ; - -\ (fsk) ( n1 -- n2) -: (fsk) 8 lshift key or ; - -\ fswrite filename ( -- ) writes a file until ... followed immediately by a cr is encountered -: fswrite (fsfree) dup -1 <> parsenw dup rot and if -\ set the file length to 0, copy in the file name - 0 pad W! dup C@ 2+ 1+ pad + swap pad 2+ ccopy -\ find the first free page - 0 swap key (fsk) (fsk) (fsk) -\ ( eaddr1 n1 addr2 n2 ) eaddr - start of file in the eeprom, n1 - bytes written so far, addr2 - next addr in the pad, -\ n2 - a 4 byte key buffer - begin -\ check to see if we have a ... at the end of a line - 2E2E2E0D over = if - -1 - else -\ get a key from the key buffer, write it the the pad - swap over 18 rshift dup dup d = if drop cr else emit then over C! 1+ tuck pad - fsps = if -\ we have a page worth of data, write it out - nip rot2 2dup + pad fsps (fswr) fsps + rot pad swap - then -\ get another key - (fsk) 0 - then - until -\ any keys left? - drop pad - dup 0> if -\ write the leftover, not a full page - >r 2dup + pad r> dup >r (fswr) r> + - else - drop - then -\ write the length of FFFF for the next file - 2dup + FFFF swap (fspa) dup fstop 1- < if EW! else 2drop then -\ subtract the length of the filename +1, and the 2 bytes which are the length of the file, and update the length of the file - over 2+ EC@ 2+ 1+ - swap EW! -else 2drop clearkeys then padbl -; - -\ fsdrop ( -- ) deletes last file -: fsdrop (fslast) dup -1 = if drop else FFFF swap EW! then ; - - diff --git a/forth/scr.lib b/forth/scr.lib deleted file mode 100644 index a879692..0000000 --- a/forth/scr.lib +++ /dev/null @@ -1,69 +0,0 @@ - -hex - -ifnot: lib:scr -: lib:scr ; - -\ kommandoformate -ifnot: bel:char \ ( b -- ) -: bel:char b[ [b!] ]b ; -ifnot: bel:fkt!b! \ ( b fkt -- ) -: bel:fkt!b! b[ 0 [b!] [b!] [b!] ]b ; -ifnot: bel:fkt!b!b! \ ( b b fkt -- ) -: bel:fkt!b!b! b[ 0 [b!] [b!] [b!] [b!] ]b ; -ifnot: bel:ctrl! \ ( ctrl -- ) -: bel:ctrl! b[ 0 [b!] 3 [b!] [b!] ]b ; -ifnot: bel:ctrl!b! \ ( b ctrl -- ) -: bel:ctrl!b! b[ 0 [b!] 3 [b!] [b!] [b!] ]b ; -ifnot: bel:ctrl!b@ \ ( ctrl -- b@ ) -: bel:ctrl!b@ b[ 0 [b!] 3 [b!] [b!] [b@] ]b ; -ifnot: bel:ctrl!b!b! \ ( b b ctrl -- ) -: bel:ctrl!b!b! b[ 0 [b!] 3 [b!] [b!] [b!] [b!] [b!] ]b ; - -\ einfache steuerzeichen -ifnot: scr:cls \ ( -- ) - screen löschen -: scr:cls 01 bel:char ; -ifnot: scr:home \ ( -- ) - cursor oben links -: scr:home 02 bel:char ; -ifnot: scr:pos1 \ ( -- ) - cursor an zeilenanfang -: scr:pos1 03 bel:char ; -ifnot: scr:curon \ ( -- ) - cursor anschalten -: scr:curon 04 bel:char ; -ifnot: scr:curoff \ ( -- ) - cursor abschalten -: scr:curoff 05 bel:char ; -ifnot: scr:scrlu \ ( -- ) - screen nach oben scrollen -: scr:scrlu 06 bel:char ; -ifnot: scr:scrld \ ( -- ) - screen nach unten scrollen -: scr:scrld 07 bel:char ; -ifnot: scr:bs \ ( -- ) - backspace -: scr:bs 08 bel:char ; -ifnot: scr:tab \ ( -- ) - tabulator -: scr:tab 09 bel:char ; - -\ screen-funktionen -ifnot: scr:logo \ ( y x -- ) - hive logo -: scr:logo 5 bel:fkt!b!b! ; -ifnot: scr:char \ ( char -- ) - zeichensatz direkt ausgeben -: scr:char 6 bel:fkt!b! ; - -\ parametrisierte steuerzeichen -ifnot: scr:setcur \ ( cur -- ) - cursorzeichen setzen -: scr:setcur 01 bel:ctrl!b! ; -ifnot: scr:setx \ ( x -- ) - cursor position x setzen -: scr:setx 02 bel:ctrl!b! ; -ifnot: scr:sety \ ( y -- ) - cursor position y setzen -: scr:sety 03 bel:ctrl!b! ; -ifnot: scr:getx \ ( -- x ) - cursor position x abfragen -: scr:getx 04 bel:ctrl!b@ ; -ifnot: scr:gety \ ( -- y ) - cursor position y abfragen -: scr:gety 05 bel:ctrl!b@ ; -ifnot: scr:setcol \ ( colnr -- ) - farbe wählen 0..15 -: scr:setcol 06 bel:ctrl!b! ; -ifnot: scr:sline \ ( row -- ) - anfangszeile scrollbereich -: scr:sline 07 bel:ctrl!b! ; -ifnot: scr:eline \ ( row -- ) - endzeile scrollbereich -: scr:eline 08 bel:ctrl!b! ; -ifnot: scr:sinit \ ( -- ) - -: scr:sinit 09 bel:ctrl! ; -ifnot: scr:tabset \ ( pos nr -- ) - tabulatorposition setzen 0..7 -: scr:tabset 0A bel:ctrl!b!b! ; diff --git a/forth/sd0.lib b/forth/sd0.lib deleted file mode 100644 index 8cf2e49..0000000 --- a/forth/sd0.lib +++ /dev/null @@ -1,176 +0,0 @@ - -hex - -ifnot: lib:sd0 -: lib:sd0 ; - -\ ------------------------------------ lib:sd0 - -\ kommandoformate - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!b!l@ \ ( b fkt -- l ) -: adm:fkt!b!l@ b[ [a!] [a!] [a.l@] ]b ; - -ifnot: adm:fkt!l! \ ( l fkt -- ) -: adm:fkt!l! b[ [a!] [a.l!] ]b ; - -ifnot: adm:fkt!l@ \ ( fkt -- l ) -: adm:fkt!l@ b[ [a!] [a.l@] ]b ; - -ifnot: adm:fkt!b!l! \ ( l b fkt -- ) -: adm:fkt!b!l! b[ [a!] [a!] [a.l!] ]b ; - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!b!s!b@ \ ( s b fkt -- b ) -: adm:fkt!b!s!b@ b[ [a!] [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!s!s!b@ \ ( s s fkt -- b ) -: adm:fkt!s!s!b@ b[ [a!] [a.s!] [a.s!] [a@] ]b ; - -\ dateisystem-funktionen - -\ adm:mount ( -- err ) - medium mounten -ifnot: adm:mount -: adm:mount - 01 adm:fkt!b@ ; - -\ adm:diropen ( -- ) - verzeichnisabfrage initialisieren -ifnot: adm:diropen -: adm:diropen - 02 adm:fkt! ; - -\ adm:nextfile ( -- st ) -\ st = 0 - keine gültige datei -\ st = 1 - dateiname im pad gültig -\ bei gültigem eintrag befindet sich der dateiname im pad -ifnot: adm:nextfile -: adm:nextfile - b[ 03 [a!] [a@] dup if [a.s@] then ]b ; - -\ adm:open ( cstr modus -- err ) - datei öffnen -\ modus "R" $52 - Read -\ modus "W" $57 - Write -\ modus "A" $41 - Append -ifnot: adm:open -: adm:open - 04 adm:fkt!b!s!b@ ; - -\ adm:close ( -- ) - datei schließen -ifnot: adm:close -: adm:close - 05 adm:fkt!b@ ; - -\ adm:getc ( -- c ) - ein zeichen aus datei lesen -ifnot: adm:getc -: adm:getc - 06 adm:fkt!b@ ; - -\ adm:putc ( c -- ) - ein zeichen in datei schreiben -ifnot: adm:putc -: adm:putc - 07 adm:fkt!b! ; - -\ adm:eof ( -- eof ) - abfrage ob end of file erreicht ist -ifnot: adm:eof -: adm:eof - 1E adm:fkt!b@ ; - -\ adm:getblk ( adr cnt -- ) - datenblock aus datei lesen - -\ adm:putblk ( adr cnt -- ) - datenblock in datei schreiben - -\ adm:seek ( pos -- ) - position in datei setzen -: adm:seek - 0A adm:fkt!l! ; - -\ adm:fattrib ( nr -- attrib ) - dateiattribut abfragen -ifnot: adm:fattrib -: adm:fattrib - 0B adm:fkt!b!l@ ; - -\ adm:volname ( -- ) - name des volumes im pad ablegen -ifnot: adm:volname -: adm:volname - 0C adm:fkt!s@ ; - -\ adm:checkmounted ( -- t/f ) -ifnot: adm:checkmounted -: adm:checkmounted - 0D adm:fkt!b@ ; - -\ adm:checkopen ( -- t/f ) -ifnot: adm:checkopen -: adm:checkopen - 0E adm:fkt!b@ ; - -\ adm:checkused ( -- used ) - anzahl benutzte sektoren -ifnot: adm:checkused -: adm:checkused - 0F adm:fkt!l@ ; - -\ adm:checkfree ( -- free ) - anzahl freie sektoren -ifnot: adm:checkfree -: adm:checkfree - 10 adm:fkt!l@ ; - -\ adm:newfile ( cstr -- ) - neue datei erstellen -ifnot: adm:newfile -: adm:newfile - 11 adm:fkt!s!b@ ; - -\ adm:newdir ( cstr -- ) - neues verzeichnis erstellen -ifnot: adm:newdir -: adm:newdir - 12 adm:fkt!s!b@ ; - -\ adm:del ( cstr -- ) - datei/verzeichnis löschen -ifnot: adm:del -: adm:del - 13 adm:fkt!s!b@ ; - -\ adm:rename ( cstr1.fn1 cstr2.fn2 -- ) -ifnot: adm:rename -: adm:rename - 14 adm:fkt!s!s!b@ ; - -\ adm:chattrib ( cstr1.fn cstr2.attrib -- ) -ifnot: adm:chattrib -: adm:chattrib - 15 adm:fkt!s!s!b@ ; - -\ adm:chdir ( cstr -- err ) - verzeichnis öffnen -ifnot: adm:chdir -: adm:chdir - 16 adm:fkt!s!b@ ; - -\ adm:format ( cstr.label -- ) - medium formatieren -ifnot: adm:format -: adm:format - 17 adm:fkt!s!b@ ; - -\ adm:unmount ( -- err ) - medium unmounten -ifnot: adm:unmount -: adm:unmount - 18 adm:fkt!b@ ; - -\ marker-funktionen - -ifnot: adm:dmact \ ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ .err ; -ifnot: adm:dmset \ ( dmnr -- ) - marker setzen -: adm:dmset 1A adm:fkt!b! ; -ifnot: adm:dmget \ ( dmnr -- dm ) - marker lesen -: adm:dmget 1B adm:fkt!b!l@ ; -ifnot: adm:dmclr \ ( dmnr -- ) - marker löschen -: adm:dmclr 1C adm:fkt!b! ; -ifnot: adm:dmput \ ( dm dmnr -- ) - marker schreiben -: adm:dmput 1D adm:fkt!b!l! ; - diff --git a/forth/sfx.lib b/forth/sfx.lib deleted file mode 100644 index 3c01222..0000000 --- a/forth/sfx.lib +++ /dev/null @@ -1,93 +0,0 @@ - -hex - -ifnot: lib:sfx -: lib:sfx ; - -\ kommandoformen - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b!b! \ ( b b fkt -- ) -: adm:fkt!b!b! b[ [a!] [a!] [a!] ]b ; - -ifnot: adm:fkt!b!64b! \ ( ptr b fkt -- ) -: adm:fkt!b!64b! b[ [a!] [a!] - 31 0 do dup i + C@ [a!] loop drop ]b ; - -\ sfx-funktionen - -\ sfx:fire( chan slot -- ) - sfx abspielen -\ slot - $00..$0f nummer der freien effektpuffer -\ slot - $f0..f5 vordefinierte effektslots -\ chan - 0/1 stereokanal -\ vordefinierte effekte -\ &f0 - warnton -\ $f1 - signalton -\ $f2 - herzschlag schnell -\ $f3 - herzschlag langsam -\ $f4 - telefon -\ $f5 - phaser :) -\ $f6 - pling -\ $f7 - on -\ $f8 - off -ifnot: sfx:fire -: sfx:fire 6B adm:fkt!b!b! ; - -\ ( ptr slot -- ) - sfx setzen -\ slot - $00..$0f nummer der freien effektpuffer -\ ptr - zeiger auf 32 byte effektdaten -\ -\ struktur der effektdaten: -\ -\ [wav ][len ][freq][vol ] grundschwingung -\ [lfo ][lfw ][fma ][ama ] modulation -\ [att ][dec ][sus ][rel ] hüllkurve -\ [seq ] (optional) -\ -\ [wav] wellenform -\ 0 sinus (0..500hz) -\ 1 schneller sinus (0..1khz) -\ 2 dreieck (0..500hz) -\ 3 rechteck (0..1khz) -\ 4 schnelles rechteck (0..4khz) -\ 5 impulse (0..1,333hz) -\ 6 rauschen -\ [len] tonlänge $0..$fe, $ff endlos -\ [freq] frequenz $00..$ff -\ [vol] lautstärke $00..$0f -\ -\ [lfo] low frequency oscillator $ff..$01 -\ [lfw] low frequency waveform -\ $00 sinus (0..8hz) -\ $01 fast sine (0..16hz) -\ $02 ramp up (0..8hz) -\ $03 ramp down (0..8hz) -\ $04 square (0..32hz) -\ $05 random -\ $ff sequencer data (es folgt eine sequenzfolge [seq]) -\ [fma] frequency modulation amount -\ $00 no modulation -\ $01..$ff -\ [ama] amplitude modulation amount -\ $00 no modulation -\ $01..$ff -\ [att] attack $00..$ff -\ [dec] decay $00..$ff -\ [sus] sustain $00..$ff -\ [rel] release $00..$ff -ifnot: sfx:setslot -: sfx:setslot - 6C adm:fkt!b!64b! ; - -\ sfx:keyoff ( chan -- ) - release-phase einleiten -ifnot: sfx:keyoff -: sfx:keyoff - 6D adm:fkt!b! ; - -\ sfx:stop ( chan -- ) -ifnot: sfx:stop -: sfx:stop - 6E adm:fkt!b! ; - diff --git a/forth/splay.mod b/forth/splay.mod deleted file mode 100644 index eb6e485..0000000 --- a/forth/splay.mod +++ /dev/null @@ -1,116 +0,0 @@ - -\ achtung: vor verwendung muss der administra-code mit sidcog -\ geladen werden: -\ sys tools.f -\ sys splay.f <--- sid-player laden -\ aload admsid.adm <--- administra-code mit sidcog laden -\ splay xyz.dmp <--- sid-datei abspielen - - -hex - -ifnot: mod:splay -: mod:splay ; - -\ kommandoformen - -ifnot: adm:fkt! \ ( fkt -- ) -: adm:fkt! b[ [a!] ]b ; - -ifnot: adm:fkt!b! \ ( b fkt -- ) -: adm:fkt!b! b[ [a!] [a!] ]b ; - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ 0 [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!s! \ ( s fkt -- ) -: adm:fkt!s! b[ [a!] [a.s!] ]b ; - -ifnot: adm:fkt!s!b@ \ ( s fkt -- err ) -: adm:fkt!s! b[ [a!] [a.s!] [b@] ]b ; - -ifnot: adm:fkt!b!l@ \ ( b fkt -- l ) -: adm:fkt!b!l@ b[ [a!] [a!] [a.l@] ]b ; - -\ dm-funktionen -ifnot: adm:dmget \ ( dmnr -- dm ) - marker lesen -: adm:dmget 1B adm:fkt!b!l@ ; - -\ adm:dmact ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ drop ; - -\ adm-funktionen - -\ adm:aload ( cstr -- ) - neuen administra-code laden -ifnot: adm:aload -: adm:aload - 60 adm:fkt!s! ; - -\ tools - -ifnot: aload -: aload - mount? parsenw dup - if 1 adm:dmact adm:aload 0 else drop 23 then .err ; - -\ sid-funktionen - -ifnot: sid:play -: sid:play \ ( cstr -- err ) - 9E adm:fkt!s!b@ ; - -ifnot: sid:stop -: sid:stop \ ( -- ) - 9F adm:fkt! ; - -ifnot: sid:status -: sid:status \ ( -- status ) - A1 adm:fkt!b@ ; - -ifnot: sid:mute -\ 1 - sid1 -\ 2 - sid2 -\ 3 - sid1 & sid2 -: sid:mute \ ( sidnr -- ) - A3 adm:fkt!b! ; - -\ send? ( -- t/f ) -ifnot: send? -: send? - begin 50 delms key? dup if key drop then sid:status 0= or - until ; - -\ (splay) ( cstr -- ) -ifnot: (splay) -: (splay) \ ( cstr -- ) - ." Datei : " dup .cstr cr sid:play .err - send? sid:stop 3 sid:mute adm:close drop ; - -\ files? ( -- cnt ) - anzahl dateien im dir -ifnot: files? -: files? - adm:diropen - 0 begin adm:nextfile swap 1+ swap 0= until 3 - padbl ; - -\ filenr? ( nr -- ) -ifnot: filenr? -: filenr? - adm:diropen - 0 do adm:nextfile drop loop ; - -\ splay name.dmp ( -- ) - sid-datei abspielen -ifnot: splay -: splay - parsenw (splay) ; - -\ sdirplay ( -- ) - gesamtes verzeichnis abspielen -\ im verzeichnis dürfen nur sid-dateien sein! -ifnot: sdirplay -: sdirplay - files? dup ." Dateien : " . cr - 0 do i dup 1 + . 3 + filenr? pad (splay) loop padbl ; - -ifnot: smute -: smute - sid:stop 3 sid:mute ; - \ No newline at end of file diff --git a/forth/tools.mod b/forth/tools.mod deleted file mode 100644 index 4d74e6f..0000000 --- a/forth/tools.mod +++ /dev/null @@ -1,152 +0,0 @@ - -hex - -ifnot: mod:tools -: mod:tools ; - -\ kommandoformen -ifnot: adm:fkt!b!l@ \ ( b fkt -- l ) -: adm:fkt!b!l@ b[ [a!] [a!] [a.l@] ]b ; -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; -ifnot: adm:fkt!s! \ ( s fkt -- ) -: adm:fkt!s! b[ [a!] [a.s!] ]b ; - -\ dm-funktionen -ifnot: adm:dmget \ ( dmnr -- dm ) - marker lesen -: adm:dmget 1B adm:fkt!b!l@ ; - -ifnot: adm:dmact \ adm:dmact ( dmnr -- ) - marker aktivieren -: adm:dmact 19 adm:fkt!b!b@ drop ; - -\ adm-funktionen - -\ adm:aload ( cstr -- ) - neuen administra-code laden -ifnot: adm:load -: adm:load - 60 adm:fkt!s! ; - -\ bel-funktionen - -\ bel:load ( cstr -- ) - bellatrix-code laden -\ achtung: die gesamte loader-operation ist eine atomare -\ operation über alle drei propellerchips, kann also auch -\ nicht aufgetrennt werden! -ifnot: bel:load -: bel:load - 52 adm:open .err \ datei öffnen - b[ - 0 [b!] 63 [b!] \ bella-loader starten - 10 0 do 06 [a!] [a@] [b!] loop \ header einlesen - 0A [a!] 0 [a.l!] \ 0 adm:seek - [b@] <8 [b@] or \ dateilänge empfangen - 0 do 06 [a!] [a@] [b!] loop \ datei senden - ]b - adm:close .err \ datei schließen -; - -\ ------------------------------------ mod:tools - -ifnot: aload -: aload \ name ( -- ) - administra-code laden - mount? parsenw dup - if adm:load 0 else drop 23 then .err ; - -ifnot: bload -: bload \ name ( -- ) - bellatrix-code laden - mount? parsenw dup - if bel:load 0 else drop 23 then .err ; - -ifnot: .dmstatus \ ( dm -- ) - ausgabe marker-status -: .dmstatus -1 = if ." frei" else ." gesetzt" then cr ; - -ifnot: dm? -: dm? - ." [root] : " 0 adm:dmget .dmstatus - ." [sys ] : " 1 adm:dmget .dmstatus - ." [usr ] : " 2 adm:dmget .dmstatus - ." [ A ] : " 3 adm:dmget .dmstatus - ." [ B ] : " 4 adm:dmget .dmstatus - ." [ C ] : " 5 adm:dmget .dmstatus ; - -\ open name ( -- ) - datei lesend öffnen und auf fehler prüfen -ifnot: open -: open - mount? parsenw dup - if 52 adm:open else drop 23 then .err ; - -\ close ( -- ) - geöffnete datei schließen -ifnot: close -: close - adm:close .err ; - -\ (cat) ( -- ) - alle zeichen der geöffneten datei ab -\ lesemarke auf ausgabekanal bis zum eof ausgeben -ifnot: (cat) -: (cat) begin adm:getc emit adm:eof until ; - -\ cat name ( -- ) - datei "name" komplett ausgeben -ifnot: cat -: cat open (cat) close ; - -\ nextline ( -- ) - ausgabe der nächsten textzeile aus der -\ geöffneten datei -ifnot: nextline -: nextline - begin adm:getc dup emit 0d = adm:eof or until ; - -\ nextlines ( n -- ) - ausgabe von n zeilen -ifnot: nextlines -: nextlines - 0 do adm:eof 0= if nextline then loop ; - -\ less name ( -- ) - zeilenweise ausgabe der datei -ifnot: less -: less - open begin 10 nextlines key 71 = adm:eof or until close ; - -\ #C ( c1 -- ) prepend the character c1 to the number -\ currently being formatted -ifnot: #C -: #C -1 >out W+! pad>out C! ; - -\ .cogch ( n1 n2 -- ) print as x(y) -ifnot: .cogch -: .cogch <# 29 #C # 28 #C drop # #> .cstr ; - -\ j ( -- n1 ) the second most current loop counter -ifnot: j -: j _rsptr COG@ 5 + COG@ ; - -\ cog? ( -- ) -ifnot: cog? -: cog? - 8 0 do ." Cog:" i dup . ." #io chan:" - dup cognchan . cogstate C@ - dup 4 and if version W@ .cstr then - dup 10 and if i cognumpad version W@ C@ over C@ - - spaces .cstr then - 14 and if i cogio i cognchan 0 do - i 4* over + 2+ W@ dup 0= if drop else - space space j i .cogch ." ->" io>cogchan .cogch - then - loop -drop then cr loop ; - -\ jede erweiterung legt ein wort als startmarke -\ nmit folgendem namen an: -\ mod:xxx - softwaremodule -\ drv:xxx - treiber -\ lib:xxx - bibliotheken -\ so kann mit den folgenden kommandos eine schnelle liste der -\ vorhandenen erweiterungen abgerufen und mit forget -\ aus dem system entfernt werden - -\ mod? ( -- ) - anzeige der module -ifnot: mod? -: mod? c" mod:" _words ; - -\ lib? ( -- ) - anzeige der bibliotheken -ifnot: lib? -: lib? c" lib:" _words ; - diff --git a/forth/v1.mod b/forth/v1.mod deleted file mode 100644 index 7b0b8cd..0000000 --- a/forth/v1.mod +++ /dev/null @@ -1,325 +0,0 @@ - -: mod:vortrag ; - -24 constant rows -64 constant cols - -wvariable lcol 7 lcol W! - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ [a!] [a@] ]b ; - -ifnot: bel:char \ ( b -- ) -: bel:char b[ [b!] ]b ; -ifnot: bel:ctrl!b! \ ( b ctrl -- ) -: bel:ctrl!b! b[ 0 [b!] 3 [b!] [b!] [b!] ]b ; -ifnot: bel:fkt!b!b! \ ( b b fkt -- ) -: bel:fkt!b!b! b[ 0 [b!] [b!] [b!] [b!] ]b ; - -ifnot: scr:bs \ ( -- ) - backspace -: scr:bs 08 bel:char ; -ifnot: scr:tab \ ( -- ) - tabulator -: scr:tab 09 bel:char ; -ifnot: scr:pos1 \ ( -- ) - cursor an zeilenanfang -: scr:pos1 03 bel:char ; -ifnot: scr:setcol \ ( colnr -- ) - farbe wählen 0..15 -: scr:setcol 06 bel:ctrl!b! ; -ifnot: scr:sline \ ( row -- ) - anfangszeile scrollbereich -: scr:sline 07 bel:ctrl!b! ; -ifnot: scr:setx \ ( x -- ) - cursor position x setzen -: scr:setx 02 bel:ctrl!b! ; -ifnot: scr:sety \ ( y -- ) - cursor position y setzen -: scr:sety 03 bel:ctrl!b! ; -ifnot: scr:curon \ ( -- ) - cursor anschalten -: scr:curon 04 bel:char ; -ifnot: scr:curoff \ ( -- ) - cursor abschalten -: scr:curoff 05 bel:char ; -ifnot: scr:logo \ ( y x -- ) - hive logo -: scr:logo 5 bel:fkt!b!b! ; - -\ adm:setsound ( sfkt -- sstat ) - soundsystem verwalten -\ sfkt: -\ 0: hss-engine abschalten -\ 1: hss-engine anschalten -\ 2: dac-engine abschalten -\ 3: dac-engine anschalten -\ sstat - status/cognr startvorgang -ifnot: adm:setsound -: adm:setsound - 5C adm:fkt!b!b@ ; - -\ wav:start ( cstr -- err ) -ifnot: wav:start -: wav:start - 96 adm:fkt!s!b@ ; - -\ wav:stop ( -- ) -ifnot: wav:stop -: wav:stop - 97 adm:fkt!b@ drop ; - -\ won -ifnot: won -: won - 0 adm:setsound 3 adm:setsound 2drop ; - -\ woff -ifnot: woff -: woff - 2 adm:setsound 1 adm:setsound 2drop ; - -: lcol@ lcol W@ ; \ ( -- col ) - -: lines \ ( n -- ) - 0 do cr loop ; - -: waitkey - scr:curoff cr key drop scr:bs scr:bs scr:bs scr:curon ; - -: nextpage - scr:curoff scr:pos1 lcol@ spaces ." -->" key drop scr:bs scr:bs scr:bs scr:curon ; - -: .head \ ( -- ) - 4 scr:setcol scr:pos1 lcol@ spaces ; - -: .bullet \ ( -- ) - 0 scr:setcol scr:pos1 lcol@ spaces 0f emit space ; - -: .number \ ( n -- n ) - 0 scr:setcol scr:pos1 lcol@ spaces dup . 1+ - 2e emit space ; - -: .line \ ( -- ) - cr 0 scr:setcol scr:pos1 lcol@ 2+ spaces ; - -: .sub \ ( -- ) - 0 scr:setcol scr:pos1 lcol@ 2+ spaces ; - -wvariable xpos 1 xpos W! -wvariable ypos 1 ypos W! - -: pos! \ ( x y -- ) - ypos W! xpos W! ; - -: pos@ \ ( -- x y ) - xpos W@ ypos W@ ; - -: nextline - ypos W@ 1+ ypos W! ; - -: move \ ( x y -- ) - 1 delms pos@ scr:sety scr:setx ; - - -: btop0 \ ( -- ) - move 9f emit 6 0 do 90 emit loop 9e emit nextline ; - -: bbot0 \ ( -- ) - move 9d emit 6 0 do 90 emit loop 9c emit nextline ; - -: btop1 \ ( -- ) - move 2 spaces 9f emit 6 0 do 90 emit loop 9e emit nextline ; - -: bbot1 \ ( -- ) - move 2 spaces 9d emit 6 0 do 90 emit loop 9c emit nextline ; - -: bmid0 \ ( -- ) - move 91 emit ." COG " 95 emit 90 emit bb emit nextline - move 91 emit ." " 95 emit 90 emit aa emit nextline ; - -: bmid1 \ ( -- ) - move a9 emit 90 emit 94 emit ." COG " 91 emit nextline - move ba emit 90 emit 94 emit ." " 91 emit nextline ; - -: bmid2 \ ( -- ) - move a9 emit 90 emit 94 emit ." SER " - 95 emit 90 emit bb emit ." [TERMINAL]" nextline - move ba emit 90 emit 94 emit ." " 91 emit nextline ; - -: bmid3 \ ( -- ) - move a9 emit 90 emit 94 emit ." VGA " - 95 emit 90 emit bb emit ." [BELLATRIX]" nextline - move ba emit 90 emit 94 emit ." KBD " 91 emit nextline ; - -: bmid4 \ ( -- ) - move 91 emit ." COG " 95 emit 90 emit bb emit - ." Zeichenausgabekanal (emit)" nextline - move 91 emit ." " 95 emit 90 emit aa emit - ." Zeicheneingabekanal (key)" nextline ; - -: cog0 \ ( x y -- ) - 0 scr:setcol pos! btop0 bmid0 bbot0 ; - -: cog1 \ ( x y -- ) - 0 scr:setcol pos! btop1 bmid1 bbot1 ; - -: cog3 \ ( x y -- ) - 0 scr:setcol pos! btop0 bmid4 bbot0 ; - -: cogext \ ( x y -- ) - 0 scr:setcol pos! btop1 bmid2 bbot1 ; - -: cogint \ ( x y -- ) - 0 scr:setcol pos! btop1 bmid3 bbot1 ; - -: drvser - 0 scr:setcol 2dup cog0 swap a + swap cogext ; - -: drvint - 0 scr:setcol 2dup cog0 swap a + swap cogint ; - -: p0 - 0 scr:sline cls 5 lines - 14 1c scr:curoff scr:logo won c" woodz.wav" wav:start drop - key drop scr:curon wav:stop woff ; - -: i1 - 0 scr:sline cls 3 lines - .head ." Implementierungsvarianten" cr waitkey - .bullet ." Forth-Diamond: Master & Slaves = PropForth" waitkey cr - .sub ." Nachteil: Programmierung aller Treiber in Forth" waitkey cr - .bullet ." Forth-Spin: Forth mit SPIN-Interface" waitkey cr - .sub ." Vorteil: Nutzung fertiger Treiber" waitkey - .sub ." Nachteil: hoher Ressourcenverbrauch" waitkey cr - .bullet ." Forth-Funktionskomplexe: " cr cr - .sub ." Master = Forth" cr - .sub ." Slaves = Spin-Funktionsbibliotheken" cr - .sub ." Interface Forth <--> Spin = 8Bit-Bus" cr cr - nextpage ; - -: i2 - 0 scr:sline cls 3 lines - .head ." Implementierungsvarianten" cr cr - .bullet ." Forth-Funktionskomplexe: " cr cr - .sub ." Master = Forth" cr - .sub ." Slaves = Spin-Funktionsbibliotheken" cr - .sub ." Interface Forth <--> Spin = 8Bit-Bus" cr waitkey - .bullet ." Nachteile:" cr cr - .sub ." Spin --> Compiler noch auf Host" cr waitkey - .bullet ." Vorteile:" cr cr - .sub ." Code ist schon vorhanden (TriOS)" waitkey - .sub ." Gegenseitige Befruchtung von Forth & TriOS" waitkey - .sub ." Maximale Ressourcen für Forth im Master" waitkey - .sub ." Spin-Code kann später auch durch Forth ersetzt werden" cr - nextpage ; - -: i3 - 0 scr:sline cls 3 lines - .head ." Ablauf der Implementierung" cr waitkey - .bullet ." Ausgangslage: " cr cr - .sub ." Forth mit Terminalzugriff" cr waitkey - .bullet ." Plan:" cr cr - .sub ." 1. Busroutine um auf Slaves zuzugreifen" waitkey - .sub ." 2. Integration VGA/Keyboard/SD-Card" waitkey - .sub ." 3. Autostart" cr cr - nextpage ; - - -: p1 - 0 scr:sline cls 1 lines - .head ." Buszugriff" cr cr - .bullet ." ! ( n adr -- ) store - Wert im RAM speichern" cr - .bullet ." @ ( adr -- n ) fetch - Wert aus RAM lesen" cr waitkey - .bullet ." c! c@ p! p@ - Abwandlungen der Grundform" cr waitkey - .bullet ." s! ( c adr -- ) - Byte an Slave senden" cr - .bullet ." s@ ( adr -- c ) - Byte von Slave empfangen" cr waitkey - .bullet ." b! ( c -- ) - Byte an Bellatrix senden" cr - .bullet ." b@ ( -- c ) - Byte von Bellatrix empfangen" cr - .bullet ." a! ( c -- ) - Byte an Administra senden" cr - .bullet ." a@ ( -- c ) - Byte von Administra empfangen" cr cr - .head ." Beispiele :" cr cr - .bullet ." 01 b! - Bildschirm löschen" waitkey - .bullet ." : cls 01 b! ; " waitkey - .bullet ." : bel:key 0 b! 2 b! b@ ; \ ( -- key )" cr - nextpage ; - -: p2 - 0 scr:sline cls 5 lines - .head ." IO-Kanäle/Pipes" cr waitkey - 9 8 cog3 key drop - 9 c cog3 - .line ." ..." - 9 11 cog3 - cr cr - nextpage ; - -: p3 - 0 scr:sline cls 5 lines - .head ." Serieller Treiber" cr cr - 9 8 drvser - 9 c cog3 - .line ." ..." - 9 11 cog3 - cr cr - nextpage ; - -: p4 - 0 scr:sline cls 5 lines - .head ." VGA/Keyboard-Treiber" cr cr - 9 8 drvser - 9 c drvint - .line ." ..." - 9 11 cog3 - cr cr - nextpage ; - -: p5 - 0 scr:sline cls 5 lines - .head ." Treiber: VGA" cr cr - 9 8 drvint cr - .line ." : drv-vga " - .line ." begin" - .line ." key?" - .line ." if key b! then" - .line ." 0 until ;" - cr cr - nextpage ; - -: p6 - 0 scr:sline cls 5 lines - .head ." Treiber: Keyboard" cr cr - 9 8 drvint cr - .line ." : drv-key" - .line ." begin" - .line ." bel:keystat" - .line ." if bel:key emit then" - .line ." 0 until ;" - cr cr - nextpage ; - -: p7 - 0 scr:sline cls 5 lines - .head ." Treiber: Gesamt" cr cr - 9 8 drvint cr - .line ." : drv:int" - .line ." begin" - .line ." \ input --> vga/video" - .line ." 200 0 do key?" - .line ." if key b[ [b!] ]b then loop" - .line ." \ output <-- keyboard" - .line ." b[ [key?]" - .line ." if [key] [emit] then ]b" - .line ." 0 until ;" - cr cr - nextpage ; - -: p8 - 0 scr:sline cls 5 lines - .head ." Semaphoren" cr waitkey - .bullet ." : bel:key 0 b! 2 b! b@ ; \ ( -- key )" cr waitkey - .bullet ." : bel:key bon 0 b! 2 b! b@ boff ;" cr waitkey - .bullet ." [ ... ]" cr waitkey - .bullet ." b[ ... ]b" cr waitkey - .bullet ." : bel:key b[ 0 b! 2 b! b@ ]b ;" cr waitkey - .bullet ." : bel:key b[ 0 [b!] 2 [b!] [b@] ]b ;" cr waitkey - .bullet ." : bel:key 2 0 b[ [b!] [b!] [b@] ]b ;" cr cr - cr cr - nextpage ; - -: run - begin p0 i1 i2 i3 p1 p2 p3 p4 p5 p6 p7 p8 0 until ; - diff --git a/forth/wav.lib b/forth/wav.lib deleted file mode 100644 index 4198e23..0000000 --- a/forth/wav.lib +++ /dev/null @@ -1,54 +0,0 @@ - -hex - -ifnot: lib:wav -: lib:wav ; - -\ kommandoformen - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ [a!] [a@] ]b ; - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!l@l@ \ ( fkt -- l l ) -: adm:fkt!l@l@ b[ [a!] [a.l@] [a.l@] ]b ; - -\ wave-funktionen - -\ wav:start ( cstr -- err ) -ifnot: wav:start -: wav:start - 96 adm:fkt!s!b@ ; - -\ wav:stop ( -- ) -ifnot: wav:stop -: wav:stop - 97 adm:fkt!b@ drop ; - -\ wav:status ( -- status ) -ifnot: wav:status -: wav:status - 98 adm:fkt!b@ ; - -\ wav:leftvol ( vol -- ) -ifnot: wav:leftvol -: wav:leftvol - 99 adm:fkt!b! ; - -\ wav:rightvol ( vol -- ) -ifnot: wav:rightvol -: wav:rightvol - 9A adm:fkt!b! ; - -\ wav:pause ( -- ) -ifnot: wav:pause -: wav:pause - 9B adm:fkt!b@ drop ; - -\ wav:position ( -- len pos ) -ifnot: wav:position -: wav:position - 9C adm:fkt!l@l@ ; - diff --git a/forth/words.mod b/forth/words.mod deleted file mode 100644 index c0165f3..0000000 --- a/forth/words.mod +++ /dev/null @@ -1,16 +0,0 @@ - -fl - -\ _words ( cstr -- ) prints the words in the forth dictionary starting with cstr, 0 prints all -: _words lastnfa -begin - 2dup swap dup if npfx else 2drop -1 then - if dup .strname space then - nfa>next dup 0= -until 2drop cr ; - -\ words ( -- ) prints the words in the forth dictionary, if the pad has another string following, with that prefix -: words parsenw _xwords ; - -: t1 1000 0 do i . loop ; -: t2 1000 0 do ." test " loop ; diff --git a/forth/work/bload.f b/forth/work/bload.f deleted file mode 100644 index 8eee6eb..0000000 --- a/forth/work/bload.f +++ /dev/null @@ -1,23 +0,0 @@ - -fl - -hex - -\ metafunktionen - -: (bload) \ ( cstr -- ) - belatrix-code laden - - 52 adm:open .err \ datei öffnen - b[ - 0 [b!] 63 [b!] \ bella-loader starten - 10 0 do 06 [a!] [a@] [b!] loop \ header einlesen - 0A [a!] 0 [a.l!] \ 0 adm:seek - [b@] <8 [b@] or \ dateilänge empfangen - 0 do 06 [a!] [a@] [b!] loop \ datei senden - ]b - adm:close .err \ datei schließen -; - -: bload \ name ( -- ) - bellatrix-code laden - parsenw (bload) ; - diff --git a/forth/wplay.mod b/forth/wplay.mod deleted file mode 100644 index faf878f..0000000 --- a/forth/wplay.mod +++ /dev/null @@ -1,93 +0,0 @@ - -hex - -ifnot: mod:wplay -: mod:wplay ; - -\ kommandoformate - -ifnot: adm:fkt!s!b@ \ ( s fkt -- b ) -: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ; - -ifnot: adm:fkt!b!b@ \ ( b fkt -- b ) -: adm:fkt!b!b@ b[ [a!] [a!] [a@] ]b ; - -ifnot: adm:fkt!b@ \ ( fkt -- b ) -: adm:fkt!b@ b[ [a!] [a@] ]b ; - -\ wave-funktionen - -\ wav:start ( cstr -- err ) -ifnot: wav:start -: wav:start - 96 adm:fkt!s!b@ ; - -\ wav:stop ( -- ) -ifnot: wav:stop -: wav:stop - 97 adm:fkt!b@ drop ; - -\ wav:status ( -- status ) -ifnot: wav:status -: wav:status - 98 adm:fkt!b@ ; - -\ adm-funktionen - -\ adm:setsound ( sfkt -- sstat ) - soundsystem verwalten -\ sfkt: -\ 0: hss-engine abschalten -\ 1: hss-engine anschalten -\ 2: dac-engine abschalten -\ 3: dac-engine anschalten -\ sstat - status/cognr startvorgang -ifnot: adm:setsound -: adm:setsound - 5C adm:fkt!b!b@ ; - - -\ metafunktionen - -\ won -ifnot: won -: won - 0 adm:setsound 3 adm:setsound 2drop ; - -\ woff -ifnot: woff -: woff - 2 adm:setsound 1 adm:setsound 2drop ; - -\ wend? ( -- t/f ) -ifnot: wend? -: wend? - begin 50 delms key? dup if key drop then wav:status 0= or until ; - -\ (wplay) ( cstr -- ) -ifnot: (wplay) -: (wplay) \ ( cstr -- ) - ." Datei : " dup .cstr cr wav:start .err wend? wav:stop ; - -\ wplay name ( -- ) -ifnot: wplay -: wplay - won parsenw (wplay) woff ; - -\ files? ( -- cnt ) - anzahl dateien im dir -ifnot: files? -: files? - adm:diropen - 0 begin adm:nextfile swap 1+ swap 0= until 3 - padbl ; - -\ filenr? ( nr -- ) -ifnot: filenr? -: filenr? - adm:diropen - 0 do adm:nextfile drop loop ; - -\ wdirplay ( -- ) - gesamtes verzeichnis abspielen -\ im verzeichnis dürfen nur wav-dateien sein! -ifnot: wdirplay -: wdirplay - won files? dup ." Dateien : " . cr - 0 do i dup 1 + . 3 + filenr? pad (wplay) loop padbl woff ; diff --git a/installation.txt b/installation.txt deleted file mode 100644 index 09986d7..0000000 --- a/installation.txt +++ /dev/null @@ -1,220 +0,0 @@ - -1. Installation des Grundsystems -2. Forth im Ãœberblick -3. Regime im Ãœberblick - - - - -1. Installation des Grundsystems: - -1. Flashen der drei EEPROMS: - -\flash\administra\admflash.spin --> Administra -\flash\bellatrix\belflash.spin --> Bellatrix -\flash\regnatix\regflash.spin --> Regnatix - -2. Der Schalter bleibt ab jetzt auf Regnatix stehen. Ein Terminalprogramm (ich verwende Tera Term) starten und 57600 Baud auf die Schnittstelle vom Hive einstellen. Nach einem Reset meldet sich das Propforth im Terminal. Datei "system\basics.mod" in einem Editor öffnen, alles markieren, kopieren und im Terminal einfügen. Der Quelltext wird jetzt im Forth compiliert. - -3. Im Terminalfenster, aso im Forth, dass Kommendo "saveforth" eingeben. Damit wird das gesamte Forthsystem mit der gerade neu compilierten Erweiterungen wieder im EEPROM als Image gespeichert. - -Nach einem Reset sollte sich das Forth jetzt komplett mit seinem Prompt sowohl auf dem angeschlossenen VGA-Monitor, als auch im Terminal melden. Im Prinzip benötigen wir nun das Terminalprogramm nicht mehr und können direkt am Hive arbeiten. Später, wenn man in Forth programmiert, ist die vorhandene Terminalschnittstelle aber manchmal sehr nützlich. - -Erstellung einer Forth-SDCard: - -Im Prinzip kann jede normale FAT16/32 Karte verwendet werden. Lange Dateinamen werden nicht verwendet, Unterverzeichnisse sind kein Problem. Es ist sinnvoll, alle Dateien aus dem Verzeichnis "bin\sd-card-basic\" auf die SD-Karte zu kopieren. - -Das Verzeichnis "system" hat eine besondere Bedeutung: Hier sollten sich die Tools, Erweiterungen und Bibliotheken befinden. Mit dem Kommando "sys name.f" kann aus jedem anderen Verzeichnis ohne Wechsel die Datei name.f geladen und compiliert werden. - -Systemstart: - -Beim Systemstart wird immer das Forth aus dem EEPROM gestartet. So kann, wie mit den klassischen Homecomputern, sofort unkompliziert programmiert werden. Neben dem Forth gibt es im TriOS noch ein in Spin programmiertes Betriebssystem, welches sich dem Benutzer durch den Kommandointerpreter Regime präsentiert. Aus dem Forth kann diese mit dem Kommando "regime" gestartet werden. Im Gegenzug kann im laufenden Regime mit dem Kommando "forth" wieder zur integrierten Programmiersprache gewechselt werden. - -2. Forth im Ãœberblick: - -Einige nützliche Kommandos befinden sich in dem Modul tools.mod. In den meisten Fällen ist es sinnvoll dieses Modul mit der Befehlssequenz "sys tools.mod saveforth" fest im Forth einzubinden. - -Wichtige Tastencodes: - -[ESC]-1 Screen 1, COG 1 -[ESC]-2 Screen 2, COG 2 -[ESC]-3 Screen 3, COG 3 -[ESC]-b Break, Reset der aktuellen COG -[ESC]-r Reset, Neustart Regnatix - -Wichtige Kommandos: - -load - Datei laden und comilieren, Ausgabe Screen 3 -dload - wie load, aber Ausgabe aktueller Screen -sys - Datei aus sys-Verzeichnis laden und compilieren -ls - Dateiliste -lsl - Dateiliste- Long-Format -cd - in Verzeichniss wechseln -mount - SD-Card einbinden -unmount - SD-Card freigeben -words - Anzeige Wöterbuch -mod? - (tools.mod) Anzeige compilierter Erweiterungen -lib? - (tools.mod) Anzeige compilierter Bibliotheken -cog? - (tools.mod) Anzeige COG-Liste -cat - (tools.mod) Ausgabe einer Textdatei -less - (tools.mod) Zeilenweise Textausgabe -dm? - (tools.mod) Anzeige der Systemverzeichnisse -regime - CLI starten -aload - Adminsitra-Code laden -bload - Bellatrix-Code laden -spin - Spin-Programm starten - -Wichtige Dateien: - -Die Dateien *.mod und *.lib enthalten ganz normale Forth-Quelltexte. Damit hat man schnell eine Ãœbersicht über die grobe Funktion dieser Quellen: Lib's sind halt reine Sammlungen von Worten zu einer bestimmten Funktionsgruppe und MOD's sind mehr oder weniger fertige und abgeschlossene Programme. Ein Beispiel: - -Die Datei hss.lib enthält Worte um die HSS-Funktionen von Administra anzusprechen. Mit diesen Funktionen kann man nun ein Modul (Programm) wie einen HSS-Soundplayer schreiben. - -Im Gegensatz dazu die Datei splay.mod: Mit diesem Modul wird ein HSS-Soundplayer ins System eingefügt, welcher Funktionen aus der hss.lib verwendet. - -Die Datei benötigt man aber mehr oder weniger nur zur Entwicklung, ein fertiges Modul wie splay.mod enthält dann schon die die entsprechenden HSS-Worte die benötigt werden. - -Die ifnot: ... Anweisung sorgt dabei dafür, dass keine Funktionen doppelt in das Wörterbuch compiliert werden. Das ist quasi ein verteiltes und fein granuliertes Konzept analog zu einer DLL. Die Forth-Version funktioniert dabei aber im Gegensatz zu DLL's nicht auf Bibliotheks-, sondern auf Funktionsebene. - -*.mod Module, Forth-Erweiterungen für das System -*.lib Bibliotheken, grundlegende Wortsammlungen -*.adm Administra-Code (z.Bsp. admsid.adm für SIDCog-Code) -*.bel Bellatrix-Code -*.bin Spin-Code, im Normalfall zur Ausführung in Regnatix - -basics.f - (mod:basics) Hive-Core für PropForth -ari.lib - (lib:ari) Zusätzliche arithmetische Funktionen -cog.lib - (lib:cog) Zusätzliche COG-Funktionen -adm.lib - (lib:adm) Administra-Chipmanagment-Funktionen -hss.lib - (lib:hss) Bibliothek für Hydra-Sound-System -sfx.lib - (lib:sfx) Soundeffekt-Bibliothek -wav.lib - (lib:wav) Wave-Soundbibliothek - -bel.lib - (lib:bel) Bellatrix-Chipmanagment-Funktionen -key.lib - (lib:key) Tastatur-Bibliothek -scr.lib - (lib:scr) Screen-Bibliothek -sd0.lib - (lib:sd0) SD-Card-Bibliothek - -debug.f - Nützliche Worte zur Fehlersuche und Entwicklung -rom.f - EEPROM-Dateisystem -tools.f - Nützliche Tools (cat, less, dm?...) -hplay.f - HSS-Player -wplay.f - WAV-Player -splay.f - SID-Player - -Administra-Codedateien im SYS-Verzeichnis: - -admled.adm Testprogramm - HBeat-LED blinken lassen -admsid.adm SidCog-Version (wird von splay benötigt) -admsys.adm Standardcode für ADM mit SD/HSS/WAV -admym.adm Yamaha-Soundchip-Version -aterm96.adm Mini-OS für Administra (Testzwecke) - -Reset-Fehlercodes: - -0011FFFF - stack overflow -0012FFFF - return stack overflow -0021FFFF - stack underflow -0022FFFF - return stack underflow -8100FFFF - no free cogs -8200FFFF - no free main memory -8400FFFF - fl no free main memory -8500FFFF - no free cog memory -8800FFFF - eeprom write error -9000FFFF - eeprom read error - -.err-Fehlercodes: - -0 no error -1 fsys unmounted -2 fsys corrupted -3 fsys unsupported -4 not found -5 file not found -6 dir not found -7 file read only -8 end of file -9 end of directory -10 end of root -11 dir is full -12 dir is not empty -13 checksum error -14 reboot error -15 bpb corrupt -16 fsi corrupt -17 dir already exist -18 file already exist -19 out of disk free space -20 disk io error -21 command not found -22 timeout -23 parameter error - -3. Regime im Ãœberblick - -Da wir ja drei verschiedene Teilsystem in unserem Computer haben, muss Regime wissen, für welchen Chip eine ausführbare Datei bestimmt ist. Den Typ ausführbarer Dateien kann Regime automatisch anhand der Dateinamenserweiterung unterscheiden: - -*.bin Regnatix-Code -*.bel Bellatrix-Code -*.adm Administra-Code - -Dabei genügt es, den Namen ohne Erweiterung einzugeben. Dennoch kann es vorkommen, das man eine normale Spin-Datei mit einer beliebigen Erweiterung gespeichert hat. Diese Datei kann man dann mit den Kommandos rload, aload oder bload ganz gezielt in einen Chip laden. - - - bin/adm/bel-datei wird gestartet -mount - SD-aufwerk mounten -unmount - SD-Laufwerk freigeben -dir wh - Verzeichnis anzeigen -type - Anzeige einer Textdatei -aload - Administra-Code laden -bload - Bellatrix-Code laden -rload - Regnatix-Code laden -del - Datei löschen -cls - Bildschirm löschen -free - Anzeige des freien Speichers auf SD-Card -attrib ashr - Dateiattribute ändern -cd - Verzeichnis wechseln -mkdir - Verzeichnis erstellen -rename - datei/verzeichnis umbenennen -format - SD-Laufwerk formatieren -reboot - Hive neu starten -sysinfo - Systeminformationen -color <0..7> - Farbe wählen -cogs - Belegung der COG's anzeigen -dmlist - Anzeige der Verzeichnis-Marker -dm - Marker-Verzeichnis wechseln -dmset - Marker setzen -dmclr - Marker löschen -forth - Forth starten - -Marker: -r - Marker für Root-Verzeichnis -s - Marker für System-Verzeichnis -u - Marker für User-Verzeichnis -a/b/c - Benutzerdefinierte Verzeichnismarker - -Die r, s, u-Marker werden vom System automatisch gesetzt und intern verwendet. - -RAMDISK: - -xload - Datei von SD-Laufwerk in RAM laden -xsave - Datei aus RAM auf SD-Laufwerk speichern -xdir - Verzeichnis im RAM anzeigen -xrename - Datei im RAM umbenennen -xdel - Datei im RAM löschen -xtype - Textdatei im RAM anzeigen - -EXTERNE KOMMANDOS: - -Die meisten Kommandozeilentools zeigen mit dem Parameter /? eine Liste der Optionen an. - -sysconf - Systemeinstellungen -hplay - HSS-Player -wplay - WAV-Player -splay - SID-Player -yplay - Yamaha-Soundchip-Player -sfxtool - HSS-Soundeffekte erstellen - -vga.bin - VGA 1024 x 768 Pixel, 64 x 24 Zeichen -htext.bin - VGA 1024 x 768 Pixel, 128 x 48 Zeichen -tv.bin - TV-Textmodus 40 x 13 Zeichen - diff --git a/lizenz.txt b/lizenz.txt deleted file mode 100644 index c661b7f..0000000 --- a/lizenz.txt +++ /dev/null @@ -1,23 +0,0 @@ - -Hive-Project -------------------------------------------------------------------------- -Der Hive ist ein Open-Hardware und Free-Software DIY-Computersystem auf -der Basis von drei Parallax P8X32 "Propeller" Mikrocontrollern. - - -Lizenze -------------------------------------------------------------------------- -Das Betriebssystem TriOS steht unter MIT-Lizenz. Die Schaltung und das -Board-Layout ist unter Creative-Commons CC-BY-SA 3.0 lizensiert. - -MIT-Lizenz: http://www.opensource.org/licenses/mit-license.php -CC-BY-SA 3.0: http://creativecommons.org/licenses/by-sa/3.0/de/ - -Informationen zum Projekt -------------------------------------------------------------------------- -http://hive-project.de - - -Urheberrechtsangabe -------------------------------------------------------------------------- -Copyright (c) 2009 Ingo Kripahle \ No newline at end of file diff --git a/logbuch.txt b/logbuch.txt deleted file mode 100644 index d3b8e97..0000000 --- a/logbuch.txt +++ /dev/null @@ -1,216 +0,0 @@ -09.11.2011-dr235 -- fehler in regflash.spin behoben, konfiguration ohne forth konnte nicht compiliert werden -- standartkonfiguration ist jetzt ohne forth, ist einfacher für den einstieg -- div. demos entfernt, diese werden später getrennt in einer toolbox-serie veröffentlicht - -06.11.2011-dr235 -- fehlersuche zum problem mit dem neuen bella-loader: einige bel-dateien (guidemo, 4-boing) wurden nicht korrekt initialisiert, also starteten nicht sauber. parameter und ladevorgang ist korrekt, ursache ist wahrscheinlich eine falsche initialisierung der stackwerte im pasm-teil des loaders. als lösung kann man diese bel-dateien als eeprom-image abspeichern, diese starten korrekt. - -23.04.2011-dr235 -- integration von propforth in trios - -15-04-2011-dr235 -- flash-tool/rom: damit kann unter anderem eine bin-datei (z. bsp. basic) in den hi-rom (64k eeprom erforderlich!) gespeichert und mit rom gestartet werden -- übernahme der rtc-routinen von stephan -- time-kommando: anzeige/änderung datum/zeit -- perplex: experimentelles tool für plexbus (scan/open/close/get/put) -- fterm: primitiv-terminal für forth-hive - -18-09-2010-dr235 -- regime: free zeigt jetzt auch die speicherbelegung des eram an -- speicherverwaltung/ramdisk integriert (beispielcode siehe eram.spin & regime.spin) -- eram.bin kann jetzt auch mit ramdisk umgehen -- regime: neue kommandos für ramdisk -- egalisierung der namen für den ramzugriff (älterer code muß leicht angepasst werden) -- user- und systemmode für ramzugriff eingefügt -- erste version eine make-batch um das gesamte system zu kompilieren (nur grundsystem) -- änderung zur ios: da bst eine pfadliste zu bibliotheksordnern unterstützt, liegt (soweit das möglich ist) die ios nun nur noch unter system\regnatix - -WICHTIG: Pfad zur ios.spin im bst einstellen - -23-08-2010-dr040 -- integration ay-emulator (admay.adm) und yplay - -19-07-2010-dr235 -- booten eines alternativen administra-codes: befindet sich auf der karte in der root eine datei "adm.sys", so wird diese datei automatisch in administra geladen - -11-07-2010-dr235 -- integration sid1/2-funktionen in admsid/ios -- anpassung sid-demo von ahle2 als regnatix-code (verzeichnis demo) -- diverse graphics-spielereien (verzeichnis demo) -- sysconf /af - administra neu booten (admflash.adm wird dadurch überflüssig) - -27-06-2010-dr085/235 -- admin mountet nun automatisch nach einem boot - -26-06-2010-dr235 -- div. demos zugefügt -- shooter angepasst und eingefügt - -20-06-2010-dr235 -- erste lauffähige SID-Player-Version für die Kommandozeile (splay) - -14-06-2010-dr085/235 -- Semaphoren in FATEngine korrekt eingesetzt -- Abfrage des Volume-Labels korrigiert - -10-06-2010-dr235 -- Kommando "ramtest" zugefügt - -09-06-2010-dr085 -- Fehler in Administra-Bootfunktion behoben - ------------------------------------------------------------------------------------------------ - -23-04-2011-dr235 - -Ein neuer Meilenstein: PropForth ist jetzt in TriOS integriert. Als Nebeneffekt starten nun wieder, wie bei meiner ersten SpinOS-Version, alle drei Chips ihren initialen Code aus ihrem EEPROM und nicht mehr vom SD-Laufwerk. Damit gibt es vom Einschalten bis zum Forth-Prompt quasi keine fühlbare Bootzeit mehr. So gehört es sich für einen richtigen Homecomputer. Es ist nun möglich, unmittelbar nach dem Einschalten sofort zu programmieren. Erst wenn man zu Regime wechselt wird kurz reg.sys nachgeladen. Aber selbst die Ladezeiten sind nun durch Verwendung des SD-Blocktransfer erfreulich kurz. - -Obwohl das Grundsystem vom Forth den halben hRAM belegt, ist es als genormte Sprache doch eine wunderbare Geschichte im Hive. Viele der Ressourcen sind jetzt schon problemlos in Forth nutzbar und man kann sehr unkompliziert experimentieren. - - -02-10-2010-dr235 - -Speicherverwaltung: - -In dieser Version ist eine erste Beta-Version der Speicherverwaltung des externen RAM's enthalten. Der Speicher kann dabei in einem einfachen oder einem strukturierten Modus verwendet werden. Klingt kompliziert, ist aber ganz einfach. - -Einfacher Modus: - -Hierbei kann ein Programm auf den eRAM über die IOS-Routinen ios.ram_* zugreifen. Wahlweise kann der Speicher im Systemmode direkt von 0 bis $07FFFF angesprochen werden, oder nur der Userbereich. Im Systemmodus ist darauf zu achten, dass eine eventuell vorhandene Ramdisk und die Systemvariablen nicht überschrieben werden, man sollte also wissen was man tut... ;) Die Ramdisk wird ab der physischen Adresse 0 als verkettete Liste verwaltet, die Systemvariablen befinden sich ab $07FFFF abwärts. - -ios.ram_wrbyte(ios#sysmod,0,ios#MAGIC) -- Schreibt den Wert 0 in die Systemvariable, um einen Kaltstart auszulösen. - -ios.ram_wrbyte(ios#sysmod,$20,$100) -- Schreibt den Wert $20 an die physische Adresse $100 im eRAM. - -Da es nun mühsam ist in einem kleinen Code solche Konflikte mit dem Systemspeicher zu vermeiden, gibt es den Usermodus. Im Usermodus wird nur genau jener freie Speicher adressiert, welcher sich zwischen Ramdisk und Systemvariablen befindet. In diesem Fall ist die Adressierung also virtualisiert. - -ios.ram_wrbyte(ios#usrmod,0,$100) -- Schreibt den Wert 0 an die Adresse $100 im Userspeicher! - -In Regime kann man mit dem Kommando "free" jetzt auch die wichtigsten Systemvariablen der Speicherverwaltung anzeigen. - -RBAS -- erste physische Adresse des Userspeichers - -REND -- Physische Adresse der letzten freien Speicherstelle des Userspeichers. - -USER -- Grösse des Userspeichers (REND - RBAS). - -RAMDRV -0 - Ramdisk ist nicht initialisiert -1 - Ramdisk ist initialisiert - -SYSVAR -- Erste physische Adresse der Systemvariablen. - -Noch genauer kann man sich die Speicherbelegung mit dem Tool "eram" anschauen. Nur ein paar Beispiele: - -"d" Anzeige des Speichers. Es werden zwei Adressspalten angezeigt. Die zweite schwarze Adresse in jeder Zeile zeigt die physische Adresse, die erste grüne Adresse die virtuelle Adresse im Userspeicher. Man kann sehr gut erkennen, ab welcher Adrese der Userbereich anfängt und wo er endet. - -"d 100" Anzeige ab physischer Adresse $100 - -"d bas" Anzeige vom Start des Userspeichers. - -"n" Anzeige inkrementell fortsetzen - -Die Nutzung des Userspeichers ist sehr einfach. Es sind dabei nur folgende Regeln zu beachten: - -Man muss selbst darauf achten die Speichergrenzen nicht zu überschreiten. Bei Überschreitung kann aber nichts passieren - die IOS-Routinen brechen einfach ab, allerdings werden die eigenen Daten halt nicht korrekt verarbeitet. Es werden also die Systemvariablen und die Daten in der Ramdisk geschützt. -Der Userbereich im eRAM ist nur zur Laufzeit der Anwendung gültig. Wird die Anwendung beendet, so kann durch Regime oder eine andere Anwendung mit den Daten der Ramdisk gearbeitet werden, wodurch sich der physische Bereich des Userbereiches verändert. Wer also residente Daten über die Laufzeit der Anwendung hinaus braucht, muss im strukturierten Modus mit der Ramdisk arbeiten. -In einer Anwendung nicht den einfachen oder strukturierten Modus mischen - das gibt Chaos, wenn man nicht ganz genau aufpasst - -Ansonsten kann man wie gehabt die schon bekannten IOS-Routinen verwenden, einzig der Übergabeparameter zur Wahl des System- oder Usermodus sind hinzugekommen. Als Beispiel kann man sich die Soundplayer anschauen, die ihre Dateiliste im Userspeicher ablegen. - -Strukturierter Modus: - -Was ist aber, wenn wir einen kleinen Texteditor schreiben wollen, der seine Textdaten resident im eRAM speichern kann? Ich möchte also den Texteditor verlassen können, um in Regime zum Beispiel einen Assembler aufzurufen, welcher den Text dann assembliert. Darauf folgend möchte ich meinen Texteditor wieder starten und an dem Text weiter arbeiten. Dafür muss es meiner Anwendung - dem Textprogramm - möglich sein, einen Speicherbereich im eRAM zu reservieren, der von System und anderen Anwendungen respektvoll behandelt wird. - -Gedacht, getan: Im strukturierten Modus wird der Speicher in Form einer Ramdisk verwaltet. Die Dateien/Daten können über ihren Namen angesprochen werden. Es kann mit put & get sequentiell, oder mit read & write direkt adressierbar auf die Daten in der Datei zugegriffen werden. - -Als erstes praktisches Beispiel mögen die neuen Kommandos in Regime selbst dienen, mit denen man die Ramdisk verwalten kann: -Neue Regime-Kommandos: - -xload - datei in ram laden -xsave - datei aus ram speichern -xdir - verzeichnis im ram anzeigen -xrename - datei im ram umbenennen -xdel - datei im ram löschen -xtype - text im ram anzeigen - -So ist es also möglich, sich in der Kommandozeile anzuschauen, welche residenten Daten die Programme aktuell angelegt haben. Sofern es Textdaten sind, können diese Daten auch einafch angezeigt werden. - -Die Speicherverwaltung ist allerdings noch sehr experimentell - was bedeutet, dass wohl noch einige Bugs drin sein dürften. :) - -MAKE.BAT - -Diese Batchdatei im obersten Verzeichnis kompiliert das Grundsystem, bestehend aus den drei Flashdateien und den grundlegenden Kommandos im Systemverzeichnis. Ist ein erster Versuch. Was noch fehlt ist ein Fehlerlog und vielleicht noch die anderen Programme. - -09-06-2010-dr235 - -Nach nur zwei Tagen hat drohne085 (frida) das Geheimnis um die Bootroutine gelöst: Die Ursache lag in einer von der FATEngine verwendeten Semaphore, welche fest auf den Lock 0 "verdrahtet" war. Diese Semaphore wird an diversen Stellen in der Engine verwendet, wurde aber beim Bootvorgang nicht gelöscht oder freigegeben! Gedacht war sie, um den Bus zur SD-Card bei einem Zugriff zu verriegeln, falls mehrere Instanzen der Engine laufen, und gleichzeitig zugreifen wollen. Somit hat sich die Engine quasi selbst verriegelt und nach dem Bootvorgang als "neue Instanz" nun auch keinen Zugriff mehr - so schön kann praktische Parallelverarbeitung sein... ;) - -Hier nun eine neue und aktuelle Version mit einer temporären funktionierenden Lösung des Problems. - -Im System-Ordner gibt es jetzt folgende ausführbare Administra-Dateien: - -admflash.adm Standard-Flash, welches auch im EEProm gespeichert ist -admini.adm Mini-Flash ohne Sound, nor SDCard + Managment-Routinen -admled.adm Das Heartbeat-LED-Testprogramm zum direkten laden -aterm96.adm Die leicht modifizierte Kommandozeile vom Programmierer der FATEngine. Mit - diesem Administra-Code kann man direkt über die Hostschnittstelle (9600 Baud) - mit dem Chip kommunizieren. Dokumentation der Kommandos findet man im - Verzeichnis "komponenten/fat/fatengine beta" - - -07-06-2010-dr235 - -Hier der aktuelle Stand von TriOS. Momentan kämpfe ich an einem -Komplexfehler mit dem Bootloader von Administra. Das Problem ist recht -einfach zu reproduzieren, aber leider (für mich) nur schwer zu -erfasen: Die verwendete FATEngine besitzt eine Bootfunktion um einen -neuen BIN-Objektcode in den Propeller zu laden. Dieser Code funktioniert -auch teilweise. So kann man das Administra-Bios selbst laden und dann -auch per Regime-Kommandos verwenden: Die Kommandos "cogs" und "sysinfo" -sprechen Administra-Funktionen an, welche auch korrekt ausgeführt werden. -Das Problem: Nach dem Bootprozess kann man keine SD-Card mehr mounten. - -Es ist auch möglich den Fehler noch weiter einzugrenzen: Wenn man die -originale FATEngine (im Verzeichnis komponenten/fat) vom Host direkt in -Administra startet, meldet sich diese in Form einer einfachen Kommando- -zeile per Hostschnittstelle. Versucht man dort eine erzeugte BIN-Datei -genau dieser Kommandozeile (demo.spin) zu booten, so hat man das gleiche -Ergebnis. - -Verzeichnisstruktur: - -bin - BIN-Dateien für die Flash's und die SD-Card -doku - -flash - Quelltexte für die Software in den EEProms -system - Quelltext für ausführbare BIN-Dateien -zubehör - Kleine Zusatzprogramme (StarTracker, Boulder Dash...) -komponenten - Div. verwendete Objekte (FATEngine, SIDCog...) - -Installation: - -1. Flashen der drei EEProms mit den BIN-Dateien aus "bin/flash" oder - über das Propellertool aus den Quellen "flash". - -2. SD-Card erstellen: Einfach alles aus "bin/sd-card" auf eine FAT16/32 - Karte kopieren. - -Das System bootet Regnatix und Bellatrix beim Systemstart aus den Dateien -"adm.sys", "reg.sys" bzw. "bel.sys". Diese Dateien können auch das Hidden-Bit gesetzt -haben. Externe Kommandos bzw. ausführbare BIN-Dateien werden im aktuellen -UND im System-Verzeichnis gesucht - alle Systemkommandos können also in das -System-Verzeichnis kopiert werden. - -Hilfe gibt es meist über das Kommando "help" oder den Parameter "/h". - - - - diff --git a/make.bat b/make.bat deleted file mode 100644 index 76c6aa8..0000000 --- a/make.bat +++ /dev/null @@ -1,127 +0,0 @@ -REM Pfade -set sd=".\bin\sd-card-basic" -set sd-sys=".\bin\sd-card-basic\system" -set flash=".\bin\flash" -set libpath="C:\Programme\Parallax Inc\Propeller Tool v1.2.7 (R2)" - -REM ---------------------------------------------------------------- -REM Flashdateien erzeugen -REM --> \bin\flash - -bstc -L %libpath% -b -O a .\flash\administra\admflash.spin -move admflash.binary %flash% - -bstc -L %libpath% -b -O a .\flash\bellatrix\belflash.spin -copy belflash.binary %flash% -rename belflash.binary vga.bel -move vga.bel %sd-sys% - -bstc -L %libpath% -b -O a .\flash\regnatix\regflash.spin -move regflash.binary %flash% - - - -REM ---------------------------------------------------------------- -REM Startdateien erzeugen -REM reg.sys (Regime) -REM bel.sys (VGA) -REM --> \bin\sd-card-basic\ - -bstc -L %libpath% -b -O a .\system\regnatix\regime.spin -rename regime.binary reg.sys -move reg.sys %sd% - -bstc -L %libpath% -b -O a .\flash\bellatrix\belflash.spin -rename belflash.binary bel.sys -move bel.sys %sd% - -REM ---------------------------------------------------------------- -REM Systemdateien erzeugen -REM - div. externe Kommandos -REM - div. Systemdateien (Farbtabellen usw.) -REM --> \bin\sd-card-basic\system\ - -bstc -L %libpath% -b -O a .\system\regnatix\admtest.spin -rename admtest.binary admtest.bin -move admtest.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\basic.spin -rename basic.binary basic.bin -move basic.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\beltest.spin -rename beltest.binary beltest.bin -move beltest.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\charmap.spin -rename charmap.binary charmap.bin -move charmap.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\eram.spin -rename eram.binary eram.bin -move eram.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\flash.spin -rename flash.binary flash.bin -move flash.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\fterm.spin -rename fterm.binary fterm.bin -move fterm.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\hplay.spin -rename hplay.binary hplay.bin -move hplay.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\perplex.spin -rename perplex.binary perplex.bin -move perplex.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\keycode.spin -rename keycode.binary keycode.bin -move keycode.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\ramtest.spin -rename ramtest.binary ramtest.bin -move ramtest.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\rom.spin -rename rom.binary rom.bin -move rom.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\sfxtool.spin -rename sfxtool.binary sfxtool.bin -move sfxtool.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\splay.spin -rename splay.binary splay.bin -move splay.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\sysconf.spin -rename sysconf.binary sysconf.bin -move sysconf.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\time.spin -rename time.binary time.bin -move time.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\wplay.spin -rename wplay.binary wplay.bin -move wplay.bin %sd-sys% - -bstc -L %libpath% -b -O a .\system\regnatix\yplay.spin -rename yplay.binary yplay.bin -move yplay.bin %sd-sys% - -REM ---------------------------------------------------------------- -REM Forthdateien kopieren - -copy .\forth\*.* %sd-sys% - - -REM ---------------------------------------------------------------- -REM Zusatzdateien kopieren - -copy .\system\sonstiges %sd-sys% - -pause diff --git a/system/administra/admini/admflash-fat.spin b/system/administra/admini/admflash-fat.spin deleted file mode 100644 index 02dd4f9..0000000 Binary files a/system/administra/admini/admflash-fat.spin and /dev/null differ diff --git a/system/administra/admini/admflash-rtc.spin b/system/administra/admini/admflash-rtc.spin deleted file mode 100644 index 8cd6854..0000000 Binary files a/system/administra/admini/admflash-rtc.spin and /dev/null differ diff --git a/system/administra/admini/admini.spin b/system/administra/admini/admini.spin deleted file mode 100644 index d160d16..0000000 Binary files a/system/administra/admini/admini.spin and /dev/null differ diff --git a/system/administra/admini/pterm.spin b/system/administra/admini/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/system/administra/admini/pterm.spin and /dev/null differ diff --git a/system/administra/admsid/CombinedWaveforms.bin b/system/administra/admsid/CombinedWaveforms.bin deleted file mode 100644 index d95fe68..0000000 Binary files a/system/administra/admsid/CombinedWaveforms.bin and /dev/null differ diff --git a/system/administra/admsid/admflash-fat.spin b/system/administra/admsid/admflash-fat.spin deleted file mode 100644 index 8cfc5fe..0000000 Binary files a/system/administra/admsid/admflash-fat.spin and /dev/null differ diff --git a/system/administra/admsid/admflash-rtc.spin b/system/administra/admsid/admflash-rtc.spin deleted file mode 100644 index 8cd6854..0000000 Binary files a/system/administra/admsid/admflash-rtc.spin and /dev/null differ diff --git a/system/administra/admsid/admflash-sid.spin b/system/administra/admsid/admflash-sid.spin deleted file mode 100644 index ae78d06..0000000 Binary files a/system/administra/admsid/admflash-sid.spin and /dev/null differ diff --git a/system/administra/admsid/admsid.spin b/system/administra/admsid/admsid.spin deleted file mode 100644 index 664ef91..0000000 Binary files a/system/administra/admsid/admsid.spin and /dev/null differ diff --git a/system/administra/admsid/pterm.spin b/system/administra/admsid/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/system/administra/admsid/pterm.spin and /dev/null differ diff --git a/system/administra/admym/AYcog_V0-22.spin b/system/administra/admym/AYcog_V0-22.spin deleted file mode 100644 index f46e5eb..0000000 Binary files a/system/administra/admym/AYcog_V0-22.spin and /dev/null differ diff --git a/system/administra/admym/admflash-fat.spin b/system/administra/admym/admflash-fat.spin deleted file mode 100644 index 5dff0c1..0000000 Binary files a/system/administra/admym/admflash-fat.spin and /dev/null differ diff --git a/system/administra/admym/admflash-rtc.spin b/system/administra/admym/admflash-rtc.spin deleted file mode 100644 index 8cd6854..0000000 Binary files a/system/administra/admym/admflash-rtc.spin and /dev/null differ diff --git a/system/administra/admym/admym.spin b/system/administra/admym/admym.spin deleted file mode 100644 index bf301ae..0000000 Binary files a/system/administra/admym/admym.spin and /dev/null differ diff --git a/system/administra/admym/ios.spin b/system/administra/admym/ios.spin deleted file mode 100644 index d8fc8fe..0000000 Binary files a/system/administra/admym/ios.spin and /dev/null differ diff --git a/system/administra/admym/pterm.spin b/system/administra/admym/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/system/administra/admym/pterm.spin and /dev/null differ diff --git a/system/administra/aterm/COMEngine.spin b/system/administra/aterm/COMEngine.spin deleted file mode 100644 index bdd205a..0000000 Binary files a/system/administra/aterm/COMEngine.spin and /dev/null differ diff --git a/system/administra/aterm/Read Me.rtf b/system/administra/aterm/Read Me.rtf deleted file mode 100644 index 8e60f75..0000000 --- a/system/administra/aterm/Read Me.rtf +++ /dev/null @@ -1,272 +0,0 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} -{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} -{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} -{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f379\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f380\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} -{\f382\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f383\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f386\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f387\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} -{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} -{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;} -{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} -{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} -{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; -\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \f31506\fs22 }{\*\defpap -\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 -\af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 \styrsid3755876 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31506\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}} -{\*\rsidtbl \rsid410870\rsid1726074\rsid3366185\rsid3755876\rsid3833722\rsid4740689\rsid5992232\rsid6245947\rsid8655232\rsid8809290\rsid11759436\rsid14891351\rsid15496811}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0 -\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Kwabena W. Agyeman}{\operator Kwabena W. Agyeman}{\creatim\yr2010\mo1\dy8\hr16\min46}{\revtim\yr2010\mo1\dy8\hr17\min52}{\version5}{\edmins66}{\nofpages3}{\nofwords944}{\nofchars4608} -{\nofcharsws5541}{\vern32771}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect -\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen -\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 -\jexpand\viewkind1\viewscale102\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct -\asianbrkrule\rsidroot6245947\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 -{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid3755876\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 -\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 -\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 -\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid6245947\charrsid6245947 FATEngine Beta Demo}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid6245947 -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947 Thank you for taking the time help test out the FATEngine}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 : a}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947 fully functional FAT16/32 file system - driver library. To help you get started working with this tool please refer to the rest of this document. -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid6245947\charrsid6245947 -\par System Configuration}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid6245947 -\par -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6245947\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947 -You will need to first edit the included spin files to match your system configuration so that you can test out the demo. If you have a DS1307 real time clock please attach it to the specified pins below. -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 \tab Open the RTCEnigne.spin file in}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947 this folder and change the pin numbers to match the pin numbers of where you}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\insrsid11759436 r}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947 DS1307 RTC is attached in the CON block at the top of the code. If you do not have a DS1307 RTC the included demo code will still function, however all time stamps will be invalid. - -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 -\par \tab Open the FATEnigne.spin file in this folder and change the pin numbers to match the pin numbers of where SD/SDHC/MMC Card is attached in the CON block at the top of the code. -\par -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11759436\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 -Open the COMEngine.spin file in this folder and change the pin numbers to match the pin numbers of where Prop Plug is attached in the CON block at the top of the code.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 -\par Open the Demo.spin file in this folder and chang -e the baud rate to match the baud rate of the specified baud rate when using parallax serial terminal. Additionally please change the clock frequency to your system configuration at the top of the Demo.spin file to match your setup. -\par -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11759436\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid11759436 Serial Terminal -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 Pleas -e open parallax serial terminal and connect to the propeller chip using the specified baud rate you set in the Demo.spin file. The demo program waits 5 seconds to let you get ready before running. After this the demo program should display a welcome messa -ge and a \'93>_\'94 command cursor. -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid11759436 Serial Terminal Commands -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 The following is a complete list of commands that the serial terminal demo program will execute.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 - Please note that the max command length is 255 characters after which a buffer overflow error will occur. The serial terminal will recover from this error but your command will be discarded. }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 General Commands: -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 \'93clear\'94 - Clears the terminal screen. -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid3833722 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 \'93echo\'94 - }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 Echoes}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 back whatever was typed}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\insrsid4740689 after the command.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid3833722 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 \'93date\'94 - Returns the current date fetched from the DS1307 RTC. If you do not have the DS1307 RTC the date returned will be invalid. -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid3833722 -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4740689\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 \'93time\'94 - - Ask the user for all specified timing parameters to set the date on the DS1307 RTC. -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11759436\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 -\par File System Commands -\par -\par \'93mount\'94 - Mounts the specified partition on the SD Card for file system access. An SD card must be attached to the system or an error message will be displayed. A partition must be mounted for - any other commands to execute. Please un-mount the partition when finished. The check disk flag causes windows to run check disk o}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid3833722 n the SD Card if not un-mo -unted properly when the disk is plugged into a windows machine.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 -\par -\par \'93umount\'94 - Un-mounts the active partition allowing another to be mounted and - writes file system optimization data back to the disk. Additionally deactivates the rest of the file system functions the turns off any raised check disk flags. -\par -\par \'93df\'94 <}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232 fast mode (f)> - Computes the count of free 512 byte sectors on the partition. Use the -fast mode flag (f) to ask the function to return previously computed values instead of computing new ones. If no previously computed values are available this function will compute them after which fast mode will be valid. Computing the free sector count -can take a long time.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232 -\par \'93du\'94 - Computes the count of used 512 byte sectors on the partition. Use the fast mode flag (f) to ask the function to return previously computed values instead of computing new ones. If no previously computed values -are available this function will compute them after which fast mode will be valid. Computing the used sector count can take a long time. -\par -\par \'93ls\'94 - List all files and folders in the current directory with along with their last access date, last modification date, and creation date as well as their size and attributes. Directories have no size. Only files have size.}{ -\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid410870 The attributes letters mean:}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232 R \endash Read Only, H \endash Hidden, S \endash System, A \endash Archive, }{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\insrsid410870 and }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232 D- Directory. -\par -\par \'93find\'94 - Verifies the specified file exist in the current directory. -\par -\par \'93cd\'94}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232\charrsid5992232 }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232 - Enters into the specified directory allowing file system access to all files within that directory. -\par -\par \'93attrib\'94 - Changes the attributes of the specified file or directory to the new specified attributes.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8655232 The new attributes are: }{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\insrsid5992232 R \endash Read Only, H \endash Hidden, S \endash System, A \endash Archive. -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid15496811 \'93rename\'94 - Changes the specified file or directory\rquote s entry name to the new specified entry name. -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5992232 \'93rm\'94 - Removes the specified file from the current directory or deletes any empty directory from the file system permanently. -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid15496811 -\par \'93mkfile\'94 - Makes a new file in the current directory with the specified name. -\par -\par \'93mkdir\'94 - Makes a new directory in the current directory with the specified name. -\par -\par \'93cat\'94 - Displays the contents of the specified file in either binary, hexadecimal, decimal, or ASCII characters.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8655232 The type flag can be:}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\insrsid15496811 B \endash Binary, D \endash Decimal, H \endash Hexadecimal, A \endash ASCII. -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8655232 -\par \'93test\'94 - Creates a temporary file to test read and write character and block performance of the driver}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid1726074 -. After which results are printed to the screen and the file temporary file is deleted.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8655232 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8655232\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid8655232 That\rquote s all folks! -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11759436\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689 -\par -\par -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4740689\charrsid11759436 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436 -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436\charrsid11759436 -\par }\pard \ltrpar\qj \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11759436\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436\charrsid11759436 -\par }\pard \ltrpar\ql \fi720\li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11759436\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11759436\charrsid11759436 -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6245947\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6245947\charrsid6245947 -\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\contextualspace {\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\ul\insrsid6245947\charrsid6245947 -\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8 -72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7 -2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b -44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7 -065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000 -00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08 -84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc -52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353 -bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468 -656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c -070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7 -29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65 -312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8 -a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04 -98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c -94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471 -7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671 -9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1 -e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5 -193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1 -17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2 -8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6 -6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a -668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847 -bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e -16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b -5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0 -8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2 -c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966 -0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b -7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb -9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0 -088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf -8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26 -ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0 -28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6 -345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93 -b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30 -254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74 -68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24 -51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198 -720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528 -a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000 -000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000 -002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468 -656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000 -00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000 -00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000} -{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d -617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 -6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 -656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} -{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; -\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9; -\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7; -\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6; -\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000 -4d73786d6c322e534158584d4c5265616465722e352e30000000000000000000000e0000 -d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff01000000ec69d9888b8b3d4c859eaf6cd158be0f0000000000000000000000004047 -ec51b590ca010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000004047ec51b590ca01 -4047ec51b590ca01000000000000000000000000c70033005a005100d4004700cd0056004b0055004300c700d1004a004400dc00d200c3004400c700d000c0003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000004047ec51b590 -ca014047ec51b590ca010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 -00000000000000000000000000000000cf00000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d -22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d22415041222f3e0d0a00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b44303530 -443639442d353536422d343032392d413743342d3930464343413330453743327d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c -64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f -72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/system/administra/aterm/admflash-fat.spin b/system/administra/aterm/admflash-fat.spin deleted file mode 100644 index 2ad363f..0000000 Binary files a/system/administra/aterm/admflash-fat.spin and /dev/null differ diff --git a/system/administra/aterm/admflash-rtc.spin b/system/administra/aterm/admflash-rtc.spin deleted file mode 100644 index 8cd6854..0000000 Binary files a/system/administra/aterm/admflash-rtc.spin and /dev/null differ diff --git a/system/administra/aterm/aterm96.spin b/system/administra/aterm/aterm96.spin deleted file mode 100644 index 018519e..0000000 Binary files a/system/administra/aterm/aterm96.spin and /dev/null differ diff --git a/system/administra/aterm/stringEngine.spin b/system/administra/aterm/stringEngine.spin deleted file mode 100644 index acc112b..0000000 Binary files a/system/administra/aterm/stringEngine.spin and /dev/null differ diff --git a/system/bellatrix/graphics-palette/Graphics.spin b/system/bellatrix/graphics-palette/Graphics.spin deleted file mode 100644 index dbe7e03..0000000 Binary files a/system/bellatrix/graphics-palette/Graphics.spin and /dev/null differ diff --git a/system/bellatrix/graphics-palette/Graphics_Palette.spin b/system/bellatrix/graphics-palette/Graphics_Palette.spin deleted file mode 100644 index 55f72da..0000000 Binary files a/system/bellatrix/graphics-palette/Graphics_Palette.spin and /dev/null differ diff --git a/system/bellatrix/graphics-palette/Mouse.spin b/system/bellatrix/graphics-palette/Mouse.spin deleted file mode 100644 index c37ad5c..0000000 Binary files a/system/bellatrix/graphics-palette/Mouse.spin and /dev/null differ diff --git a/system/bellatrix/graphics-palette/TV.spin b/system/bellatrix/graphics-palette/TV.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/system/bellatrix/graphics-palette/TV.spin and /dev/null differ diff --git a/system/bellatrix/graphics/Graphics.spin b/system/bellatrix/graphics/Graphics.spin deleted file mode 100644 index dbe7e03..0000000 Binary files a/system/bellatrix/graphics/Graphics.spin and /dev/null differ diff --git a/system/bellatrix/graphics/Graphics_Demo.spin b/system/bellatrix/graphics/Graphics_Demo.spin deleted file mode 100644 index d202295..0000000 Binary files a/system/bellatrix/graphics/Graphics_Demo.spin and /dev/null differ diff --git a/system/bellatrix/graphics/Mouse.spin b/system/bellatrix/graphics/Mouse.spin deleted file mode 100644 index c37ad5c..0000000 Binary files a/system/bellatrix/graphics/Mouse.spin and /dev/null differ diff --git a/system/bellatrix/graphics/TV.spin b/system/bellatrix/graphics/TV.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/system/bellatrix/graphics/TV.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/htext-keyb.spin b/system/bellatrix/htext-treiber/htext-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/system/bellatrix/htext-treiber/htext-keyb.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/htext-old.spin b/system/bellatrix/htext-treiber/htext-old.spin deleted file mode 100644 index cd20581..0000000 Binary files a/system/bellatrix/htext-treiber/htext-old.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/htext-vid.spin b/system/bellatrix/htext-treiber/htext-vid.spin deleted file mode 100644 index d14ddbb..0000000 Binary files a/system/bellatrix/htext-treiber/htext-vid.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/htext.spin b/system/bellatrix/htext-treiber/htext.spin deleted file mode 100644 index a72900e..0000000 Binary files a/system/bellatrix/htext-treiber/htext.spin and /dev/null differ diff --git a/system/bellatrix/htext-treiber/logo-hive-8x2.dat b/system/bellatrix/htext-treiber/logo-hive-8x2.dat deleted file mode 100644 index 109ef59..0000000 Binary files a/system/bellatrix/htext-treiber/logo-hive-8x2.dat and /dev/null differ diff --git a/system/bellatrix/tv-text-13x40-zeichen/tv-core.spin b/system/bellatrix/tv-text-13x40-zeichen/tv-core.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/system/bellatrix/tv-text-13x40-zeichen/tv-core.spin and /dev/null differ diff --git a/system/bellatrix/tv-text-13x40-zeichen/tv-keyb.spin b/system/bellatrix/tv-text-13x40-zeichen/tv-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/system/bellatrix/tv-text-13x40-zeichen/tv-keyb.spin and /dev/null differ diff --git a/system/bellatrix/tv-text-13x40-zeichen/tv.spin b/system/bellatrix/tv-text-13x40-zeichen/tv.spin deleted file mode 100644 index 55b85a3..0000000 Binary files a/system/bellatrix/tv-text-13x40-zeichen/tv.spin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/ios.spin b/system/bellatrix/vectron-1-vecdem1/ios.spin deleted file mode 100644 index 95b5012..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/ios.spin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/notizen-asm.rtf b/system/bellatrix/vectron-1-vecdem1/notizen-asm.rtf deleted file mode 100644 index 2eaf858..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/notizen-asm.rtf and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/notizen-drv.rtf b/system/bellatrix/vectron-1-vecdem1/notizen-drv.rtf deleted file mode 100644 index a84c054..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/notizen-drv.rtf and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vecdem1-bel.spin b/system/bellatrix/vectron-1-vecdem1/vecdem1-bel.spin deleted file mode 100644 index 393c7e1..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vecdem1-bel.spin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vecdem1.bel b/system/bellatrix/vectron-1-vecdem1/vecdem1.bel deleted file mode 100644 index baba2b7..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vecdem1.bel and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vecdem1.bin b/system/bellatrix/vectron-1-vecdem1/vecdem1.bin deleted file mode 100644 index 8802c60..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vecdem1.bin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vecdem1.spin b/system/bellatrix/vectron-1-vecdem1/vecdem1.spin deleted file mode 100644 index cc908a2..0000000 --- a/system/bellatrix/vectron-1-vecdem1/vecdem1.spin +++ /dev/null @@ -1,115 +0,0 @@ -{{ --------------------------------------------------------------------------------------------------------- - -Hive-Computer-Projekt - -Name : Vectron-Demo 1 -Chip : Regnatix-Code -Version : 0.1 -Dateien : vecdem1.spin - -Beschreibung : - -Eigenschaften : - -Logbuch : - -Kommandoliste: - - --------------------------------------------------------------------------------------------------------- }} - -OBJ - ios: "ios" - -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 parastr[OS_TIBLEN] 'parameterstring für interpreter - byte tibpos 'aktuelle position im tib - - long lcnt 'zeiger für dateiliste - byte fn[12] 'puffer für dateinamen - -PUB main | wflag - - wflag := ios.start 'ios initialisieren - - 'muß auskommentiert werden für bin-datei - 'ios.startram 'testcode für ramupload - - ios.breset 'bellatrix neu starten - waitcnt(cnt + 200_000_000) 'warte bis bel fertig ist - ios.bload(string("vecdem1.bel")) 'grafiktreiber laden - waitcnt(cnt + 200_000_000) 'warte bis bel fertig ist - - ios.sdmount 'medium mounten - repeat - repsongs - - -PUB repsongs | fnadr,len,fcnt,i 'alle songs auf der sd-card abspielen - - ios.sddir 'kommando: verzeichnis öffnen - startlist 'zum listenanfang - fcnt := 0 'zähler für dateianzahl - repeat 'dateiliste einlesen - fnadr := ios.sdnext - if fnadr <> 0 'ist eintrag gültig? - len := strsize(fnadr) - if strcomp(@ext1,(fnadr+len-4)) - fcnt++ - wrfn(fnadr) - while fnadr <> 0 'wiederholen solange stradr <> 0 - startlist 'zum listenanfang - repeat i from 0 to fcnt-1 'dateiliste abspielen - rdfn(@fn) - playsong(@fn) - fadeout - -PUB fadeout | i 'song langsam ausblenden - repeat i from 0 to 15 - ios.hss_vol(15 - i) - waitcnt(cnt + 60_000_000) - waitcnt(cnt + 30_000_000) - -CON - -' long lcnt 'zeiger für dateiliste -' byte fn[12] 'puffer für dateinamen - -PUB wrfn(stradr) | len,i 'kopiert dateinamen in eram - len := strsize(stradr) - repeat i from 0 to len-1 - ios.ram_write(byte[stradr][i],lcnt++) - ios.ram_write(0,lcnt++) - - -PUB rdfn(stradr) | i,n 'liest dateinamen aus eram - i := 0 - repeat - n := ios.ram_read(lcnt++) - byte[stradr][i++] := n - while n <> 0 - -PUB startlist 'zeiger auf listenanfang (dateinamen) - lcnt := 0 - -PUB playsong(stradr) | n 'spielt die musikdatei bis zum ende - - ios.hss_stop - ios.hss_playfile(stradr) - repeat - n := ios.hss_intreg(ios#iRepeat) - until n == 3 - - - -DAT -ext1 byte ".HSS",0 \ No newline at end of file diff --git a/system/bellatrix/vectron-1-vecdem1/vectron-1-asm.spin b/system/bellatrix/vectron-1-vecdem1/vectron-1-asm.spin deleted file mode 100644 index 3b1c280..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vectron-1-asm.spin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vectron-1-drv.spin b/system/bellatrix/vectron-1-vecdem1/vectron-1-drv.spin deleted file mode 100644 index 5309379..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vectron-1-drv.spin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vectron-1-keyb.spin b/system/bellatrix/vectron-1-vecdem1/vectron-1-keyb.spin deleted file mode 100644 index dad7275..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vectron-1-keyb.spin and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vectron-1.spin b/system/bellatrix/vectron-1-vecdem1/vectron-1.spin deleted file mode 100644 index 396b307..0000000 --- a/system/bellatrix/vectron-1-vecdem1/vectron-1.spin +++ /dev/null @@ -1,118 +0,0 @@ -CON - -_CLKMODE = XTAL1 + PLL16X -_XINFREQ = 5_000_000 - -'signaldefinitionen regnatix - -#0, D0,D1,D2,D3,D4,D5,D6,D7 'datenbus -#8, BEL_VGABASE 'vga-signale (8pin) -#16, BEL_KEYBC,BEL_KEYBD 'keyboard-signale -#18, BEL_MOUSEC,BEL_MOUSED 'maus-signale -#20, BEL_VIDBASE 'video-signale(3pin) -#23, BEL_SELECT 'belatrix-auswahlsignal -#24, HBEAT 'front-led - BUSCLK 'bustakt - BUS_WR '/wr - schreibsignal - BUS_HS ' '/hs - quittungssignal - - -VGA_BASPORT = 8 'vga startport -KEYB_DPORT = BEL_KEYBD 'tastatur datenport -KEYB_CPORT = BEL_KEYBC 'tastatur taktport - -DB_WAIT = %00000001_00000000_00000000_00000000 'dira-wert f?r wait-status am bus -DB_IN = %00001001_00000000_00000000_00000000 'dira-wert f?r datenbuseingabe -DB_OUT = %00001001_00000000_00000000_11111111 'dira-wert f?r datenbusausgabe -CNT_HBEAT = 5_000_0000 'blinkgeschw. front-led - -'512x384 - -tiles = vec#tiles - -OBJ - - vec : "vectron-1-asm" - key : "vectron-1-keyb" - -PUB MainLoop|h,i,deg,x,y,mask,ii,char,j,k,n - - vec.start - key.start(keyb_dport, keyb_cport) 'tastaturport starten - - repeat i from 0 to tiles - 1 'init tile colors to white on black - vec.color(i,$0800) - 'vec.color(i,$FF<<8+i) 'init tile colors "Nice view" - - vec.pointcolor(1) - vec.text(0,0,string("Vektordemo")) - - repeat - vec.pointcolor(1) - - repeat 1 - repeat j from 1 to 260 step 5 - repeat i from 0 to 359 step 1 - 'vec.syncvid - n := vec.deg(i) - vec.shape(256,192,j,j,3,n) - keyreb - - repeat 1 - repeat j from 260 to 1 step 5 - repeat i from 0 to 359 step 1 - 'vec.syncvid - n := vec.deg(i) - vec.shape(256,192,j,j,3,n) - keyreb - - repeat 20 - repeat i from 0 to 359 - 'vec.syncvid - n := vec.deg(i) - vec.shape(256,192,145,145,3,n) - keyreb - - repeat 3 - repeat i from 0 to 359 - 'vec.syncvid - n := vec.deg(i) - vec.shape(256,192,145,145,3,n) - vec.shape(256,192,70,70,4,vec.deg(359-i*2)) - vec.shape(256,192,30,30,5,vec.deg(i*3)) - keyreb - - repeat 1 - repeat i from 0 to 359 - 'vec.syncvid - n := vec.deg(i) - vec.shape(256,192,200,200,6,n) - vec.shape(256,192,190,190,6,n) - vec.shape(256,192,180,180,6,n) - vec.shape(256,192,170,170,6,n) - vec.shape(256,192,160,160,6,n) - - vec.shape(256,192,150,150,6,n) - vec.shape(256,192,145,145,3,n) - vec.shape(256,192,70,70,4,vec.deg(359-i*2)) - vec.shape(256,192,30,30,5,vec.deg(i*3)) - keyreb - - repeat 3 - repeat i from 0 to 359 step 5 - repeat x from 100 to 400 step 150 - repeat y from 100 to 300 step 150 - shapes1(x,y,i) - keyreb - -PRI shapes1(x,y,i) - 'vec.syncvid - vec.shape(x,y,145,145,3,vec.deg(i)) - vec.shape(x,y,70,70,4,vec.deg(359-i*2)) - vec.shape(x,y,30,30,5,vec.deg(i*3)) - -PRI keyreb 'bei teastendruck reboot - - if key.key - reboot - \ No newline at end of file diff --git a/system/bellatrix/vectron-1-vecdem1/vga_frame.png b/system/bellatrix/vectron-1-vecdem1/vga_frame.png deleted file mode 100644 index 0365919..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vga_frame.png and /dev/null differ diff --git a/system/bellatrix/vectron-1-vecdem1/vga_line.png b/system/bellatrix/vectron-1-vecdem1/vga_line.png deleted file mode 100644 index 24613b8..0000000 Binary files a/system/bellatrix/vectron-1-vecdem1/vga_line.png and /dev/null differ diff --git a/system/bellatrix/vga-gui/.~lock.Document.rtf# b/system/bellatrix/vga-gui/.~lock.Document.rtf# deleted file mode 100644 index a0fc19d..0000000 --- a/system/bellatrix/vga-gui/.~lock.Document.rtf# +++ /dev/null @@ -1 +0,0 @@ -ingo ,ingo,anaximander,22.06.2010 19:59,file:///home/ingo/.openoffice.org/3; \ No newline at end of file diff --git a/system/bellatrix/vga-gui/Document.rtf b/system/bellatrix/vga-gui/Document.rtf deleted file mode 100644 index 1184eab..0000000 Binary files a/system/bellatrix/vga-gui/Document.rtf and /dev/null differ diff --git a/system/bellatrix/vga-gui/GUIBase.spin b/system/bellatrix/vga-gui/GUIBase.spin deleted file mode 100644 index 3b58415..0000000 Binary files a/system/bellatrix/vga-gui/GUIBase.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/GUIDemo.spin b/system/bellatrix/vga-gui/GUIDemo.spin deleted file mode 100644 index bbfa2c0..0000000 Binary files a/system/bellatrix/vga-gui/GUIDemo.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/InputField.spin b/system/bellatrix/vga-gui/InputField.spin deleted file mode 100644 index f4a7fb3..0000000 Binary files a/system/bellatrix/vga-gui/InputField.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/Keyboard.spin b/system/bellatrix/vga-gui/Keyboard.spin deleted file mode 100644 index d8c197e..0000000 Binary files a/system/bellatrix/vga-gui/Keyboard.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/MenuItem.spin b/system/bellatrix/vga-gui/MenuItem.spin deleted file mode 100644 index fcd6fe6..0000000 Binary files a/system/bellatrix/vga-gui/MenuItem.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/Mouse.spin b/system/bellatrix/vga-gui/Mouse.spin deleted file mode 100644 index c37ad5c..0000000 Binary files a/system/bellatrix/vga-gui/Mouse.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/PropUI_L_80.jpg b/system/bellatrix/vga-gui/PropUI_L_80.jpg deleted file mode 100644 index 1c06e92..0000000 Binary files a/system/bellatrix/vga-gui/PropUI_L_80.jpg and /dev/null differ diff --git a/system/bellatrix/vga-gui/PushButton.spin b/system/bellatrix/vga-gui/PushButton.spin deleted file mode 100644 index 3d94f8b..0000000 Binary files a/system/bellatrix/vga-gui/PushButton.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/RadioCheck.spin b/system/bellatrix/vga-gui/RadioCheck.spin deleted file mode 100644 index 0849d44..0000000 Binary files a/system/bellatrix/vga-gui/RadioCheck.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/SimpleBox.spin b/system/bellatrix/vga-gui/SimpleBox.spin deleted file mode 100644 index 2e3eb4e..0000000 Binary files a/system/bellatrix/vga-gui/SimpleBox.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/Simple_Numbers.spin b/system/bellatrix/vga-gui/Simple_Numbers.spin deleted file mode 100644 index 331dabc..0000000 Binary files a/system/bellatrix/vga-gui/Simple_Numbers.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/SpinBox.spin b/system/bellatrix/vga-gui/SpinBox.spin deleted file mode 100644 index 0a0c8ca..0000000 Binary files a/system/bellatrix/vga-gui/SpinBox.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/StatusLamp.spin b/system/bellatrix/vga-gui/StatusLamp.spin deleted file mode 100644 index 3ec29d5..0000000 Binary files a/system/bellatrix/vga-gui/StatusLamp.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/TextBox.spin b/system/bellatrix/vga-gui/TextBox.spin deleted file mode 100644 index d138579..0000000 Binary files a/system/bellatrix/vga-gui/TextBox.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/Timer.spin b/system/bellatrix/vga-gui/Timer.spin deleted file mode 100644 index cd6cf71..0000000 Binary files a/system/bellatrix/vga-gui/Timer.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/VGA_HiRes_Text.spin b/system/bellatrix/vga-gui/VGA_HiRes_Text.spin deleted file mode 100644 index ed3ea2d..0000000 Binary files a/system/bellatrix/vga-gui/VGA_HiRes_Text.spin and /dev/null differ diff --git a/system/bellatrix/vga-gui/vga-vid.spin b/system/bellatrix/vga-gui/vga-vid.spin deleted file mode 100644 index 6cd859e..0000000 Binary files a/system/bellatrix/vga-gui/vga-vid.spin and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2.dat b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2.dat deleted file mode 100644 index 109ef59..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2.dat and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2/dat.rtf b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2/dat.rtf deleted file mode 100644 index e758f9d..0000000 --- a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2/dat.rtf +++ /dev/null @@ -1,275 +0,0 @@ -{\rtf1\ansi\deff0{\fonttbl{\f0\fswiss\fcharset0 Arial;}} -{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\lang1031\f0\fs20 char y=0, x=0 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=0, x=1 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0003_3333_3300_0000\par - LONG %%0033_3000_3330_0000\par - LONG %%0330_0000_0033_0000\par - LONG %%3300_0000_0003_3000\par - LONG %%3300_0000_0000_3000\par - LONG %%3000_0000_0000_3300\par - LONG %%3000_0000_0000_3300\par - LONG %%3300_0000_0000_3000\par - LONG %%3300_0000_0003_3000\par - LONG %%0330_0000_0033_0000\par - LONG %%0033_3000_0333_0000\par - LONG %%0033_3333_3330_0000\par - LONG %%0333_0000_0333_0000\par -char y=0, x=2 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=0, x=3 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3003_3330_0333_3300\par - LONG %%3033_3333_0333_3300\par - LONG %%3033_3333_0333_3300\par -char y=0, x=4 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%3000_3333_0000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3000_3333_0000_3333\par - LONG %%3000_0000_0000_3333\par - LONG %%3000_0000_0000_3333\par -char y=0, x=5 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par -char y=0, x=6 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%3333_3000_0000_0033\par - LONG %%3333_3333_0000_0033\par - LONG %%3333_3333_3000_0033\par - LONG %%3333_3333_3300_0033\par - LONG %%3333_3333_3330_0033\par - LONG %%0000_3333_3330_0033\par - LONG %%0000_0033_3333_0033\par - LONG %%3333_0003_3333_0033\par -char y=0, x=7 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=0 \par - LONG %%0000_0000_0000_0000\par - LONG %%3330_0000_0000_0000\par - LONG %%0033_3000_0000_0000\par - LONG %%0000_3300_0000_0000\par - LONG %%0000_3300_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_0330_0000_0000\par - LONG %%0000_3300_0000_0000\par - LONG %%0003_3000_0000_0000\par - LONG %%0333_0000_0000_0000\par - LONG %%3330_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=1 \par - LONG %%3330_0000_0033_3000\par - LONG %%3300_0000_0003_3333\par - LONG %%3300_0000_0003_3300\par - LONG %%0330_0000_0033_0000\par - LONG %%0033_0000_0030_0000\par - LONG %%0033_0000_0330_0000\par - LONG %%0003_3333_3330_0000\par - LONG %%0003_3333_3330_0000\par - LONG %%0033_0000_0330_0000\par - LONG %%0033_0000_0030_0000\par - LONG %%0330_0000_0033_0000\par - LONG %%3300_0000_0003_3330\par - LONG %%0000_0000_0000_0333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=2 \par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0033_3333\par - LONG %%0000_0000_3330_0000\par - LONG %%0000_0000_3300_0000\par - LONG %%0000_0003_3000_0000\par - LONG %%0000_0003_0000_0000\par - LONG %%0000_0033_0000_0000\par - LONG %%0000_0003_0000_0000\par - LONG %%0000_0003_0000_0000\par - LONG %%0000_0003_3000_0000\par - LONG %%0000_0000_3300_0000\par - LONG %%0000_0000_0333_3033\par - LONG %%0000_0000_0003_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=3 \par - LONG %%3033_3333_0333_3300\par - LONG %%3033_3333_0333_3300\par - LONG %%3003_3330_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%3000_0000_0333_3300\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=4 \par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%3003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0003_3333_3000_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=5 \par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0000_3333\par - LONG %%3330_0000_0003_3333\par - LONG %%3330_0000_0003_3333\par - LONG %%3330_0000_0033_3333\par - LONG %%3333_3333_3333_3333\par - LONG %%3333_3333_3333_3330\par - LONG %%3333_3333_3333_3300\par - LONG %%3333_3333_3333_3000\par - LONG %%3333_3333_3330_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=6 \par - LONG %%3333_3003_3333_0033\par - LONG %%3333_3003_3333_0033\par - LONG %%3333_3003_3333_0033\par - LONG %%3333_3003_3333_0033\par - LONG %%3333_0033_3333_0033\par - LONG %%0000_3333_3330_0033\par - LONG %%3333_3333_3330_0033\par - LONG %%3333_3333_3300_0033\par - LONG %%3333_3333_3000_0033\par - LONG %%3333_3333_0000_0033\par - LONG %%3333_3000_0000_0033\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -char y=1, x=7 \par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0003\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_3333\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par - LONG %%0000_0000_0000_0000\par -} - \ No newline at end of file diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2/logo-hive-8x2.dat b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2/logo-hive-8x2.dat deleted file mode 100644 index 109ef59..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/logo-hive-8x2/logo-hive-8x2.dat and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-keyb.spin b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-keyb.spin deleted file mode 100644 index 5333e3a..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-keyb.spin and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-vid.spin b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-vid.spin deleted file mode 100644 index a2f9a70..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga-vid.spin and /dev/null differ diff --git a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga.spin b/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga.spin deleted file mode 100644 index 9ead70d..0000000 Binary files a/system/bellatrix/vga-text-1024x768-pix-64x24-zeichen/vga.spin and /dev/null differ diff --git a/system/license.spin b/system/license.spin deleted file mode 100644 index c2b7622..0000000 Binary files a/system/license.spin and /dev/null differ diff --git a/system/regnatix/FemtoBasic Manual.rtf b/system/regnatix/FemtoBasic Manual.rtf deleted file mode 100644 index 5f43836..0000000 --- a/system/regnatix/FemtoBasic Manual.rtf +++ /dev/null @@ -1,797 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Verdana;} -{\colortbl;\red255\green255\blue255;\red0\green5\blue50;\red238\green238\blue238;} -\margl1440\margr1440\vieww12580\viewh18760\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural - -\f0\b\fs24 \cf0 \ul \ulc0 FemtoBasic Manual - Version 3.006 -\b0 \ulnone \ -\ -Program lines consist of a line number from 1 to 65535, then a space,\ -then one or more statements separated by a colon (":"). Most statements\ -can be given without a line number and will be executed immediately if so.\ -\ -If a line is entered with the same line number as that of an existing line in\ -the current program, the existing line is deleted and the new line is stored.\ -\ -A line number by itself may be entered. Any existing line in the current\ -program with the same line number will be deleted. No new line will be\ -stored.\ -\ -When FemtoBasic is first started after a Propeller reset, if an SD card is\ -provided and it has a file "autoexec.bas" in its root directory, then the\ -line 'LOAD "autoexec.bas" : RUN' is automatically executed.\ -\ -The ESC key is a "break key". If it is entered, the running program will\ -stop after the current statement finishes executing. PAUSE and IRBRECV\ -are handled specially so the "break key" can interrupt their execution.\ -\ -Pre-compiled binaries are provided for both a VGA display and a TV\ -display and for either the Propeller Demo Board, Propeller Proto Board,\ -or a Hydra. The Hydra version cannot use an SD card with a VGA\ -display because the SD card interface uses the same I/O pins as the\ -VGA display. The names of the binary files indicate which display and\ -board they are intended for.\ -\ -The basic SD card wiring is shown below. "Pull-up" refers to a 20K\ -pull up resistor from the pin indicated to +3.3V. For the Demo Board\ -version, the pins are as indicated below. For the Proto Board version,\ -P0 = I/O pin 8, P1 = I/O pin 9, P2 = I/O pin 10, and P3 = I/O pin 11. For\ -the Hydra version, P0 = I/O pin 16, P1 = I/O pin 17, P2 = I/O pin 18, and\ -P3 = I/O pin 19.\ -\ -\pard\pardeftab720\ql\qnatural - -\f1 \cf2 \cb3 SD CARD Socket Pin-out:\ -\'a0\ -PIN\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 SD CARD\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 Propeller\ ------------------------------------------------------\ -\'a01\'a0(NC)\ -\'a02\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-9) DAT2\'a0\'a0\'a0 Pull-up\ -\'a03\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0(PIN-1) CS\'a0\'a0\'a0\'a0\'a0 Pull-up\'a0\'a0\'a0 P3\ -\'a04\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-2) DI\'a0\'a0\'a0\'a0\'a0 Pull-up\'a0\'a0\'a0\'a0 P2\ -\'a05\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-3) GND\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 GND\ -\'a06\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-4) +3.3\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 VCC\ -\'a07\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-5) CLK\'a0\'a0\'a0\'a0 Pull-up\'a0\'a0\'a0\'a0 P1\ -\'a08\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-6) GND\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 GND\'a0\'a0\'a0\'a0\'a0 \ -\'a09\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-7) DO\'a0\'a0\'a0\'a0\'a0 Pull-up\'a0\'a0\'a0\'a0 P0\ -10\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 (PIN-8) DAT1\'a0\'a0 Pull-up\ -11\'a0(CD SW)\ - -\f0 \cf0 \cb1 \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural - -\b \cf0 \ul Expressions\ - -\b0 \ulnone \ -Expressions consist of variables, constants, and "pseudo-variables"\ -that function like variables, but may have complex actions like FILE or\ -EEPROM[5]. Constants may be decimal, hexadecimal (prefixed with "$"),\ -or binary (prefixed with "%"). All expressions use 32-bit integer values.\ -\ -\ -\ -There are 26 variables designated by the letters A through Z.\ -Upper and lower case letters are equivalent.\ -\ -INA [ \{.. \} ]\ -\ -This has the value of the specified input pin or pins. If two pin values are\ -given, the first is the most significant bit number and the second is the\ -least significant bit number of the value. The pin or pins specified are\ -changed to input mode (the default).\ -\ -BYTE [ ]\ -\ -This has the value of the main memory byte at the address provided.\ -\ -WORD [ ]\ -\ -This has the value of the main memory word at the address provided.\ -The least significant bit of the address is ignored.\ -\ -LONG [ ]\ -\ -This has the value of the main memory long word at the address provided.\ -The least significant two bits of the address are ignored.\ -\ -EEPROM [ \{, \} ]\ -\ -This has the value of the byte in the EEPROM attached to the boot I2C bus\ -(on pins 28-29) at the address specified. If two expressions are provided,\ -the first gives the pin number of the SCL line of the EEPROM while the\ -second expression is the address. The address may be any value from\ -zero to $7FFFF and the upper 3 bits are used to form the device select code.\ -\ -FILE\ -\ -This has the value of the next byte in the currently open SD card file or -1\ -at the end of the file. The file must be open for reading.\ -\ -MEM\ -\ -This has the value of the amount of space available for program storage.\ -\ -CNT\ -\ -The current system clock value.\ -\ -PHSA\ -\ -The cog counter phase register A value.\ -\ -PHSB\ -\ -The cog counter phase register B value.\ -\ -FRQA\ -\ -The cog counter frequency register A value.\ -\ -FRQB\ -\ -The cog counter frequency register B value.\ -\ -CTRA\ -\ -The cog counter control register A value.\ -\ -CTRB\ -\ -The cog counter control register B value.\ -\ -KEYCODE\ -\ -The value of the next keyboard key value or zero if the keyboard buffer\ -is empty.\ -\ -RND \ -\ -The value is a pseudo-random number in the range zero to one less than\ -that of the expression given.\ -\ -- \ -! \ -\ -"-" is negate. "!" is bit-wise logical not.\ -\ -<9> SHL <9>\ -<9> SHR <9>\ -<9> ROL <9>\ -<9> ROR <9>\ -<9> SAR <9>\ -<9> REV <9>\ -\ -"SHL" is logical shift left. "SHR" is logical shift right. "ROL" is rotate left.\ -"ROR" is rotate right. "SAR" is arithmetic shift right. "REV" is bit reverse.\ -In all cases, the value to be shifted is the left operand and the shift count\ -is the right operand. "REV" reverses the order of the specified number of\ -least significant bits with the most significant bits set to zero.\ -\ -<8> & <8>\ -\ -"&" is bit-wise logical and.\ -\ -<7> | <7>\ -\ -"|" is bit-wise logical or\ -\ -<6> *<6>\ -<6> / <6>\ -<6> // <6>\ -\ -"*" is a 32 bit unsigned multiplication. "/" is the quotient of a 32 bit unsigned\ -division. "//" is the remainder of a 32 bit unsigned division.\ -\ -<5> + <5>\ -<5> - <5>\ -\ -"+" is a 32 bit addition. "-" is a 32 bit subtraction\ -\ -<4> = <4>\ -<4> < <4>\ -<4> > <4>\ -<4> <= <4>\ -<4> >= <4>\ -<4> <> <4>\ -\ -"=" is equal to. "<" is less than. ">" is greater than.\ -"<=" is less than or equal to. ">=" is greater or equal to.\ -"<>" is not equal to.\ -\ -NOT <3>\ -\ -"NOT" is logical not.\ -\ -<2> AND <2>\ -\ -"AND" is logical and.\ -\ -<1> OR <1>\ -\ -"OR" is logical or.\ -\ -Note that the numbers in the brackets () are used to\ -indicate the operator precedence.\ -\ - -\b \ul Statements -\b0 \ulnone \ -\ -Note that multiple statements may be given on a line separated by\ -a colon (":"). There are some restrictions on what can be combined on\ -a line. These are described in the individual statements' descriptions.\ -\ -\{LET\} = \ -\ -Set the variable to the value of the expression .\ -\ -INPUT \{ "";\} \{,\}\ -\ -If given, the is displayed and an input line may be entered.\ -For each variable given, an expression is evaluated from the input line.\ -The expressions may be separated by commas (",") or, if unambiguous,\ -by spaces. These expressions may contain variable names, operators,\ -or "pseudo-variables". If more expressions are given than variables,\ -the excess are ignored. An error is treated as if it occurred on the line\ -where the INPUT statement is given.\ -\ -PRINT \{\{"" | \} \{, | ;\}\}\ -\ -A series of expressions or string constants are given, separated by\ -commas (",") or semicolons (";"). If a comma is used, enough spaces\ -are inserted to display the next item at the next display column divisible\ -by 8. If a semicolon is used, the next item begins at the next column.\ -If the statement ends with a comma or semicolon, an end of line is not\ -inserted. A PRINT statement by itself causes an end of line to be displayed\ -\ -GOTO \ -\ -Go to the label whose value is equal to the expression\ -\ -GOSUB \ -\ -Call (as a subroutine) the label whose value is equal to the expression.\ -Note that a GOSUB must be the only or last statement on a line.\ -\ -RETURN\ -\ -Return from a GOSUB call\ -\ -REM \ -\ -The rest of the line in the program is considered part of the comment and\ -is otherwise ignored.\ -\ -NEW\ -\ -Erase the current program and clear all the variables.\ -\ -LIST \{ \{,\}\}\ -\ -List the current program. If no expressions are given, the whole program\ -is listed. If one expression is given, that line is listed. If two expressions\ -are given, all lines between those two values are listed.\ -\ -RUN\ -\ -Clear all the variables (to zero) and start executing the current program\ -from the first line.\ -\ -OPEN "", \{R | W | A \}\ -\ -Open the specified file on the SD card in the mode requested (R - read,\ -W - write, A - append). If a file is already open, it is closed first. Only one\ -file may be open at a time.\ -\ -READ \{,\}\ -\ -Read a line from the currently opened SD card file and set the variables\ -specified to the expressions supplied on that line. The expressions may\ -be separated by commas or, if unambiguous, may be separated by spaces.\ -These expressions may be any expression including operators, variables,\ -pseudo-variables (like CNT). Effectively, this is as if " = " were\ -executed for each variable given and each expression in the SD card file.\ -\ -WRITE \{\{"" | \} \{, | ;\}\}\ -\ -This works just like the PRINT statement except that the characters produced\ -are written to the currently opened SD card file. An end of line is written as\ -a carriage return / line feed pair (ASCII CR/LF ... 13, 10).\ -\ -CLOSE\ -\ -Close the currently opened SD card file, if any.\ -\ -DELETE ""\ -\ -Delete the specified SD card file. Any opened SD card file will be closed.\ -\ -RENAME "", ""\ -\ -Rename the specified SD card file. Any opened SD card file will be closed.\ -This is not currently implemented and will produce an error message.\ -\ -FILES\ -\ -List all files on the SD card (at the root level). Neither subdirectories nor the files\ -within them are included in this listing. Any opened SD card file will be closed.\ -\ -SAVE\ -\ -Save the current program to an otherwise unused area in the boot EEPROM.\ -Note that downloading a program to the EEPROM using the Propeller Tool or\ -an equivalent downloading program will erase any saved program.\ -\ -SAVE [ \{, \} ]\ -\ -This saves the current program in the EEPROM attached to the boot I2C bus\ -(on pins 28-29) at the address specified. If two expressions are provided,\ -the first gives the pin number of the SCL line of the EEPROM while the\ -second expression is the address. The address may be any value from\ -zero to $7FFFF and the upper 3 bits are used to form the device select code.\ -The address is adjusted to 2 bytes below the next 64 byte boundary and the\ -total program length is stored in those two bytes followed by the program itself.\ -If the address is adjusted upwards, only the last two bytes of that 64 byte block\ -are changed.\ -\ -SAVE ""\ -\ -Save the current program to the specified file on a SD card. Any existing file\ -by that name will be overwritten with the program which will be saved in text\ -file format, as if they were displayed with the LIST statement.\ -\ -LOAD\ -\ -Erase the current program and load in a program previously saved with the\ -SAVE statement.\ -\ -LOAD [ \{, \} ]\ -\ -Erase the current program and load in a program previously saved with the\ -SAVE [ \{, \} ] statement.\ -\ -LOAD ""\ -\ -Erase the current program and load in a program from an SD card file. This\ -program must be in text format, just as if it were to be typed in. All lines must\ -be numbered (with a line number) except lines that are completely blank.\ -\ -FOR = TO \{STEP \}\ -\ -This sets up a standard Basic FOR/NEXT loop. The variable is set to the value\ -of the first expression and tested against the limit given by the value of the\ -second expression (which is evaluated only once). The optional step size\ -may be positive or negative. If negative, the limit test is appropriately changed.\ -The FOR statement must be the last statement on a multi-statement line and\ -improperly nested FOR/NEXT statement pairs may cause incorrect execution\ -without an error message. Default STEP value is +1.\ -\ -NEXT \ -\ -This terminates a standard Basic FOR/NEXT loop. The STEP value is added\ -to the variable and the result is tested against the limit value. If still within the\ -limit, program execution continues with the statement after the matching FOR\ -statement. If not, execution continues with the next statement.\ -\ -OUTA [ \{.. \} ] = \ -\ -This sets the specified output pin or pins to the expression to the right of the\ -assignment. If one pin value is given, that is the pin to be changed. If two\ -pin values are given, the first is the most significant bit number and the\ -second is the least significant bit number of the value. The pin or pins\ -specified are changed to output mode.\ -\ -PAUSE \{, \}\ -\ -The program is paused for the number of milliseconds given by the first\ -(or only) value given. If two values are given, the first is in milliseconds\ -while the second is in microseconds and they're added together for the\ -total pause time. The minimum pause time is 50us. If the pause time is\ -more than 10ms, The pause statement is interrupted after 10ms and\ -reexecuted with a 10ms shorter pause time. This is to allow for the\ -interruption of the program using a "break key". The PAUSE statement\ -must be the first or only statement on a line.\ -\ -BYTE [ ] = \ -\ -This sets the value of the main memory byte at the address provided to\ -the expression on the right side of the assignment.\ -\ -WORD [ ] = \ -\ -This sets the value of the main memory word at the address provided to\ -the expression on the right side of the assignment. The least significant\ -bit of the address is ignored.\ -\ -LONG [ ] = \ -\ -This sets the value of the main memory long word at the address provided\ -to the expression on the right side of the assignment. The least significant\ -two bits of the address are ignored.\ -\ -PHSA = \ -\ -Set the cog counter phase register A to the expression.\ -\ -PHSB = \ -\ -Set the cog counter phase register B to the expression.\ -\ -FRQA = \ -\ -Set the cog counter frequency register A to the expression.\ -\ -FRQB = \ -\ -Set the cog counter frequency register B to the expression.\ -\ -CTRA = \ -\ -Set the cog counter control register A to the expression.\ -\ -CTRB = \ -\ -Set the cog counter control register B to the expression.\ -\ -DISPLAY \{, \}\ -\ -Send the specified byte values to the display driver. The specific control\ -codes, their parameters, and their meaning depend on the display driver.\ -See the display driver documentation for descriptions.\ -\ -STOP\ -\ -Stop execution of the program.\ -\ -END\ -\ -Stop execution of the program (works like STOP).\ -\ -EEPROM [ \{, \} ] = \ -\ -This sets the value of the byte in the EEPROM attached to the boot I2C bus\ -(on pins 28-29) at the address specified. If two expressions are provided,\ -the first gives the pin number of the SCL line of the EEPROM while the\ -second expression is the address. The address may be any value from\ -zero to $7FFFF and the upper 3 bits are used to form the device select code.\ -\ -FILE = \ -\ -This sets the value of the next byte in the currently open SD card file.\ -The file must be open for writing or appending.\ -\ -SPIN [ \{, \} ]\ -\ -This causes a Spin program to be loaded into the Propeller's main memory\ -from a 32K EEPROM "page". If only one expression is provided, it is the\ -starting address in a 512K byte address space made up of one or more\ -EEPROMs attached to the I2C bus on Propeller pins 28 (SCL) and 29 (SDA).\ -The boot EEPROM is the first 32K of this address space. The lower order\ -15 bits of the address are ignored so the loading process always begins on\ -a 32K byte boundary. If two expressions are provided, the first gives the\ -pin number of the SCL line of the EEPROM while the second expression\ -gives the starting address. The address may be any value from zero to\ -$7FFFF and the upper 3 bits are used to form the device select code.\ -Once the Spin program has been successfully loaded, it begins execution.\ -The loaded Spin program completely replaces the running FemtoBasic.\ -\ -SPIN ""\ -\ -This causes a Spin program to be loaded into the Propeller's main memory\ -from a specified file on an attached SD card. This file should be a copy of\ -the binary form of a Spin program as saved from the Propeller Tool.\ -Once the Spin program has been successfully loaded, it begins execution.\ -The loaded Spin program completely replaces the running FemtoBasic.\ -\ -DUMP , \ -\ -This displays a portion of the Propeller's main memory. The first expression\ -gives the starting address and the second expression gives the number\ -of bytes to be displayed. The information is formatted 8 bytes per line with\ -both hexadecimal and ASCII displayed.\ -\ -DUMP [ \{, \} ] , \ -\ -This displays a portion of the EEPROM. The last expression gives the number\ -of bytes to be displayed. The first portion describes a starting address in EEPROM.\ -See the SPIN statement for a description of the values.\ -\ -COPY [ \{, \} ] , [ \{, \}]\ -\ -This copies a Spin program from the first 32K byte EEPROM "page" specified\ -to the second. As with the SPIN statement, if only one expression is supplied,\ -it provides the starting EEPROM address. If two are supplied, the first is the\ -pin number of the SCL line while the seconds is the EEPROM address.\ -The amount of data copied is taken from the beginning of the Spin program\ -binary file.\ -\ -COPY "" , [ \{, \}]\ -\ -This copies a Spin program from an SD card file to a 32K byte EEPROM "page".\ -\ -COPY [ \{, \} ] , ""\ -\ -This copies a Spin program from a 32K byte EEPROM "page" to an SD card file.\ -\ - -\b \ul BOE-BOT Extensions -\b0 \ulnone \ -\ -The BOE-BOT version of FemtoBasic is similar to the regular version\ -except that it uses a full duplex serial port for its keyboard input and\ -display output and several "pseudo-variables" and statements have\ -been added to control servos, a PING distance sensor, IR distance\ -sensors, and an HM55B compass connected via a PCA9554 I2C\ -I/O Expander. A Propeller Proto Board or equivalent is assumed.\ -\ -The left servo is connected to I/O pin 0, the right servo to pin 1, and the\ -PING bracket servo to pin 2. An IR detector is connected to pin 3 and\ -an IR LED is connected to pin 4. The PING control signal is connected\ -to pin 5. The "console" receive line is pin 6 and the transmit line is pin 7.\ -This "console" is implemented using a configured xBee transceiver.\ -A PCA9554 I2C I/O Expander is connected to the boot EEPROM bus\ -using I/O pins 28 (SCL) and 29 (SDA).\ -\ -The HM55B Ena pin is connected to PCA9554 I/O pin 0. The Clk pin\ -is connected to pin1. DI is connected to pin 2 and DO to pin 3.\ -\ -Two different binary versions are provided. One uses the programming\ -serial port for the "console" (BoeBotBasicUS.binary) and the other uses\ -pins 6 and 7 for wireless operation via an xBee transceiver\ -(BoeBotBasicXB.binary).\ -\ - -\b \ul Expressions -\b0 \ulnone \ -\ -PING\ -\ -This value is the distance in mm of the last PING reading (one-way). It\ -will be zero if a new reading has been initiated, but a value isn't ready yet.\ -\ -IRZONE [ , , ]\ -\ -The first expression is the center frequency (in Hz). The second expression\ -is the number of zones. The third expression is the width of a zone (in Hz).\ -The IR emitter frequency is swept from the last zone to the center frequency\ -with about 200 cycles of each frequency emitted per zone. This value is the\ -number of the first zone where a response is detected (#zones-1 to 0) or -1\ -to indicate that no response was detected.\ -\ -EXPAND [ ]\ -\ -This is the value of the PCA9554 I2C I/O Expander's register whose address\ -is supplied.\ -\ -COMPASS\ -\ -This value is the compass heading in brads (0 to 359 degrees is the same\ -as 0-255).\ -\ - -\b \ul Statements -\b0 \ulnone \ -\ -SRVLEFT \{[ ]\} = \ -SRVRIGHT \{[ ]\} = \ -SRVPING \{[ ]\} = \ -\ -Send a pulse stream to the specified servo with a width (in us) given by the\ -expression on the right side of the assignment. If a square bracketed\ -expression is provided, this is the number of pulses to send (at 20ms intervals).\ -If no pulse count is provided, the pulse train continues indefinitely. If either the\ -pulse count is zero or the pulse width is zero, the pulse train will stop. The\ -pulse width must lie between 500us and 2500us.\ -\ -PING\ -\ -Initiates a new PING cycle. The one-way path length will be zero until the new\ -reading is complete.\ -\ -COMPASS , \ -\ -Reads the raw x and y values of the HM55B compass and assign them to the\ -first and second variables specified respectively.\ -\ -EXPAND [ ] = \ -\ -The PCA9554 I2C I/O Expander's register whose address is supplied is set\ -to the value on the right side of the assignment.\ -\ - -\b \ul IR Buddy Extensions -\b0 \ulnone \ -\ -The IR Buddy version of FemtoBasic is identical to the regular version\ -except that statements have been added to control one or more IR Buddy\ -devices. These may be connected to any otherwise available I/O pin.\ -\ - -\b \ul Statements -\b0 \ulnone \ -\ -IRBSEND \ -\ -The expression is the I/O pin number to be used. This resets the IR Buddy.\ -\ -IRBSEND , \{, \}\ -\ -The first expression is the I/O pin to be used. The remaining expressions\ -are byte values to be sent to the IR Buddy (at 9600 Baud).\ -\ -IRBRECV , , \{, \}\ -\ -The first expression is the I/O pin to be used. The second expression is\ -an initial timeout (in ms) to use. Subsequent timeouts are 10ms. The\ -number of bytes specified are received, one in each variable. If a timeout\ -occurs, that variable and all subsequent ones are set to -1.\ -\ - -\b \ul uOLED-96-Prop Extensions -\b0 \ulnone \ -\ -UOLED SETUP\ -\ -Initialize the uOLED-96-Prop. This must be done before any other operations are done.\ -\ -UOLED START\ -\ -Power up the screen electronics and display any data previously written to graphics RAM.\ -\ -UOLED STOP\ -\ -Power down the screen electronics without disturbing any data in graphics RAM.\ -\ -UOLED LEVEL \ -\ -Set the master contrast setting (range 0-15).\ -\ -UOLED COLOR , , \ -\ -Set the individual color contrast values (range 0-255).\ -\ -UOLED DIM , , , \ -\ -Dim a designated screen window given the coordinates of the left upper corner and the\ -right lower corner.\ -\ -UOLED PIXEL , , , , \ -\ -Writes 2 bytes of color data to the pixel at the coordinate specified. The color information\ -range is 0-255.\ -\ -UOLED SCROLL SETUP , ,
, <# Lines> , \ -\ -X is he number of columns of horizontal offset. Y is the number of lines of vertical offset.\ -Address is the starting line address. # Lines is the number of lines to be scrolled\ -horizontally. Interval is the time interval between scroll steps. 0 = 6 frames, 1 = 10 frames,\ -2 = 100 frames, and 3 = 200 frames.\ -\ -UOLED SCROLL START\ -\ -Activate the scrolling function as set up previously\ -\ -UOLED SCROLL STOP\ -\ -Deactivate the scrolling function\ -\ -UOLED LINE , , , , , , \ -\ -Display a line from the specified left upper corner to the specified right lower corner in the color\ -specified.\ -\ -UOLED RECT , , , , , , \{, , , \}\ -\ -Display a rectangle from the specified left upper corner to the specified right lower corner of the\ -display. The first set of color values is used for the outline color. If the second set of color values\ -is given, it's used for the fill color. If not, the outline color is used for the fill color as well.\ -\ -UOLED COPY , , , , , \ -\ -Copy one area of the display screen to another. The left upper corner and the right lower corner\ -of the source area is supplied followed by the left upper corner of the destination area.\ -\ -UOLED TEXT , , , , , " ... "\ -UOLED TEXT , , , , , \ -\ -Display text using the current font starting at the coordinates provided. These are in terms of character\ -positions, not pixels (range X: 0-11/15, Y: 0-7). Wraparound occurs at the right and bottom of the display.\ -The first form displays the contents of the string while the second form displays the decimally\ -formatted value of the expression given with a leading minus sign if negative. With the 5x7 font, there\ -are 16 characters per line. With the 8x8 font, there are 12 characters per line.\ -\ -UOLED TEXT , , \ -\ -Set the default background color for text. It's set to black during the initialization of FemtoBasic.\ -\ -UOLED TEXT \ -\ -Set the current font. 0 - 5x7 font. 1 - 8x8 font (default).\ -\ -UOLED ERASE\ -\ -Erase the screen (to black).\ -\ -UOLED RESET\ -\ -Resets the display. You must do a UOLED SETUP afterwards.\ -\ -UOLED CIRCLE , , , , , \ -\ -Display a circle whose center is at X,Y and whose radius is Rad using the color specified. If Rad\ -is negative, the circle is filled with the color specified and the radius is the absolute value of Rad.\ -\ -UOLED CIRCLE , , , , , , \ -\ -Display a one eighth circle arc whose center is at X,Y and whose radius is Rad using the color\ -specified. If Rad is negative, the one eighth circle pie slice is filled with the color specified and\ -the radius is the absolute value of Rad. Arc indicates which one eighth circle is to be displayed.\ -1 - 0 to 45 degrees, 2 - 45 to 90 degrees, 3 - 90 to 135 degrees, 4 - 135 to 180 degrees.\ -\ - -\b \ul HC-OSD Extensions -\b0 \ulnone \ -\ -The Hitt Consulting's Overlay Screen Display version uses the PS/2 keyboard for input and the\ -overlay screen driver for output. None of the commands that use SD card files are present.\ -\ - -\b \ul Expressions -\b0 \ulnone \ -\ -SERIAL [ ]\ -\ -The parameter is a timeout in milliseconds. This returns the character received from the 19.2Kbps\ -serial interface or a -1 if the timeout occurs.\ -\ -SERCHK [ ]\ -\ -The parameter is a character. This searches the entire buffered serial input stream for the speciied\ -character and returns true (-1) if the character is present and false (0) otherwise. The serial buffer\ -is not changed.\ -\ -TIME [ ]\ -\ -If the value is between 0 and 6, this returns the binary value of the most recently read time unit\ -(0 - Seconds, 1 - Minutes, 2 - Hours, 3 - Day of Week, 4 - Day, 5 - Month, 6 - Year). If the value\ -is 7, this returns the control register value read from the DS1307. For values from 8 to 63, this\ -returns the value stored in the DS1307's RAM at that address.\ -\ -GPS [ ]\ -\ -If the value is negative, this returns the next character from the GPS serial buffer with the absolute\ -value of the expression used as a timeout in milliseconds. It returns a -1 if the timeout is exceeded.\ -If the value is positive, this returns a character from the saved GPS phrase whose index is the\ -value provided. It returns a -1 if the value is out of range or if there's no saved GPS phrase.\ -\ - -\b \ul Statements -\b0 \ulnone \ -\ -TIME\ -\ -This reads the current time from the DS1307 into an internal buffer used by TIME [ ].\ -\ -TIME [
] = \ -\ -This writes the expression on the right side of the "=" into the control register or RAM whose address\ -is given. Addresses less than 7 or greater than 63 are not allowed.\ -\ -TIME , , , , , , \ -\ -This writes the time / date indicated to the appropriate locations in the DS1307 clock. The values are\ -given in binary and are translated to BCD. The BCD values are also stored in the internal buffer\ -used by TIME [ ]. The BCD values are written to the DS1307 in a single operation.\ -\ -GPS\ -\ -This starts up a background routine (in a cog) that discards any buffered GPS phrase, then begins\ -discarding any buffered serial input up to the first "$" character which begins the next GPS phrase.\ -Characters are then stored in the internal GPS phrase buffer (used by GPS [ ]) until a "*" is\ -seen. The next two characters must be hexadecimal values which are used as a checksum for the\ -phrase. If the checksum is invalid, the phrase is discarded and the routine begins searching for the\ -next phrase. If this background routine is already active, it is stopped and any saved information\ -is discarded before starting it again. Once this background routine successfully finds a complete\ -GPS phrase, it stops itself.\ -} \ No newline at end of file diff --git a/system/regnatix/admtest.spin b/system/regnatix/admtest.spin deleted file mode 100644 index 1f550c1..0000000 Binary files a/system/regnatix/admtest.spin and /dev/null differ diff --git a/system/regnatix/basic.spin b/system/regnatix/basic.spin deleted file mode 100644 index 974028a..0000000 Binary files a/system/regnatix/basic.spin and /dev/null differ diff --git a/system/regnatix/beltest.spin b/system/regnatix/beltest.spin deleted file mode 100644 index e5ee564..0000000 Binary files a/system/regnatix/beltest.spin and /dev/null differ diff --git a/system/regnatix/charmap.spin b/system/regnatix/charmap.spin deleted file mode 100644 index b432ce3..0000000 Binary files a/system/regnatix/charmap.spin and /dev/null differ diff --git a/system/regnatix/eram.spin b/system/regnatix/eram.spin deleted file mode 100644 index b816e8c..0000000 Binary files a/system/regnatix/eram.spin and /dev/null differ diff --git a/system/regnatix/eram.txt b/system/regnatix/eram.txt deleted file mode 100644 index 92024bf..0000000 --- a/system/regnatix/eram.txt +++ /dev/null @@ -1,33 +0,0 @@ - -cls - bildschirm löschen -bye - player beenden -d - anzeige eram -n - anzeige fortsetzen -m ... - ram modifizieren (byte) -l ... - ram modifizieren (long) -load - ladei datei in eram -sysvar - anzeige systemvariablen -rbas - basisadresse setzen -info - speicheraufteilung anzeigen -f - speicherbereich füllen (sysmod) -fu - speicherbereich füllen (usermod) -xinit - rdisk initialisieren -xnew - neue datei anlegen -xhead - header anzeigen -xdir - dir anzeigen -xdel - datei löschen -xren - datei umbenennen -xftab - ftab anzeigen -xopen - datei öffnen -xseek - zeiger positionieren -xput - zeichen in datei schreiben -xget - zeichenh aus datei lesen -xwrite - wert schreiben -xread - wert lesen -xload - datei in rd laden -xsave - datei fn1 auf sd fn2 speichern - -bas - basisadresse -end - endadresse (startsysvar) -sys - start systemvariablen -rd: - daten datei diff --git a/system/regnatix/flash.spin b/system/regnatix/flash.spin deleted file mode 100644 index 5b2aeb1..0000000 Binary files a/system/regnatix/flash.spin and /dev/null differ diff --git a/system/regnatix/flash.txt b/system/regnatix/flash.txt deleted file mode 100644 index cd9f657..0000000 --- a/system/regnatix/flash.txt +++ /dev/null @@ -1,10 +0,0 @@ -/? : Hilfe -/fh : Datei in HI-ROM flashen -/fl : Datei in LO-ROM flashen -/dh : Dump HI-ROM -/dl : Dump LO-ROM -/vh : Vergleich Datei <--> HI-ROM -/ch : HI-ROM löschen -/cl : LO-ROM löschen -/sh : HI-ROM speichern -/sl : LO-ROM speichern diff --git a/system/regnatix/fterm.spin b/system/regnatix/fterm.spin deleted file mode 100644 index c0a8b8a..0000000 Binary files a/system/regnatix/fterm.spin and /dev/null differ diff --git a/system/regnatix/hplay.spin b/system/regnatix/hplay.spin deleted file mode 100644 index 3132192..0000000 Binary files a/system/regnatix/hplay.spin and /dev/null differ diff --git a/system/regnatix/hplay.txt b/system/regnatix/hplay.txt deleted file mode 100644 index 78a0da2..0000000 --- a/system/regnatix/hplay.txt +++ /dev/null @@ -1,7 +0,0 @@ -/? : hilfetext -/p name.wav : hss-datei abspielen -/d : verzeichnis abspielen -/s : wiedergabe stoppen -/t : anzeige trackerliste -/r : anzeige engine-register -/i : anzeige interface-register diff --git a/system/regnatix/ios.spin b/system/regnatix/ios.spin deleted file mode 100644 index bbc9ded..0000000 Binary files a/system/regnatix/ios.spin and /dev/null differ diff --git a/system/regnatix/keycode.spin b/system/regnatix/keycode.spin deleted file mode 100644 index ba3ae86..0000000 Binary files a/system/regnatix/keycode.spin and /dev/null differ diff --git a/system/regnatix/perplex.spin b/system/regnatix/perplex.spin deleted file mode 100644 index a99c738..0000000 Binary files a/system/regnatix/perplex.spin and /dev/null differ diff --git a/system/regnatix/perplex.txt b/system/regnatix/perplex.txt deleted file mode 100644 index 1ec44d1..0000000 --- a/system/regnatix/perplex.txt +++ /dev/null @@ -1,7 +0,0 @@ -open - plexus öffnen -close - plexus schliessen -put - zeichen zu plexus senden -get - zeichen von plexus empfangen -testout - werte an port ausgeben -testin - eingangswerte port anzeigen -scan - 0..anz plexus abfragen \ No newline at end of file diff --git a/system/regnatix/pterm.spin b/system/regnatix/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/system/regnatix/pterm.spin and /dev/null differ diff --git a/system/regnatix/ramtest.spin b/system/regnatix/ramtest.spin deleted file mode 100644 index b2ec4d2..0000000 Binary files a/system/regnatix/ramtest.spin and /dev/null differ diff --git a/system/regnatix/regime.spin b/system/regnatix/regime.spin deleted file mode 100644 index 92d08dc..0000000 Binary files a/system/regnatix/regime.spin and /dev/null differ diff --git a/system/regnatix/regime.txt b/system/regnatix/regime.txt deleted file mode 100644 index 49e8fbf..0000000 --- a/system/regnatix/regime.txt +++ /dev/null @@ -1,57 +0,0 @@ -help - diese hilfe - - bin/adm/bel-datei wird gestartet -mount - sd-card mounten -unmount - sd-card abmelden -dir wh - verzeichnis anzeigen -type - anzeige einer textdatei -aload - administra-code laden -bload - bellatrix-treiber laden -rload - regnatix-code laden -del - datei löschen -cls - bildschirm löschen -free - freier speicher auf sd-card -attrib ashr - attribute ändern -cd - verzeichnis wechseln -mkdir - verzeichnis erstellen -rename - datei/verzeichnis umbenennen -format - sd-card formatieren -reboot - hive neu starten -sysinfo - systeminformationen -color <0..7> - farbe wählen -cogs - belegung der cogs anzeigen -dmlist - anzeige der verzeichnis-marker -dm - in das entsprechende marker- - verzeichnis wechseln -dmset - setzt den entsprechenden marker - auf das aktuelle verzeichnis -dmclr - marker löschen -forth - forth starten - -marker: -r - root-verzeichnis -s - system-verzeichnis -u - user-verzeichnis -a/b/c - benutzerdefinierte verzeichnismarker -r, s, u-marker werden vom system automatisch gesetzt und -intern verwendet. - -RAMDISK: - -xload - datei in ram laden -xsave - datei aus ram speichern -xdir - verzeichnis im ram anzeigen -xrename - datei im ram umbenennen -xdel - datei im ram löschen -xtype - text im ram anzeigen - -EXTERNE KOMMANDOS: - -sysconf - systemeinstellungen -hplay - hss-player -wplay - wav-player -sfxtool - hss-soundeffekte erstellen - -vga.bin - vga 1024 x 768 pixel, 64 x 24 zeichen -htext.bin - vga 1024 x 768 pixel, 128 x 48 zeichen -tv.bin - tv-textmodus 40 x 13 zeichen - diff --git a/system/regnatix/rom.spin b/system/regnatix/rom.spin deleted file mode 100644 index 8eabc10..0000000 Binary files a/system/regnatix/rom.spin and /dev/null differ diff --git a/system/regnatix/sdspiFemto.spin b/system/regnatix/sdspiFemto.spin deleted file mode 100644 index b4c5c70..0000000 --- a/system/regnatix/sdspiFemto.spin +++ /dev/null @@ -1 +0,0 @@ -{{ Modified Tiny Basic for use with Propeller Demo Board and Hydra. I2C and SPI driver initialization & interface object derived from Propeller OS. Copyright (c) 2009 Michael Green. See end of file for terms of use. }} '' 2006/09/24 - Corrected action table for i2cRead0Cmd '' 2006/10/02 - Improved assembly comments. Changed i2cReset, i2cStop '' 2006/11/02 - Changed data setup time. Changed i2cReset timing '' 2006/11/03 - Changed read/write method speed to 100KHz '' 2006/11/04 - Added checkPresence, writeWait, and computeTimes methods '' 2006/11/06 - Limited boot loading to 32K - 16 (OS uses last 16 bytes) '' Added ioVerifyCmd and verifyEEPROM method '' 2006/11/09 - Modified boot and verify to use the minimum of the actual '' length of the program stored in vbase ($0008) or the '' specified byte count. '' Note also that these routines don't know about option bits. '' 2006/11/10 - Now control block address is passed to start routine '' 2007/01/09 - Added SPI routines for SD card FAT access '' 2007/01/13 - Corrected checksum when ioBoot or ioVerify '' 2007/01/13 - Stores stack marker & clears VAR area on ioBootCmd '' 2007/02/06 - Stores stack marker & clears VAR area on ioSpiBoot '' 2007/02/13 - Changed the way verify mode was done, combined code '' 2007/02/20 - Added ioStopLdr option to stop the loader's cog '' 2007/02/22 - Corrected bootSDCard. Needs start and initSDCard calls first. '' 2009/04/04 - spiDoStop modified per Cluso99 to turn off card '' 2009/07/21 - I2C setup times modified per Nick Mueller's timing tests '' Default I2C bus timing changed to 400KHz. Thanks Nick. '' This portion is normally run only once during initialization and the driver remains '' resident in a cog. These routines can be used completely independently of the rest '' of the Propeller OS. The start routine here expects the address of a 2 long area '' to be used for passing information to the I/O routines in the COG. This area should '' be located in an area of memory not expected to be overlaid by data or a program that '' might be loaded since the COG routines will be accessing this information after an '' operation has completed. '' This object provides an I2C EEPROM read/write routine that can handle both 100KHz and '' 400KHz bus speeds and EEPROM page sizes of 64, 128, or 256 bytes (or no paging/no delay '' as with Ramtron serial RAM). The SPIN interpreter can be started after reading, either '' in the same COG used by these routines or in a free COG. The control information is '' passed in a 2 long parameter block whose address is passed to the COG when it is started. '' The parameter block is updated when the operation is completed. Note that these are shown '' here as they appear in a long value rather than the order of the bytes in memory. '' ------------------------------------------------------------------- '' | cmd/status | I/O pin / device / address | '' ------------------------------------------------------------------- '' | byte count | HUB address | '' ------------------------------------------------------------------- '' The EEPROM address is in the same format used by other routines with the I/O pin pair '' in bits 21..19, the device address in bits 18..16, and the 64K address in bits 15..0. '' Note that the I/O pin pair is the number of the SCL pin divided by 2. The SDA pin is '' always the next higher numbered pin. The command code is in the low order bits of the '' high order byte of the first long (see ioCmdMask). This is always non-zero to indicate '' that a command is to be performed by the COG routines. When the command is finished, '' this is set to zero. The errorFlag bit is set to one if a NAK was read after a write '' transfer. This is the only error reported by these routines. A read operation and '' zero-length writes do involve several write transfers for addressing, but the data '' read transfer has no error checking. When the command is completed, the device address, '' byte count, and HUB address are all updated to their values at that time. For the '' verify operation (ioVerifyCmd), an error is reported if the checksum is not zero and '' the HUB address field is not incremented. It may be used for some other checksum '' reporting in the future. '' The pins used for the boot EEPROM I2C bus (at least on Parallax's Demo Board) do not '' have a pullup on SCL. This requires that SCL be driven both high and low. If the bus '' used is on pins 28 and 29, SCL is actively driven at all times. '' These EEPROM read/write routines do not provide for waiting for the write to complete '' nor do they check for paged writes. All bytes in a multi-byte write must lie within '' a single EEPROM page since the EEPROM write address counter wraps around at a page '' boundary. Similarly, for multi-byte reads, all requested bytes must lie within the '' same device since the sequential read counter wraps around at the device boundary. '' Command codes are provided for devices with zero, one, or two address bytes following '' the device selection byte. As for all I2C devices, addressing is done using write '' mode and the device is reselected in read mode after the last address byte. In the '' case of ioRead0Cmd, the device is initially selected in read mode. For 8-bit addresses, '' the device select code is taken from bits 15-8 of the address value. For the case '' without address bytes, the device select code is taken from bits 7-0 of the address value. '' These device select codes must have their least significant bit set to zero (for write '' mode) except in the case of ioRead0Cmd where it must be set to one for proper operation. '' SPI data is handled a little differently. For ioSpiInit, the 6 bit pin numbers for DO, '' Clk, DI, and CS are given from MSB to LSB of the 24 bit address field of the command and '' are used for all further I/O operations (until an ioSpiStop is done). CON '' Command code and error information for I2C driver '' (For convenience in using just OS_loaderInit, these are included here. The "master" '' copies are considered the ones in OS_loader and these must be kept up-to-date). ioReadCmd = %00000001 ' Read from EEPROM to HUB RAM (16 bit addresses) ioWriteCmd = %00000010 ' Write to EEPROM from HUB RAM (16 bit addresses) ioRead1Cmd = %00000011 ' Read from a device with only 8-bit addresses ioWrite1Cmd = %00000100 ' Write to a device with only 8-bit addresses ioRead0Cmd = %00000101 ' Read from a device without address bytes ioWrite0Cmd = %00000110 ' Write to a device without address bytes ioBootCmd = %00001000 ' Read from EEPROM to HUB RAM, then start a ' new SPIN interpreter in the COG whose ID is ' supplied in the lower 3 bits of this command ' This COG is stopped before the read is done ' unless it's the one used to execute the loader ioSpiInit = %00010000 ' Initialize the specified SPI bus and SD card ioSpiStop = %00010001 ' Change all SD card pins to inputs ioSpiRead = %00010010 ' Read one or more bytes from the SD card ioSpiWrite = %00010011 ' Write one or more bytes from the SD card ioSpiBoot = %00011000 ' Like ioBootCmd, but uses ioSpiRead for loading ioCmdMask = %00011111 ' Used to mask off command bits ioSpiMask = %00010000 ' Used to test for SPI command codes ' Options for commands ioNoStore = %00100000 ' If set, data is not stored into main memory ' If ioBootCmd or ioSpiBoot, no cogs are ' stopped and a new cog is not started. ioLowSpeed = %01000000 ' If set, I2C runs at 100KHz rather than 400KHz ioStopLdr = %10000000 ' If set, the loader's cog is stopped after a boot ' Return status ioWriteErr = %10000000 ' An error occurred during an I2C write (NAK) ioTestRdy = ioCmdMask << 24 ' Used to test 1st control long for ready ioTestErr = ioWriteErr << 24 ' Used to test 1st control long for write error '' Other constants from OS_loader i2cBootSCL = 28 ' Boot EEPROM SCL pin bootAddr = i2cBootSCL << 18 ' Address of boot EEPROM clkfreqVal = $0000 ' Current CLKFREQ value stored here clksetVal = $0004 ' Current CLKSET value stored here chksumVal = $0005 ' Checksum over memory stored here vbase = $0008 ' Length of Spin program loaded (# longs * 4) dbase = $000A ' Address of start of stack (marker below) VAR long cog, control PUB bootEEPROM(addr) | t, c0, c1 '' Load and run a new SPIN program if not start(@c0) ' Start up the I/O routines using a abort ' local control block long[control][1] := 0 ' Check for the presence of EEPROM long[control][0] := ioReadCmd << 24 | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for check to complete and if long[control][0] & ioTestErr ' abort if there's an error abort repeat t from 0 to 7 ' Stop all COGs except this one and if (t <> cogid) and (t <> (cog-1)) ' the one with the I2C driver in it cogstop(t) t := ioBootCmd | ioStopLdr | cogid ' Tell the I2C driver to load 32K long[control][1] := $80000000 ' into HUB RAM after stopping long[control][0] := (t << 24) | (addr & $FFFFFF) ' this calling cog repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB readEEPROM(addr,buffer,count) | t '' Read a block from EEPROM to RAM t := ioReadCmd repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (t << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB writeEEPROM(addr,buffer,count) | t '' Write a block to EEPROM from RAM t := ioWriteCmd repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (t << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB checkPresence(addr) | t '' This routine checks to be sure there is an I2C bus and an EEPROM at the '' specified address. Note that this routine cannot distinguish between a '' 32Kx8 and a 64Kx8 EEPROM since the 16th address bit is a "don't care" '' for the 32Kx8 devices. Return true if EEPROM present, false otherwise. t := ioReadCmd repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := 0 ' Attempt to address the device long[control][0] := (t << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) == 0 ' Return false on error PUB writeWait(addr) | t '' Wait for EEPROM to complete write t := cnt repeat until checkPresence(addr) ' Maximum wait time is 20ms if (cnt - t) > (clkfreq / 50) return true ' Return true if a timeout occurred return false ' Otherwise return false PUB computeTimes '' Set up timing constants in assembly ' (Done this way to avoid overflow) i2cDataSet1 := ((clkfreq / 10000) * 900) / 100000 ' Data setup time - 900ns (100KHz) i2cClkLow1 := ((clkfreq / 10000) * 4700) / 100000 ' Clock low time - 4700ns (100KHz) i2cClkHigh1 := ((clkfreq / 10000) * 4000) / 100000 ' Clock high time - 4000ns (100KHz) i2cDataSet4 := ((clkfreq / 10000) * 550) / 100000 ' Data setup time - 550ns (400KHz) i2cClkLow4 := ((clkfreq / 10000) * 1300) / 100000 ' Clock low time - 1300ns (400KHz) i2cClkHigh4 := ((clkfreq / 10000) * 1000) / 100000 ' Clock high time - 1000ns (400KHz) i2cPause := clkfreq / 100000 ' Pause between checks for operations PUB initSDCard(DO,Clk,DI,CS) | t '' Initialize SD card access t := cnt repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := 0 long[control][0] := ioSpiInit << 24 | DO << 18 | Clk << 12 | DI << 6 | CS repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB stopSDCard '' Stop SD card access repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := 0 long[control][0] := ioSpiStop << 24 repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB readSDCard(addr,buffer,count) '' Read block(s) from SD card to RAM repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (ioSpiRead << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB writeSDCard(addr,buffer,count) '' Write block(s) to SD card from RAM repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (ioSpiWrite << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB bootSDCard(addr,count) | t '' Boot from an SD card if count < 16 ' Must load at least 16 bytes return true repeat t from 0 to 7 ' Stop all COGs except this one and if (t <> cogid) and (t <> (cog-1)) ' the one with the I2C/SPI driver cogstop(t) t := ioSpiBoot | ioStopLdr | cogid ' Tell the SD card driver to load long[control][1] := count << 16 ' into HUB RAM after stopping long[control][0] := (t << 24) | (addr & $FFFFFF) ' this calling cog repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB start(ctrlBlk) | t '' Start the I2C I/O driver (standalone) control := ctrlBlk '' using address of 2 longs for control stop ' Stop a previous copy computeTimes long[control][0] := 0 ' Initialize the control block long[control][1] := 0 cog := cognew(@i2cEntryPoint,control) + 1 ' Start a new cog with the I2C driver return cog > 0 ' Indicate success PUB stop '' Stop the I2C I/O driver (standalone) if cog > 0 cogstop(cog - 1) PUB getControl(i) '' Return a long from the control block return long[control][i] ' Check for operation completed first PUB setControl(i,value) '' Set value of a long in the control block long[control][i] := value ' Always set the first long last DAT org 0 i2cEntryPoint mov i2cTemp,i2cPause add i2cTemp,CNT ' Wait 10us before checking waitcnt i2cTemp,#0 i2cNewOpFetch rdlong i2cAddr,PAR ' Fetch control information mov i2cCmd,i2cAddr shr i2cCmd,#24 ' Isolate command code mov Options,i2cCmd and i2cAddr,i2cAddrMask ' Only need address at this point and i2cCmd,#ioCmdMask wz if_z jmp #i2cEntryPoint ' Wait for a new operation mov i2cTemp,PAR add i2cTemp,#4 ' Now get 2nd long of packet rdlong i2cCount,i2cTemp mov i2cBufAdr,i2cCount ' Byte count rdlong SaveClkFreq,#clkfreqVal ' Save clock frequency and mode shr i2cCount,#16 and i2cBufAdr,i2cWordMask ' HUB RAM address of buffer rdbyte SaveClkMode,#clksetVal movs ShiftData,#0 ' Initialize for saving Preamble mov StoreLocal,initStore ' on I2C and SPI reads mov Preamble+0,#0 mov Preamble+1,#0 mov Preamble+2,#0 mov Preamble+3,#0 mov CheckSum,#$EC ' Adjust checksum for stack marker test Options,#ioNoStore wc test i2cCmd,#ioBootCmd wz if_nz_and_nc mov i2cTemp,i2cCmd ' Stop the caller's COG unless if_nz_and_nc and i2cTemp,#%111 ' it's this one if_nz_and_nc cogid i2cCogId if_nz_and_nc cmp i2cCogId,i2cTemp wz if_nz_and_nc cogstop i2cTemp test i2cCmd,#ioSpiMask wz ' Check for SPI commands if_nz jmp #spiEntryPoint movs :getAction,i2cCmd ' Get command specific action test i2cCmd,#ioBootCmd wz ' bit sequence. ioBootCmd is if_nz movs :getAction,#ioReadCmd ' treated as ioReadCmd here add :getAction,#ActionTbl mov i2cDataSet,i2cDataSet1 mov i2cClkLow,i2cClkLow1 mov i2cClkHigh,i2cClkHigh1 :getAction mov Action,0-0 test Options,#ioLowSpeed wc ' Set bus speed based on option if_nc mov i2cDataSet,i2cDataSet4 if_nc mov i2cClkLow,i2cClkLow4 if_nc mov i2cClkHigh,i2cClkHigh4 mov i2cTemp,i2cAddr shr i2cTemp,#18 ' Determine bit masks for and i2cTemp,#%11110 ' I/O pins for I2C bus mov i2cSCL,#1 shl i2cSCL,i2cTemp mov i2cSDA,i2cSCL ' SDA is next higher pin shl i2cSDA,#1 test FirstCall,i2cSCL wz ' Is this our first call? andn FirstCall,i2cSCL ' if so, do a reset if_nz call #i2cReset call #i2cStart ' Do a start sequence test Action,#%000000001 wz if_z jmp #:skipAction0 mov i2cData,i2cAddr ' Construct a device select shr i2cData,#15 ' code for EEPROM write mode and i2cData,#%00001110 ' with 2 address bytes or i2cData,#%10100000 mov i2cMask,#%10000000 call #i2cWrite ' Send device select code if_c jmp #:doStop ' Failure if NAK received :skipAction0 test Action,#%000000010 wz if_z jmp #:skipAction1 mov i2cData,i2cAddr ' First address byte is most shr i2cData,#8 ' significant byte of address mov i2cMask,#%10000000 call #i2cWrite ' Send first address byte if_c jmp #:doStop ' Failure if NAK received :skipAction1 test Action,#%000000100 wz if_z jmp #:skipAction2 mov i2cData,i2cAddr ' Second address byte is least mov i2cMask,#%10000000 ' significant byte of address call #i2cWrite ' Send second address byte if_c jmp #:doStop ' Failure if NAK received :skipAction2 tjz i2cCount,#:doStop ' If byte count == 0, we're done test Action,#%000001000 wz if_nz call #i2cStart ' Do a start sequence if readdressing :doReadWrite test Action,#%000010000 wz if_nz rdbyte i2cData,i2cBufAdr ' If writing, fetch the data value if_nz add i2cBufAdr,#1 ' and increment the hub address test Action,#%000100000 wz if_z jmp #:skipAction5 mov i2cData,i2cAddr ' If reading, construct a device select shr i2cData,#15 ' code for EEPROM read mode with and i2cData,#%00001110 ' 2 address bytes or i2cData,#%10100001 :skipAction5 test Action,#%001000000 wz if_z jmp #:skipAction6 mov i2cData,i2cAddr ' If reading using a single byte address shr i2cData,#8 ' construct a device select code for or i2cData,#%00000001 ' read mode given one for write mode :skipAction6 test Action,#%010000000 wz if_z jmp #:skipAction7 mov i2cMask,#%10000000 ' Either readdress device for reading call #i2cWrite ' or write a data value at this point if_c jmp #:doStop ' Failure if NAK received :skipAction7 test Action,#%100000000 wz if_z jmp #:skipAction8 cmp i2cCount,#2 wc ' Carry true if this is the last byte mov i2cMask,#%10000000 mov i2cData,#0 call #i2cRead call #StoreData ' Now force carry false to show success or i2cZero,#0 nr,wc andn Action,#%011100000 ' No readdressing on subsequent reads :skipAction8 add i2cAddr,#1 djnz i2cCount,#:doReadWrite ' Repeat for number of bytes requested :doStop call #i2cStop if_c or i2cAddr,errorFlag ' Carry true indicates error jmp #checkEndIO '' Low level I2C routines. These are designed to work either with a standard I2C bus '' (with pullups on both SCL and SDA) or the Propellor Demo Board (with a pullup only '' on SDA). Timing can be set by the caller to 100KHz or 400KHz. '' Do I2C Reset Sequence. Clock up to 9 cycles. Look for SDA high while SCL '' is high. Device should respond to next Start Sequence. Leave SCL high. i2cReset andn dira,i2cSDA ' Pullup drive SDA high mov i2cBitCnt,#9 ' Number of clock cycles mov i2cTime,i2cClkLow add i2cTime,cnt ' Allow for minimum SCL low :i2cResetClk andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL waitcnt i2cTime,i2cClkHigh test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkLow ' Allow minimum SCL high test i2cSDA,ina wz ' Stop if SDA is high if_z djnz i2cBitCnt,#:i2cResetClk ' Stop after 9 cycles i2cReset_ret ret ' Should be ready for Start '' Do I2C Start Sequence. This assumes that SDA is a floating input and '' SCL is also floating, but may have to be actively driven high and low. '' The start sequence is where SDA goes from HIGH to LOW while SCL is HIGH. i2cStart andn dira,i2cSDA ' Pullup drive SDA high andn outa,i2cSDA ' SDA set to drive low mov i2cTime,i2cClkLow add i2cTime,cnt ' Allow for bus free time waitcnt i2cTime,i2cClkHigh test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkHigh ' Allow for start setup time or dira,i2cSDA ' Active drive SDA low waitcnt i2cTime,#0 ' Allow for start hold time andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL i2cStart_ret ret '' Do I2C Stop Sequence. This assumes that SCL is low and SDA is indeterminant. '' The stop sequence is where SDA goes from LOW to HIGH while SCL is HIGH. '' i2cStart must have been called prior to calling this routine for initialization. '' The state of the (c) flag is maintained so a write error can be reported. i2cStop or dira,i2cSDA ' Active drive SDA low mov i2cTime,i2cClkLow add i2cTime,cnt ' Wait for minimum clock low waitcnt i2cTime,i2cClkLow test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkHigh ' Wait for minimum setup time andn dira,i2cSDA ' Pullup drive SDA high waitcnt i2cTime,#0 ' Allow for bus free time andn dira,i2cSCL ' Leave SCL and SDA high i2cStop_ret ret '' Write I2C data. This assumes that i2cStart has been called and that SCL is low, '' SDA is indeterminant. The (c) flag will be set on exit from ACK/NAK with ACK == false '' and NAK == true. Bytes are handled in "little-endian" order so these routines can be '' used with words or longs although the bits are in msb..lsb order. i2cWrite mov i2cBitCnt,#8 mov i2cTime,i2cClkLow add i2cTime,cnt ' Wait for minimum SCL low :i2cWriteBit waitcnt i2cTime,i2cDataSet test i2cData,i2cMask wz if_z or dira,i2cSDA ' Copy data bit to SDA if_nz andn dira,i2cSDA waitcnt i2cTime,i2cClkHigh ' Wait for minimum setup time test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkLow andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL ror i2cMask,#1 ' Go do next bit if not done djnz i2cBitCnt,#:i2cWriteBit andn dira,i2cSDA ' Switch SDA to input and waitcnt i2cTime,i2cClkHigh ' wait for minimum SCL low test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,#0 ' Wait for minimum high time test i2cSDA,ina wc ' Sample SDA (ACK/NAK) then andn outa,i2cSCL ' active drive SCL low or dira,i2cSCL or dira,i2cSDA ' Leave SDA low rol i2cMask,#16 ' Prepare for multibyte write i2cWrite_ret ret '' Read I2C data. This assumes that i2cStart has been called and that SCL is low, '' SDA is indeterminant. ACK/NAK will be copied from the (c) flag on entry with '' ACK == low and NAK == high. Bytes are handled in "little-endian" order so these '' routines can be used with words or longs although the bits are in msb..lsb order. i2cRead mov i2cBitCnt,#8 andn dira,i2cSDA ' Make sure SDA is set to input mov i2cTime,i2cClkLow add i2cTime,cnt ' Wait for minimum SCL low :i2cReadBit waitcnt i2cTime,i2cClkHigh test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkLow ' Wait for minimum clock high test i2cSDA,ina wz ' Sample SDA for data bits andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL if_nz or i2cData,i2cMask ' Accumulate data bits if_z andn i2cData,i2cMask ror i2cMask,#1 ' Shift the bit mask and djnz i2cBitCnt,#:i2cReadBit ' continue until done waitcnt i2cTime,i2cDataSet ' Wait for end of SCL low if_c andn dira,i2cSDA ' Copy the ACK/NAK bit to SDA if_nc or dira,i2cSDA waitcnt i2cTime,i2cClkHigh ' Wait for minimum setup time test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,#0 ' Wait for minimum clock high andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL or dira,i2cSDA ' Leave SDA low rol i2cMask,#16 ' Prepare for multibyte read i2cRead_ret ret '' SPI routines for Rokicki's SD card FAT file system driver spiEntryPoint test i2cCmd,#ioBootCmd wc ' Check for boot if_c jmp #spiDoRead ' (Treat like read) cmp i2cCmd,#ioSpiStop wc,wz if_c jmp #spiDoInit ' Decode operation if_z jmp #spiDoStop cmp i2cCmd,#ioSpiWrite wc if_c jmp #spiDoRead jmp #spiDoWrite '' Initialize SPI communications. The pin numbers of the 4 I/O pins are '' provided in the 24 bit address field of the control packet. From MSB to '' LSB, these are DO - Data Out, Clk - Clock, DI - Data In, CS - Card Select. spiDoInit movd :moveIt,#spiMaskCS mov spiBlkCnt,#4 :makeMask mov i2cMask,#1 mov i2cTemp,i2cAddr ' Only use lower 5 bits of and i2cTemp,#%11111 ' 6 bit shift count field shl i2cMask,i2cTemp :moveIt mov 0-0,i2cMask ' Store the bit mask for the pin cmp spiBlkCnt,#1 wz if_ne or outa,i2cMask ' Make all pins high outputs if_ne or dira,i2cMask ' except DO is an input since if_e andn dira,i2cMask ' input/output is card relative sub :moveIt,incrDst ror i2cAddr,#6 djnz spiBlkCnt,#:makeMask rol i2cAddr,#24 ' Leave i2cAddr unchanged mov i2cTime,cnt ' Set up a 1 second timeout mov spiBlkCnt,spiInitCnt :initRead call #spiRecvByte ' Output a stream of 32K clocks djnz spiBlkCnt,#:initRead ' in case SD card left in some mov spiOp,#0 ' undefined state mov spiParm,#0 call #spiSendCmd ' Send a reset command and deselect or outa,spiMaskCS ' to get SD card into SPI mode :waitIdle mov spiOp,#55 call #spiSendCmd ' APP_CMD (Application Specific) mov spiOp,#41 call #spiSendCmd ' SEND_OP_COND (Initialization) or outa,spiMaskCS cmp i2cData,#1 wz ' Wait until response not In Idle if_e jmp #:waitIdle tjz i2cData,#i2cGoUpdate ' Initialization complete or i2cAddr,errorFlag jmp #i2cGoUpdate ' Could not initialize the card '' Stop SPI communications. Any previously used I/O pins are set to input mode and '' the masks for the I/O pins are zeroed. The card is clocked so it turns off. spiDoStop or outa,spiMaskCS ' Make sure /CS is high call #spiRecvByte ' Put out a few clocks call #spiRecvByte ' to turn off the card andn dira,spiMaskDO andn dira,spiMaskDI ' Set all the card pins andn dira,spiMaskCS ' to inputs so they can andn dira,spiMaskClk ' be used for some other mov spiMaskDO,#0 ' purpose when the card mov spiMaskDI,#0 ' is removed. All should mov spiMaskCS,#0 ' have pullups to +3.3V. mov spiMaskClk,#0 jmp #i2cGoUpdate '' Read one or more 512 byte blocks and store the specified number of bytes '' into the HUB location given. The block number is provided in the 24 bit '' address field and incremented after every block is read. Partial blocks are '' allowed and any extra bytes read are discarded. spiDoRead mov spiOp,#17 ' READ_SINGLE_BLOCK :readRepeat mov i2cTime,cnt ' Save start of timeout mov spiParm,i2cAddr call #spiSendCmd ' Read from specified block call #spiResponse mov spiBlkCnt,spiBlkSize ' Transfer a block at a time :getRead call #spiRecvByte tjz i2cCount,#:skipStore ' Check for count exhausted call #StoreData sub i2cCount,#1 :skipStore djnz spiBlkCnt,#:getRead ' Are we done with the block? call #spiRecvByte call #spiRecvByte ' Yes, finish with 16 clocks add i2cAddr,#1 or outa,spiMaskCS ' Increment address, deselect card tjnz i2cCount,#:readRepeat ' and check for more blocks to do checkEndIO test i2cCmd,#ioBootCmd wc if_nc jmp #i2cGoUpdate ' If not booting, we're done test i2cAddr,errorFlag wc and CheckSum,#$FF wz ' If booting, no errors can occur if_z_and_nc jmp #nowBootSpin ' and checksum must be zero or i2cAddr,errorFlag test Options,#noStore wc if_c jmp #i2cGoUpdate ' Return error status if noStore stopThisCOG cogid i2cCogId ' If an unrecoverable error occurs, cogstop i2cCogId ' stop this cog '' Write one or more 512 byte blocks with the specified number of bytes from '' the HUB location given. The block number is provided in the 24 bit address '' field and incremented after every block is written. Partial blocks are '' allowed and are padded with zeroes. spiDoWrite mov spiOp,#24 ' WRITE_BLOCK mov i2cTime,cnt ' Setup timeout mov spiParm,i2cAddr call #spiSendCmd ' Write to specified block mov i2cData,#$FE ' Ask to start data transfer call #spiSendByte mov spiBlkCnt,spiBlkSize ' Transfer a block at a time :putWrite mov i2cData,#0 ' padding with zeroes if needed tjz i2cCount,#:padWrite ' Check for count exhausted rdbyte i2cData,i2cBufAdr ' If not, get the next data byte add i2cBufAdr,#1 sub i2cCount,#1 :padWrite call #spiSendByte djnz spiBlkCnt,#:putWrite ' Are we done with the block? call #spiRecvByte call #spiRecvByte ' Yes, finish with 16 clocks call #spiResponse and i2cData,#$1F ' Check the response status cmp i2cData,#5 wz if_ne or i2cAddr,errorFlag ' Must be Data Accepted if_ne jmp #i2cGoUpdate movs spiWaitData,#0 ' Wait until not busy call #spiWaitBusy add i2cAddr,#1 or outa,spiMaskCS ' Increment block address and go tjnz i2cCount,#spiDoWrite ' to next if more data remains jmp #i2cGoUpdate '' Mid level SPI I/O spiSendCmd andn outa,spiMaskCS ' Send command sequence. Begin by call #spiRecvByte ' selecting card and clocking mov i2cData,spiOp or i2cData,#$40 ' Send command byte (1st 2 bits %01) call #spiSendByte mov i2cData,spiParm shr i2cData,#15 ' Supplied address is sector number call #spiSendByte mov i2cData,spiParm ' Send to SD card as byte address, shr i2cData,#7 ' in multiples of 512 bytes call #spiSendByte mov i2cData,spiParm ' Total length of this address is shl i2cData,#1 ' four bytes call #spiSendByte mov i2cData,#0 call #spiSendByte mov i2cData,#$95 ' CRC code (for 1st command only) call #spiSendByte spiResponse movs spiWaitData,#$FF ' Wait for response from card spiWaitBusy call #spiRecvByte mov i2cTemp,cnt sub i2cTemp,i2cTime ' Check for expired timeout (1 sec) cmp i2cTemp,SaveClkFreq wc if_nc or i2cAddr,errorFlag if_nc jmp #i2cGoUpdate spiWaitData cmp i2cData,#0-0 wz ' Wait for some other response if_e jmp #spiWaitBusy ' than that specified spiSendCmd_ret spiResponse_ret spiWaitBusy_ret ret '' Low level byte I/O spiSendByte mov i2cMask,#%10000000 :sendBit test i2cMask,i2cData wc andn outa,spiMaskClk ' Send data bytes MSB first muxc outa,spiMaskDI or outa,spiMaskClk shr i2cMask,#1 ' When mask shifted out, we're done tjnz i2cMask,#:sendBit or outa,spiMaskDI ' Leave DI in idle (high) state spiSendByte_ret ret spiRecvByte mov i2cMask,#%10000000 :recvBit andn outa,spiMaskClk ' Receive data bytes MSB first or outa,spiMaskClk ' Copy DO to data bit test spiMaskDO,ina wc muxc i2cData,i2cMask shr i2cMask,#1 ' When mask shifted out, we're done tjnz i2cMask,#:recvBit and i2cData,#%11111111 ' Eight bits received spiRecvByte_ret ret '' For both I2C and SPI, store data on a read operation unless ioNoStore is set. '' Accumulate a checksum and always save a copy of the first 16 bytes read. '' If this is an ioBootCmd or ioSpiBoot, adjust the amount to be read based '' on the value in the program preamble in the word at vbase ($0008). StoreData test Options,#ioNoStore wc if_nc wrbyte i2cData,i2cBufAdr ' Store data in specified location add i2cBufAdr,#1 ' and increment the address add CheckSum,i2cData ' Accumulate checksum for ioBootCmd ShiftData shl i2cData,#0-0 StoreLocal or Preamble+0,i2cData ' Store a local copy of the program add ShiftData,#8 ' preamble for when we're reading cmp ShiftData,testIns wz ' in a new Spin program if_z movs ShiftData,#0 ' Pack the data into successive longs if_z add StoreLocal,incrDst if_z cmp StoreLocal,testDst wz ' Stop after saving $0010 bytes if_z mov StoreLocal,noStore if_z test i2cCmd,#ioBootCmd wc ' If we're reading in a new program, if_c_and_z mov i2cCount,Preamble+2 ' change i2cCount to vbase adjusted if_c_and_z and i2cCount,i2cWordMask ' by number of bytes loaded so far. if_c_and_z sub i2cCount,#16 - 1 ' i2cCount will be decremented again StoreData_ret ret '' After reading is finished for a boot, the stack marker is added below dbase '' and memory is cleared between that and vbase (the end of the loaded program). '' Memory beyond the stack marker is not cleared. Note that if ioNoStore is set, '' we go through the motions, but don't actually change memory or the clock. nowBootSpin test Options,#ioNoStore wc mov i2cTemp,Preamble+2 shr i2cTemp,#16 ' Get dbase value sub i2cTemp,#4 if_nc wrlong StackMark,i2cTemp ' Place stack marker at dbase sub i2cTemp,#4 if_nc wrlong StackMark,i2cTemp mov i2cOther,Preamble+2 ' Get vbase value and i2cOther,i2cWordMask sub i2cTemp,i2cOther shr i2cTemp,#2 wz ' Compute number of longs between :zeroIt if_nz_and_nc wrlong i2cZero,i2cOther ' vbase and below stack marker if_nz_and_nc add i2cOther,#4 if_nz_and_nc djnz i2cTemp,#:zeroIt ' Zero that space (if any) mov i2cTemp,Preamble cmp i2cTemp,SaveClkFreq wz ' Is the clock frequency the same? mov i2cTemp,Preamble+1 and i2cTemp,#$FF ' Is the clock mode the same also? if_ne jmp #:changeClock cmp i2cTemp,SaveClkMode wz ' If both same, just go start COG if_e jmp #:justStartUp :changeClock and i2cTemp,#$F8 ' Force use of RCFAST clock while if_nc clkset i2cTemp ' letting requested clock start mov i2cTemp,time_xtal :startupDelay djnz i2cTemp,#:startupDelay ' Allow 20ms@20MHz for xtal/pll to settle mov i2cTemp,Preamble+1 and i2cTemp,#$FF ' Then switch to selected clock if_nc clkset i2cTemp :justStartUp mov i2cOther,i2cCmd ' Use the COG supplied as the caller's and i2cOther,#%111 ' to start up the SPIN interpreter test Options,#ioStopLdr wz ' If ioStopLdr is set and ioNoStore is if_nz cogid i2cOther ' clear, then use this cog for SPIN or i2cOther,interpreter if_nc coginit i2cOther '' The operation has completed, with or without errors. Update the control block '' in main memory and wait for the next operation to be requested. i2cGoUpdate and i2cBufAdr,i2cWordMask ' Copy updated information shl i2cCount,#16 ' back to control packet or i2cCount,i2cBufAdr mov i2cTemp,PAR add i2cTemp,#4 wrlong i2cCount,i2cTemp wrlong i2cAddr,PAR ' Indicate operation is done jmp #i2cEntryPoint ' and go wait for a new one '' This action table contains bit sequences for controlling device addressing and read/write '' mode selection for each of the commands possible. From LSB to MSB, the actions are: '' 0 - Write the EEPROM device select code for write mode and 2 address bytes '' 1 - Write the MSB device address or (for ioRead1Cmd/ioWrite1Cmd) a device select code '' 2 - Write the LSB device address or (for ioRead0Cmd/ioWrite0Cmd) a device select code '' 3 - Output a Start Sequence prior to reselecting in read mode '' 4 - Fetch a data value for writing '' 5 - Construct an EEPROM device select code for read mode and 2 address bytes '' 6 - Construct a read mode device select code from the MSB of the 16 bit device address '' 7 - Write the data value or read mode device select code '' 8 - Read a byte of data from the device and store it i2cZero ActionTbl long %0000000000 ' Command not used (indicates done) long %0110101111,%0010010111 ' Read/Write with 2 bytes of addressing long %0111001110,%0010010110 ' Read/Write with 1 byte of addressing long %0100000100,%0010010100 ' Read/Write data only '' Constants for all routines i2cWordMask long $0000FFFF i2cAddrMask long $00FFFFFF errorFlag long $80000000 ' NAK received during write cycle speedMask long $40000000 ' One if 100KHz bus, zero if 400KHz time_xtal long 20 * 20000 / 4 / 1 ' 20ms (@20MHz, 1 inst/loop) interpreter long ($0004 << 16) | ($F004 << 2) | %0000 i2cBootSCLm long | 16 - 'intermission - sx := 0 - sy := 0 - else - 'normal cave - sx := door_x - 10 - sx <#= constant(40 - 20) - sx #>= 0 - sy := door_y - screen_height / 2 - sy <#= 22 - screen_height - sy #>= 0 - sc.scroll_to(sx * 8, sy * 16) - - Uncover 'uncover screen - success := GameLoop - - if not success - if --Men == 0 - st.set_mode(st#STATUS_GAME_OVER) - waitcnt(clkfreq + cnt) - Cover - quit - - if success or CaveNumber > 16 - 'go to next cave only if current one was completed - 'but never restart intermissions - if success and CaveNumber > 16 and Men < 9 - ++Men 'the promised bonus life - if caves[++Cave] == 0 - if Level < 4 - ++Level - Cave := 0 - - st.player_params(1, Men, CaveNumber, Level, Score) - st.set_mode(st#STATUS_PRE) - Cover 'cover screen with scrolling pattern - - -pub TitleScreen | x, y, h, t, i, j, lk, ticks, count, scr - - if TV_MODE == TV_NTSC - h := 24 - t := 2 - ticks := constant(60 * 130 / 2) 'dr235 - else - h := 28 - t := 4 - ticks := constant(50 * 130 / 2) - - scr := 0 - - bytefill(@screen, $00, constant(40 * 28)) 'clear screen - palette.byte[1] := $FC - palette.byte[2] := $FB - palette.byte[3] := $06 - st.set_mode(st#STATUS_NONE) - - Cave := 0 - Level := 0 - CaveNumber := byte[@@caves[Cave]] - - repeat x from 0 to 19 - byte[@screen + x] := $B1 - byte[@screen + x + (h - 6) * 40] := $B1 - repeat y from 1 to h - 7 - byte[@screen + y * 40] := $B5 - repeat x from 1 to 18 - byte[@screen + x + y * 40] := $B0 - byte[@screen + 19 + y * 40] := $B6 - - i := 0 - repeat y from t to t + 6 - repeat x from 1 to 18 - byte[@screen + x + y * 40] := big_boulder.byte[i++] - - i := 0 - repeat y from t + 8 to t + 14 - repeat x from 3 to 15 - byte[@screen + x + y * 40] := big_dash.byte[i++] - - status := 2 - scroll := 0 - 'st.text_out(@screen + (h - 4) * 40, @str1, 20) - scr++ - repeat i from 0 to 19 - 'j := str1.byte[i] - j := scr1.byte[i + scr] - if j == $20 - byte[@screen + (h - 4) * 40 + i] := $90 - else - byte[@screen + (h - 4) * 40 + i] := j + $A0 - st.text_out(@screen + (h - 3) * 40, @str2, 20) - st.text_out(@screen + (h - 2) * 40, @str3, 20) - st.text_out(@screen + (h - 1) * 40, @str4, 20) - - screen.byte[(h - 2) * 40] := $D1 'player(s) - screen.byte[(h - 2) * 40 + 10] := $D1 'joystick(s) - screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 - screen.byte[(h - 1) * 40 + 17] := Level + $D1 - - lk := 0 'last key - count := ticks - - sn.music_on - - repeat while count > 0 - - 'wait for vsync, count every other tick - repeat while vsync == 0 - repeat while vsync <> 0 - repeat while vsync == 0 - repeat while vsync <> 0 - --count - - 'scrolltext - scr++ - if (scr>>2) > 318 '(scr2 - scr1) - scr := 0 - repeat i from 0 to 19 - j := scr1.byte[i + (scr>>2)] - if j == $20 - byte[@screen + (h - 4) * 40 + i] := $90 - else - byte[@screen + (h - 4) * 40 + i] := j + $A0 - - ' scrolling background - x := @tiles + constant(16 * $B0) - y := word[x] - wordmove(x, x + 2, 7) - word[x + 15] := y - - repeat i from 0 to 5 - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $BD) + y + 16 * i - j := @tiles + constant(16 * $B3) + y + 16 * i - word[j] := word[x] | word[t] - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $C3) + y - j := @tiles + constant(16 * $B9) + y - word[j] := (word[x] & $00FF) | word[t] - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $C4) + y - j := @tiles + constant(16 * $BA) + y - word[j] := (word[x] & $FF00) | word[t] - repeat y from 0 to 14 step 2 - x := @tiles + constant(16 * $B0) + y - t := @tiles + constant(16 * $C5) + y - j := @tiles + constant(16 * $BB) + y - word[j] := (word[x] & $FF00) | word[t] - - i := read_input - if i <> lk - count := ticks 'reset countdown - if i & GP_START - sn.music_off - return 1 - elseif i & GP_LEFT - if Cave => 5 - Cave -= 5 - CaveNumber := byte[@@caves[Cave]] - screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 - elseif i & GP_RIGHT - if Cave =< 10 - Cave += 5 - CaveNumber := byte[@@caves[Cave]] - screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 - elseif i & GP_UP - if Level < 4 - ++Level - screen.byte[(h - 1) * 40 + 17] := Level + $D1 - elseif i & GP_DOWN - if Level > 0 - --Level - screen.byte[(h - 1) * 40 + 17] := Level + $D1 - lk := i - - sn.music_off - return 0 - -dat - -big_boulder - byte $B2, $B1, $B7, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0 - byte $B2, $B0, $B9, $B2, $B1, $BA, $B5, $B9, $B2, $B0, $BA, $B1, $B7, $B2, $B1, $BA, $B1, $B7 - byte $B2, $B1, $B8, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9 - byte $B2, $B1, $B7, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B5, $BA, $B1, $B8 - byte $B2, $B0, $B9, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B0, $BA, $B1, $B7 - byte $B2, $B1, $B5, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B5, $B9 - byte $B2, $B1, $B8, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B8, $B2, $B1, $BA, $B5, $B9 - -big_dash - byte $BA, $B1, $B3, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0 - byte $BA, $B5, $BA, $B0, $B2, $B7, $B2, $B1, $BA, $B5, $BA, $BB, $BC - byte $BA, $B5, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $BA, $B0, $B0 - byte $BA, $B5, $BA, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B1, $B0, $B0 - byte $BA, $B5, $BA, $BA, $B5, $B9, $B0, $B2, $BA, $B5, $BA, $B0, $B0 - byte $BA, $B1, $B1, $BA, $B5, $B9, $B2, $B1, $BA, $B5, $BA, $B0, $B0 - byte $BA, $B1, $B4, $BA, $B5, $B9, $B2, $B1, $BA, $B5, $BA, $B0, $B0 - -str1 byte " HIVE VERSION " -str2 byte "PRESS BUTTON TO PLAY" -str3 byte " PLAYER JOYSTICK" -str4 byte " CAVE: LEVEL: " - -scr1 byte " " - byte "THANKS :SPORK FROGS: :HPG: :AHLE2: AND THE OTHER PROPELLERHEADS FOR THE BASECODE" - byte " " - byte "THANKS PEX :MAHONEY: TUFVESSON FOR THE COOL MUSIC" - byte " " - byte "GRUSS AN ALLE HIVE-DROHNEN" - byte " " - byte "HIVE: WE ARE BORG - RESISTANCE IS FUTILE" - byte " " - byte "DROHNE235: HIVE-VERSION 2010" - byte " " -scr2 byte 0 - -pub Demo - - Score := 0 - Cave := 0 'demo happens on cave A - Level := 0 - CaveNumber := byte[@@caves[Cave]] - st.player_params(1, Men, CaveNumber, Level, Score) - st.set_mode(st#STATUS_PRE) - - CreateCave(@@caves[Cave], @temp_cave) - st.cave_params(DiamondsNeeded, DiamondValue, CaveTime) - - last_dir := -1 'last rockford direction - sc.rockford_go(0) 'rockford initially stands still - sc.milling_off - - sx := door_x - 10 - sx <#= constant(40 - 20) - sx #>= 0 - sy := door_y - screen_height / 2 - sy <#= 22 - screen_height - sy #>= 0 - sc.scroll_to(sx * 8, sy * 16) - - demo_ptr := @demo_data 'set demo data pointer - kcount := 0 - - Uncover 'uncover screen - GameLoop 'play the demo - Cover 'cover screen back - -var - - long demo_ptr - byte kcount, last_key - -dat - -' The low nibble of each byte is the direction of movement: -' $x0 = no movement -' $x1 = Right -' $x2 = Left -' $x3 = Down -' $x4 = Up -' bit 3 ($x8) set means GP_SELECT is pressed (not used here anyway) -' The high nibble is the number of scan frames to apply the movement. -' $00 means end of demo data. - -demo_data - byte $F0, $10, $14, $71, $23, $91, $40, $23 - byte $41, $34, $12, $40, $14, $B1, $13, $21 - byte $40, $63, $11, $43, $32, $40, $13, $12 - byte $41, $32, $40, $44, $52, $34, $52, $43 - byte $32, $50, $34, $A2, $14, $32, $13, $62 - byte $43, $11, $40, $33, $41, $43, $42, $24 - byte $21, $34, $A1, $A1, $13, $41, $13, $41 - byte $23, $50, $51, $44, $51, $60, $13, $00 - -pub readkey : key - - if demo_ptr - if kcount > 0 - --kcount - return last_key - else - key := byte[demo_ptr++] - if key == $00 - demo_ptr := 0 - else - kcount := key / 16 - 1 - case key & $07 - $0: last_key := 0 - $1: last_key := GP_RIGHT - $2: last_key := GP_LEFT - $3: last_key := GP_DOWN - $4: last_key := GP_UP - if key & $08 - last_key |= GP_SELECT - return last_key - - key := 0 - if kb.keystate($C0) - key |= GP_LEFT - if kb.keystate($C1) - key |= GP_RIGHT - if kb.keystate($C2) - key |= GP_UP - if kb.keystate($C3) - key |= GP_DOWN - if kb.keystate($F2) 'left control key - key |= GP_SELECT - if kb.keystate($CB) 'escape key - key |= GP_A - if kb.keystate($20) 'space key - key |= GP_B - if kb.keystate($F0) 'left shift - key |= GP_START - if kb.keystate($0D) 'or enter - key |= GP_START - -pub read_input - - return readkey - - -var - byte RandSeed1, RandSeed2 - -pub GetRandom | temp1, temp2, temp3, cy, r - -'' Generate a pseudo-random number, given a seed -'' The output matches the one used in the original BoulderDash I - - temp1 := (RandSeed1 & 1) << 7 - temp2 := (RandSeed2 & 1) << 7 - temp3 := (RandSeed2 >> 1) & $7F - - r := RandSeed2 + temp2 - if r > $FF - cy := 1 - r &= $FF - else - cy := 0 - - r += cy + $13 - if r > $FF - cy := 1 - r &= $FF - else - cy := 0 - - RandSeed2 := r - - r := RandSeed1 + cy + temp1 - if r > $FF - cy := 1 - r &= $FF - else - cy := 0 - - r += cy + temp3 - RandSeed1 := r & $FF - -dat - -caves long @cave_A, @cave_B, @cave_C, @cave_D, @inter_1 - long @cave_E, @cave_F, @cave_G, @cave_H, @inter_2 - long @cave_I, @cave_J, @cave_K, @cave_L, @inter_3 - long @cave_M, @cave_N, @cave_O, @cave_P, @inter_4 - long 0 - -cave_A byte 1 'cave number - byte 20 'magic wall/amoeba time - byte 10 'initial diamond value - byte 15 'extra diamond value - byte 10, 11, 12, 13, 14 'randomizer seed per level - byte 12, 12, 12, 12, 12 'diamonds needed per level - byte 150, 110, 70, 40, 30 'time per level - byte $08, $0B, $09, $D4, $20 'bg color 1, bg color 2, fg color - byte $00, $10, $14, $00 'random objects - byte $3C, $32, $09, $00 'probability of object - byte $42, $01, $09, $1E, $02 'raw cave data - byte $42, $09, $10, $1E, $02 - byte $25, $03, $04 - byte $04, $26, $12 - byte $FF - -cave_B byte 2 - byte 20 - byte 20, 50 - byte $03, $00, $01, $57, $58 - byte $0A, $0C, $09, $0D, $0A - byte $96, $6E, $46, $46, $46 - byte $0A, $04, $09, $00, $00 - byte $00, $10, $14, $08 - byte $3C, $32, $09, $02 - byte $42, $01, $08, $26, $02, $42, $01, $0F, $26, $02, $42, $08, $03, $14, $04, $42 - byte $10, $03, $14, $04, $42, $18, $03, $14, $04, $42, $20, $03, $14, $04, $40, $01 - byte $05, $26, $02, $40, $01, $0B, $26, $02, $40, $01, $12, $26, $02, $40, $14, $03 - byte $14, $04, $25, $12, $15, $04, $12, $16, $FF - -cave_C byte 3 - byte $00 - byte $0F, $00 - byte $00, $32, $36, $34, $37 - byte $18, $17, $18, $17, $15 - byte $96, $64, $5A, $50, $46 - byte $09, $08, $09, $04, $00 - byte $02, $10, $14, $00 - byte $64, $32, $09, $00 - byte $25, $03, $04, $04, $27, $14, $FF - -cave_D byte 4 - byte $14 - byte $05, $14 - byte $00, $6E, $70, $73, $77 - byte $24, $24, $24, $24, $24 - byte $78, $64, $50, $3C, $32 - byte $04, $08, $09, $00, $00 - byte $10, $00, $00, $00 - byte $14, $00, $00, $00 - byte $25, $01, $03, $04, $26, $16, $81, $08, $0A, $04, $04, $00, $30, $0A, $0B, $81 - byte $10, $0A, $04, $04, $00, $30, $12, $0B, $81, $18, $0A, $04, $04, $00, $30, $1A - byte $0B, $81, $20, $0A, $04, $04, $00, $30, $22, $0B, $FF - -cave_E byte $05, $14, $32, $5A - byte $00, $00, $00, $00, $00 - byte $04, $05, $06, $07, $08 - byte $96, $78, $5A, $3C, $1E - byte $09, $0A, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $25, $01, $03, $04, $27, $16, $80, $08, $0A, $03, $03, $00, $80, $10, $0A, $03 - byte $03, $00, $80, $18, $0A, $03, $03, $00, $80, $20, $0A, $03, $03, $00, $14, $09 - byte $0C, $08, $0A, $0A, $14, $11, $0C, $08, $12, $0A, $14, $19, $0C, $08, $1A, $0A - byte $14, $21, $0C, $08, $22, $0A, $80, $08, $10, $03, $03, $00, $80, $10, $10, $03 - byte $03, $00, $80, $18, $10, $03, $03, $00, $80, $20, $10, $03, $03, $00, $14, $09 - byte $12, $08, $0A, $10, $14, $11, $12, $08, $12, $10, $14, $19, $12, $08, $1A, $10 - byte $14, $21, $12, $08, $22, $10, $FF - -cave_F byte $06, $14, $28, $3C - byte $00, $14, $15, $16, $17 - byte $04, $06, $07, $08, $08 - byte $96, $78, $64, $5A, $50 - byte $0E, $0A, $09, $00, $00 - byte $10, $00, $00, $00 - byte $32, $00, $00, $00 - byte $82, $01, $03, $0A, $04, $00, $82, $01, $06, $0A, $04, $00, $82, $01, $09, $0A - byte $04, $00, $82, $01, $0C, $0A, $04, $00, $41, $0A, $03, $0D, $04, $14, $03, $05 - byte $08, $04, $05, $14, $03, $08, $08, $04, $08, $14, $03, $0B, $08, $04, $0B, $14 - byte $03, $0E, $08, $04, $0E, $82, $1D, $03, $0A, $04, $00, $82, $1D, $06, $0A, $04 - byte $00, $82, $1D, $09, $0A, $04, $00, $82, $1D, $0C, $0A, $04, $00, $41, $1D, $03 - byte $0D, $04, $14, $24, $05, $08, $23, $05, $14, $24, $08, $08, $23, $08, $14, $24 - byte $0B, $08, $23, $0B, $14, $24, $0E, $08, $23, $0E, $25, $03, $14, $04, $26, $14 - byte $FF - -cave_G byte $07, $4B, $0A, $14 - byte $02, $07, $08, $0A, $09 - byte $0F, $14, $19, $19, $19 - byte $78, $78, $78, $78, $78 - byte $09, $0A, $0D, $00, $00 - byte $00, $10, $08, $00 - byte $64, $28, $02, $00 - byte $42, $01, $07, $0C, $02, $42, $1C, $05, $0B, $02, $7A, $13, $15, $02, $02, $14 - byte $04, $06, $14, $04, $0E, $14, $04, $16, $14, $22, $04, $14, $22, $0C, $14, $22 - byte $16, $25, $14, $03, $04, $27, $07, $FF - -cave_H byte $08, $14, $0A, $14 - byte $01, $03, $04, $05, $06 - byte $0A, $0F, $14, $14, $14 - byte $78, $6E, $64, $5A, $50 - byte $02, $0E, $09, $00, $00 - byte $00, $10, $08, $00 - byte $5A, $32, $02, $00 - byte $14, $04, $06, $14, $22, $04, $14, $22, $0C, $04, $00, $05, $25, $14, $03, $42 - byte $01, $07, $0C, $02, $42, $01, $0F, $0C, $02, $42, $1C, $05, $0B, $02, $42, $1C - byte $0D, $0B, $02, $43, $0E, $11, $08, $02, $14, $0C, $10, $00, $0E, $12, $14, $13 - byte $12, $41, $0E, $0F, $08, $02, $FF - -cave_I byte $09, $14, $05, $0A - byte $64, $89, $8C, $FB, $33 - byte $4B, $4B, $50, $55, $5A - byte $96, $96, $82, $82, $78 - byte $08, $04, $09, $00, $00 - byte $10, $14, $00, $00 - byte $F0, $78, $00, $00 - byte $82, $05, $0A, $0D, $0D, $00, $01, $0C, $0A, $82, $19, $0A, $0D, $0D, $00, $01 - byte $1F, $0A, $42, $11, $12, $09, $02, $40, $11, $13, $09, $02, $25, $07, $0C, $04 - byte $08, $0C, $FF - -cave_J byte $0A, $14, $19, $3C - byte $00, $00, $00, $00, $00 - byte $0C, $0C, $0C, $0C, $0C - byte $96, $82, $78, $6E, $64 - byte $06, $08, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $25, $0D, $03, $04, $27, $16, $54, $05, $04, $11, $03, $54, $15, $04, $11, $05 - byte $80, $05, $0B, $11, $03, $08, $C2, $01, $04, $15, $11, $00, $0D, $04, $C2, $07 - byte $06, $0D, $0D, $00, $0D, $06, $C2, $09, $08, $09, $09, $00, $0D, $08, $C2, $0B - byte $0A, $05, $05, $00, $0D, $0A, $82, $03, $06, $03, $0F, $08, $00, $04, $06, $54 - byte $04, $10, $04, $04, $FF - -cave_K byte $0B, $14, $32, $00 - byte $00, $04, $66, $97, $64 - byte $06, $06, $06, $06, $06 - byte $78, $78, $96, $96, $F0 - byte $0B, $08, $09, $00, $00 - byte $00, $10, $08, $00 - byte $64, $50, $02, $00 - byte $42, $0A, $03, $09, $04, $42, $14, $03, $09, $04, $42, $1E, $03, $09, $04, $42 - byte $09, $16, $09, $00, $42, $0C, $0F, $11, $02, $42, $05, $0B, $09, $02, $42, $0F - byte $0B, $09, $02, $42, $19, $0B, $09, $02, $42, $1C, $13, $0B, $01, $14, $04, $03 - byte $14, $0E, $03, $14, $18, $03, $14, $22, $03, $14, $04, $16, $14, $23, $15, $25 - byte $14, $14, $04, $26, $11, $FF - -cave_L byte $0C, $14, $14, $00 - byte $00, $3C, $02, $3B, $66 - byte $13, $13, $0E, $10, $15 - byte $B4, $AA, $A0, $A0, $A0 - byte $0C, $0A, $09, $00, $00 - byte $00, $10, $14, $00 - byte $3C, $32, $09, $00 - byte $42, $0A, $05, $12, $04, $42, $0E, $05, $12, $04, $42, $12, $05, $12, $04, $42 - byte $16, $05, $12, $04, $42, $02, $06, $0B, $02, $42, $02, $0A, $0B, $02, $42, $02 - byte $0E, $0F, $02, $42, $02, $12, $0B, $02, $81, $1E, $04, $04, $04, $00, $08, $20 - byte $05, $81, $1E, $09, $04, $04, $00, $08, $20, $0A, $81, $1E, $0E, $04, $04, $00 - byte $08, $20, $0F, $25, $03, $14, $04, $27, $16, $FF - -cave_M byte $0D, $8C, $05, $08 - byte $00, $01, $02, $03, $04 - byte $32, $37, $3C, $46, $50 - byte $A0, $9B, $96, $91, $8C - byte $06, $08, $0D, $00, $00 - byte $10, $00, $00, $00 - byte $28, $00, $00, $00 - byte $25, $12, $03, $04, $0A, $03, $3A, $14, $03, $42, $05, $12, $1E, $02, $70, $05 - byte $13, $1E, $02, $50, $05, $14, $1E, $02, $C1, $05, $15, $1E, $02, $FF - -cave_N byte $0E, $14, $0A, $14 - byte $00, $00, $00, $00, $00 - byte $1E, $23, $28, $2A, $2D - byte $96, $91, $8C, $87, $82 - byte $0C, $08, $09, $00, $00 - byte $10, $00, $00, $00 - byte $00, $00, $00, $00 - byte $81, $0A, $0A, $0D, $0D, $00, $70, $0B, $0B, $0C, $03, $C1, $0C, $0A, $03, $0D - byte $C1, $10, $0A, $03, $0D, $C1, $14, $0A, $03, $0D, $50, $16, $08, $0C, $02, $48 - byte $16, $07, $0C, $02, $C1, $17, $06, $03, $04, $C1, $1B, $06, $03, $04, $C1, $1F - byte $06, $03, $04, $25, $03, $03, $04, $27, $14, $FF - -cave_O byte $0F, $08, $0A, $14 - byte $01, $1D, $1E, $1F, $20 - byte $0F, $14, $14, $19, $1E - byte $78, $78, $78, $78, $8C - byte $08, $0E, $09, $00, $00 - byte $00, $10, $08, $00 - byte $64, $50, $02, $00 - byte $42, $02, $04, $0A, $03, $42, $0F, $0D, $0A, $01, $41, $0C, $0E, $03, $02, $43 - byte $0C, $0F, $03, $02, $04, $14, $16, $25, $14, $03, $FF - -cave_P byte $10, $14, $0A, $14 - byte $01, $78, $81, $7E, $7B - byte $0C, $0F, $0F, $0F, $0C - byte $96, $96, $96, $96, $96 - byte $09, $0A, $09, $00, $00 - byte $10, $00, $00, $00 - byte $32, $00, $00, $00 - byte $25, $01, $03, $04, $27, $04, $81, $08, $13, $04, $04, $00, $08, $0A, $14, $C2 - byte $07, $0A, $06, $08, $43, $07, $0A, $06, $02, $81, $10, $13, $04, $04, $00, $08 - byte $12, $14, $C2, $0F, $0A, $06, $08, $43, $0F, $0A, $06, $02, $81, $18, $13, $04 - byte $04, $00, $08, $1A, $14, $81, $20, $13, $04, $04, $00, $08, $22, $14, $FF - -inter_1 byte $11, $14, $1E, $00 - byte $0A, $0B, $0C, $0D, $0E - byte $06, $06, $06, $06, $06 - byte $0A, $0A, $0A, $0A, $0A - byte $0E, $02, $09, $00, $00 - byte $00, $14, $00, $00 - byte $FF, $09, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $00, $32, $0A, $0C, $10 - byte $0A, $04, $01, $0A, $05, $25, $03, $05, $04, $12, $0C, $FF - -inter_2 byte $12, $14, $0A, $00 - byte $0A, $0B, $0C, $0D, $0E - byte $10, $10, $10, $10, $10 - byte $0F, $0F, $0F, $0F, $0F - byte $06, $0F, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $01, $50, $01, $03, $09 - byte $03, $48, $02, $03, $08, $03, $54, $01, $05, $08, $03, $50, $01, $06, $07, $03 - byte $50, $12, $03, $09, $05, $54, $12, $05, $08, $05, $50, $12, $06, $07, $05, $25 - byte $01, $04, $04, $12, $04, $FF - -inter_3 byte $13, $04, $0A, $00 - byte $0A, $0B, $0C, $0D, $0E - byte $0E, $0E, $0E, $0E, $0E - byte $14, $14, $14, $14, $14 - byte $06, $08, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $00, $54, $01, $0C, $12 - byte $02, $88, $0F, $09, $04, $04, $08, $25, $08, $03, $04, $12, $07, $FF - -inter_4 byte $14, $03, $1E, $00 - byte $00, $00, $00, $00, $00 - byte $06, $06, $06, $06, $06 - byte $14, $14, $14, $14, $14 - byte $06, $08, $09, $00, $00 - byte $00, $00, $00, $00 - byte $00, $00, $00, $00 - byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $01, $D0, $0B, $03, $03 - byte $02, $80, $0B, $07, $03, $06, $00, $43, $0B, $06, $03, $02, $43, $0B, $0A, $03 - byte $02, $50, $08, $07, $03, $03, $25, $03, $03, $04, $09, $0A, $FF - -dat - -' C64 color table approximation. Not the most accurate one, but gives the desired effect. - -ctable byte $02, $06, $4B, $BC, $2B, $9C, $EB, $7D - byte $4B, $4A, $4B, $04, $04, $9D, $0B, $04 - -pub CreateCave(raw_cave, dest) | i, j, k, cx, cy, ci, co, dir, len - -'' Create cave contents from the description array - - CaveNumber := byte[raw_cave] - - RandSeed1 := 0 - RandSeed2 := byte[raw_cave + 4 + Level] - - ' Set colors - palette.byte[1] := ctable.byte[byte[raw_cave + 20]] - palette.byte[2] := ctable.byte[byte[raw_cave + 19]] - palette.byte[3] := ctable.byte[byte[raw_cave + 21] - 8] - - ' Place random objects - repeat cy from 1 to 21 - repeat cx from 0 to 39 - co := $01 ' dirt - GetRandom - repeat ci from 0 to 3 - if RandSeed1 < byte[raw_cave + 28 + ci] - co := byte[raw_cave + 24 + ci] - byte[dest + cx + cy * 40] := co - - ' Steel bounds - repeat cx from 0 to 39 - byte[dest + cx] := $07 - byte[dest + cx + 21 * 40] := $07 - repeat cy from 0 to 21 - byte[dest + cy * 40] := $07 - byte[dest + 39 + cy * 40] := $07 - - 'Decode raw data - i := raw_cave + 32 - repeat - ci := byte[i++] - cx := byte[i++] - cy := byte[i++] - 2 - if ci == $FF - quit - case ci & $C0 - $00: - byte[dest + cx + cy * 40] := ci & $3F - if (ci & $3F) == $25 - door_x := cx - door_y := cy - $40: - len := byte[i++] - dir := byte[i++] - repeat - byte[dest + cx + cy * 40] := ci & $3F - case dir - 0: --cy - 1: --cy - ++cx - 2: ++cx - 3: ++cy - ++cx - 4: ++cy - 5: ++cy - --cx - 6: --cx - 7: --cy - --cx - while --len > 0 - $80: - len := byte[i++] - 1 'width - dir := byte[i++] - 1 'height - co := byte[i++] - repeat j from 0 to len - byte[dest + cx + j + cy * 40] := ci & $3F - byte[dest + cx + j + (cy + dir) * 40] := ci & $3F - repeat j from 1 to dir - 1 - byte[dest + cx + (cy + j) * 40] := ci & $3F - repeat k from 1 to len - 1 - byte[dest + cx + k + (cy + j) * 40] := co - byte[dest + cx + len + (cy + j) * 40] := ci & $3F - $C0: - len := byte[i++] - 1 'width - dir := byte[i++] - 1 'height - repeat j from 0 to len - byte[dest + cx + j + cy * 40] := ci & $3F - byte[dest + cx + j + (cy + dir) * 40] := ci & $3F - repeat j from 0 to dir - byte[dest + cx + (cy + j) * 40] := ci & $3F - byte[dest + cx + len + (cy + j) * 40] := ci & $3F - - DiamondsNeeded := byte[raw_cave + 9 + Level] - CaveTime := byte[raw_cave + 14 + Level] - MagicWallTime := byte[raw_cave + 1] - if MagicWallTime > CaveTime - AmoebaTime := CaveTime - else - AmoebaTime := CaveTime - MagicWallTime - DiamondValue := byte[raw_cave + 2] - ExtraValue := byte[raw_cave + 3] - DiamondCount := 0 - -pub Cover | n, cell - -'' Ramdomly cover the screen with a scrolling pattern - - n := 0 - repeat while n <> constant(40 * 22) - cell := ||long[random_ptr] // constant(40 * 22) - if byte[cave_addr + cell] <> $3C - byte[cave_addr + cell] := $3C - ++n - sn.cover_sound - waitcnt(clkfreq / 1000 + cnt) - -pub Uncover | n, cell - -'' Ramdomly uncover the screen - - n := 0 - repeat while n <> constant(40 * 22) - cell := ||long[random_ptr] // constant(40 * 22) - if byte[cave_addr + cell] == $3C - byte[cave_addr + cell] := temp_cave[cell] - ++n - sn.cover_sound - waitcnt(clkfreq / 1000 + cnt) - -dat - -reset byte $00, $01, $02, $03, $04, $05, $06, $07 - byte $08, $09, $0A, $0B, $08, $09, $0A, $0B - byte $10, $10, $12, $12, $14, $14, $16, $16 - byte $18, $19, $1A, $1B, $1C, $1D, $1E, $1F - byte $20, $21, $22, $23, $24, $25, $26, $27 - byte $28, $29, $2A, $2B, $2C, $2D, $2E, $2F - byte $30, $31, $32, $33, $30, $31, $32, $33 - byte $38, $38, $3A, $3B, $3C, $3D, $3E, $3F - -dirs long 1, 40, -1, -40 - -pub GameLoop | cx, cy, ca, cn, ob, o1, o2, ready, count, amoebas, enclosed - -'' Main game loop. Everything happens here. - - target := 0 - count := 0 'scans before rockford is born - ready := 0 - - NextLife := ((Score / 500) + 1) * 500 - MagicWallStatus := 0 'dormant - AmoebaStatus := 0 'growing slowly - - ' game loop - repeat - Alive := false - amoebas := 0 - enclosed := true - repeat cy from 1 to 21 - repeat cx from 0 to 39 - ca := cave_addr + cx + cy * 40 'address of current object - - 'large case statements execute rather slowly to the point - 'that the game becomes unplayable, so we have to split the - 'case into sections (too bad there is no indirect function - 'call in Spin) - - ob := byte[ca] - if ob < $10 - case ob - $04: 'out door - if target - byte[ca] := $05 - $08: 'firefly facing left - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca + 40] == $00 - byte[ca + 40] := $0F - byte[ca] := $00 - elseif byte[ca - 1] == $00 - byte[ca - 1] := $0C - byte[ca] := $00 - else - byte[ca] := $0D - $09: 'firefly facing up - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca - 1] == $00 - byte[ca - 1] := $0C - byte[ca] := $00 - elseif byte[ca - 40] == $00 - byte[ca - 40] := $0D - byte[ca] := $00 - else - byte[ca] := $0E - $0A: 'firefly facing right - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca - 40] == $00 - byte[ca - 40] := $0D - byte[ca] := $00 - elseif byte[ca + 1] == $00 - byte[ca + 1] := $0E - byte[ca] := $00 - else - byte[ca] := $0F - $0B: 'firefly facing down - if CheckAround(ca) - ExplodeCenter(ca, $1B) - else - if byte[ca + 1] == $00 - byte[ca + 1] := $0E - byte[ca] := $00 - elseif byte[ca + 40] == $00 - byte[ca + 40] := $0F - byte[ca] := $00 - else - byte[ca] := $0C - - elseif ob < $20 - case ob - $10: 'boulder - case byte[ca + 40] 'check object below - $00: - 'boulder can fall - byte[ca] := $00 - byte[ca + 40] := $13 'falling boulder, scanned - sn.boulder_sound - $02, $10, $14: 'wall, boulder or diamond - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'boulder can roll left - byte[ca] := $00 - byte[ca - 1] := $13 'falling boulder, scanned - sn.boulder_sound - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'boulder can roll right - byte[ca] := $00 - byte[ca + 1] := $13 'falling boulder, scanned - sn.boulder_sound - $12: 'falling boulder - case byte[ca + 40] 'check object below - $00: - 'boulder can continue falling - byte[ca] := $00 - byte[ca + 40] := $13 'falling boulder, scanned - $03: 'magic wall - byte[ca] := $00 - if MagicWallStatus < 2 'dormant or milling - if MagicWallStatus == 0 - MagicWallStatus := 1 - cn := st.get_time #> MagicWallTime - MagicWallTime := cn - MagicWallTime - sc.milling_on - sn.magic_wall_sound_on - if byte[ca + constant(40 * 2)] == $00 - byte[ca + constant(40 * 2)] := $17 'falling diamond, scanned - sn.diamond_sound - $02, $10, $14: 'wall, boulder or diamond - 'we hit something - sn.boulder_sound - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'boulder can roll left - byte[ca] := $00 - byte[ca - 1] := $13 'falling boulder, scanned - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'boulder can roll right - byte[ca] := $00 - byte[ca + 1] := $13 'falling boulder, scanned - else - 'boulder came to a stop - byte[ca] := $11 'stationary boulder, scanned - $38: 'rockford? - 'explode - ExplodeBelow(ca, $1B) - $08, $09, $0A, $0B: 'firefly? - ExplodeBelow(ca, $1B) - $30, $31, $32, $33: 'butterfly? - ExplodeBelow(ca, $20) - other: - 'boulder came to a stop - byte[ca] := $11 'stationary boulder, scanned - sn.boulder_sound - $14: 'diamond - case byte[ca + 40] 'check object below - $00: - 'diamond can fall - byte[ca] := $00 - byte[ca + 40] := $17 'falling diamond, scanned - sn.diamond_sound - $02, $10, $14: 'wall, boulder or diamond - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'diamond can roll left - byte[ca] := $00 - byte[ca - 1] := $17 'falling diamond, scanned - sn.diamond_sound - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'diamond can roll right - byte[ca] := $00 - byte[ca + 1] := $17 'falling diamond, scanned - sn.diamond_sound - $16: 'falling diamond - case byte[ca + 40] 'check object below - $00: - 'diamond can continue falling - byte[ca] := $00 - byte[ca + 40] := $17 'falling diamond, scanned - $03: 'magic wall - byte[ca] := $00 - if MagicWallStatus < 2 'dormant or milling - if MagicWallStatus == 0 - MagicWallStatus := 1 - cn := st.get_time #> MagicWallTime - MagicWallTime := cn - MagicWallTime - sc.milling_on - sn.magic_wall_sound_on - if byte[ca + constant(40 * 2)] == $00 - byte[ca + constant(40 * 2)] := $13 'falling boulder, scanned - sn.boulder_sound - $02, $10, $14: 'wall, boulder or diamond - 'we hit something - sn.diamond_sound - if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 - 'diamond can roll left - byte[ca] := $00 - byte[ca - 1] := $17 'falling diamond, scanned - elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 - 'diamond can roll right - byte[ca] := $00 - byte[ca + 1] := $17 'falling diamond, scanned - else - 'diamond came to a stop - byte[ca] := $15 'stationary diamond, scanned - $38: 'rockford? - 'explode - ExplodeBelow(ca, $1B) - $08, $09, $0A, $0B: 'firefly - ExplodeBelow(ca, $1B) - $30, $31, $32, $33: 'butterfly - ExplodeBelow(ca, $20) - other: - 'diamond came to a stop - byte[ca] := $15 'stationary diamond, scanned - sn.diamond_sound - $1B, $1C, $1D, $1E: 'explosion stages - byte[ca]++ - $1F: 'explosion to space, final stage - byte[ca] := $00 - - elseif ob < $30 - case ob - $20, $21, $22, $23: 'explosion stages - byte[ca]++ - $24: 'explosion to diamonds, final stage - byte[ca] := $15 - $25: 'inbox - Alive := true - if count++ == 20 - byte[ca] := $26 - sn.crack_sound - $26, $27: - Alive := true - byte[ca]++ - $28: - Alive := true - byte[ca] := $38 'rockford is born - sc.rockford_reset - st.set_time(CaveTime) - st.set_mode(st#STATUS_GAME) - ready := 1 - - elseif ob < $40 - case ob - $30: 'butterfly facing down - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca - 1] == $00 - byte[ca - 1] := $35 - byte[ca] := $00 - elseif byte[ca + 40] == $00 - byte[ca + 40] := $34 - byte[ca] := $00 - else - byte[ca] := $37 - $31: 'butterfly facing left - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca - 40] == $00 - byte[ca - 40] := $36 - byte[ca] := $00 - elseif byte[ca - 1] == $00 - byte[ca - 1] := $35 - byte[ca] := $00 - else - byte[ca] := $34 - $32: 'butterfly facing up - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca + 1] == $00 - byte[ca + 1] := $37 - byte[ca] := $00 - elseif byte[ca - 40] == $00 - byte[ca - 40] := $36 - byte[ca] := $00 - else - byte[ca] := $35 - $33: 'butterfly facing right - if CheckAround(ca) - ExplodeCenter(ca, $20) - else - if byte[ca + 40] == $00 - byte[ca + 40] := $34 - byte[ca] := $00 - elseif byte[ca + 1] == $00 - byte[ca + 1] := $37 - byte[ca] := $00 - else - byte[ca] := $36 - - $38: 'rockford - Alive := true - nes := read_input - cn := 0 - if nes - if nes & GP_RIGHT - last_dir := 1 - sc.rockford_go(last_dir) - cn := ca + 1 - elseif nes & GP_LEFT - last_dir := -1 - sc.rockford_go(last_dir) - cn := ca - 1 - elseif nes & GP_UP - sc.rockford_go(last_dir) - cn := ca - 40 - elseif nes & GP_DOWN - sc.rockford_go(last_dir) - cn := ca + 40 - - if cn - if nes & GP_SELECT - o1 := $39 - o2 := $00 - else - o1 := $00 - o2 := $39 - case byte[cn] - $00, $01: 'empty or dirt - sn.moving_sound(byte[cn]) - byte[ca] := o1 - byte[cn] := o2 - $05: 'out door - sn.magic_wall_sound_off - sn.amoeba_sound_off - byte[ca] := o1 - byte[cn] := o2 - AddBonusPoints - waitcnt(clkfreq + cnt) '1 second delay - return true 'means cave succesfully completed - $10, $11: 'boulder, stationary - if (nes & GP_RIGHT) and (byte[cn + 1] == $00) and ((long[random_ptr] & $03) == 0) - 'boulder can be pushed - byte[cn + 1] := byte[cn] - byte[ca] := o1 - byte[cn] := o2 - sn.boulder_sound - elseif (nes & GP_LEFT) and (byte[cn - 1] == $00) and ((long[random_ptr] & $03) == 0) - 'boulder can be pushed - byte[cn - 1] := byte[cn] - byte[ca] := o1 - byte[cn] := o2 - sn.boulder_sound - $14, $15, $16, $17: 'diamond - byte[ca] := o1 - byte[cn] := o2 - sn.pick_sound - st.set_diamond_count(++DiamondCount) - IncrementScore(DiamondValue) - if DiamondCount == DiamondsNeeded and not target - 'flash screen when target is reached - sc.flash - sn.crack_sound - DiamondValue := ExtraValue - st.set_diamond_value(DiamondValue) - target := 1 - - else - sc.rockford_go(0) - - 'screen may need scrolling - if CaveNumber > 16 - 'do not scroll intermission caves - sx := 0 - sy := 0 - else - if cx - sx > constant(20 - 6) - sx += constant(10 - 5) - sx <#= constant(40 - 20) - elseif cx - sx < 5 - sx -= constant(10 - 5) - sx #>= 0 - if cy - sy > screen_height - 4 - sy += screen_height / 2 - 3 - sy <#= 22 - screen_height - elseif cy - sy < 3 - sy -= screen_height / 2 - 3 - sy #>= 0 - sc.scroll_to(sx * 8, sy * 16) - - $3A: 'amoeba - if ready - sn.amoeba_sound_on - if AmoebaStatus == 2 - 'turn into stone - byte[ca] := $10 'stationary boulder - elseif AmoebaStatus == 3 - 'turn into diamond - byte[ca] := $14 'stationary diamond - else - ++amoebas - if enclosed - enclosed := CheckEnclosed(ca) - cn := long[random_ptr] - if AmoebaStatus == 0 - cn &= $7F - else - cn &= $0F - if cn =< 3 - cn := ca + dirs[cn & $03] - ob := byte[cn] - if ob == $00 or ob == $01 - byte[cn] := $3A - - 'reset scanned flag - cn := ca - constant(40 + 1) - byte[cn] := reset.byte[byte[cn]] - - if MagicWallStatus == 1 - if st.get_time < MagicWallTime - MagicWallStatus := 2 'expired - sc.milling_off - sn.magic_wall_sound_off - - if AmoebaStatus == 0 - if st.get_time < AmoebaTime - AmoebaStatus := 1 'growing fast - if amoebas > 200 - AmoebaStatus := 2 'grew too big, turn into stones - elseif enclosed - AmoebaStatus := 3 'fully enclosed, turn into diamonds - if amoebas == 0 - sn.amoeba_sound_off - - if demo_ptr - nes := 0 - else - nes := read_input - if nes & GP_A - st.set_time(0) 'stop the time - sn.magic_wall_sound_off - sn.amoeba_sound_off - return false 'not completed, restart the same level - - elseif nes & GP_B - 'pause game - st.set_mode(st#STATUS_PAUSE) - repeat while nes & GP_B - nes := read_input - repeat while (nes & GP_B) == 0 - nes := read_input - if ready - st.set_mode(st#STATUS_GAME) - else - st.set_mode(st#STATUS_PRE) - repeat while nes & GP_B - nes := read_input - - elseif (nes & GP_SELECT) and (nes & GP_START) - st.set_time(0) - sn.magic_wall_sound_off - sn.amoeba_sound_off - return true '*cheat* go to the next level - - cn := st.get_time - if cn < 10 - sn.time_ending_sound(cn) - - if ready and (cn == 0) - 'out of time - sn.magic_wall_sound_off - sn.amoeba_sound_off - st.set_mode(st#STATUS_OUT_OF_TIME) - count := 60 * 60 'approx 1 minute - repeat while count > 0 - repeat while vsync == 0 - repeat while vsync <> 0 - --count - nes := read_input - if nes & GP_A - return false 'not completed, restart the same level - elseif (nes & GP_SELECT) and (nes & GP_START) - return true '*cheat* go to the next level - return false - - if Level < 2 - waitcnt(clkfreq / 50 + cnt) - -pub ExplodeBelow(cell, towhat) - if byte[cell - 1] <> $07 - byte[cell - 1] := towhat + 1 - if byte[cell] <> $07 - byte[cell] := towhat + 1 - if byte[cell + 1] <> $07 - byte[cell + 1] := towhat - if byte[cell + constant(40 - 1)] <> $07 - byte[cell + constant(40 - 1)] := towhat - if byte[cell + 40] <> $07 - byte[cell + 40] := towhat - if byte[cell + constant(40 + 1)] <> $07 - byte[cell + constant(40 + 1)] := towhat - if byte[cell + constant(40 * 2 - 1)] <> $07 - byte[cell + constant(40 * 2 - 1)] := towhat - if byte[cell + constant(40 * 2)] <> $07 - byte[cell + constant(40 * 2)] := towhat - if byte[cell + constant(40 * 2 + 1)] <> $07 - byte[cell + constant(40 * 2 + 1)] := towhat - sn.explosion_sound - -pub ExplodeCenter(cell, towhat) - if byte[cell - constant(40 + 1)] <> $07 - byte[cell - constant(40 + 1)] := towhat + 1 - if byte[cell - 40] <> $07 - byte[cell - 40] := towhat + 1 - if byte[cell - constant(40 - 1)] <> $07 - byte[cell - constant(40 - 1)] := towhat + 1 - if byte[cell - 1] <> $07 - byte[cell - 1] := towhat + 1 - if byte[cell] <> $07 - byte[cell] := towhat + 1 - if byte[cell + 1] <> $07 - byte[cell + 1] := towhat - if byte[cell + constant(40 - 1)] <> $07 - byte[cell + constant(40 - 1)] := towhat - if byte[cell + 40] <> $07 - byte[cell + 40] := towhat - if byte[cell + constant(40 + 1)] <> $07 - byte[cell + constant(40 + 1)] := towhat - sn.explosion_sound - -pub CheckAround(cell) | ob - ob := byte[cell - 40] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - ob := byte[cell - 1] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - ob := byte[cell + 1] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - ob := byte[cell + 40] - if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not - return true - return false - -pub CheckEnclosed(cell) | ob, i - repeat i from 0 to 3 - ob := byte[cell + dirs[i]] - if ob == $00 or ob == $01 - return false - return true - -pub IncrementScore(amount) - Score += amount - st.set_score(Score) - if Score => NextLife and Men < 9 - ++Men - sc.new_life - NextLife += 500 - -pub AddBonusPoints | i, j - - i := j := st.get_time - repeat while i > 0 - st.set_time(--i) - IncrementScore(Level + 1) - if i < 10 - sn.time_ending_sound(i) - waitcnt(clkfreq / 32 + cnt) - else - sn.bonus_point_sound(j - i) - -dat - - long 0 'align - - ' screen array -screen byte $00[40*28] - -' color index 3 1 2 0 -palette long $06_6B_04_02 - -' -x- -y- -scroll long $0000_0000 - -status long 1 'set this to 1 to show the status line at the top - - ' status line - byte $90[20] - - ' foreground color for status line characters - byte $06[20] - - ' tiles -tiles word %%0_0_0_0_0_0_0_0 ' $00 space - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_1_0_0_1_0_1 ' $01 dirt - word %%1_1_0_0_1_0_0_1 - word %%0_1_2_1_0_1_2_0 - word %%1_1_0_1_1_1_0_1 - word %%1_0_1_1_1_0_1_1 - word %%0_2_1_0_1_2_1_0 - word %%2_1_1_2_2_0_1_1 - word %%1_0_1_1_1_1_2_0 - word %%0_1_1_1_2_1_1_1 - word %%1_2_0_1_1_1_2_0 - word %%1_2_1_0_2_1_0_1 - word %%0_2_1_1_0_1_2_1 - word %%1_0_1_0_1_0_1_0 - word %%1_1_0_0_1_1_0_1 - word %%1_0_1_2_0_1_0_0 - word %%0_1_0_0_1_0_1_0 - - word %%0_3_3_3_0_3_3_3 ' $02 brick wall - word %%0_2_3_3_0_2_3_3 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_2 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - word %%0_3_3_3_0_3_3_3 - word %%0_2_3_3_0_2_3_3 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_2 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - - word %%0_3_3_3_0_3_3_3 ' $03 magic wall - word %%0_2_3_3_0_2_2_2 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_3 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - word %%0_3_3_3_0_3_3_3 - word %%0_2_3_3_0_2_3_3 - word %%0_2_2_2_0_2_2_2 - word %%0_0_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_3 - word %%3_3_0_2_3_3_0_2 - word %%2_2_0_2_2_2_0_2 - word %%0_0_0_0_0_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $04 out door (invisible) - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $05 out door (flashing) - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $06 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $07 steel wall - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $08 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $09 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0B - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0C - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $0F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $10 boulder stationary - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $11 boulder stationary, scanned this frame - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $12 boulder falling - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_3_3_3_0_0_0 ' $13 boulder falling, scanned this frame - word %%0_3_2_3_1_3_0_0 - word %%3_1_3_2_3_3_3_0 - word %%2_3_1_2_1_3_3_3 - word %%2_2_2_1_2_3_3_3 - word %%2_1_2_2_2_1_2_3 - word %%2_2_1_1_2_2_3_3 - word %%2_2_2_2_2_1_2_3 - word %%2_0_2_2_2_2_2_1 - word %%2_2_0_2_2_1_2_1 - word %%2_0_2_2_2_2_2_2 - word %%2_2_0_2_2_2_2_2 - word %%2_2_2_0_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_0_1_2_0_0 - word %%0_0_0_2_2_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $14 diamond stationary - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $15 diamond stationary, scanned - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $16 diamond falling - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_2_3_0_0_0 ' $17 diamond falling, scanned - word %%0_0_0_1_2_0_0_0 - word %%0_0_2_3_3_3_0_0 - word %%0_0_1_3_3_2_0_0 - word %%0_2_2_2_2_2_3_0 - word %%0_1_1_1_1_1_2_0 - word %%2_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%2_1_1_1_1_1_1_3 - word %%1_2_2_2_2_2_2_2 - word %%0_2_3_3_3_3_3_0 - word %%0_1_3_3_3_3_2_0 - word %%0_0_2_1_1_3_0_0 - word %%0_0_1_1_1_2_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_1_1_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $18 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $19 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1B explode to space frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1C explode to space frame 2 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_0_3_0_1_0_0 - word %%0_3_1_0_0_0_3_0 - word %%0_1_0_0_1_3_1_0 - word %%0_3_0_1_0_0_1_0 - word %%0_0_0_0_1_3_0_0 - word %%0_3_1_0_1_0_0_0 - word %%0_1_0_1_0_1_0_0 - word %%0_0_3_1_1_0_3_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1D explode to space frame 3 - word %%0_0_0_0_0_0_0_0 - word %%0_3_0_0_3_0_3_0 - word %%0_0_0_3_0_2_0_0 - word %%0_3_0_1_0_1_3_0 - word %%0_1_2_0_0_0_1_0 - word %%0_2_0_0_2_1_2_0 - word %%3_1_0_2_0_0_2_0 - word %%0_0_0_0_1_1_0_0 - word %%3_1_2_0_1_0_3_0 - word %%0_2_0_2_0_1_0_0 - word %%0_0_1_2_1_0_1_0 - word %%3_0_1_0_1_0_3_0 - word %%0_0_0_3_3_0_0_0 - word %%0_3_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1E explode to space frame 4, same as frame 2 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_0_3_0_1_0_0 - word %%0_3_1_0_0_0_3_0 - word %%0_1_0_0_1_3_1_0 - word %%0_3_0_1_0_0_1_0 - word %%0_0_0_0_1_3_0_0 - word %%0_3_1_0_1_0_0_0 - word %%0_1_0_1_0_1_0_0 - word %%0_0_3_1_1_0_3_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $1F explode to space frame 5, same as frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $20 explode to diamond frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_3_0_0_0 ' $21 explode to diamond frame 2 - word %%3_0_3_0_0_0_3_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_3_0_3_0_3_0 - word %%0_3_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%3_0_0_0_0_0_0_3 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%3_0_0_0_0_0_3_0 - word %%0_0_0_0_0_0_0_0 - word %%0_3_0_0_3_0_0_3 - word %%0_0_0_3_0_0_0_0 - word %%3_0_0_0_0_0_3_0 - word %%0_0_3_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_1_1_0_0_0 ' $22 explode to diamond frame 3 - word %%0_3_0_3_0_0_0_0 - word %%0_0_1_0_0_1_0_3 - word %%0_0_3_0_2_3_0_0 - word %%0_0_0_2_0_0_1_0 - word %%0_0_0_0_0_0_3_0 - word %%1_0_2_0_0_2_0_1 - word %%3_0_0_0_0_0_0_3 - word %%1_0_0_0_0_0_0_2 - word %%3_0_2_0_0_0_0_3 - word %%0_0_0_0_0_2_2_0 - word %%0_3_0_2_0_0_3_0 - word %%0_0_1_0_1_2_0_0 - word %%0_0_3_0_0_0_0_3 - word %%0_3_0_1_2_0_0_0 - word %%0_0_0_3_3_0_0_0 - - word %%0_0_0_1_1_0_0_0 ' $23 explode to diamond frame 4 - word %%0_0_0_3_3_0_0_0 - word %%0_0_1_0_0_1_0_0 - word %%0_0_3_0_2_3_0_0 - word %%0_1_0_2_0_0_1_0 - word %%0_3_0_0_3_0_3_0 - word %%1_0_2_3_1_2_0_1 - word %%3_1_0_2_2_0_2_3 - word %%1_0_0_3_0_1_1_2 - word %%3_0_2_0_2_0_0_3 - word %%0_1_1_0_0_3_2_0 - word %%0_3_0_2_2_0_3_0 - word %%0_0_1_3_0_2_0_0 - word %%0_0_3_0_1_3_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_3_3_0_0_0 - - word %%0_0_0_1_1_0_0_0 ' $24 explode to diamond frame 5 - word %%0_0_0_3_3_0_0_0 - word %%0_0_1_2_1_1_0_0 - word %%0_0_3_2_2_3_0_0 - word %%0_1_1_3_3_2_1_0 - word %%0_3_2_3_2_2_3_0 - word %%1_2_3_1_1_3_3_1 - word %%3_3_2_3_3_2_1_3 - word %%1_2_2_3_2_3_1_2 - word %%3_2_3_1_3_1_1_3 - word %%0_1_2_3_1_3_2_0 - word %%0_3_2_1_2_1_3_0 - word %%0_0_1_3_3_2_0_0 - word %%0_0_3_2_1_3_0_0 - word %%0_0_0_1_2_0_0_0 - word %%0_0_0_3_3_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $25 inbox, flashing - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_0_0_0_0_0_0_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $26 inbox morphing into rockford, same as explode to space frame 1 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_3_0_0_0 - word %%0_0_0_3_0_0_3_0 - word %%0_0_0_0_3_0_0_0 - word %%0_0_3_0_0_0_0_0 - word %%0_3_0_0_0_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $27 inbox morphing into rockford, same as explode to space frame 2 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_3_0_0 - word %%0_0_0_3_0_1_0_0 - word %%0_3_1_0_0_0_3_0 - word %%0_1_0_0_1_3_1_0 - word %%0_3_0_1_0_0_1_0 - word %%0_0_0_0_1_3_0_0 - word %%0_3_1_0_1_0_0_0 - word %%0_1_0_1_0_1_0_0 - word %%0_0_3_1_1_0_3_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $28 inbox morphing into rockford, same as explode to space frame 3 - word %%0_0_0_0_0_0_0_0 - word %%0_3_0_0_3_0_3_0 - word %%0_0_0_3_0_2_0_0 - word %%0_3_0_1_0_1_3_0 - word %%0_1_2_0_0_0_1_0 - word %%0_2_0_0_2_1_2_0 - word %%3_1_0_2_0_0_2_0 - word %%0_0_0_0_1_1_0_0 - word %%3_1_2_0_1_0_3_0 - word %%0_2_0_2_0_1_0_0 - word %%0_0_1_2_1_0_1_0 - word %%3_0_1_0_1_0_3_0 - word %%0_0_0_3_3_0_0_0 - word %%0_3_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $29 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2B - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2C - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $2F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $30 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $31 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $32 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $33 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $34 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $35 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $36 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $37 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $38 rockford - word %%0_0_2_0_0_2_0_0 - word %%0_0_2_2_2_2_0_0 - word %%0_2_0_2_2_0_2_0 - word %%0_2_0_2_2_0_2_0 - word %%0_0_2_2_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_2_2_0_0 - word %%0_2_0_3_3_0_2_0 - word %%0_0_3_2_2_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_1_3_3_1_0_0 - word %%0_0_1_0_0_1_0_0 - word %%0_0_1_0_0_1_0_0 - word %%0_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $39 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3A - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3B - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%2_2_2_2_2_2_2_2 ' $3C - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_0_0_2_2_0_0_2 - word %%2_2_0_2_2_2_0_2 - word %%2_3_0_2_2_3_0_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_2_2_2_2_2_2 - - word %%0_0_0_0_0_0_0_0 ' $3D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $3F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - -' chargen - - word %%0_0_0_0_0_0_0_0 ' $80 '0' - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $81 '1' - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $82 '2' - word %%0_3_3_3_3_3_0_0 - word %%3_3_0_0_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $83 - word %%0_3_3_3_3_3_3_0 - word %%0_0_0_0_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $84 - word %%3_3_0_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_3_0_3_3_3_0_0 - word %%3_3_3_3_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_0_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $85 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%0_0_0_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $86 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $87 - word %%3_3_3_3_3_3_3_0 - word %%3_0_0_0_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $88 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $89 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%0_3_3_3_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8A ':' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8B ';' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8C '/' - word %%0_0_0_0_0_0_3_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - word %%0_3_3_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8D - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8E - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $8F - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $90 space - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $91 'A' - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $92 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $93 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $94 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $95 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $96 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $97 - word %%0_3_3_3_3_3_3_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $98 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $99 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $9A - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%0_3_3_3_3_3_3_0 - word %%0_0_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $9B - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_0_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9C - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9D - word %%3_3_0_0_0_3_3_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_0_3_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9E - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $9F - word %%0_3_3_3_3_3_0_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A1 - word %%0_0_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_3_3_0_0 - word %%0_3_3_3_3_3_3_0 - word %%0_0_3_3_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A2 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A3 - word %%0_3_3_3_3_3_0_0 - word %%3_3_3_0_0_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_0_0_0_3_3_0 - word %%0_0_0_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A4 - word %%3_3_3_3_3_3_3_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A5 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A6 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $A7 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_3_0_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_0_3_3_3_0 - word %%3_3_0_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A8 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%0_0_3_3_3_3_0_0 - word %%0_0_3_3_3_3_0_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - word %%3_3_3_0_0_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $A9 - word %%3_3_0_0_0_3_3_0 - word %%3_3_0_0_0_3_3_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_0_3_3_3_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AA - word %%3_3_3_3_3_3_3_0 - word %%0_0_0_3_3_3_0_0 - word %%0_0_3_3_3_0_0_0 - word %%0_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_0 - - word %%0_0_0_0_0_0_0_0 ' $AB '(' - word %%0_0_0_0_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_0_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AC diamond - word %%0_0_0_3_0_0_0_0 - word %%0_0_3_0_3_0_0_0 - word %%0_3_3_3_3_3_0_0 - word %%3_0_0_0_0_0_3_0 - word %%0_3_3_3_3_3_0_0 - word %%0_0_3_0_3_0_0_0 - word %%0_0_0_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AD ')' - word %%0_0_3_3_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AE - word %%0_0_3_0_0_3_0_0 - word %%0_0_3_3_3_3_0_0 - word %%0_3_0_3_3_0_3_0 - word %%0_3_0_3_3_0_3_0 - word %%0_0_3_3_3_3_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_3_3_0_0 - - word %%0_0_0_0_0_0_0_0 ' $AF ',' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_0_3_3_0_0_0 - word %%0_0_3_3_0_0_0_0 - - word %%1_3_2_2_1_3_2_2 ' $B0 scrolling bgnd of the title screen - word %%1_2_2_2_1_2_2_2 - word %%0_1_2_2_0_1_2_2 - word %%2_2_2_2_2_2_2_2 - word %%2_2_1_3_2_2_1_3 - word %%2_2_1_2_2_2_1_2 - word %%2_2_0_1_2_2_0_1 - word %%2_2_2_2_2_2_2_2 - - word %%3_3_3_3_3_3_3_3 ' $B1 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - - word %%1_2_3_3_3_3_3_3 ' $B2 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - word %%1_2_3_3_3_3_3_3 - - word %%3_3_3_3_0_0_0_0 ' $B3 - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - - word %%3_3_3_3_3_3_3_3 ' $B4 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $B5 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%0_0_0_0_3_3_3_3 ' $B6 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - - word %%0_0_0_0_0_0_0_0 ' $B7 - word %%3_0_0_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $B8 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_0_0_0_0_0_0_0 - - word %%1_2_3_3_0_0_0_0 ' $B9 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - - word %%0_0_0_0_1_2_3_3 ' $BA - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - - word %%0_0_0_0_1_2_3_3 ' $BB - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_3 - - word %%3_3_3_3_3_3_3_3 ' $BC - word %%2_3_2_3_3_3_2_3 - word %%2_3_2_2_3_2_2_3 - word %%3_3_2_2_2_2_2_3 - word %%3_3_2_3_2_3_2_3 - word %%3_3_2_3_3_3_2_3 - word %%3_3_2_3_3_3_2_3 - word %%3_3_3_3_3_3_3_3 - - word %%3_3_3_3_0_0_0_0 ' $BD - word %%3_3_3_3_3_0_0_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - - word %%3_3_3_3_3_3_3_3 ' $BE - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_3 - word %%3_3_3_3_3_3_3_0 - word %%3_3_3_3_3_3_0_0 - word %%3_3_3_3_3_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $BF - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%0_0_0_0_3_3_3_3 ' $C0 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - word %%0_0_0_0_3_3_3_3 - - word %%0_0_0_0_0_0_0_0 ' $C1 - word %%3_0_0_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - - word %%3_3_3_3_0_0_0_0 ' $C2 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_3_0_0_0_0 - word %%3_3_3_0_0_0_0_0 - word %%3_3_0_0_0_0_0_0 - word %%3_0_0_0_0_0_0_0 - - word %%1_2_3_3_0_0_0_0 ' $C3 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - word %%1_2_3_3_0_0_0_0 - - word %%0_0_0_0_1_2_3_3 ' $C4 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - word %%0_0_0_0_1_2_3_3 - - word %%0_0_0_0_1_2_3_3 ' $C5 - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_2_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_2 - word %%0_0_0_0_1_2_3_3 - - word %%0_0_0_0_0_0_0_0 ' $C6 unused... padding for second chargen (see below) - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $C7 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $C8 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $C9 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CA - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CB - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CC - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CD - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CE - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $CF - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - -' this is basically the same character generator, but using -' a different color (I need this for the title screen). Either -' this, or separate color attributes for each cell of the -' screen. We have still some space here, so... - - word %%0_0_0_0_0_0_0_0 ' $D0 '0' - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D1 '1' - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $D2 '2' - word %%0_2_2_2_2_2_0_0 - word %%2_2_0_0_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $D3 - word %%0_2_2_2_2_2_2_0 - word %%0_0_0_0_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D4 - word %%2_2_0_0_0_0_0_0 - word %%2_2_0_0_0_0_0_0 - word %%2_2_0_2_2_2_0_0 - word %%2_2_2_2_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_0_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D5 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%0_0_0_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D6 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D7 - word %%2_2_2_2_2_2_2_0 - word %%2_0_0_0_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D8 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $D9 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DA ':' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DB ';' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DC '/' - word %%0_0_0_0_0_0_2_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - word %%0_2_2_0_0_0_0_0 - word %%2_2_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DD - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DE - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $DF - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E0 space - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E1 'A' - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E2 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E3 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E4 - word %%2_2_2_2_2_0_0_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E5 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E6 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $E7 - word %%0_2_2_2_2_2_2_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E8 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $E9 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $EA - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $EB - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_2_2_0_0_0 - word %%2_2_2_2_2_0_0_0 - word %%2_2_2_0_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $EC - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $ED - word %%2_2_0_0_0_2_2_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_0_2_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $EE - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $EF - word %%0_2_2_2_2_2_0_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F1 - word %%0_0_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_2_2_0_0 - word %%0_2_2_2_2_2_2_0 - word %%0_0_2_2_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F2 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F3 - word %%0_2_2_2_2_2_0_0 - word %%2_2_2_0_0_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_0_0_0_2_2_0 - word %%0_0_0_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F4 - word %%2_2_2_2_2_2_2_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F5 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F6 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $F7 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_2_0_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_0_2_2_2_0 - word %%2_2_0_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F8 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%0_0_2_2_2_2_0_0 - word %%0_0_2_2_2_2_0_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - word %%2_2_2_0_0_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $F9 - word %%2_2_0_0_0_2_2_0 - word %%2_2_0_0_0_2_2_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_0_2_2_2_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FA - word %%2_2_2_2_2_2_2_0 - word %%0_0_0_2_2_2_0_0 - word %%0_0_2_2_2_0_0_0 - word %%0_2_2_2_0_0_0_0 - word %%2_2_2_0_0_0_0_0 - word %%2_2_2_2_2_2_2_0 - word %%2_2_2_2_2_2_2_0 - - word %%0_0_0_0_0_0_0_0 ' $FB '(' - word %%0_0_0_0_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_0_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FC diamond - word %%0_0_0_2_0_0_0_0 - word %%0_0_2_0_2_0_0_0 - word %%0_2_2_2_2_2_0_0 - word %%2_0_0_0_0_0_2_0 - word %%0_2_2_2_2_2_0_0 - word %%0_0_2_0_2_0_0_0 - word %%0_0_0_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FD ')' - word %%0_0_2_2_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FE - word %%0_0_2_0_0_2_0_0 - word %%0_0_2_2_2_2_0_0 - word %%0_2_0_2_2_0_2_0 - word %%0_2_0_2_2_0_2_0 - word %%0_0_2_2_2_2_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_2_2_0_0 - - word %%0_0_0_0_0_0_0_0 ' $FF ',' - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_0_0_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_0_2_2_0_0_0 - word %%0_0_2_2_0_0_0_0 - \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_Tile_TV.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_Tile_TV.spin deleted file mode 100644 index a7a35dd..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Boulderdash_Tile_TV.spin and /dev/null differ diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Game_controller.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Game_controller.spin deleted file mode 100644 index dc4ed28..0000000 --- a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Game_controller.spin +++ /dev/null @@ -1 +0,0 @@ -con GP_RIGHT = %00000001 GP_LEFT = %00000010 GP_DOWN = %00000100 GP_UP = %00001000 GP_START = %00010000 GP_SELECT = %00100000 GP_B = %01000000 GP_A = %10000000 var long stack[6] long nes_bits pub start nes_bits := 0 'cognew(process, @stack) pub read 'return nes_bits return process pub process | i, bits ' set I/O ports to proper direction ' P3 = JOY_CLK (4) ' P4 = JOY_SH/LDn (5) ' P5 = JOY_DATAOUT0 (6) ' P6 = JOY_DATAOUT1 (7) ' NES Bit Encoding ' step 1: set I/Os DIRA[3] := 1 ' output DIRA[4] := 1 ' output DIRA[5] := 0 ' input DIRA[6] := 0 ' input repeat ' step 2: set clock and latch to 0 OUTA[3] := 0 ' JOY_CLK = 0 OUTA[4] := 0 ' JOY_SH/LDn = 0 'Delay(1) ' step 3: set latch to 1 OUTA[4] := 1 ' JOY_SH/LDn = 1 'Delay(1) ' step 4: set latch to 0 OUTA[4] := 0 ' JOY_SH/LDn = 0 ' step 5: read first bit of each game pad ' data is now ready to shift out ' first bit is ready ' left controller bits := INA[5] | (INA[6] << 8) ' step 7: read next 7 bits repeat i from 0 to 6 OUTA[3] := 1 ' JOY_CLK = 1 'Delay(1) OUTA[3] := 0 ' JOY_CLK = 0 bits := (bits << 1) bits := bits | INA[5] | (INA[6] << 8) 'Delay(1) ' invert bits to make positive logic and store result nes_bits := (!bits & $FFFF) return nes_bits \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Keyboard.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Keyboard.spin deleted file mode 100644 index 8eabe22..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Keyboard.spin and /dev/null differ diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/RealRandom.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/RealRandom.spin deleted file mode 100644 index 53dd07f..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/RealRandom.spin and /dev/null differ diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/SIDemu.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/SIDemu.spin deleted file mode 100644 index a7811be..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/SIDemu.spin and /dev/null differ diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Scroller.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Scroller.spin deleted file mode 100644 index b67cdf8..0000000 --- a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Scroller.spin +++ /dev/null @@ -1 +0,0 @@ -' This cog takes care of the smooth scrolling and animates animated objects. ' Also: ' - flashes the screen when the game target is reached ' - signals about new life with random background pattern var long x, y, nx, ny long scroll_addr long tile_addr long palette_addr long stack[12] long rockford_dir long random_addr long vsync_addr byte flash_cnt byte new_life_cnt byte tapping byte blinking byte wall_milling pub start(video_params, rnd_addr) x := 0 y := 0 vsync_addr := long[video_params + constant(6 * 4)] random_addr := rnd_addr palette_addr := long[video_params + constant(5 * 4)] + constant(40 * 28) scroll_addr := palette_addr + 4 tile_addr := scroll_addr + constant(4 + 4 + 20 * 2) rockford_dir := 0 flash_cnt := 0 new_life_cnt := 0 blinking := 0 tapping := 0 wall_milling := 0 cognew(process, @stack) pub scroll_to(sx, sy) nx := sx ny := sy pub rockford_reset blinking := 0 tapping := 0 pub rockford_go(dir) rockford_dir := dir if rockford_dir <> 0 blinking := 0 tapping := 0 pub flash flash_cnt := 6 pub new_life new_life_cnt := 400 pub milling_on wall_milling := 1 pub milling_off wall_milling := 0 pub process | i, n, cp, temp n := 0 i := 0 repeat 'wait for vsync repeat while byte[vsync_addr] == 0 repeat while byte[vsync_addr] <> 0 if x <> nx or y <> ny if x > nx x := x - 1 elseif x < nx x := x + 1 if y > ny y := y - 2 elseif y < ny y := y + 2 long[scroll_addr] := (x << 16) + y if i == 0 'rockford if rockford_dir > 0 cp := @rockford_right + n elseif rockford_dir < 0 cp := @rockford_left + n else cp := @rockford if n == 0 if (byte[random_addr] & $03) == 0 blinking := 1 else blinking := 0 if (byte[random_addr] & $0F) == 0 tapping ^= 1 ifnot blinking or tapping wordmove(tile_addr + constant(32 * $38), cp, 16) wordmove(tile_addr + constant(32 * $39), cp, 16) else if blinking cp := @rockford_bored + n wordmove(tile_addr + constant(32 * $38), cp, 8) ' top part only wordmove(tile_addr + constant(32 * $39), cp, 8) if tapping cp := @rockford_bored + 16 + n wordmove(tile_addr + constant(32 * $38 + 16), cp, 8) ' bottom part only wordmove(tile_addr + constant(32 * $39 + 16), cp, 8) ' diamonds cp := @diamonds + n wordmove(tile_addr + constant(32 * $14), cp, 16) ' update all 4 variants wordmove(tile_addr + constant(32 * $15), cp, 16) wordmove(tile_addr + constant(32 * $16), cp, 16) wordmove(tile_addr + constant(32 * $17), cp, 16) ' fireflies cp := @firefly + n wordmove(tile_addr + constant(32 * $08), cp, 16) ' update all 8 variants wordmove(tile_addr + constant(32 * $09), cp, 16) wordmove(tile_addr + constant(32 * $0A), cp, 16) wordmove(tile_addr + constant(32 * $0B), cp, 16) wordmove(tile_addr + constant(32 * $0C), cp, 16) wordmove(tile_addr + constant(32 * $0D), cp, 16) wordmove(tile_addr + constant(32 * $0E), cp, 16) wordmove(tile_addr + constant(32 * $0F), cp, 16) ' butterflies cp := @butterfly + n wordmove(tile_addr + constant(32 * $30), cp, 16) ' update all 8 variants wordmove(tile_addr + constant(32 * $31), cp, 16) wordmove(tile_addr + constant(32 * $32), cp, 16) wordmove(tile_addr + constant(32 * $33), cp, 16) wordmove(tile_addr + constant(32 * $34), cp, 16) wordmove(tile_addr + constant(32 * $35), cp, 16) wordmove(tile_addr + constant(32 * $36), cp, 16) wordmove(tile_addr + constant(32 * $37), cp, 16) ' amoeba cp := @amoeba + n wordmove(tile_addr + constant(32 * $3A), cp, 16) wordmove(tile_addr + constant(32 * $3B), cp, 16) ' magic wall if wall_milling wordmove(tile_addr + constant(32 * $03), @magic_wall + (n & $60), 16) else wordmove(tile_addr + constant(32 * $03), @wall, 16) ' flashing door if n & 128 wordmove(tile_addr + constant(32 * $05), @door_frame, 16) wordmove(tile_addr + constant(32 * $25), @door_frame, 16) else wordmove(tile_addr + constant(32 * $05), tile_addr + constant(32 * $07), 16) wordmove(tile_addr + constant(32 * $25), tile_addr + constant(32 * $07), 16) n += 32 if n => constant(32 * 8) n := 0 i ^= 1 ' scrolling steel wall cp := tile_addr + constant(32 * $3C) temp := word[cp] wordmove(cp, cp + 2, 15) word[cp + 31] := temp if flash_cnt > 0 if --flash_cnt > 0 byte[palette_addr + 0] := $07 else byte[palette_addr + 0] := $02 if i == 0 and new_life_cnt > 0 if new_life_cnt-- == 1 wordfill(tile_addr, $00, 16) else cp := byte[random_addr] byte[tile_addr] := cp byte[tile_addr + 9] := cp cp := byte[random_addr] byte[tile_addr + 8] := cp byte[tile_addr + 1] := cp cp := byte[random_addr] byte[tile_addr + 16] := cp byte[tile_addr + 25] := cp cp := byte[random_addr] byte[tile_addr + 24] := cp byte[tile_addr + 17] := cp dat ' animated creatures, 8 frames per each ' -- amoeba amoeba word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%0_2_3_3_3_2_2_0 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%0_2_3_3_3_2_2_0 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_2_0_0_0_2_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_2_0_0_0_2_3 word %%3_3_2_0_0_0_2_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_2_0 word %%3_3_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_2_0_0_0_2_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_2_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_2_0_2_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_3_3_3_3_3_3_3 word %%0_2_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%2_2_3_3_3_3_3_2 word %%0_2_3_3_3_3_2_0 word %%2_2_3_3_3_3_3_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_2_3_3_3 word %%3_3_3_2_0_2_3_3 ' -- fireflies firefly word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_3_3_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_2_2_2_2_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_2_2_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_3_3_3_3_2_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_0_0_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_2_2_2_2_3_2 word %%2_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_2_2_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_0_0_0_0_2_3 word %%3_2_2_2_2_2_2_3 word %%3_2_2_2_2_2_2_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 ' -- diamonds diamonds word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_2_1_1_1_1_3_0 word %%0_1_0_0_0_0_2_0 word %%2_0_0_0_0_0_0_3 word %%1_1_1_1_1_1_1_2 word %%2_2_2_2_2_2_2_3 word %%1_3_3_3_3_3_3_2 word %%0_2_3_3_3_3_3_0 word %%0_1_2_2_2_2_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_2_0_0_0_0_3_0 word %%0_1_0_0_0_0_2_0 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%2_3_3_3_3_3_3_3 word %%1_3_3_3_3_3_3_2 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_2_0_0_0_0_3_0 word %%0_1_1_1_1_1_2_0 word %%2_2_2_2_2_2_2_3 word %%1_3_3_3_3_3_3_2 word %%2_3_3_3_3_3_3_3 word %%1_2_2_2_2_2_2_2 word %%0_2_1_1_1_1_3_0 word %%0_1_0_0_0_0_2_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_0_0_2_0_0 word %%0_2_1_1_1_1_3_0 word %%0_1_2_2_2_2_2_0 word %%2_3_3_3_3_3_3_3 word %%1_3_3_3_3_3_3_2 word %%2_2_2_2_2_2_2_3 word %%1_1_1_1_1_1_1_2 word %%0_2_0_0_0_0_3_0 word %%0_1_0_0_0_0_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_0_0_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_3_3_3_3_2_0 word %%2_3_3_3_3_3_3_3 word %%1_2_2_2_2_2_2_2 word %%2_1_1_1_1_1_1_3 word %%1_0_0_0_0_0_0_2 word %%0_2_0_0_0_0_3_0 word %%0_1_1_1_1_1_2_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%2_2_2_2_2_2_2_3 word %%1_1_1_1_1_1_1_2 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%0_2_1_1_1_1_3_0 word %%0_1_2_2_2_2_2_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_2_2_2_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_3_3_3_3_3_0 word %%0_1_2_2_2_2_2_0 word %%2_1_1_1_1_1_1_3 word %%1_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_3 word %%1_1_1_1_1_1_1_2 word %%0_2_2_2_2_2_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_2_2_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 ' -- butterflies butterfly word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 word %%0_3_0_0_0_0_2_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_1_0 word %%0_2_3_0_0_2_2_0 word %%0_1_2_0_0_1_1_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_1_1_3_2_1_1_0 word %%0_2_2_2_1_2_2_0 word %%0_3_3_0_0_2_3_0 word %%0_3_2_0_0_1_3_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_2_0 word %%0_1_0_0_0_0_1_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_3_0_0_2_0_0 word %%0_0_2_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_0_0_0_0_2_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_1_0 word %%0_2_3_0_0_2_2_0 word %%0_1_2_0_0_1_1_0 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%0_1_1_3_2_1_1_0 word %%0_2_2_2_1_2_2_0 word %%0_3_3_0_0_2_3_0 word %%0_3_2_0_0_1_3_0 word %%0_3_0_0_0_0_2_0 word %%0_2_0_0_0_0_1_0 word %%0_2_0_0_0_0_2_0 word %%0_1_0_0_0_0_1_0 word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 word %%3_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_1 word %%3_3_0_0_0_0_2_3 word %%3_2_0_0_0_0_1_3 word %%2_2_3_0_0_2_2_2 word %%1_1_2_0_0_1_1_1 word %%0_0_0_3_2_0_0_0 word %%0_0_0_2_1_0_0_0 word %%1_1_1_3_2_1_1_1 word %%2_2_2_2_1_2_2_2 word %%3_3_3_0_0_2_3_3 word %%3_3_2_0_0_1_3_3 word %%2_3_0_0_0_0_2_2 word %%1_2_0_0_0_0_1_1 word %%2_0_0_0_0_0_0_1 word %%1_0_0_0_0_0_0_1 ' rockford ' walking left rockford_left word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_1_0 word %%0_1_0_0_0_0_0_3 word %%0_1_0_0_0_0_0_3 word %%3_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_1_0 word %%0_1_0_0_0_0_0_3 word %%0_1_0_0_0_0_0_3 word %%3_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_1_3 word %%0_0_1_0_0_0_0_3 word %%0_3_3_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_0_0_0 word %%0_0_1_0_1_1_1_0 word %%0_0_1_0_0_1_3_0 word %%0_3_3_0_0_0_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_1_1_3_0_0 word %%0_0_3_3_0_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_1_1_1_0_0_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_2_0_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_0_0_0 word %%0_0_1_0_1_1_1_0 word %%0_0_1_0_0_1_3_0 word %%0_3_3_0_0_0_3_0 ' walking right rockford_right word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_1_1_3_3_1_0_0 word %%3_0_0_0_0_0_1_0 word %%3_0_0_0_0_0_1_0 word %%0_0_0_0_0_0_3_3 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_1_1_3_3_1_0_0 word %%3_0_0_0_0_0_1_0 word %%3_0_0_0_0_0_1_0 word %%0_0_0_0_0_0_3_3 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%3_1_1_1_0_1_0_0 word %%3_0_0_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_1_0_0 word %%0_1_1_1_0_1_0_0 word %%0_3_1_0_0_1_0_0 word %%0_3_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_3_1_1_0_0_0 word %%0_0_3_0_3_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_0_1_1_1_0_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_3_3_1_0_0 word %%0_1_1_1_0_1_0_0 word %%0_3_1_0_0_1_0_0 word %%0_3_0_0_0_3_3_0 ' blinking eyes / tapping foot rockford_bored word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_1_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 ' rockford, standing rockford word %%0_0_0_0_0_0_0_0 word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_3_0_2_2_0_3_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 ' diamond frame word %%0_0_0_1_1_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_3_0_0_3_0_0 word %%0_1_0_0_0_0_1_0 word %%0_3_0_0_0_0_3_0 word %%1_0_0_0_0_0_0_1 word %%3_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%3_0_0_0_0_0_0_3 word %%0_1_0_0_0_0_2_0 word %%0_3_0_0_0_0_3_0 word %%0_0_1_0_0_2_0_0 word %%0_0_3_0_0_3_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_3_3_0_0_0 ' dummy word %%3_3_0_0_0_0_3_3 word %%0_3_3_3_3_3_3_0 word %%3_3_2_3_3_2_3_3 word %%3_3_2_3_3_2_3_3 word %%3_3_3_3_3_3_3_3 word %%0_3_3_0_0_3_3_0 word %%0_0_3_3_0_3_0_0 word %%0_0_2_2_2_2_0_0 word %%1_1_2_2_2_2_1_0 word %%1_0_2_2_2_2_0_1 word %%0_0_2_2_2_2_1_0 word %%0_3_3_3_3_3_3_0 word %%0_3_3_0_0_3_3_0 word %%0_3_0_0_0_0_3_0 word %%3_3_0_0_0_0_3_0 word %%0_0_0_0_0_0_3_3 ' wall wall word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 ' door frame door_frame word %%2_2_2_2_2_2_2_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 ' magic wall magic_wall word %%3_3_3_3_3_3_3_3 word %%3_2_3_3_3_2_3_3 word %%3_2_2_2_3_2_2_2 word %%3_0_0_0_3_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_3_3_3_0_3 word %%2_2_0_3_2_2_0_3 word %%0_0_0_3_0_0_0_3 word %%3_3_3_3_3_3_3_3 word %%3_2_3_3_3_2_3_3 word %%3_2_2_2_3_2_2_2 word %%3_0_0_0_3_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_3_3_3_0_3 word %%2_2_0_3_2_2_0_3 word %%0_0_0_3_0_0_0_3 word %%0_3_3_3_0_3_3_3 word %%0_3_3_3_0_3_3_3 word %%0_3_2_2_0_3_2_2 word %%0_3_0_0_0_3_0_0 word %%3_3_3_3_3_3_3_3 word %%3_3_3_2_3_3_3_2 word %%2_2_3_2_2_2_3_2 word %%0_0_3_0_0_0_3_0 word %%0_3_3_3_0_3_3_3 word %%0_3_3_3_0_3_3_3 word %%0_3_2_2_0_3_2_2 word %%0_3_0_0_0_3_0_0 word %%3_3_3_3_3_3_3_3 word %%3_3_3_2_3_3_3_2 word %%2_2_3_2_2_2_3_2 word %%0_0_3_0_0_0_3_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_3_2_0_2_3_2 word %%0_0_3_0_0_0_3_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_3_0_2_2_3_0_2 word %%0_3_0_0_0_3_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_3_2_0_2_3_2 word %%0_0_3_0_0_0_3_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_3_0_2_2_3_0_2 word %%0_3_0_0_0_3_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_3_0_2_2_3 word %%0_0_0_3_0_0_0_3 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%3_2_0_2_3_2_0_2 word %%3_0_0_0_3_0_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_3_0_2_2_3 word %%0_0_0_3_0_0_0_3 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%3_2_0_2_3_2_0_2 word %%3_0_0_0_3_0_0_0 \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Sounds.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Sounds.spin deleted file mode 100644 index 9d8cdc3..0000000 --- a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Sounds.spin +++ /dev/null @@ -1,168 +0,0 @@ -{ Hive-Soundobjekt für Boulderdash - -} - -'signaldefinitionen bellatrix - -#0, D0,D1,D2,D3,D4,D5,D6,D7 'datenbus -#8, BEL_VGABASE 'vga-signale (8pin) -#16, BEL_KEYBC,BEL_KEYBD 'keyboard-signale -#18, BEL_MOUSEC,BEL_MOUSED 'maus-signale -#20, BEL_VIDBASE 'video-signale(3pin) -#23, BEL_SELECT 'belatrix-auswahlsignal -#24, HBEAT 'front-led - BUSCLK 'bustakt - BUS_WR '/wr - schreibsignal - BUS_HS ' '/hs - quittungssignal - -var - -byte sndfx ' Kommando für Administra -byte fcCog ' Flag ob cCog gestartet -long cStack[32] ' Stack für cCog - - -pub Start: Pass - - Pass := (fcCog := cognew(cCog, @cStack)+1) > 0 - -pub cCog | cmd - - bus_init - repeat - repeat until sndfx > 0 'warte bis fx gesendet werden soll - bus_putchar(sndfx~) 'sndfx-Kommando senden - - -CON -' -' hbeat --------+ -' clk -------+| -' /wr ------+|| -' /hs -----+||| +------------------------- /cs -' |||| | -------- d0..d7 -DB_IN = %00001001_00000000_00000000_00000000 'maske: dbus-eingabe -DB_OUT = %00001001_00000000_00000000_11111111 'maske: dbus-ausgabe - -M1 = %00000010_00000000_00000000_00000000 -M2 = %00000010_10000000_00000000_00000000 'busclk=1? & /cs=0? - -M3 = %00000000_00000000_00000000_00000000 -M4 = %00000010_00000000_00000000_00000000 'busclk=0? - - -PUB bus_putchar(zeichen) 'BUS: Ein Byte über BUS ausgeben -{{ein byte über bus ausgeben Belltrix --> Regnatix}} - waitpeq(M1,M2,0) 'busclk=1? & prop2=0? - dira := db_out 'datenbus auf ausgabe stellen - outa[7..0] := zeichen 'daten ausgeben - outa[bus_hs] := 0 'daten gültig - waitpeq(M3,M4,0) 'busclk=0? - dira := db_in 'bus freigeben - outa[bus_hs] := 1 'daten ungültig - -PUB bus_getchar : zeichen 'BUS: Ein Byte über BUS empfangen -{{ein byte über bus empfangen Regnatix --> Bellatrix}} - waitpeq(M1,M2,0) 'busclk=1? & prop2=0? - zeichen := ina[7..0] 'daten einlesen - outa[bus_hs] := 0 'daten quittieren - outa[bus_hs] := 1 - waitpeq(M3,M4,0) 'busclk=0? - -PUB bus_init -{{initialisierung des bussystems}} - dira := db_in 'datenbus auf eingabe schalten - outa[bus_hs] := 1 'handshake inaktiv - - -dat 'soundadapter - -con - -_music_on = 1 -_music_off = 2 -_moving_sound1 = 3 -_moving_sound2 = 4 -_boulder_sound = 5 -_diamond_sound = 6 -_pick_sound = 7 -_explosion_sound = 8 -_crack_sound = 9 -_magic_wall_sound_on = 10 -_magic_wall_sound_off = 11 -_amoeba_sound_on = 12 -_amoeba_sound_off = 13 -_time_ending_sound = 14 -_bonus_point_sound = 15 -_cover_sound = 16 - -pub music_on - sndfx := _music_on - -pub music_off - sndfx := _music_off - -pub moving_sound(surface) - repeat until sndfx == 0 - if surface == $00 - sndfx := _moving_sound1 - else ' $01 - sndfx := _moving_sound2 - repeat until sndfx == 0 - -pub boulder_sound - sndfx := _boulder_sound - -pub diamond_sound - repeat until sndfx == 0 - sndfx := _diamond_sound - repeat until sndfx == 0 - -pub pick_sound - repeat until sndfx == 0 - sndfx := _pick_sound - repeat until sndfx == 0 - -pub explosion_sound - repeat until sndfx == 0 - sndfx := _explosion_sound - repeat until sndfx == 0 - -pub crack_sound - repeat until sndfx == 0 - sndfx := _crack_sound - repeat until sndfx == 0 - -pub magic_wall_sound_on - repeat until sndfx == 0 - sndfx := _magic_wall_sound_on - repeat until sndfx == 0 - -pub magic_wall_sound_off - repeat until sndfx == 0 - sndfx := _magic_wall_sound_off - repeat until sndfx == 0 - -pub amoeba_sound_on - repeat until sndfx == 0 - sndfx := _amoeba_sound_on - repeat until sndfx == 0 - -pub amoeba_sound_off - 'sndfx := _amoeba_sound_off - -pub time_ending_sound(sec_left) - repeat until sndfx == 0 - sndfx := _time_ending_sound - repeat until sndfx == 0 - -pub bonus_point_sound(pts) - repeat until sndfx == 0 - sndfx := _bonus_point_sound - repeat until sndfx == 0 - -pub cover_sound - sndfx := _cover_sound - - - \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Sounds_old.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Sounds_old.spin deleted file mode 100644 index acd30a8..0000000 --- a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Sounds_old.spin +++ /dev/null @@ -1,358 +0,0 @@ -var - - long vsync_addr - long random_addr - long stack[40] - - byte music - byte mute - byte amoeba - byte magic_wall - byte v1cnt, v1ctl - byte v2cnt, v2ctl - byte v3cnt, v3ctl - -obj - - sd : "SIDemu" - -pub start(video_params, pin, rnd_addr) - - vsync_addr := long[video_params + constant(6 * 4)] - random_addr := rnd_addr - - v1cnt := 0 - v2cnt := 0 - v3cnt := 0 - - mute := false - music := false - amoeba := false - magic_wall := false - - cognew(process, @stack) - - sd.start(pin) - - sd.set_register(23, $07) 'turn main volume half-up - -pub music_on - - v1cnt := 0 - v2cnt := 0 - v3cnt := 0 - - music_init - - music := true - -pub music_off - - sd.set_register(4, sd#CREG_TRIANGLE) 'gate off - sd.set_register(11, sd#CREG_TRIANGLE) 'gate off - - music := false - -pub moving_sound(surface) - - if mute - return - - if surface == $00 - sd.set_register(7, $00) 'freq - sd.set_register(8, $35) - else ' $01 - sd.set_register(7, $00) 'freq - sd.set_register(8, $A5) - sd.set_register(12, $30) 'attack/decay - sd.set_register(13, $C0) 'sustain/release - sd.set_register(11, sd#CREG_NOISE | sd#CREG_GATE) - - v2ctl := sd#CREG_NOISE - v2cnt := 2 - -pub boulder_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, $32) 'freq - sd.set_register(1, $09) - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $F9) 'sustain/release - sd.set_register(4, sd#CREG_NOISE | sd#CREG_GATE) - - v1ctl := sd#CREG_NOISE - v1cnt := 1 - -pub diamond_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, byte[random_addr]) 'freq - sd.set_register(1, $86 + byte[random_addr] & $07) - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $F0) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v1ctl := sd#CREG_TRIANGLE - v1cnt := 2 - -pub pick_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, $78) 'freq - sd.set_register(1, $14) - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $F9) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v1ctl := sd#CREG_TRIANGLE - v1cnt := 1 - -pub explosion_sound - - if mute - return - - if v1cnt - return - - sd.set_register(0, $32) 'freq - sd.set_register(1, $14) - sd.set_register(5, $19) '$1D 'attack/decay - sd.set_register(6, $00) 'sustain/release - sd.set_register(4, sd#CREG_NOISE | sd#CREG_GATE) - - v1ctl := sd#CREG_NOISE - v1cnt := 200 - -pub crack_sound - - if mute - return - - if v3cnt - return - - sd.set_register(19, $19) 'attack/decay - sd.set_register(20, $01) 'sustain/release - sd.set_register(14, $32) 'freq - sd.set_register(15, $2F) - sd.set_register(18, sd#CREG_NOISE | sd#CREG_GATE) - - v3ctl := sd#CREG_NOISE - v3cnt := 80 - -pub magic_wall_sound_on - - if not magic_wall - magic_wall := true - sd.set_register(18, sd#CREG_TRIANGLE) - -pub magic_wall_sound_off - - if magic_wall - magic_wall := false - v3ctl := sd#CREG_TRIANGLE - v3cnt := 1 - -pub amoeba_sound_on - - if not amoeba - amoeba := true - sd.set_register(18, sd#CREG_TRIANGLE) - -pub amoeba_sound_off - - if amoeba - amoeba := false - v3ctl := sd#CREG_TRIANGLE - v3cnt := 1 - -var - - byte last_val - -pub time_ending_sound(sec_left) - - mute := true - - if sec_left == last_val - return - - last_val := sec_left - - if sec_left == 0 - mute := false - - sd.set_register(4, sd#CREG_TRIANGLE) - waitcnt(clkfreq / 1000 + cnt) - - sd.set_register(0, $00) - sd.set_register(1, $27 - sec_left) - sd.set_register(5, $0A) 'attack/decay - sd.set_register(6, $00) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v1cnt := 0 - -pub bonus_point_sound(pts) | i - - sd.set_register(5, $00) 'attack/decay - sd.set_register(6, $A0) 'sustain/release - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - repeat i from 2 to 30 step 2 - sd.set_register(0, $00) - sd.set_register(1, $B0 - pts + i) - waitcnt(clkfreq / 500 + cnt) - sd.set_register(4, sd#CREG_TRIANGLE) - -pub cover_sound - - if v2cnt - return - - sd.set_register(12, $05) 'attack/decay - sd.set_register(13, $00) 'sustain/release - sd.set_register(7, $00) - sd.set_register(8, $64 + byte[random_addr] & $7F) 'freq - sd.set_register(11, sd#CREG_TRIANGLE | sd#CREG_GATE) - - v2ctl := sd#CREG_TRIANGLE - v2cnt := 1 - -pub process | r - - repeat - - 'wait for vsync - repeat while byte[vsync_addr] == 0 - repeat while byte[vsync_addr] <> 0 - - if music - play_note - - if v1cnt - if --v1cnt == 0 - sd.set_register(4, v1ctl) - - if v2cnt - if --v2cnt == 0 - sd.set_register(11, v2ctl) - - if v3cnt - if --v3cnt == 0 - sd.set_register(18, v3ctl) - - if amoeba - if mute - sd.set_register(18, sd#CREG_TRIANGLE) - else - sd.set_register(19, $00) 'attack/decay - sd.set_register(20, $40) 'sustain/release - repeat - r := byte[random_addr] & $1F - while r < $07 - sd.set_register(14, $00) 'freq - sd.set_register(15, r) - sd.set_register(18, sd#CREG_TRIANGLE | sd#CREG_GATE) - v3cnt := 2 - - elseif magic_wall - if mute - sd.set_register(18, sd#CREG_TRIANGLE) - else - sd.set_register(19, $00) 'attack/decay - sd.set_register(20, $A0) 'sustain/release - r := byte[random_addr] & $03 - sd.set_register(14, $00) 'freq - sd.set_register(15, $86 + (r << 3)) - sd.set_register(18, sd#CREG_TRIANGLE | sd#CREG_GATE) - v3cnt := 2 - -dat - -notes - byte $16, $22, $1D, $26, $22, $29, $25, $2E, $14, $24, $1F, $27, $20, $29, $27, $30 - byte $12, $2A, $12, $2C, $1E, $2E, $12, $31, $20, $2C, $33, $37, $21, $2D, $31, $35 - byte $16, $22, $16, $2E, $16, $1D, $16, $24, $14, $20, $14, $30, $14, $24, $14, $20 - byte $16, $22, $16, $2E, $16, $1D, $16, $24, $1E, $2A, $1E, $3A, $1E, $2E, $1E, $2A - byte $14, $20, $14, $2C, $14, $1B, $14, $22, $1C, $28, $1C, $38, $1C, $2C, $1C, $28 - byte $11, $1D, $29, $2D, $11, $1F, $29, $2E, $0F, $27, $0F, $27, $16, $33, $16, $27 - byte $16, $2E, $16, $2E, $16, $2E, $16, $2E, $22, $2E, $22, $2E, $16, $2E, $16, $2E - byte $14, $2E, $14, $2E, $14, $2E, $14, $2E, $20, $2E, $20, $2E, $14, $2E, $14, $2E - byte $16, $2E, $32, $2E, $16, $2E, $33, $2E, $22, $2E, $32, $2E, $16, $2E, $33, $2E - byte $14, $2E, $32, $2E, $14, $2E, $33, $2E, $20, $2C, $30, $2C, $14, $2C, $31, $2C - byte $16, $2E, $16, $3A, $16, $2E, $35, $38, $22, $2E, $22, $37, $16, $2E, $31, $35 - byte $14, $2C, $14, $38, $14, $2C, $14, $38, $20, $2C, $20, $33, $14, $2C, $14, $38 - byte $16, $2E, $32, $2E, $16, $2E, $33, $2E, $22, $2E, $32, $2E, $16, $2E, $33, $2E - byte $14, $2E, $32, $2E, $14, $2E, $33, $2E, $20, $2C, $30, $2C, $14, $2C, $31, $2C - byte $2E, $32, $29, $2E, $26, $29, $22, $26, $2C, $30, $27, $2C, $24, $27, $14, $20 - byte $35, $32, $32, $2E, $2E, $29, $29, $26, $27, $30, $24, $2C, $20, $27, $14, $20 - -freqs - word $02DC, $030A, $033A, $036C, $03A0, $03D2, $0412, $044C - word $0492, $04D6, $0520, $056E, $05B8, $0614, $0674, $06D8 - word $0740, $07A4, $0824, $0898, $0924, $09AC, $0A40, $0ADC - word $0B70, $0C28, $0CE8, $0DB0, $0E80, $0F48, $1048, $1130 - word $1248, $1358, $1480, $15B8, $16E0, $1850, $19D0, $1B60 - word $1D00, $1E90, $2090, $2260, $2490, $26B0, $2900, $2B70 - word $2DC0, $0100, $0200, $0101, $0105, $0100, $0101, $0306 - word $0101, $0102, $0101 - -var - - long note - byte v1sr - -pri music_init - - note := 0 - v1sr := $B0 - - sd.set_register(4, sd#CREG_TRIANGLE) - sd.set_register(5, $4F) - sd.set_register(6, $00) - - sd.set_register(11, sd#CREG_TRIANGLE) - sd.set_register(12, $24) '$78) - sd.set_register(13, $75) '$78) - -pub play_note | n, f - - if v1sr == $B0 - sd.set_register(4, sd#CREG_TRIANGLE) - sd.set_register(11, sd#CREG_TRIANGLE) - n := notes.byte[note++] - f := word[@freqs + 2*n - $14] - sd.set_register(0, f & $FF) - sd.set_register(1, f >> 8) - n := notes.byte[note++] - f := word[@freqs + 2*n - $14] - sd.set_register(7, f & $FF) - sd.set_register(8, f >> 8) - v1sr := $A0 - return - - if note == 256 - note := 0 - sd.set_register(6, v1sr | $01) - sd.set_register(4, sd#CREG_TRIANGLE | sd#CREG_GATE) - sd.set_register(11, sd#CREG_TRIANGLE | sd#CREG_GATE) - v1sr -= $10 - if v1sr < $40 - v1sr := $B0 - \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Status.spin b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Status.spin deleted file mode 100644 index dc6d536..0000000 --- a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/Status.spin +++ /dev/null @@ -1 +0,0 @@ -' This cog handles the status line. ' Also keeps the real-time counter con STATUS_NONE, STATUS_PRE, STATUS_GAME, STATUS_PAUSE, STATUS_OUT_OF_TIME, STATUS_GAME_OVER var long status_addr long stack[20] long vsync_addr long score byte ticks_per_sec byte tick_count byte time byte diamond_count byte diamond_value byte diamonds_needed byte player byte men byte cave byte level byte status_mode byte update byte status_temp[20*2] byte toggle byte decbuf[6] pub start(video_params) vsync_addr := long[video_params + constant(6 * 4)] status_addr := long[video_params + constant(5 * 4)] + constant(40 * 28 + 4 + 4) time := 0 status_mode := STATUS_NONE update := true toggle := 0 if long[video_params + constant(4 * 4)] == 0 ticks_per_sec := 60 'NTSC else ticks_per_sec := 50 'PAL cognew(process, @stack) pub player_params(p, m, c, l, s) player := p men := m cave := c level := l score := s pub cave_params(dn, dv, t) diamonds_needed := dn diamond_value := dv diamond_count := 0 time := t tick_count := ticks_per_sec pub set_time(t) tick_count := ticks_per_sec time := t update := true pub get_time return time pub set_mode(m) status_mode := m update := true pub set_score(s) score := s update := true pub set_diamond_value(dv) diamond_value := dv update := true pub set_diamond_count(n) diamond_count := n update := true pub process repeat 'wait for vsync repeat while byte[vsync_addr] == 0 repeat while byte[vsync_addr] <> 0 if update update := false if status_mode == STATUS_NONE long[status_addr] &= !1 else long[status_addr] |= 1 if toggle longmove(status_addr, @status_temp, 10) toggle := 0 if status_mode == STATUS_PRE bytefill(status_addr + constant(4 + 20), $06, 20) if cave > 16 text_out(status_addr + 4, @bonus_life, 20) else text_out(status_addr + 4, @pre, 20) byte[status_addr + constant(4 + 8)] := player + $80 byte[status_addr + constant(4 + 11)] := men + $80 byte[status_addr + constant(4 + 17)] := cave + $90 byte[status_addr + constant(4 + 19)] := level + $81 elseif status_mode == STATUS_GAME byte[status_addr + constant(4 + 0)] := $90 if diamond_count => diamonds_needed byte[status_addr + constant(4 + 1)] := $AC byte[status_addr + constant(4 + 2)] := $AC byte[status_addr + constant(4 + 21)] := $06 byte[status_addr + constant(4 + 22)] := $06 else convert_to_dec(diamonds_needed, 2) byte[status_addr + constant(4 + 1)] := decbuf[1] byte[status_addr + constant(4 + 2)] := decbuf[0] byte[status_addr + constant(4 + 21)] := $9D byte[status_addr + constant(4 + 22)] := $9D byte[status_addr + constant(4 + 3)] := $AC convert_to_dec(diamond_value, 2) byte[status_addr + constant(4 + 4)] := decbuf[1] byte[status_addr + constant(4 + 5)] := decbuf[0] byte[status_addr + constant(4 + 6)] := $90 convert_to_dec(diamond_count, 2) byte[status_addr + constant(4 + 7)] := decbuf[1] byte[status_addr + constant(4 + 8)] := decbuf[0] byte[status_addr + constant(4 + 9)] := $90 convert_to_dec(time, 3) byte[status_addr + constant(4 + 10)] := decbuf[2] byte[status_addr + constant(4 + 11)] := decbuf[1] byte[status_addr + constant(4 + 12)] := decbuf[0] byte[status_addr + constant(4 + 13)] := $90 convert_to_dec(score, 6) byte[status_addr + constant(4 + 14)] := decbuf[5] byte[status_addr + constant(4 + 15)] := decbuf[4] byte[status_addr + constant(4 + 16)] := decbuf[3] byte[status_addr + constant(4 + 17)] := decbuf[2] byte[status_addr + constant(4 + 18)] := decbuf[1] byte[status_addr + constant(4 + 19)] := decbuf[0] byte[status_addr + constant(4 + 27)] := $9D byte[status_addr + constant(4 + 28)] := $9D elseif status_mode == STATUS_GAME_OVER bytefill(status_addr + constant(4 + 20), $06, 20) text_out(status_addr + 4, @game_over, 20) if --tick_count == 0 tick_count := ticks_per_sec if status_mode == STATUS_GAME if time > 0 convert_to_dec(--time, 3) byte[status_addr + constant(4 + 10)] := decbuf[2] byte[status_addr + constant(4 + 11)] := decbuf[1] byte[status_addr + constant(4 + 12)] := decbuf[0] elseif status_mode == STATUS_PAUSE if toggle longmove(status_addr, @status_temp, 10) toggle := 0 else longmove(@status_temp, status_addr, 10) bytefill(status_addr + constant(4 + 20), $06, 20) text_out(status_addr + 4, @pause, 20) toggle := 1 elseif status_mode == STATUS_OUT_OF_TIME 'out of time if toggle longmove(status_addr, @status_temp, 10) toggle := 0 else longmove(@status_temp, status_addr, 10) bytefill(status_addr + constant(4 + 20), $06, 20) text_out(status_addr + 4, @out_of_time, 20) toggle := 1 pub convert_to_dec(val, len) | i repeat i from 0 to len-1 decbuf[i] := val // 10 + $80 val /= 10 pub text_out(addr, str, len) | i, c repeat i from 0 to len-1 c := byte[str + i] if c == $20 byte[addr + i] := $90 elseif c == $2C byte[addr + i] := $AF elseif c == $2F byte[addr + i] := $8C else byte[addr + i] := c + $50 dat pre byte " PLAYER , MEN / " out_of_time byte " OUT OF TIME " pause byte " SPACEBAR TO RESUME " bonus_life byte " B O N U S L I F E " game_over byte " G A M E O V E R " \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/_README_.txt b/zubehoer/game boulderdash/sourcen/Bellatrix-Code/_README_.txt deleted file mode 100644 index 91191d0..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Bellatrix-Code/_README_.txt and /dev/null differ diff --git a/zubehoer/game boulderdash/sourcen/Regnatix-Code/bd.spin b/zubehoer/game boulderdash/sourcen/Regnatix-Code/bd.spin deleted file mode 100644 index b85a654..0000000 --- a/zubehoer/game boulderdash/sourcen/Regnatix-Code/bd.spin +++ /dev/null @@ -1,304 +0,0 @@ -{{ --------------------------------------------------------------------------------------------------------- - -Hive-Computer-Projekt: Boulder Dash - Hive-Version - - http://hive-project.de - -Basierend auf dem Fanprojekt diverser Propellerköpfe: - - http://forums.parallax.com/forums/default.aspx?f=33&m=263404 - -Besonderer Dank an Pex "Mahoney" Tufvesson für die coole Musik!: - - http://mahoney.c64.org - http://www.livet.se/visa - - -Tasten: - -ESC Stop Button A -Space Pause Button B -LShift Start -LCTRL Select -Cursor - -Anpassungen für den Hive - -09-01-2010 - Entfernung der Hardwareerkennung - - Anpassung Konfiguration an Hive/Bellatrix - - Gamecontr. entfernt - - Auskommentierung Sound -12-01-2010 - Soundadapter optimiert - - Scrolltext im Titelbildschirm eingefügt -19-04-2010 - Anpassung an TriOS: Boulder läuft jetzt auch aus dem Verzeichnis. Bedingt durch das - neue, etwas trägere WAV-Soundsystem, habe ich einige Effekte durch HSS/SFX ersetzt. - -Zur Hive-Version: Das Game an sich - also der ursprüngliche Basiscode aus dem Parallax-Forum - läuft -auf einem einzigen Propellerchip! Was war zu tun um diese Version an den Hive anzupassen: - -1. Der Code kann im wesentlichen fast ausschließlich auf Bellatrix laufen. Dafür müssen die entsprechenden -Belegungen der IO-Pins für Video und Keyboard angepasst werden. -2. Da Bellatrix keinen Sound ausgeben kann, sondern diese Aufgabe im Hive Administra übernimmt, muß die -Soundausgabe angepasst werden. Im Originalcode übernimmt das Objekt "sound.spin" diese Aufgabe - welches -wieder den SIDemu in einer getrennten Cog startet. Hier zeigt sich die Stärke der SPIN-Objekte: Für die -Anpassung brauchte ich einfach nur ein neues Objekt gleicher Struktur definieren, ohne das Hauptprogramm -zu ändern. Dieses neue Soundobjekt startet ebenfalls eine Cog, welche einzig die Aufgabe hat die Kommunikation -zu Regnatix/Administra zu realisieren. -3. Regnatix-Code: Tja, die Königin kann bei der ganzen Sache Däumchen drehen, denn sie hat nur folgend Aufgaben -in einer einzigen Cog zu bewältigen: - - Bellatrix-Code laden - - SFX-Slots in Administra initialisieren - - Warten bis Bellatrix einen Ton von sich geben möchte und Übermittlung dieser - Tonesequenz an Administra - -Damit werden natürlich auf der einen Seite massig Ressourcen in Bellatrix gegenüber dem ursprünglichen Code frei -und es sind durch die Verwendung von HSS/SFX + Waveplayer + SDCard mehr Möglichkeiten gegeben. - -Bellatrix-Code : 20,5 KByte -Regnatix-Code : 3,2 KByte - -Bei diesen Werten ist zu beachten, dass der Regnatix das blanke IOS mit 2,6 KByte eingebunden hat - ohne Optimierung, -denn ein Großteil der IOS-Routinen sind in diesem Fall ungenutzt. - -Zeitaufwand : ca. 3 nette Abende ;) - -drohne235 - - --------------------------------------------------------------------------------------------------------- }} - - -OBJ - ios : "ios" -' debugx : "pterm" 'debug - -CON - -_CLKMODE = XTAL1 + PLL16X -_XINFREQ = 5_000_000 - -CON - -_music_on = 1 -_music_off = 2 -_moving_sound1 = 3 -_moving_sound2 = 4 -_boulder_sound = 5 -_diamond_sound = 6 -_pick_sound = 7 -_explosion_sound = 8 -_crack_sound = 9 -_magic_wall_sound_on = 10 -_magic_wall_sound_off = 11 -_amoeba_sound_on = 12 -_amoeba_sound_off = 13 -_time_ending_sound = 14 -_bonus_point_sound = 15 -_cover_sound = 16 - -VAR - -byte parastr[64] -byte fl_musicon - -PUB main | a,b,c,i,n,stradr - -'initialisierung - ios.start 'ios initialisieren -' ios.startram 'code für test im ram, sollte bei bin-datei auskommentiert werden - -' debugx.start(115200) - - ios.admsetsyssnd(0) 'systemsounds abschalten - ios.sddmact(ios#DM_USER) 'wieder in userverzeichnis wechseln - ios.print(string("Boulder Dash - Loading...")) - -'bellatrix-code laden - ios.parastart - parastr[0] := 0 - ios.paranext(@parastr) - - case parastr[0] - "n": - ios.belload(@beln) 'grafiktreiber ntsc laden - other: - ios.belload(@belp) 'grafiktreiber pal laden - - ios.sddmact(ios#DM_USER) '??? - -'sfx-slots setzen - ios.sfx_setslot(@fx_moving_sound1, 0) - ios.sfx_setslot(@fx_moving_sound2, 1) - ios.sfx_setslot(@fx_boulder_sound,2) - ios.sfx_setslot(@fx_diamond_sound,3) - ios.sfx_setslot(@fx_pick_sound,4) - ios.sfx_setslot(@fx_amoeba_sound,5) - ios.sfx_setslot(@fx_time_sound,6) - ios.sfx_setslot(@fx_cover_sound,7) - ios.sfx_setslot(@fx_bonus,8) - ios.sfx_setslot(@fx_crack,9) - ios.sfx_setslot(@fx_explosion,10) - ios.sfx_setslot(@fx_wall,11) - - -'soundadapter - repeat - case ios.bus_getchar2 - - _music_on: 'titelmusik - ios.admsetsound(ios#SND_HSSOFF) 'hss ausschalten - ios.admsetsound(ios#SND_WAVON) 'wav einschalten - n := ios.wav_play(@wav1) - fl_musicon := 1 - - _music_off: - if fl_musicon - ios.wav_stop - ios.admsetsound(ios#SND_WAVOFF) 'wav ausschalten - ios.admsetsound(ios#SND_HSSON) 'hss anschalten - fl_musicon := 0 - - _moving_sound1: - ios.sfx_fire(0,1) - - _moving_sound2: - ios.sfx_fire(1,1) - - _boulder_sound: - ios.sfx_fire(2,1) - waitcnt(clkfreq / 30 + cnt) - - _diamond_sound: - b? - b := b & $FF - byte[@fx_diamond_sound+2] := b - ios.sfx_setslot(@fx_diamond_sound,3) - ios.sfx_fire(3,1) - waitcnt(clkfreq / 30 + cnt) - - _pick_sound: - ios.sfx_fire(4,2) - waitcnt(clkfreq / 3 + cnt) - - _explosion_sound: 'explosion - ios.sfx_fire(10,1) - waitcnt(clkfreq * 3 + cnt) - - _crack_sound: 'eingang - ios.sfx_fire(9,1) - waitcnt(clkfreq / 3 + cnt) - - _magic_wall_sound_on: - ios.sfx_fire(11,2) - - _magic_wall_sound_off: - - _amoeba_sound_on: - ios.sfx_fire(5,2) - - _amoeba_sound_off: - - _time_ending_sound: - ios.sfx_fire(6,2) - - _bonus_point_sound: 'bonus - ios.sfx_fire(8,2) - waitcnt(clkfreq * 4 + cnt) - - _cover_sound: - b? - b := b & $FF - byte[@fx_cover_sound+2] := b - ios.sfx_setslot(@fx_cover_sound,7) - ios.sfx_fire(7,1) - waitcnt(clkfreq / 30 + cnt) - - - -DAT - -wav1 byte "bd.wav",0 ' titelmusik - -beln byte "bd_ntsc.bel",0 ' bella-code, ntsc-version -belp byte "bd_pal.bel",0 - - 'basisschwingung modulation hüllkurve - 'Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -fx_moving_sound1 byte $06, $02, $01, $08, $00, $00, $00, $00, $FF, $00, $00, $D0 -fx_moving_sound2 byte $06, $02, $01, $0F, $00, $00, $00, $00, $FF, $00, $00, $D0 -fx_boulder_sound byte $06, $01, $FF, $0F, $01, $03, $01, $00, $FF, $00, $00, $80 -fx_diamond_sound byte $01, $01, $E0, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_pick_sound byte $01, $01, $E0, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_explosion_sound byte $01, $01, $E0, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_crack_sound byte $06, $02, $10, $0F, $00, $00, $00, $00, $FF, $00, $00, $D0 -fx_magic_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_amoeba_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_time_sound byte $02, $05, $FF, $0F, $10, $00, $01, $00, $FF, $00, $00, $40 -fx_bonus_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 -fx_cover_sound byte $01, $01, $80, $0F, $00, $00, $00, $00, $FF, $00, $00, $80 - -fx_bonus -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $03,$03,$FF,$0F,$02,$00,$05,$00,$FF,$01,$50,$11 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - -fx_crack -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $01,$22,$01,$0F,$11,$00,$05,$00,$55,$01,$50,$11 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - -fx_explosion -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $06,$04,$10,$0F,$00,$00,$00,$00,$FF,$01,$50,$11 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - -fx_wall -' Wav Len Fre Vol LFO LFW FMa AMa Att Dec Sus Rel -byte $04,$FF,$FF,$0F,$01,$00,$01,$00,$FF,$06,$20,$00 -byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 - - -DAT -{ - -sfx-struktur: - -wav len freq vol grundschwingung -lfo lfw fma ama modulation -att dec sus rel hüllkurve -seq (optional) - -wav wellenform - 0 sinus (0..500hz) - 1 schneller sinus (0..1khz) - 2 dreieck (0..500hz) - 3 rechteck (0..1khz) - 4 schnelles rechteck (0..4khz) - 5 impulse (0..1,333hz) - 6 rauschen -len tonlänge $0..$fe, $ff endlos -freq frequenz $00..$ff -vol lautstärke $00..$0f - -lfo low frequency oscillator $ff..$01 -lfw low frequency waveform - $00 sinus (0..8hz) - $01 fast sine (0..16hz) - $02 ramp up (0..8hz) - $03 ramp down (0..8hz) - $04 square (0..32hz) - $05 random - $ff sequencer data -fma frequency modulation amount - $00 no modulation - $01..$ff -ama amplitude modulation amount - $00 no modulation - $01..$ff -att attack $00..$ff -dec decay $00..$ff -sus sustain $00..$ff -rel release $00..$ff - - - -} \ No newline at end of file diff --git a/zubehoer/game boulderdash/sourcen/Regnatix-Code/ios.spin b/zubehoer/game boulderdash/sourcen/Regnatix-Code/ios.spin deleted file mode 100644 index 68781f5..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Regnatix-Code/ios.spin and /dev/null differ diff --git a/zubehoer/game boulderdash/sourcen/Regnatix-Code/pterm.spin b/zubehoer/game boulderdash/sourcen/Regnatix-Code/pterm.spin deleted file mode 100644 index a525a4b..0000000 Binary files a/zubehoer/game boulderdash/sourcen/Regnatix-Code/pterm.spin and /dev/null differ diff --git a/zubehoer/shoot/bellatrix-code/Graphics.spin b/zubehoer/shoot/bellatrix-code/Graphics.spin deleted file mode 100644 index dbe7e03..0000000 Binary files a/zubehoer/shoot/bellatrix-code/Graphics.spin and /dev/null differ diff --git a/zubehoer/shoot/bellatrix-code/Mouse.spin b/zubehoer/shoot/bellatrix-code/Mouse.spin deleted file mode 100644 index c37ad5c..0000000 Binary files a/zubehoer/shoot/bellatrix-code/Mouse.spin and /dev/null differ diff --git a/zubehoer/shoot/bellatrix-code/TV.spin b/zubehoer/shoot/bellatrix-code/TV.spin deleted file mode 100644 index b58adcf..0000000 Binary files a/zubehoer/shoot/bellatrix-code/TV.spin and /dev/null differ diff --git a/zubehoer/shoot/bellatrix-code/_readme_.txt b/zubehoer/shoot/bellatrix-code/_readme_.txt deleted file mode 100644 index 39520ed..0000000 --- a/zubehoer/shoot/bellatrix-code/_readme_.txt +++ /dev/null @@ -1,23 +0,0 @@ -BST Propeller Archive -Created by Brads Spin Tool Compiler v0.15.4-pre5 - Copyright 2008,2009,2010 All rights reserved -Compiled for i386 Win32 at 14:24:31 on 2010/03/10 - -Archive Created at 15:34:27 On 01/05/10 -Included Objects : -shoot1 - | - +--tv - | - +--graphics - | - +--mouse - | - +--yma_hss_v1.2 - -, - - shoot1.spin - - TV.spin - - Graphics.spin - - Mouse.spin - - yma_hss_v1.2.spin -, diff --git a/zubehoer/shoot/bellatrix-code/shoot-bel.spin b/zubehoer/shoot/bellatrix-code/shoot-bel.spin deleted file mode 100644 index 6ddca2c..0000000 Binary files a/zubehoer/shoot/bellatrix-code/shoot-bel.spin and /dev/null differ diff --git a/zubehoer/shoot/bellatrix-code/yma_hss_hive.spin b/zubehoer/shoot/bellatrix-code/yma_hss_hive.spin deleted file mode 100644 index fd9f4e0..0000000 Binary files a/zubehoer/shoot/bellatrix-code/yma_hss_hive.spin and /dev/null differ diff --git a/zubehoer/shoot/bellatrix-code/yma_hss_v1.2.spin b/zubehoer/shoot/bellatrix-code/yma_hss_v1.2.spin deleted file mode 100644 index f72ae4b..0000000 --- a/zubehoer/shoot/bellatrix-code/yma_hss_v1.2.spin +++ /dev/null @@ -1,694 +0,0 @@ -''***************************** -''* Hydra Sound System v1.2 * -''* (C)2007 Andrew Arsenault * -''***************************** -''http://www.andrewarsenault.com/hss/ -''e-mail: ym2413a@yahoo.com -'' -'' Cogs used: 2 -'' HUB-RAM: ~2.7k - -'' Please visit the website for the latest version, documentation, examples and media files. -'' Thank you! --Ym2413a - -VAR - -'Sound Engine Stack - long hsnd_stack[18] - long cog1, cog2 - -'WavSynth Parameters - long snd_regs[48] 'Regs for Sound Hardware (8x6)+5dpcm - long dpcm_regs[5] - -'DPCM Command Variables - word dpcmreg_ptr - -'Global Hmus Player Vars - word tempo - word song_pc - word song_div - word song_ptr - word chfre[4] - byte chfx[4] - byte chvol[4] - byte hmus_state - byte hmvol - byte fxphs - -'Sound FX Variables - word runlen[2] - word envamp[2] - word sfx_ptr[2] - byte envphs[2] - byte fmcnt[2], fmfreq[2] - byte loadsfx[2] - -CON - -'' Hss Master Control - -PUB start : okay - - stop - okay := cog1 := cognew(@entry, @snd_regs) + 1 - okay := cog2 := cognew(hsound, @hsnd_stack) + 1 - -PUB stop - - if cog1 - cogstop(cog1~ - 1) - if cog2 - cogstop(cog2~ - 1) - -PUB peek(addrptr) : var1 - - var1 := LONG[@snd_regs][addrptr] - -CON - -'' Hydra Music Commands - -PUB hmus_load(songptr) | z - - hmvol := 15 - song_div := 0 - song_ptr := songptr - song_pc := WORD[songptr][8] - tempo := WORD[songptr][12] - repeat z from 0 to 3 - chfx[z] := 0 - -PUB hmus_play - - hmus_state := 1 - -PUB hmus_stop | z - - hmus_state := 0 - repeat z from 0 to 3 - chvol[z] := 0 - -PUB hmus_pause - - hmus_state := 0 - -PUB hmus_tempo(var1) - - tempo := var1 - -PUB get_hmus_tempo : var1 - - var1 := tempo - -PUB hmus_vol(var1) - - hmvol := var1 <# 15 #> 0 - -PUB get_hmus_vol : var1 - - var1 := hmvol - -CON - -'' FXsynth Commands - -PUB sfx_play(chan, soundptr) - - if(chan == 1) - sfx_ptr[0] := soundptr - loadsfx[0] := 0 - if(chan == 2) - sfx_ptr[1] := soundptr - loadsfx[1] := 0 - -PUB sfx_stop(chan) - - if(chan == 1) - sfx_ptr[0] := 0 - if(chan == 2) - sfx_ptr[1] := 0 - -PUB sfx_keyoff(chan) - - if(chan == 1) - envphs[0] := 3 - if(chan == 2) - envphs[1] := 3 - -CON - -'' Hydra DPCM Commands - -PUB dpcm_play(soundptr) - - dpcmreg_ptr := soundptr - -PUB dpcm_stop - - dpcmreg_ptr := 1 - -CON -''***************************** -''* Hss Sound Engine * -''***************************** -PRI Hsound -repeat - 'Update Music Engine - UpdateMus(song_ptr, Hmus_state) 'Update Music Player - VolumeInterpol 'Delay and Interpolate Volume to Remove Pops and Clicks. - - 'Update DPCM Engine - if(dpcmreg_ptr) - DpcmUpdate 'Update the DPCM registers - - 'Update SoundFX Engine - - 'FX channel A - FXSynth(0,32) - 'FX channel B - FXSynth(1, 40) - -PRI VolumeInterpol | z, channelmul, musvar, freqval - - fxphs += 5 - -'Volume Interpolation - repeat z from 0 to 3 step 1 - channelmul := 4+(8*z) - musvar := (chvol[z]*(hmvol+1))&$F0 - snd_regs[channelmul] := (snd_regs[channelmul] & 15)+musvar - - 'Freq Interpolation - channelmul -= 1 'Jump down a REG to Freq - musvar := chfre[z]<<16 - - if(chfx[z] == 0) 'None - snd_regs[channelmul] := musvar - - elseif(chfx[z] < 3) 'Vibrato (light/hard) - if(fxphs < 128) - snd_regs[channelmul] := musvar+(chfre[z]<<(7+chfx[z])) - else - snd_regs[channelmul] := musvar-(chfre[z]<<(7+chfx[z])) - - elseif(chfx[z] == 3) 'Tremolo - if(fxphs < 128) - snd_regs[channelmul] := musvar - else - snd_regs[channelmul] := musvar<<1 - - else 'Portamento - freqval := snd_regs[channelmul]>>16 - if(freqval & $F000 == chfre[z] & $F000) - snd_regs[channelmul] := musvar - elseif(freqval < chfre[z]) - snd_regs[channelmul] := snd_regs[channelmul]+(chfx[z]<<22) - else - snd_regs[channelmul] := snd_regs[channelmul]-(chfx[z]<<22) - -PRI UpdateMus(songptr, state) | channel, channelmul, scrdat, freq, freqoct, flag - - if(state == 0) - return ''Song is not playing. - - song_div++ - - if(song_div => tempo) 'Tempo Divider - song_div := 0 - flag := 0 - - repeat 'Score Decoder and Processor - scrdat := BYTE[song_ptr][song_pc] - channel := scrdat & 3 - channelmul := channel<<3 - song_pc++ - - ''Base Commands - if(scrdat == 0) 'End Row - quit - - if(scrdat == 1) 'Repeat Song - song_pc := WORD[songptr][9] - quit - - if(scrdat == 2) 'End Song - hmus_stop - quit - - if(scrdat == 3) 'Set Flag - flag := 1 - next - - if((scrdat & $3C) == $20) 'Patch HI Note - flag := 2 - scrdat := scrdat>>3 - scrdat += 64+channel - - if(scrdat & 4) 'Change Note - freq := scrdat>>3 - freqoct := freq/12 - freq -= freqoct*12 - case flag - 1 : freqoct += 2 - 2 : freqoct += 6 - other : freqoct += 4 - flag := 0 - snd_regs[4+channelmul] := snd_regs[4+channelmul] & $FE - chfre[channel] := NoteFreqs[freq]>>(6-freqoct) - snd_regs[4+channelmul] := (snd_regs[4+channelmul] & $FE)+1 - next 'Repeat To Next Datum - - if(scrdat & 8) 'Change Evelope / Channel Effect - if(flag) - chfx[channel] := scrdat>>4 - flag := 0 - else - chvol[channel] := scrdat>>4 - next 'Repeat To Next Datum - - if(scrdat & 16) 'Change Instrument - freq := (scrdat & $E0)>>3 - freq += flag<<5 - flag := 0 - snd_regs[0+channelmul] := songptr+WORD[songptr+32][freq] - snd_regs[1+channelmul] := WORD[songptr+32][freq+1] - snd_regs[2+channelmul] := WORD[songptr+32][freq+2] - snd_regs[4+channelmul] := WORD[songptr+32][freq+3] & $0F - next 'Repeat To Next Datum - - if(scrdat & 64) 'Detune - chfre[channel] := chfre[channel]+(chfre[channel]>>8) - - - -PRI DpcmUpdate - - if(dpcmreg_ptr > 15) 'Play Sample. - dpcm_regs[2] := 65535 'End sample if one was playing - dpcm_regs[0] := dpcmreg_ptr+8 - dpcm_regs[4] := 128 - dpcm_regs[3] := LONG[dpcmreg_ptr][1] 'Get sampling rate - dpcm_regs[1] := WORD[dpcmreg_ptr][1] 'Get length - dpcm_regs[2] := 0 'Reset play counter - elseif(dpcmreg_ptr == 1) 'Stop Sample - dpcm_regs[2] := 65535 'End sample - dpcm_regs[4] := 128 - - dpcmreg_ptr := 0 - -PRI FXSynth(SoundVars, ChannelFX) | TimeCnt, SoundFX, Modwav, FMwav, AMwav - TimeCnt := Cnt - SoundFX := sfx_ptr[SoundVars] - - if(loadsfx[SoundVars] == 0) - 'Setup OSC WaveForm - case BYTE[SoundFX][0] - $00: 'Sine - snd_regs[ChannelFX] := @SineTable - snd_regs[1+ChannelFX] := 64 - $01: 'Fast Sine - snd_regs[ChannelFX] := @FastSine - snd_regs[1+ChannelFX] := 32 - $02: 'Sawtooth - snd_regs[ChannelFX] := @Sawtooth - snd_regs[1+ChannelFX] := 64 - $03: 'Square - snd_regs[ChannelFX] := @SqrTable - snd_regs[1+ChannelFX] := 32 - $04: 'Fast Square - snd_regs[ChannelFX] := @FastSqr - snd_regs[1+ChannelFX] := 8 - $05: 'Buzz - snd_regs[ChannelFX] := @NoteFreqs - snd_regs[1+ChannelFX] := 24 - $06: 'Noise - snd_regs[ChannelFX] := $F002 - snd_regs[1+ChannelFX] := 3000 - - snd_regs[2+ChannelFX] := 0 - snd_regs[4+ChannelFX] := $01 - - loadsfx[SoundVars] := 1 - runlen[SoundVars] := 0 - fmcnt[SoundVars] := 0 - fmfreq[SoundVars] := 0 - envamp[SoundVars] := 0 - envphs[SoundVars] := 0 - -''Modulation Code - fmfreq[SoundVars]++ - if(fmfreq[SoundVars] => BYTE[SoundFX][4]) - fmfreq[SoundVars] := 0 - fmcnt[SoundVars]++ - fmcnt[SoundVars] := fmcnt[SoundVars] & $3F - - case BYTE[SoundFX][5] - $00: - Modwav := BYTE[@SineTable][fmcnt[SoundVars]] - $01: - Modwav := BYTE[@FastSine][fmcnt[SoundVars] & 31] - $02: - Modwav := fmcnt[SoundVars]<<2 - $03: - Modwav := !fmcnt[SoundVars]<<2 - $04: - if(fmcnt[SoundVars] & 8) - Modwav := $ff - else - Modwav := $00 - $05: - Modwav := BYTE[$F002][fmcnt[SoundVars]] - $FF: - Modwav := BYTE[SoundFX+12][fmcnt[SoundVars] & 15] - - fmwav := Modwav/(BYTE[SoundFX][6]) 'FM amount - amwav := 256-(Modwav/(BYTE[SoundFX][7])) 'AM amount - amwav := (BYTE[SoundFX][3]*amwav)>>8 - -''Envelope Generator - if(envphs[SoundVars] == 0) 'Attack - envamp[SoundVars] += BYTE[SoundFX][8] - if(envamp[SoundVars] > 8191) - envamp[SoundVars] := 8191 - envphs[SoundVars] := 1 - if(BYTE[SoundFX][8] == $ff) - envamp[SoundVars] := 8191 - if(envphs[SoundVars] == 1) 'Decay - envamp[SoundVars] -= BYTE[SoundFX][9] - if(envamp[SoundVars] & $8000) - envphs[SoundVars] := 2 - if(envamp[SoundVars] =< (BYTE[SoundFX][10]<<5)) - envphs[SoundVars] := 2 - if(envphs[SoundVars] == 2) 'Sustain - envamp[SoundVars] := (BYTE[SoundFX][10]<<5) - if(envphs[SoundVars] == 3) 'Release - envamp[SoundVars] -= BYTE[SoundFX][11] - if(envamp[SoundVars] & $8000) - envamp[SoundVars] := 4 - - amwav := ((envamp[SoundVars]>>9)*(amwav+1))>>4 - -''Run Length and Outputing - if(SoundFX > 15) - runlen[SoundVars]++ - snd_regs[3+ChannelFX] := (BYTE[SoundFX][2]+fmwav)<<24 'Update Frequency - snd_regs[4+ChannelFX] := (amwav<<4)+(snd_regs[4+ChannelFX] & $0F) 'Update Amplitude - else - snd_regs[4+ChannelFX] := $00 'Mute - - if(BYTE[SoundFX][1] == $ff) '$ff = never stop - runlen[SoundVars] := 0 - - if(runlen[SoundVars] > (BYTE[SoundFX][1]<<5)) 'Duration KeyOff - envphs[SoundVars] := 3 - -WaitCnt(TimeCnt + 52_000) ''Delay for Synth Engine Update. - -DAT - -SineTable byte $80, $8c, $98, $a5, $b0, $bc, $c6, $d0 - byte $da, $e2, $ea, $f0, $f5, $fa, $fd, $fe - byte $ff, $fe, $fd, $fa, $f5, $f0, $ea, $e2 - byte $da, $d0, $c6, $bc, $b0, $a5, $98, $8c - byte $80, $73, $67, $5a, $4f, $43, $39, $2f - byte $25, $1d, $15, $0f, $0a, $05, $02, $01 - byte $00, $01, $02, $05, $0a, $0f, $15, $1d - byte $25, $2f, $39, $43, $4f, $5a, $67, $73 - -Sawtooth byte $ff, $fb, $f7, $f3, $ef, $eb, $e7, $e3 - byte $df, $db, $d7, $d3, $cf, $cb, $c7, $c3 - byte $bf, $bb, $b7, $b3, $af, $ab, $a7, $a3 - byte $9f, $9b, $97, $93, $8f, $8b, $87, $83 - byte $80, $7c, $78, $74, $70, $6c, $68, $64 - byte $60, $5c, $58, $54, $50, $4c, $48, $44 - byte $40, $3c, $38, $34, $30, $2c, $28, $24 - byte $20, $1c, $18, $14, $10, $0c, $08, $04 - -FastSine byte $80, $98, $b0, $c6, $da, $ea, $f5, $fd - byte $ff, $fd, $f5, $ea, $da, $c6, $b0, $98 - byte $80, $67, $4f, $39, $25, $15, $0a, $02 - byte $00, $02, $0a, $15, $25, $39, $4f, $67 - -SqrTable byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - byte $00, $00, $00, $00, $00, $00, $00, $00 - byte $00, $00, $00, $00, $00, $00, $00, $00 - -FastSqr byte $ff, $ff, $ff, $ff, $00, $00, $00, $00 - -'Note LookupTable. -NoteFreqs word $85F3, $8DEA, $965B, $9F4B, $A8C4, $B2CD, $BD6F, $C8B3, $D4A2, $E147, $EEAC, $FCDE 'Top Octave Lookup - -CON -''***************************** -''* WaveTable Synth v1.2 * -''* DPCM Synth v1.1 * -''* (C)2006 Andrew Arsenault * -''***************************** -DAT - org -entry mov dira,Port_Pins 'Setup output pins - - mov ctra,Right_ctra 'Setup Right Audio Channel - mov ctrb,Left_ctra 'Setup Left Audio Channel - - mov ChlA_wave,#256 'Set channel signals. - mov ChlA_offset,#0 'Set channel's offset. - mov ChlA_counter,#0 - - mov Time,#10 - add Time,cnt 'Prepare for asm type WAITCNT loop. - -'MAIN LOOP -update waitcnt Time,Timing_delay 'Wait for CNT = D, then add S into D - - 'Transfer Sound Registers - mov addrregs,par - mov y,NumberOfChannels - - 'Fetch Channel's Registers -transferchl rdlong ChlAp_sampptr,addrregs - add addrregs,#4 - rdlong ChlAp_sampend,addrregs - add addrregs,#4 - rdlong Ch1Ap_samplpp,addrregs - add addrregs,#4 - rdlong Ch1Ap_freq,addrregs - add addrregs,#4 - rdlong ChlAp_keyon,addrregs - - 'Fetch Channel's Static Variables - add addrregs,#8 - rdlong ChlA_offset,addrregs - add addrregs,#4 - rdlong ChlA_counter,addrregs - - 'Run Synth Engine on Channel - call #wvsynth - - 'Store Channel's Static Variables (Tucked Center X move to Wave) - wrlong ChlA_counter,addrregs - sub addrregs,#4 - sub x,#256 - wrlong ChlA_offset,addrregs - sub addrregs,#4 - mov ChlA_wave,x 'Doesn't Waste anything doing this. - wrlong ChlA_wave,addrregs - add addrregs,#12 - - 'Loop Until All Channel's Are Done. - djnz y,#transferchl - - 'Run DPCM Engine - call #dpcm - - 'Mix Channels Together - mov addrregs,par - mov ChlA_wave,#0 - add addrregs,#5*4 - mov y,NumberOfChannels - -mixchls rdlong x,addrregs - add ChlA_wave,x - add addrregs,#8*4 - djnz y,#mixchls - - mov x,DPCM_wave 'Add DPCM - shl x,#2 - add ChlA_wave,x - - shl ChlA_wave,#20 'Convert 12bit singal into a 32bit one. - - 'Update output Channels then repeat again. - mov frqa,ChlA_wave - mov frqb,ChlA_wave - - jmp #update - - - - -'-------------------------Dpcm Engine-------------------------' - -dpcm mov addrregs,par - add addrregs,#192 - - rdlong DPCM_address,addrregs 'Start Address - add addrregs,#4 - rdlong DPCM_runlen,addrregs 'File Lenght - add addrregs,#4 - rdlong DPCM_offset,addrregs 'File Offset - add addrregs,#4 - rdlong DPCM_freq,addrregs 'Playback Speed - add addrregs,#4 - rdlong DPCM_wave,addrregs 'Waveform Amp - - 'Check for if keyon/length is set. - cmp DPCM_offset,DPCM_runlen wc - if_ae jmp #mute_dpcm 'End of file - - 'Freq Timer/Divider and Increase sampling offset - add DPCM_counter,DPCM_freq wc - if_nc jmp #done_dpcm - - 'Decode DPCM - add DPCM_address,DPCM_offset - rdbyte x,DPCM_address 'Fetch Datum - - mov DPCM_delta,x - shr DPCM_delta,#6 - mov y,#1 - shl y,DPCM_delta - mov DPCM_delta,y - - mov y,#1 - shl y,DPCM_phs - test x,y wc - if_c add DPCM_wave,DPCM_delta - if_nc sub DPCM_wave,DPCM_delta - - add DPCM_phs,#1 - cmp DPCM_phs,#6 wc - if_b jmp #done_dpcm - - mov DPCM_phs,#0 - add DPCM_offset,#1 - jmp #done_dpcm - -mute_dpcm mov DPCM_wave, #128 - -done_dpcm mov addrregs,par - add addrregs,#200 - wrlong DPCM_offset,addrregs 'File Offset - add addrregs,#8 - wrlong DPCM_wave,addrregs 'Wave -dpcm_ret ret - -'-----------------------Dpcm Engine End-----------------------' - - - -'-------------------------Sound Engine-------------------------' - - 'Freq Timer/Divider and Increase sampling offset -wvsynth add ChlA_counter,Ch1Ap_freq wc - if_c add ChlA_offset,#1 - - 'Reset sample position and lock at zero if Keyoff. - test ChlAp_keyon,#%0001 wc - if_nc mov ChlA_offset,#0 - - 'Reset(loop) if needed - cmp ChlA_offset,ChlAp_sampend wc - if_ae mov ChlA_offset,Ch1Ap_samplpp - - 'Check BitRate and Set Offset - mov x,ChlA_offset - test ChlAp_keyon,#%0010 wc - if_c shr x,#1 - - 'Fetch WaveTable - mov ChlA_wave,ChlAp_sampptr - add ChlA_wave,x - rdbyte ChlA_wave,ChlA_wave - - 'Check BitRate and Skip if 8bit - test ChlAp_keyon,#%0010 wc - if_nc jmp #skip_4bitsam - - 'Convert 4bit to 8bit - test ChlA_offset,#%0001 wc - if_c shr ChlA_wave,#4 - if_nc and ChlA_wave,#%00001111 - - mov x,ChlA_wave - shl ChlA_wave,#4 - add ChlA_wave,x - - 'Center Amplitude and mute if Keyoff. -skip_4bitsam test ChlAp_keyon,#%0001 wc - if_nc mov ChlA_wave,#128 - - 'Volume Multiply - mov x,#0 - test ChlAp_keyon,#%10000000 wc - if_c add x,ChlA_wave - if_nc add x,#128 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%01000000 wc - if_c add x,ChlA_wave - if_nc add x,#64 - add x,#64 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%00100000 wc - if_c add x,ChlA_wave - if_nc add x,#32 - add x,#96 - - shr ChlA_wave,#1 - test ChlAp_keyon,#%00010000 wc - if_c add x,ChlA_wave - if_nc add x,#16 - add x,#112 - -'Return Audio as X. -wvsynth_ret ret - -'-----------------------Sound Engine End-----------------------' - -Port_Pins long %00000000_00000000_00001100_00000000 - - '- CTR PLL -------- BPIN --- APIN -Right_ctra long %0_00110_000_00000000_000000_000_001010 -Left_ctra long %0_00110_000_00000000_000000_000_001011 - -Timing_delay long 2500 'Sampling Rate = 32,000.00hz -NumberOfChannels long 6 - -Time res 1 -addrregs res 1 -x res 1 -y res 1 - -'WaveTable Synth Accumulators -ChlA_wave res 1 -ChlA_offset res 1 -ChlA_counter res 1 -ChlAp_sampptr res 1 -ChlAp_sampend res 1 -Ch1Ap_samplpp res 1 -Ch1Ap_freq res 1 -ChlAp_keyon res 1 - -'DPCM Accumulators -DPCM_wave res 1 -DPCM_address res 1 -DPCM_offset res 1 -DPCM_counter res 1 -DPCM_freq res 1 -DPCM_runlen res 1 -DPCM_phs res 1 -DPCM_delta res 1 \ No newline at end of file diff --git a/zubehoer/shoot/bin/game.hss b/zubehoer/shoot/bin/game.hss deleted file mode 100644 index 6f56d22..0000000 Binary files a/zubehoer/shoot/bin/game.hss and /dev/null differ diff --git a/zubehoer/shoot/bin/menu.hss b/zubehoer/shoot/bin/menu.hss deleted file mode 100644 index 4c8d9d5..0000000 Binary files a/zubehoer/shoot/bin/menu.hss and /dev/null differ diff --git a/zubehoer/shoot/bin/shoot.bel b/zubehoer/shoot/bin/shoot.bel deleted file mode 100644 index 7776d9b..0000000 Binary files a/zubehoer/shoot/bin/shoot.bel and /dev/null differ diff --git a/zubehoer/shoot/bin/shoot.bin b/zubehoer/shoot/bin/shoot.bin deleted file mode 100644 index f42273d..0000000 Binary files a/zubehoer/shoot/bin/shoot.bin and /dev/null differ diff --git a/zubehoer/shoot/regnatix-code/ios.spin b/zubehoer/shoot/regnatix-code/ios.spin deleted file mode 100644 index 576ec2e..0000000 Binary files a/zubehoer/shoot/regnatix-code/ios.spin and /dev/null differ diff --git a/zubehoer/shoot/regnatix-code/shoot.spin b/zubehoer/shoot/regnatix-code/shoot.spin deleted file mode 100644 index 20dd1a5..0000000 Binary files a/zubehoer/shoot/regnatix-code/shoot.spin and /dev/null differ diff --git a/zubehoer/startracker/bin/stint.bel b/zubehoer/startracker/bin/stint.bel deleted file mode 100644 index e056b11..0000000 Binary files a/zubehoer/startracker/bin/stint.bel and /dev/null differ diff --git a/zubehoer/startracker/bin/stplay.bin b/zubehoer/startracker/bin/stplay.bin deleted file mode 100644 index bdbe4a5..0000000 Binary files a/zubehoer/startracker/bin/stplay.bin and /dev/null differ diff --git a/zubehoer/startracker/notiz.rtf b/zubehoer/startracker/notiz.rtf deleted file mode 100644 index 942455e..0000000 Binary files a/zubehoer/startracker/notiz.rtf and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/Corner_BottomLeft.dat b/zubehoer/startracker/source/bellatrix-code/Corner_BottomLeft.dat deleted file mode 100644 index 5941fa4..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/Corner_BottomLeft.dat and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/Corner_topleft.dat b/zubehoer/startracker/source/bellatrix-code/Corner_topleft.dat deleted file mode 100644 index 0fdf59f..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/Corner_topleft.dat and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/Corner_topright.dat b/zubehoer/startracker/source/bellatrix-code/Corner_topright.dat deleted file mode 100644 index cb56785..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/Corner_topright.dat and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/HV_Break.dat b/zubehoer/startracker/source/bellatrix-code/HV_Break.dat deleted file mode 100644 index ccdfe3b..0000000 --- a/zubehoer/startracker/source/bellatrix-code/HV_Break.dat +++ /dev/null @@ -1,2 +0,0 @@ -ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ÿÿÿ_ªªª -ªªª diff --git a/zubehoer/startracker/source/bellatrix-code/HV_Break2.dat b/zubehoer/startracker/source/bellatrix-code/HV_Break2.dat deleted file mode 100644 index 53f8c70..0000000 --- a/zubehoer/startracker/source/bellatrix-code/HV_Break2.dat +++ /dev/null @@ -1,3 +0,0 @@ -ªªª -ªªª -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUUUU \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/endcap_Med_left.dat b/zubehoer/startracker/source/bellatrix-code/endcap_Med_left.dat deleted file mode 100644 index 524d651..0000000 --- a/zubehoer/startracker/source/bellatrix-code/endcap_Med_left.dat +++ /dev/null @@ -1 +0,0 @@ -UUÕÿUUýÿUÕÿÿUõÿÿUÿÿÿÔÿÿÿÔÿÿÿôÿÿÿøÿÿÿèÿÿÿèÿÿÿªÿÿÿªúÿÿªêÿÿªªþÿªªêÿ \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/endcap_Med_right.dat b/zubehoer/startracker/source/bellatrix-code/endcap_Med_right.dat deleted file mode 100644 index 81b7eaa..0000000 --- a/zubehoer/startracker/source/bellatrix-code/endcap_Med_right.dat +++ /dev/null @@ -1 +0,0 @@ -ÿWUUÿUUÿÿWUÿÿ_UÿÿÿUÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿ+ÿÿÿ+ÿÿÿªÿÿ¯ªÿÿ«ªÿ¿ªªÿ«ªª \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/endcap_Small_left.dat b/zubehoer/startracker/source/bellatrix-code/endcap_Small_left.dat deleted file mode 100644 index 7c14573..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/endcap_Small_left.dat and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/endcap_Small_right.dat b/zubehoer/startracker/source/bellatrix-code/endcap_Small_right.dat deleted file mode 100644 index 66db08d..0000000 --- a/zubehoer/startracker/source/bellatrix-code/endcap_Small_right.dat +++ /dev/null @@ -1,4 +0,0 @@ -UUÿ_UÿÿUÿÿWÿÿ_ÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¯ -ÿÿ« -ÿÿª -ÿ¯ª*¿ªª*ªªª*ªªª* \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/filled_space.dat b/zubehoer/startracker/source/bellatrix-code/filled_space.dat deleted file mode 100644 index 85f2b75..0000000 --- a/zubehoer/startracker/source/bellatrix-code/filled_space.dat +++ /dev/null @@ -1 +0,0 @@ -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/font_29p5.dat b/zubehoer/startracker/source/bellatrix-code/font_29p5.dat deleted file mode 100644 index 13c2f85..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/font_29p5.dat and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/stint.spin b/zubehoer/startracker/source/bellatrix-code/stint.spin deleted file mode 100644 index 673c2b3..0000000 --- a/zubehoer/startracker/source/bellatrix-code/stint.spin +++ /dev/null @@ -1,670 +0,0 @@ -''LCARS tryout in XGA * -'Trying to emulate look of this page: http://www.lcarscom.net/databank.htm -'Copyright 2008 Raymond Allen - -{{ --------------------------------------------------------------------------------------------------------- - -Hive-Computer-Projekt - -Name : StarTracker -Chip : Bellatrix-Code (soundplayer) -Version : 0.1 -Dateien : stint.spin - -Beschreibung : Grafiktreiber für StarTracker - -Eigenschaften : - -Logbuch : - -Kommandoliste: - -0 1 Tastaturstatus abfragen -0 2 Tastaturzeichen holen -0 3 n Screensteuerzeichen -0 3 0 CLS -0 3 1 Home -0 3 2 Backspace -0 3 3 TAB -0 3 4 n SETCUR Cursorzeichen auf n setzen -0 3 5 POS1 -0 3 6 x SETX -0 3 7 y SETY -0 3 8 (x) GETX -0 3 9 (y) GETY -0 3 10 c SETCOL -0 3 11 n SLINE -0 3 13 SCREENINIT -0 3 14 CURON -0 3 15 CUROFF -0 99 Reboot und neuen Treiber laden -0 100 testfunktion - -1..255 Zeichenausgabe - - - --------------------------------------------------------------------------------------------------------- }} - - -CON - - _clkmode = xtal1 + pll16x - _xinfreq = 5_000_000 - - 'number of custom 16x16 characters - nuchars = (6*3+1*7+47+23*2+20*5) '!!!!! you must have the correct # here for alignment later - -'signaldefinitionen regnatix - -#0, D0,D1,D2,D3,D4,D5,D6,D7 'datenbus -#8, BEL_VGABASE 'vga-signale (8pin) -#16, BEL_KEYBC,BEL_KEYBD 'keyboard-signale -#18, BEL_MOUSEC,BEL_MOUSED 'maus-signale -#20, BEL_VIDBASE 'video-signale(3pin) -#23, BEL_SELECT 'belatrix-auswahlsignal -#24, HBEAT 'front-led - BUSCLK 'bustakt - BUS_WR '/wr - schreibsignal - BUS_HS ' '/hs - quittungssignal - -COLS = 64 -ROWS = 48 -TILES = cols * rows - -TAB1 = 16 -TAB2 = 32 -TAB3 = 48 -SPACETILE = $8000 + $20 << 6 - -VGA_BASPORT = 8 'vga startport -VGA_RESX = COLS * 16 'vga anzahl pixel x -VGA_RESY = ROWS * 16 'vga anzahl pixel y -KEYB_DPORT = BEL_KEYBD 'tastatur datenport -KEYB_CPORT = BEL_KEYBC 'tastatur taktport -MOUSE_DPORT = BEL_MOUSED -MOUSE_CPORT = BEL_MOUSEC -CURSORCHAR = $0E 'cursorzeichen - -DB_WAIT = %00000001_00000000_00000000_00000000 'dira-wert f?r wait-status am bus -DB_IN = %00001001_00000000_00000000_00000000 'dira-wert f?r datenbuseingabe -DB_OUT = %00001001_00000000_00000000_11111111 'dira-wert f?r datenbusausgabe -CNT_HBEAT = 5_000_0000 'blinkgeschw. front-led - - -VAR - - 'variables for display - long col, row, color, flag - long array[tiles/2] - long stackhb[9] 'stack f?r hbeat-cog - byte cursor 'cursorzeichen - byte curstat 'cursorstatus 1 = ein - byte sline 'startzeile des scrollfensters - byte eline 'endzeile des scrollfensters - - 'for custom characters - word user_charbase - - 'for drawing buttons - word ptr - byte boxcolor - byte sBuffer[32] 'stingpuffer - - -OBJ - - vga : "stvga" - keyb : "stkeyb" - - -PUB main | zeichen -{{interpreter f?r hostdialog}} - - init_subsysteme 'bus/vga/keyboard/maus initialisieren - repeat - zeichen := bus_getchar '1. zeichen empfangen - if zeichen > 0 - print_char(zeichen) - else - zeichen := bus_getchar '2. zeichen kommando empfange - case zeichen - 1: bus_putchar(keyb.gotkey) '1: Tastaturstatus senden - 2: bus_putchar(keyb.key) '2: Tastaturzeichen senden - 3: zeichen := bus_getchar '3: Sonderzeichen von $100 bis $1FF ausgeben - print_char(zeichen + $100) - - 10: cmd_bitmap1 - 11: cmd_fillbox - 12: cmd_drawtxt - 99: reboot '99: bellatrix neu starten - 100: gfx1 - -PUB gfx1 - -PUB cmd_bitmap1 | nBitmap,pBitmap,xPos,yPos,xSize,ySize,clr -'Bitmap1Bit(@endcap_med_left,1,1,1,2,1) -'Bitmap1Bit(pBitmap, xPos, yPos, xSize, ySize, clr) - nBitmap := bus_getchar - xPos := bus_getchar - yPos := bus_getchar - xSize := bus_getchar - ySize := bus_getchar - clr := bus_getchar - case nBitmap - 0: pBitmap := @title - 1: pBitmap := @footer - 2: pBitmap := @button1 - 3: pBitmap := @button2 - 4: pBitmap := @button3 - 5: pBitmap := @button4 - 6: pBitmap := @button5 - 7: pBitmap := @button6 - 8: pBitmap := @button7 - 9: pBitmap := @button8 - 10: pBitmap := @button9 - 11: pBitmap := @corner_topleft - 12: pBitmap := @corner_topright - 13: pBitmap := @corner_bottomLeft - 14: pBitmap := @endcap_med_left - 15: pBitmap := @endcap_med_right - 16: pBitmap := @endcap_small_left - 17: pBitmap := @endcap_small_right - Bitmap1Bit(pBitmap, xPos, yPos, xSize, ySize, clr) - - -PUB cmd_fillbox | left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight -'FillBlock(3,1,35,2,3,false,false,false) -'FillBlock(left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight) - left := bus_getchar - top := bus_getchar - width := bus_getchar - height := bus_getchar - clr := bus_getchar - bBottomBreak := bus_getchar - bRightBreak := bus_getchar - bTrimRight := bus_getchar - FillBlock(left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight) - -PUB cmd_drawtxt | nButton,pButton,nLen,c,i -'DrawText(@button,@string,bInvert) - nButton := bus_getchar - nLen := bus_getchar - repeat i from 0 to nLen - 1 - c := bus_getchar - sBuffer[i] := c - sBuffer[i+1] := 0 - case nButton - 0: pButton := @title - 1: pButton := @footer - 2: pButton := @button1 - 3: pButton := @button2 - 4: pButton := @button3 - 5: pButton := @button4 - 6: pButton := @button5 - 7: pButton := @button6 - 8: pButton := @button7 - 9: pButton := @button8 - 10: pButton := @button9 - DrawText(pButton, @sBuffer,false) - -PUB init_subsysteme -{{initialisierung des belatrix-chips}} - cognew(led_hbeat, @stackhb) 'heartbeat aktivieren - bus_init 'bussignale initialisieren - - '64 byte align the user characters - user_charbase := @uchar & $FFC0 'destination - 'user_charbase_offset := user_charbase-@uchar - longmove(user_charbase,@uchar,16*nuchars) - - keyb.start(keyb_dport, keyb_cport) 'tastaturport starten - vga.start(vga_basport, @array, @vgacolors, 0,0,0) 'vga-treiber starten - - print_char($100) 'bildschirm l?schen - cursor := CURSORCHAR 'cursorzeichen setzen - curstat := 1 'cursor anschalten - sline := 2 - eline := rows - -PUB bus_init -{{initialisierung des bussystems}} - dira := db_in 'datenbus auf eingabe schalten - outa[bus_hs] := 1 'handshake inaktiv - -PUB bus_putchar(zeichen) -{{ein byte ?ber bus ausgeben}} - waitpeq(%00000010_00000000_00000000_00000000,%00000010_10000000_00000000_00000000,0) 'busclk=1? & prop2=0? - dira := db_out 'datenbus auf ausgabe stellen - outa[7..0] := zeichen 'daten ausgeben - outa[bus_hs] := 0 'daten g?ltig - waitpeq(%00000000_00000000_00000000_00000000,%00000010_00000000_00000000_00000000,0) 'busclk=0? - 'waitcnt(1_000 + cnt) 'zeit f?r master - outa[bus_hs] := 1 'daten ung?ltig - dira := db_in 'bus freigeben - -PUB bus_getchar : zeichen -{{ein byte ?ber bus empfangen}} - waitpeq(%00000010_00000000_00000000_00000000,%00000010_10000000_00000000_00000000,0) 'busclk=1? & prop2=0? - zeichen := ina[7..0] 'daten einlesen - outa[bus_hs] := 0 'daten quittieren - outa[bus_hs] := 1 - waitpeq(%00000000_00000000_00000000_00000000,%00000010_00000000_00000000_00000000,0) 'busclk=0? - -PUB led_hbeat -{{led_hbeat - herzschlag f?r front-led}} - dira := db_in - repeat - !outa[hbeat] - waitcnt(cnt_hbeat + cnt) - -PUB print_str(strptr) -{{zeichenkette auf bildschirm ausgeben}} - repeat while byte[strptr] - print_char(byte[strptr++]) - - -PUB print_char(c) | code,n -{{zeichen auf bildschirm ausgeben}} -'' Print a character -'' -'' $0D = new line -'' $20..$FF = character -'' $100 = clear screen -'' $101 = home -'' $108 = backspace -''$110..$11F = select color - - case c - - $00..$0C: - pchar(c) - if curstat == 1 - schar(cursor) - - $0D: 'return? - if curstat == 1 - schar($20) - newline - if curstat == 1 - schar(cursor) - - $0E..$FF: 'character? - pchar(c) - if curstat == 1 - schar(cursor) - - $100: 'clear screen? - if curstat == 1 - schar($20) - n := sline * cols * 2 - wordfill(@array + n, spacetile, tiles - n) - row := sline - col := 0 - if curstat == 1 - schar(cursor) - - $101: 'home? - row := sline - col := 0 - - $102: 'backspace? - if col - if curstat == 1 - schar($20) - col-- - if curstat == 1 - schar(cursor) - - $103: 'tab - if col < TAB1 - if curstat == 1 - schar($20) - col := TAB1 - if curstat == 1 - schar(cursor) - return - if col < TAB2 - if curstat == 1 - schar($20) - col := TAB2 - if curstat == 1 - schar(cursor) - return - if col < TAB3 - if curstat == 1 - schar($20) - col := TAB3 - if curstat == 1 - schar(cursor) - return - $104: 'setcur - code := bus_getchar - cursor := code - if curstat == 1 - schar(code) - - $105: 'pos1 - if curstat == 1 - schar($20) - col := 0 - if curstat == 1 - schar(cursor) - - $106: 'setx - if curstat == 1 - schar($20) - col := bus_getchar - if curstat == 1 - schar(cursor) - - $107: 'sety - if curstat == 1 - schar($20) - row := bus_getchar * 2 + sline '2 tiles pro zeichen! - if curstat == 1 - schar(cursor) - - $108: 'getx - bus_putchar(col) - - $109: 'gety - bus_putchar(row / 2) - - $110: 'setcolor - color := bus_getchar - - $111: 'sline - sline := bus_getchar * 2 - - $112: 'eline - eline := bus_getchar * 2 - - $113: 'screeninit - wordfill(@array, spacetile, tiles) - row := 0 - col := 0 - sline := 0 - - $114: 'curon - curstat := 1 - schar(cursor) - - $115: 'curoff - if curstat == 1 - schar($20) - curstat := 0 - - $116: 'scrollup - scrollup - - $130..$13F: 'select color? - color := c & $F - -PRI schar(c)| i,k -'schreibt zeichen an aktuelle position ohne cursorposition zu ver?ndern - k := color << 1 + c & 1 - i := $8000 + (c & $FE) << 6 + k - array.word[row * cols + col] := i 'oberes tile setzen - array.word[(row + 1) * cols + col] := i | $40 'unteres tile setzen - -PRI pchar(c) -'schreibt zeichen an aktuelle position z?hlt position weiter - schar(c) - if ++col == cols - newline - -PUB newline | i - - col := 0 - if (row += 2) == rows - row -= 2 - 'scroll lines - repeat i from sline to rows-3 - - wordmove(@array.word[i*cols], @array.word[(i+2)*cols], cols) 'wordmove(dest,src,cnt) - 'clear new line - wordfill(@array.word[(rows-2)*cols], spacetile, cols<<1) - -PUB scrollup | i 'scrollt den screen nach oben - 'scroll lines - repeat i from sline to rows-3 - wordmove(@array.word[i*cols], @array.word[(i+2)*cols], cols) 'wordmove(dest,src,cnt) - 'clear new line - wordfill(@array.word[(rows-2)*cols], spacetile, cols<<1) - -PRI DrawText(pBmp,str,bInvert)|x1,x2,i,j,b,k,c,s -'draw prop font into bitmap - k:=0 'current column - repeat s from 0 to strsize(str)-1 - c:=byte[str][s] - if (c=>32) and (c=<(95+2)) 'note: char 96=dot, 97=degree - x1:=word[@FontTable][c-32] - x2:=word[@FontTable][c-32+1] - repeat i from x1 to x2-1 - DrawFontColumn(i,j,pBmp,k,b) - 'repeat j from 0 to 31 - ' b:=getFontPixel(i,j) - ' setFontPixel(pBmp,k,j,b) - k++ - -PRI DrawFontColumn(x,y,pdest,k,b)|dtile,stile,doffset,soffset,psrc,d,pixel,j - stile:=x/16 - soffset:=(x//16)*2 - psrc:=@font+4*16*stile+user_charbase-@uchar - dtile:=k/16 - doffset:=(k//16)*2 - pdest+=4*16*dtile+user_charbase-@uchar - repeat j from 0 to 31 - y:=j - if y=>16 - y-=16 - if j==16 - soffset++ - doffset++ - pixel:=long[psrc][y//16] - pixel>>=soffset - pixel&=$1 - 'draw - if pixel - long[pdest][y//16]|=|16 - offset++ - y-=16 - p:=@font+4*16*tile - d:=long[p+user_charbase-@uchar][y//16] - d>>=offset - return (d&$1)>0 - -PRI setFontPixel(p,x,y,b)|tile,offset,d -'set (b=true) or clear (b=false) pixel in bmp @p at coordinates (x,y) - tile:=x/16 - offset:=(x//16)*2 - if y=>16 - offset++ - y-=16 - p+=4*16*tile+user_charbase-@uchar - 'd:=long[p][y//16] - if b - long[p][y//16]|=|>6 + c & $FE - -PRI uPrintBottom(c,ncol,nrow)|i,k - 'print bottom part of a character - k := color << 1 + c & 1 - i := user_charbase + (c & $FE) << 6 + k - array.word[nrow * cols + ncol] := i+$40'user_charbase + (c<<6) + color+$40'(color << 1 + c & 1) << 10 + user_charbase>>6 + c & $FE +1 - -PRI Bitmap2Bit(pBitmap, xPos, yPos, xSize, ySize, clr)|c,i,j,BmpAddress - row:=yPos - col:=xPos - c:=0 - BmpAddress:=pBitmap+user_charbase-@uchar - repeat j from 0 to (ySize-1) - repeat i from 0 to (xSize-1) - array.word[row * cols + col] := BmpAddress + (c<<6) + clr - 'Print2Bit(c,clr,pBitmap) - c++ - col++ - row++ - col:=xPos - - -PRI Bitmap1Bit(pBitmap, xPos, yPos, xSize, ySize, clr)|c,i,j,BmpAddress - row:=yPos - col:=xPos - c:=0 - BmpAddress:=pBitmap+user_charbase-@uchar - repeat j from 0 to (ySize-1) step 2 - repeat i from 0 to (xSize-1) - array.word[row * cols + col] := (clr<<1+1) + BmpAddress +c<<6 - if ySize<>1 - array.word[(row+1) * cols + col] := (clr<<1) + BmpAddress +c<<6 - c++ - col++ - row+=2 - col:=xPos - - -PRI Bitmap1BitTile(pBitmap,x,y,clr,bLower)|BmpAddress -'print just the upper or lower tile of a 2-tile bitmap - BmpAddress:=pBitmap+user_charbase-@uchar - clr:=clr<<1+1 - if bLower - clr-=1 - - array.word[y * cols + x] := clr + BmpAddress - - -DAT - vgacolors long - -'0..1: text color 0: - long $90009000 'orange on black - long $90900000 -'2..3: text color 1: - long $5c005c00 'blue on black - long $5c5c0000 -'4..5: text color 2: - long $94009400 'light red on black - long $94940000 -'6..7: text color 3: - long $98009800 'purple on black - long $98980000 -'8..9: text color 4: - long $f800f800 'yellow on black - long $f8f80000 -'10..11: text color 5: - long $84008400 'dark red on black - long $84840000 - - -'12: graphics 2: 'card edge colors - long $100000FC ''green,black,black,white -'13: graphics 3: 'red face card colors - long $F0C000FC ' yellow,red,black,white -'14: graphics 4: 'black face card colors - long $F000C0FC ''yellow,black,red,white -'15: graphics 5: button colors - long $FC54A8A8 'lt grey, dk.gray, gray, gray - - -FontTable word - word 8, 16,21,32,60,72,92,107,114,121,129,138,150,156,164,170,184,195,203,214,225,239,250,261,273,284,295,300,306,316,333,343,354,378,392 'to B - word 403,414,425,435,445,456,467,472,483,496,506,523,537,548,559,570,582,593,605,616,630,649,663,676,686,695,706,720,733,743,751 'note last two chars are dot and degree - -padding LONG 7[16] 'alignment padding for the following user defined characters - -uchar long - -corner_topleft long - file "corner_topleft.dat" '6x2 - -corner_topright long - file "corner_topright.dat" '6x2 - -corner_bottomLeft long - file "corner_bottomLeft.dat" '6x2 - -hv_break long - file "hv_break.dat" '1x2 - -hv_break2 long - file "hv_break2.dat" '1x2 - -endcap_med_left long - file "endcap_med_left.dat" '1x2 - -endcap_med_right long - file "endcap_med_right.dat" '1x2 - -endcap_small_left long - file "endcap_small_left.dat" '1x2 - -endcap_small_right long - file "endcap_small_right.dat" '1x2 - -filled_space long - file "filled_space.dat" '1x2 - -font long - file "font_29p5.dat" '47x2 - -title long 0[16*23] 'space for title 23x2 -footer long 0[16*23] 'space for footer 23x2 - -button1 long 0[16*20] 'space for button text 10x2 -button2 long 0[16*20] 'space for button text -button3 long 0[16*20] 'space for button text -button4 long 0[16*20] 'space for button text -button5 long 0[16*20] 'space for button text -button6 long 0[16*20] 'space for button text 10x2 -button7 long 0[16*20] 'space for button text -button8 long 0[16*20] 'space for button text -button9 long 0[16*20] 'space for button text \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/stkeyb.spin b/zubehoer/startracker/source/bellatrix-code/stkeyb.spin deleted file mode 100644 index dad7275..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/stkeyb.spin and /dev/null differ diff --git a/zubehoer/startracker/source/bellatrix-code/stmouse.spin b/zubehoer/startracker/source/bellatrix-code/stmouse.spin deleted file mode 100644 index a5518dc..0000000 --- a/zubehoer/startracker/source/bellatrix-code/stmouse.spin +++ /dev/null @@ -1,470 +0,0 @@ -''***************************** -''* PS/2 Mouse Driver v1.1 * -''* (C) 2006 Parallax, Inc. * -''***************************** - -' v1.0 - 01 May 2006 - original version -' v1.1 - 01 Jun 2006 - bound coordinates added to simplify upper objects - - -VAR - - long cog - - long oldx, oldy, oldz 'must be followed by parameters (10 contiguous longs) - - long par_x 'absolute x read-only (7 contiguous longs) - long par_y 'absolute y read-only - long par_z 'absolute z read-only - long par_buttons 'button states read-only - long par_present 'mouse present read-only - long par_dpin 'data pin write-only - long par_cpin 'clock pin write-only - - long bx_min, by_min, bz_min 'min/max must be contiguous - long bx_max, by_max, bz_max - long bx_div, by_div, bz_div - long bx_acc, by_acc, bz_acc - - -PUB start(dpin, cpin) : okay - -'' Start mouse driver - starts a cog -'' returns false if no cog available -'' -'' dpin = data signal on PS/2 jack -'' cpin = clock signal on PS/2 jack -'' -'' use 100-ohm resistors between pins and jack -'' use 10K-ohm resistors to pull jack-side signals to VDD -'' connect jack-power to 5V, jack-gnd to VSS - - stop - par_dpin := dpin - par_cpin := cpin - okay := cog := cognew(@entry, @par_x) + 1 - - -PUB stop - -'' Stop mouse driver - frees a cog - - if cog - cogstop(cog~ - 1) - longfill(@oldx, 0, 10) - - -PUB present : type - -'' Check if mouse present - valid ~2s after start -'' returns mouse type: -'' -'' 3 = five-button scrollwheel mouse -'' 2 = three-button scrollwheel mouse -'' 1 = two-button or three-button mouse -'' 0 = no mouse connected - - type := par_present - - -PUB button(b) : state - -'' Get the state of a particular button -'' returns t|f - - state := -(par_buttons >> b & 1) - - -PUB buttons : states - -'' Get the states of all buttons -'' returns buttons: -'' -'' bit4 = right-side button -'' bit3 = left-side button -'' bit2 = center/scrollwheel button -'' bit1 = right button -'' bit0 = left button - - states := par_buttons - - -PUB abs_x : x - -'' Get absolute-x - - x := par_x - - -PUB abs_y : y - -'' Get absolute-y - - y := par_y - - -PUB abs_z : z - -'' Get absolute-z (scrollwheel) - - z := par_z - - -PUB delta_reset - -'' Reset deltas - - oldx := par_x - oldy := par_y - oldz := par_z - - -PUB delta_x : x | newx - -'' Get delta-x - - newx := par_x - x := newx - oldx - oldx := newx - - -PUB delta_y : y | newy - -'' Get delta-y - - newy := par_y - y := newy - oldy - oldy := newy - - -PUB delta_z : z | newz - -'' Get delta-z (scrollwheel) - - newz := par_z - z := newz - oldz - oldz := newz - - -PUB bound_limits(xmin, ymin, zmin, xmax, ymax, zmax) | i - -'' Set bounding limits - - longmove(@bx_min, @xmin, 6) - - -PUB bound_scales(x_scale, y_scale, z_scale) - -'' Set bounding scales (usually +/-1's, bigger values divide) - - longmove(@bx_div, @x_scale, 3) - - -PUB bound_preset(x, y, z) | i, d - -'' Preset bound coordinates - - repeat i from 0 to 2 - d := ||bx_div[i] - bx_acc[i] := (x[i] - bx_min[i]) * d + d >> 1 - - -PUB bound_x : x - -'' Get bound-x - - x := bound(0, delta_x) - - -PUB bound_y : y - -'' Get bound-y - - y := bound(1, delta_y) - - -PUB bound_z : z - -'' Get bound-z - - z := bound(2, delta_z) - - -PRI bound(i, delta) : b | d - - d := bx_div[i] - b := bx_min[i] + (bx_acc[i] := bx_acc[i] + delta * (d < 0) | 1 #> 0 <# (bx_max[i] - bx_min[i] + 1) * ||d - 1) / ||d - - -DAT - -'*************************************** -'* Assembly language PS/2 mouse driver * -'*************************************** - - org -' -' -' Entry -' -entry mov p,par 'load input parameters: - add p,#5*4 '_dpin/_cpin - rdlong _dpin,p - add p,#4 - rdlong _cpin,p - - mov dmask,#1 'set pin masks - shl dmask,_dpin - mov cmask,#1 - shl cmask,_cpin - - test _dpin,#$20 wc 'modify port registers within code - muxc _d1,dlsb - muxc _d2,dlsb - muxc _d3,#1 - muxc _d4,#1 - test _cpin,#$20 wc - muxc _c1,dlsb - muxc _c2,dlsb - muxc _c3,#1 - - movd :par,#_x 'reset output parameters: - mov p,#5 '_x/_y/_z/_buttons/_present -:par mov 0,#0 - add :par,dlsb - djnz p,#:par -' -' -' Reset mouse -' -reset mov dira,#0 'reset directions - mov dirb,#0 - - mov stat,#1 'set reset flag -' -' -' Update parameters -' -update movd :par,#_x 'update output parameters: - mov p,par '_x/_y/_z/_buttons/_present - mov q,#5 -:par wrlong 0,p - add :par,dlsb - add p,#4 - djnz q,#:par - - test stat,#1 wc 'if reset flag, transmit reset command - if_c mov data,#$FF - if_c call #transmit -' -' -' Get data packet -' - mov stat,#0 'reset state - - call #receive 'receive first byte - - cmp data,#$AA wz 'powerup/reset? - if_z jmp #init - - mov _buttons,data 'data packet, save buttons - - call #receive 'receive second byte - - test _buttons,#$10 wc 'adjust _x - muxc data,signext - add _x,data - - call #receive 'receive third byte - - test _buttons,#$20 wc 'adjust _y - muxc data,signext - add _y,data - - and _buttons,#%111 'trim buttons - - cmp _present,#2 wc 'if not scrollwheel mouse, update parameters - if_c jmp #update - - - call #receive 'scrollwheel mouse, receive fourth byte - - cmp _present,#3 wz 'if 5-button mouse, handle two extra buttons - if_z test data,#$10 wc - if_z_and_c or _buttons,#%01000 - if_z test data,#$20 wc - if_z_and_c or _buttons,#%10000 - - shl data,#28 'adjust _z - sar data,#28 - sub _z,data - - jmp #update 'update parameters -' -' -' Initialize mouse -' -init call #receive '$AA received, receive id - - movs crate,#100 'try to enable 3-button scrollwheel type - call #checktype - movs crate,#200 'try to enable 5-button scrollwheel type - call #checktype - shr data,#1 'if neither, 3-button type - add data,#1 - mov _present,data - - movs srate,#200 'set 200 samples per second - call #setrate - - mov data,#$F4 'enable data reporting - call #transmit - - jmp #update -' -' -' Check mouse type -' -checktype movs srate,#200 'perform "knock" sequence to enable - call #setrate '..scrollwheel and extra buttons - -crate movs srate,#200/100 - call #setrate - - movs srate,#80 - call #setrate - - mov data,#$F2 'read type - call #transmit - call #receive - -checktype_ret ret -' -' -' Set sample rate -' -setrate mov data,#$F3 - call #transmit -srate mov data,#0 - call #transmit - -setrate_ret ret -' -' -' Transmit byte to mouse -' -transmit -_c1 or dira,cmask 'pull clock low - movs napshr,#13 'hold clock for ~128us (must be >100us) - call #nap -_d1 or dira,dmask 'pull data low - movs napshr,#18 'hold data for ~4us - call #nap -_c2 xor dira,cmask 'release clock - - test data,#$0FF wc 'append parity and stop bits to byte - muxnc data,#$100 - or data,dlsb - - mov p,#10 'ready 10 bits -transmit_bit call #wait_c0 'wait until clock low - shr data,#1 wc 'output data bit -_d2 muxnc dira,dmask - mov wcond,c1 'wait until clock high - call #wait - djnz p,#transmit_bit 'another bit? - - mov wcond,c0d0 'wait until clock and data low - call #wait - mov wcond,c1d1 'wait until clock and data high - call #wait - - call #receive_ack 'receive ack byte with timed wait - cmp data,#$FA wz 'if ack error, reset mouse - if_nz jmp #reset - -transmit_ret ret -' -' -' Receive byte from mouse -' -receive test _cpin,#$20 wc 'wait indefinitely for initial clock low - waitpne cmask,cmask -receive_ack - mov p,#11 'ready 11 bits -receive_bit call #wait_c0 'wait until clock low - movs napshr,#16 'pause ~16us - call #nap -_d3 test dmask,ina wc 'input data bit - rcr data,#1 - mov wcond,c1 'wait until clock high - call #wait - djnz p,#receive_bit 'another bit? - - shr data,#22 'align byte - test data,#$1FF wc 'if parity error, reset mouse - if_nc jmp #reset - and data,#$FF 'isolate byte - -receive_ack_ret -receive_ret ret -' -' -' Wait for clock/data to be in required state(s) -' -wait_c0 mov wcond,c0 '(wait until clock low) - -wait mov q,tenms 'set timeout to 10ms - -wloop movs napshr,#18 'nap ~4us - call #nap -_c3 test cmask,ina wc 'check required state(s) -_d4 test dmask,ina wz 'loop until got state(s) or timeout -wcond if_never djnz q,#wloop '(replaced with c0/c1/c0d0/c1d1) - - tjz q,#reset 'if timeout, reset mouse -wait_ret -wait_c0_ret ret - - -c0 if_c djnz q,#wloop '(if_never replacements) -c1 if_nc djnz q,#wloop -c0d0 if_c_or_nz djnz q,#wloop -c1d1 if_nc_or_z djnz q,#wloop -' -' -' Nap -' -nap rdlong t,#0 'get clkfreq -napshr shr t,#18/16/13 'shr scales time - min t,#3 'ensure waitcnt won't snag - add t,cnt 'add cnt to time - waitcnt t,#0 'wait until time elapses (nap) - -nap_ret ret -' -' -' Initialized data -' -dlsb long 1 << 9 -tenms long 10_000 / 4 -signext long $FFFFFF00 -' -' -' Uninitialized data -' -dmask res 1 -cmask res 1 -stat res 1 -data res 1 -p res 1 -q res 1 -t res 1 - -_x res 1 'write-only -_y res 1 'write-only -_z res 1 'write-only -_buttons res 1 'write-only -_present res 1 'write-only -_dpin res 1 'read-only -_cpin res 1 'read-only \ No newline at end of file diff --git a/zubehoer/startracker/source/bellatrix-code/stvga.spin b/zubehoer/startracker/source/bellatrix-code/stvga.spin deleted file mode 100644 index 9acf513..0000000 Binary files a/zubehoer/startracker/source/bellatrix-code/stvga.spin and /dev/null differ diff --git a/zubehoer/startracker/source/regnatix-code/readme.rtf b/zubehoer/startracker/source/regnatix-code/readme.rtf deleted file mode 100644 index c32f7e0..0000000 Binary files a/zubehoer/startracker/source/regnatix-code/readme.rtf and /dev/null differ diff --git a/zubehoer/startracker/source/regnatix-code/stplay.spin b/zubehoer/startracker/source/regnatix-code/stplay.spin deleted file mode 100644 index 9f6d040..0000000 Binary files a/zubehoer/startracker/source/regnatix-code/stplay.spin and /dev/null differ diff --git a/zubehoer/vecdem/vecdem1-bel.spin b/zubehoer/vecdem/vecdem1-bel.spin deleted file mode 100644 index 1cf2601..0000000 Binary files a/zubehoer/vecdem/vecdem1-bel.spin and /dev/null differ diff --git a/zubehoer/vecdem/vectron-1-asm.spin b/zubehoer/vecdem/vectron-1-asm.spin deleted file mode 100644 index b21d780..0000000 Binary files a/zubehoer/vecdem/vectron-1-asm.spin and /dev/null differ diff --git a/zubehoer/vecdem/vectron-1-drv.spin b/zubehoer/vecdem/vectron-1-drv.spin deleted file mode 100644 index f9d067d..0000000 --- a/zubehoer/vecdem/vectron-1-drv.spin +++ /dev/null @@ -1,250 +0,0 @@ -''******************************************** -''* VGA 512x384 2-Color Bitmap Driver v1.0 * -''* (C) 2006 Parallax, Inc. * -''******************************************** -'' -'' This object generates a 512x384 pixel bitmap, signaled as 1024x768 VGA. -'' Each pixel is one bit, so the entire bitmap requires 512 x 384 / 32 longs, -'' or 6,144 longs (24KB). Color words comprised of two byte fields provide -'' unique colors for every 32x32 pixel group. These color words require 512/32 -'' * 384/32 words, or 192 words. Pixel memory and color memory are arranged -'' left-to-right then top-to-bottom. -'' -'' A sync indicator signals each time the screen is drawn (you may ignore). -'' -'' You must provide buffers for the colors, pixels, and sync. Once started, -'' all interfacing is done via memory. To this object, all buffers are read- -'' only, with the exception of the sync indicator which gets written with a -'' non-0 value. You may freely write all buffers to affect screen appearance. -'' - -{{ -notizen: - - - -}} -CON - -' 512x384 settings - signals as 1024 x 768 @ 67Hz - - hp = 512 'horizontal pixels - vp = 384 'vertical pixels - hf = 8 'horizontal front porch pixels - hs = 48 'horizontal sync pixels - hb = 88 'horizontal back porch pixels - vf = 1 'vertical front porch lines - vs = 3 'vertical sync lines - vb = 28 'vertical back porch lines - -' änderung wegen synchronisationsproblemen bei board r13 -' hn = 1 'horizontal normal sync state (0|1) -' vn = 1 'vertical normal sync state (0|1) - hn = 0 'horizontal normal sync state (0|1) - vn = 0 'vertical normal sync state (0|1) - - pr = 35 'pixel rate in MHz at 80MHz system clock (5MHz granularity) - -' Tiles - - xtiles = hp / 32 'xtiles 16 - ytiles = vp / 32 'ytiles 12 - -' H/V inactive states - - hv_inactive = (hn << 1 + vn) * $0101 - - -VAR long cog - -PUB start(BasePin, ColorPtr, PixelPtr, SyncPtr) : okay | i, j - -'' Start VGA driver - starts a COG -'' returns false if no COG available -'' -'' BasePin = VGA starting pin (0, 8, 16, 24, etc.) -'' -'' ColorPtr = Pointer to 192 words which define the "0" and "1" colors for -'' each 32x32 pixel group. The lower byte of each word contains -'' the "0" bit RGB data while the upper byte of each word contains -'' the "1" bit RGB data for the associated group. The RGB -'' data in each byte is arranged as %RRGGBB00 (4 levels each). -'' -'' color word example: %%0020_3300 = "0" = gold, "1" = blue -'' -'' PixelPtr = Pointer to 6,144 longs containing pixels that make up the 512 x -'' 384 pixel bitmap. Longs' LSBs appear left on the screen, while -'' MSBs appear right. The longs are arranged in sequence from left- -'' to-right, then top-to-bottom. -'' -'' SyncPtr = Pointer to long which gets written with non-0 upon each screen -'' refresh. May be used to time writes/scrolls, so that chopiness -'' can be avoided. You must clear it each time if you want to see -'' it re-trigger. - - 'if driver is already running, stop it - stop - - 'implant pin settings and pointers, then launch COG - ' %1111_1111_1111_1111_1111_1111_1111_1111 - ' 2 0 0 0 0 0 F F - ' 0010_0000_0000_0000_0000_0000_1111_1111 - ' || ||| VGroup - ' || |||| |||| VPins Video an allen 8 Pins - VGA - ' || --> 01 VMode VGA-Mode - ' | --> 0 CMode 2-Farbmodus - reg_vcfg := $200000FF + (BasePin & %111000) << 6 'schreibt VGroup in das Konfigurationsregister - i := $FF << (BasePin & %011000) 'acht Bits in der Maske bis zur BasePin-Position verschieben - j := BasePin & %100000 == 0 - reg_dira := i & j - reg_dirb := i & !j - - clrflag := 1 '1 - bildschirm wird bei jedem durchlauf gelöscht - clrline := 2 'tilezeile ab der gelöscht wird - - longmove(@color_base, @ColorPtr, 2) 'kopiert 2 parameter von color_ptr in den asm-bereich color_base - 'color_ptr --> color_base - 'pixel_pointer --> pixel_base - if (cog := cognew(@init, SyncPtr) + 1) - return true - - -PUB stop | i - -'' Stop VGA driver - frees a COG - - if cog - cogstop(cog~ - 1) - - -DAT - -'*********************************************** -'* Assembly language VGA 2-color bitmap driver * -'*********************************************** - - org 'set origin to $000 for start of program - -' Initialization code - init I/O - -init mov dira,reg_dira 'i/o-register konfigurieren - mov dirb,reg_dirb - - movi ctra,#%00001_101 'enable PLL in ctra (VCO runs at 4x) - '25..23 PLLDIV = 101 --> VCO / 4 - '31..26 CTRMODE = 00001 --> PLL intern (Video Mode) - movi frqa,#(pr / 5) << 3 'set pixel rate - ' (35 MHz / 5) << 3 = 56 = 111000 - - mov vcfg,reg_vcfg 'set video configuration - -' Main loop, display field and do invisible sync lines - -field mov color_ptr,color_base 'reset color pointer 'color-pointer auf anfangswert setzen - mov pixel_ptr,pixel_base 'reset pixel pointer 'pixel-pointer auf anfangswert setzen - mov y,#ytiles 'set y tiles -:ytile mov yl,#32 'set y lines per tile -:yline mov yx,#2 'set y expansion -:yexpand mov x,#xtiles 'set x tiles - mov vscl,vscl_pixel 'set pixel vscl - -:xtile rdword color,color_ptr 'get color word 'color <-- (color_ptr) - and color,colormask 'clear h/v bits - or color,hv 'set h/v inactive states - rdlong pixel,pixel_ptr 'get pixel long 'pixel <-- (pixel_ptr) - - '----------------------------------------------------- - -' cmpsub clrline,y wc 'clrline - y -' if_c jmp #:noclr - - and clrflag,clrflag wz 'clrflag = 1 '1 --> pixelspeicher bei jedem durchlauf löschen - if_nz wrlong reg_a,pixel_ptr 'pixelspeicher löschen 'reg_a --> (pixel_ptr) - - '----------------------------------------------------- - -:noclr waitvid color,pixel 'farb- und pixelwerte (32bit) ausgeben - add color_ptr,#2 'point to next color word 'farbe nur zwei byte, also ein word - add pixel_ptr,#4 'point to next pixel long 'pixel vier byte, also ein long - djnz x,#:xtile 'another x tile? 'schleife x * 32bit-pixelwerte - - sub color_ptr,#xtiles * 2 'farbzeiger auf zeilenanfang rücksetzen - sub pixel_ptr,#xtiles * 4 'pixelzeiger auf zeilenanfang rücksetzen - - mov x,#1 'zeilensynchronimpuls - call #hsync - - '----------------------------------------------------- VIDEOZEILEN - - djnz yx,#:yexpand 'y expand? - - '----------------------------------------------------- PIXELZEILEN - - add pixel_ptr,#xtiles * 4 'pixelzeiger auf nächsten zeilenanfang setzen - djnz yl,#:yline 'another y line in same tile? 'schleife y-tilezeilen - - '----------------------------------------------------- TILEZEILEN - - add color_ptr,#xtiles * 2 'farbzeiger auf nächsten zeilenanfang setzen - djnz y,#:ytile 'another y tile? - - '----------------------------------------------------- BILDSCHIRM - - wrlong colormask,par 'ende sichtbarer bereich, sync für software erzeugen - - mov x,#vf 'leerzeilen (vf - vertical front) - call #blank - mov x,#vs 'bildsynchonisation (x zeilen) - call #vsync - mov x,#vb 'do vertical back porch lines - call #vsync - - jmp #field 'field done, loop - - -' Subroutine - do blank lines - -vsync xor hvsync,#$101 'flip vertical sync bits - -blank mov vscl,hvis 'do blank pixels - waitvid hvsync,#0 -hsync mov vscl,#hf 'do horizontal front porch pixels - waitvid hvsync,#0 - mov vscl,#hs 'do horizontal sync pixels - waitvid hvsync,#1 - mov vscl,#hb 'do horizontal back porch pixels - waitvid hvsync,#0 - djnz x,#blank 'another line? -hsync_ret -blank_ret -vsync_ret ret - - -' Data - -reg_dira long 0 'set at runtime -reg_dirb long 0 'set at runtime -reg_vcfg long 0 'set at runtime - -color_base long 0 'set at runtime (2 contiguous longs) -pixel_base long 0 'set at runtime - -vscl_pixel long 1 << 12 + 32 '1 pixel per clock and 32 pixels per set -colormask long $FCFC 'mask to isolate R,G,B bits from H,V -hvis long hp 'visible pixels per scan line -hv long hv_inactive '-H,-V states -hvsync long hv_inactive ^ $200 '+/-H,-V states -reg_a long 0 'temp. register -clrflag long 0 '1 - screen bei darstellung löschen -clrline long 0 'tilezeile ab der gelöscht wird - -' Uninitialized data - -color_ptr res 1 -pixel_ptr res 1 -color res 1 -pixel res 1 -x res 1 -y res 1 -yl res 1 -yx res 1 \ No newline at end of file diff --git a/zubehoer/vecdem/vectron-1-keyb.spin b/zubehoer/vecdem/vectron-1-keyb.spin deleted file mode 100644 index dad7275..0000000 Binary files a/zubehoer/vecdem/vectron-1-keyb.spin and /dev/null differ