diff --git a/Source/Build.cmd b/Source/Build.cmd index 28b4c1a5..77751057 100644 --- a/Source/Build.cmd +++ b/Source/Build.cmd @@ -2,7 +2,7 @@ setlocal REM setlocal & call BuildDoc || exit /b 1 & endlocal -setlocal & call BuildHardware || exit /b 1 & endlocal +setlocal & call BuildProp || exit /b 1 & endlocal setlocal & call BuildImages || exit /b 1 & endlocal setlocal & call BuildShared || exit /b 1 & endlocal REM setlocal & call BuildBP || exit /b 1 & endlocal diff --git a/Source/BuildHardware.cmd b/Source/BuildHardware.cmd deleted file mode 100644 index da52efd2..00000000 --- a/Source/BuildHardware.cmd +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -setlocal - -setlocal & cd Hardware && call Build || exit /b 1 & endlocal diff --git a/Source/BuildProp.cmd b/Source/BuildProp.cmd new file mode 100644 index 00000000..1f8cc189 --- /dev/null +++ b/Source/BuildProp.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +setlocal & cd Prop && call Build || exit /b 1 & endlocal diff --git a/Source/Clean.cmd b/Source/Clean.cmd index 6b1f2e4a..5ebd6162 100644 --- a/Source/Clean.cmd +++ b/Source/Clean.cmd @@ -7,13 +7,8 @@ setlocal & cd ZCPR && call Clean.cmd & endlocal setlocal & cd ZCPR-DJ && call Clean.cmd & endlocal setlocal & cd ZSDOS && call Clean.cmd & endlocal setlocal & cd CBIOS && call Clean.cmd & endlocal - setlocal & cd BPBIOS && call Clean.cmd & endlocal - setlocal & cd HBIOS && call Clean.cmd & endlocal - setlocal & cd Doc && call Clean.cmd & endlocal - setlocal & cd Images && call Clean & endlocal - -setlocal & cd Hardware && call Clean & endlocal \ No newline at end of file +setlocal & cd Prop && call Clean & endlocal diff --git a/Source/Hardware/Build.cmd b/Source/Hardware/Build.cmd deleted file mode 100644 index 7ae34d5d..00000000 --- a/Source/Hardware/Build.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@echo off -setlocal - -setlocal & pushd Prop && call Build & endlocal -setlocal & pushd VDU && call Build & endlocal \ No newline at end of file diff --git a/Source/Hardware/Clean.cmd b/Source/Hardware/Clean.cmd deleted file mode 100644 index 5dced7c2..00000000 --- a/Source/Hardware/Clean.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@echo off -setlocal - -setlocal & cd Prop && call Clean & endlocal -setlocal & cd VDU && call Clean & endlocal \ No newline at end of file diff --git a/Source/Hardware/ReadMe.txt b/Source/Hardware/ReadMe.txt deleted file mode 100644 index 95395120..00000000 --- a/Source/Hardware/ReadMe.txt +++ /dev/null @@ -1,12 +0,0 @@ -The Hardware directory contains files that may be needed to complete -your system setup that would not be appropriate to include in the -ROM itself or in the ROM disk. - -Contents --------- - -VDU\vdu.rom: ROM image for VDU onboard EPROM - -Prop\PropIO.eeprom: PropIO firmware for use with RomWBW -Prop\PropIO2.eeprom: PropIO V2 firmware for use with RomWBW -Prop\ParPortProp.eeprom: ParPortProp firmware for use with RomWBW diff --git a/Source/Hardware/VDU/Build.cmd b/Source/Hardware/VDU/Build.cmd deleted file mode 100644 index cd168561..00000000 --- a/Source/Hardware/VDU/Build.cmd +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -setlocal - -copy /Y VDU.rom "..\..\..\Binary" \ No newline at end of file diff --git a/Source/Hardware/VDU/Clean.cmd b/Source/Hardware/VDU/Clean.cmd deleted file mode 100644 index 6e9aa574..00000000 --- a/Source/Hardware/VDU/Clean.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -setlocal \ No newline at end of file diff --git a/Source/Hardware/VDU/VDU.rom b/Source/Hardware/VDU/VDU.rom deleted file mode 100644 index 6452286c..00000000 Binary files a/Source/Hardware/VDU/VDU.rom and /dev/null differ diff --git a/Source/Hardware/Prop/Build.cmd b/Source/Prop/Build.cmd similarity index 72% rename from Source/Hardware/Prop/Build.cmd rename to Source/Prop/Build.cmd index d82e9884..d46a4655 100644 --- a/Source/Hardware/Prop/Build.cmd +++ b/Source/Prop/Build.cmd @@ -1,7 +1,7 @@ @echo off setlocal -set TOOLS=../../../Tools +set TOOLS=../../Tools set PATH=%TOOLS%\bst;%PATH% @@ -16,5 +16,5 @@ echo. echo Building %1... bstc Spin\%1 -e -l if errorlevel 1 goto :eof -move /Y %1.eeprom "..\..\..\Binary" +move /Y %1.eeprom "..\..\Binary" goto :eof diff --git a/Source/Hardware/Prop/Clean.cmd b/Source/Prop/Clean.cmd similarity index 100% rename from Source/Hardware/Prop/Clean.cmd rename to Source/Prop/Clean.cmd diff --git a/Source/Prop/ReadMe.txt b/Source/Prop/ReadMe.txt new file mode 100644 index 00000000..f22cf1ea --- /dev/null +++ b/Source/Prop/ReadMe.txt @@ -0,0 +1,12 @@ +The Prop directory contains the files used to build the EEPROM +firmware images for the Propeller based boards supported by +RomWBW. + +The build process places the resulting ROM image files in the +Binary directory. The firmware images are intended to integrate +with a host CPU board running RomWBW. The following images are +created: + +PropIO.eeprom for use with original PropIO +PropIO2.eeprom for use with PropIO V2 +ParPortProp.eeprom for use with Zeta ParPortProp diff --git a/Source/Hardware/Prop/Spin/AnsiTerm.spin b/Source/Prop/Spin/AnsiTerm.spin similarity index 90% rename from Source/Hardware/Prop/Spin/AnsiTerm.spin rename to Source/Prop/Spin/AnsiTerm.spin index 3d5fb32d..3f229ff2 100644 --- a/Source/Hardware/Prop/Spin/AnsiTerm.spin +++ b/Source/Prop/Spin/AnsiTerm.spin @@ -1,6 +1,7 @@ '' AnsiTerm.spin '' '' MODIFIED BY WAYNE WARTHEN FOR ANSI COLOR CHARACTER SUPPORT +'' SPEAKER ENHANCEMENT BY MICHAEL SCHWEIKERT '' '' based on... '' @@ -12,7 +13,7 @@ CON cols = 80 ' screen columns - rows = 40 ' screen rows + rows = 30 ' screen rows chars = rows * cols ' screen characters termRows = 25 ' rows in terminal area termChars = termRows * cols ' characters in terminal area @@ -20,10 +21,16 @@ CON statArea = termChars ' starting position of status area statRows = rows - TermRows ' status area rows blank = $20 + + spkVol = 75 + spkMaxFrq = 1_200 + spkMinFrq = 200 + spkBase = 13 ' Speaker pin OBJ vga : "vgacolour" 'vga : "vga8x8d" + spk : "E555_SPKEngine" VAR word screen[chars] ' screen character buffer @@ -82,6 +89,17 @@ PUB vidOn PUB vidOff vga.stop + +PUB speakerFrequency(newFrequency) + result := spk.speakerFrequency(newFrequency, spkBase) + +PUB speakerVolume(newVolume) + result := spk.speakerVolume(newVolume, spkBase) + +PUB beep + spk.speakerFrequency(1000, spkBase) + waitcnt((clkfreq >> 4) + cnt) + spk.speakerFrequency(-1, spkBase) PUB cls wordfill(@screen, (curAttr | blank), chars) @@ -150,7 +168,7 @@ PUB statStr(row, col, attr, strVal) | nxtPos PUB statFill(row, col, attr, charVal, count) wordfill(@screen + ((statArea + (row * cols) + col) * 2), (attr | charVal), count) - + PRI clsTerm wordfill (@screen, (curAttr | blank), termChars) @@ -446,6 +464,10 @@ PUB processChar(c) setCursorPos(pos) return + if c == 7 ' bel + beep + return + 1: ' Process char following escape case c "[": diff --git a/Source/Hardware/Prop/Spin/E555_SPKEngine.spin b/Source/Prop/Spin/E555_SPKEngine.spin similarity index 100% rename from Source/Hardware/Prop/Spin/E555_SPKEngine.spin rename to Source/Prop/Spin/E555_SPKEngine.spin diff --git a/Source/Hardware/Prop/Spin/FullDuplexSerial.spin b/Source/Prop/Spin/FullDuplexSerial.spin similarity index 100% rename from Source/Hardware/Prop/Spin/FullDuplexSerial.spin rename to Source/Prop/Spin/FullDuplexSerial.spin diff --git a/Source/Hardware/Prop/Spin/FullDuplexSerialNull.spin b/Source/Prop/Spin/FullDuplexSerialNull.spin similarity index 100% rename from Source/Hardware/Prop/Spin/FullDuplexSerialNull.spin rename to Source/Prop/Spin/FullDuplexSerialNull.spin diff --git a/Source/Hardware/Prop/Spin/Keyboard.spin b/Source/Prop/Spin/Keyboard.spin similarity index 100% rename from Source/Hardware/Prop/Spin/Keyboard.spin rename to Source/Prop/Spin/Keyboard.spin diff --git a/Source/Hardware/Prop/Spin/ParPortProp.spin b/Source/Prop/Spin/ParPortProp.spin similarity index 93% rename from Source/Hardware/Prop/Spin/ParPortProp.spin rename to Source/Prop/Spin/ParPortProp.spin index 07d96c56..6ecf049f 100644 --- a/Source/Hardware/Prop/Spin/ParPortProp.spin +++ b/Source/Prop/Spin/ParPortProp.spin @@ -38,17 +38,12 @@ CON _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 - SLEEP = 60 * 5 ' Screen saver timeout in seconds + 'SLEEP = 60 * 5 ' Screen saver timeout in seconds + SLEEP = 0 ' Zero for no screen saver - SPK_VOL = 75 - - SPK_MAXFRQ = 1_200 - SPK_MINFRQ = 200 - VGA_BASE = 16 ' VGA Video pins 16-23 (??) KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK) SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS) - SPK_BASE = 13 ' Speaker pin STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line) STAT_ATTR = %01110000_00000000 ' Status area screen attribute @@ -106,7 +101,6 @@ OBJ sdc : "safe_spi" ' SD Card Driver 'dbg : "Parallax Serial Terminal" ' Serial Port Driver (debug output) dbg : "Parallax Serial Terminal Null" ' Do nothing for debug output - spk : "E555_SPKEngine" ' Speaker Driver sio : "FullDuplexSerial" ' Serial I/O 'sio : "FullDuplexSerialNull" ' Dummy driver to use when debugging @@ -148,7 +142,6 @@ PUB main | tmp dsp.cls MsgNewLine - TimerCount := SLEEP dsp.VidOn statRows := (dsp.statInfo >> 8) & $FF @@ -209,14 +202,15 @@ PUB main | tmp MsgStr(string(" OK")) MsgNewLine - MsgStr(string("Starting Timer...")) - Result := cognew(Timer, @TimerStack) - if (Result < 0) - MsgStr(string(" Failed! Error: ")) - MsgDec(Result) - else - MsgStr(string(" OK")) - MsgNewLine + if (SLEEP > 0) + MsgStr(string("Starting Timer...")) + Result := cognew(Timer, @TimerStack) + if (Result < 0) + MsgStr(string(" Failed! Error: ")) + MsgDec(Result) + else + MsgStr(string(" OK")) + MsgNewLine MsgStr(string("Starting PortIO cog...")) Result := cognew(@Entry, 0) + 1 @@ -227,9 +221,7 @@ PUB main | tmp MsgStr(string(" OK")) MsgNewLine - spk.speakerFrequency(1000, SPK_BASE) - waitcnt((clkfreq >> 4) + cnt) - spk.speakerFrequency(-1, SPK_BASE) + dsp.beep MsgStr(string("ParPortProp Ready!")) MsgNewLine @@ -481,9 +473,9 @@ PRI SpeakerTone | Freq, Duration, tmp dbg.Str(String("ms")) dbg.NewLine - spk.speakerFrequency(Freq, SPK_BASE) + dsp.speakerFrequency(Freq) waitcnt(Duration + cnt) - spk.speakerFrequency(-1, SPK_BASE) + dsp.speakerFrequency(-1) return @@ -609,9 +601,10 @@ PRI Timer TimerCount-- PRI Activity - if (TimerCount == 0) - dsp.VidOn - TimerCount := SLEEP + if (SLEEP > 0) + if (TimerCount == 0) + dsp.VidOn + TimerCount := SLEEP DAT diff --git a/Source/Hardware/Prop/Spin/Parallax Serial Terminal Null.spin b/Source/Prop/Spin/Parallax Serial Terminal Null.spin similarity index 100% rename from Source/Hardware/Prop/Spin/Parallax Serial Terminal Null.spin rename to Source/Prop/Spin/Parallax Serial Terminal Null.spin diff --git a/Source/Hardware/Prop/Spin/Parallax Serial Terminal.spin b/Source/Prop/Spin/Parallax Serial Terminal.spin similarity index 100% rename from Source/Hardware/Prop/Spin/Parallax Serial Terminal.spin rename to Source/Prop/Spin/Parallax Serial Terminal.spin diff --git a/Source/Hardware/Prop/Spin/PropIO.spin b/Source/Prop/Spin/PropIO.spin similarity index 94% rename from Source/Hardware/Prop/Spin/PropIO.spin rename to Source/Prop/Spin/PropIO.spin index 8e742296..3d677264 100644 --- a/Source/Hardware/Prop/Spin/PropIO.spin +++ b/Source/Prop/Spin/PropIO.spin @@ -43,7 +43,8 @@ CON _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 - SLEEP = 60 * 5 ' Screen saver timeout in seconds + 'SLEEP = 60 * 5 ' Screen saver timeout in seconds + SLEEP = 0 ' Zero for no screen saver VGA_BASE = 16 ' VGA Video pins 16-23 (??) KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK) @@ -120,7 +121,6 @@ PUB main dsp.cls MsgNewLine - TimerCount := SLEEP dsp.VidOn statRows := (dsp.statInfo >> 8) & $FF @@ -166,14 +166,15 @@ PUB main MsgStr(string(" OK")) MsgNewLine - MsgStr(string("Starting Timer...")) - Result := cognew(Timer, @TimerStack) - if (Result < 0) - MsgStr(string(" Failed! Error: ")) - MsgDec(Result) - else - MsgStr(string(" OK")) - MsgNewLine + if (SLEEP > 0) + MsgStr(string("Starting Timer...")) + Result := cognew(Timer, @TimerStack) + if (Result < 0) + MsgStr(string(" Failed! Error: ")) + MsgDec(Result) + else + MsgStr(string(" OK")) + MsgNewLine MsgStr(string("Starting PortIO cog...")) Result := cognew(@PortIO, 0) + 1 @@ -317,9 +318,10 @@ PRI Timer TimerCount-- PRI Activity - if (TimerCount == 0) - dsp.VidOn - TimerCount := SLEEP + if (SLEEP > 0) + if (TimerCount == 0) + dsp.VidOn + TimerCount := SLEEP { PRI DumpBuffer(Buffer) | i, j diff --git a/Source/Hardware/Prop/Spin/PropIO2.spin b/Source/Prop/Spin/PropIO2.spin similarity index 93% rename from Source/Hardware/Prop/Spin/PropIO2.spin rename to Source/Prop/Spin/PropIO2.spin index 1e21b200..9e01d3cb 100644 --- a/Source/Hardware/Prop/Spin/PropIO2.spin +++ b/Source/Prop/Spin/PropIO2.spin @@ -43,12 +43,12 @@ CON _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 - SLEEP = 60 * 5 ' Screen saver timeout in seconds + 'SLEEP = 60 * 5 ' Screen saver timeout in seconds + SLEEP = 0 ' Zero for no screen saver VGA_BASE = 16 ' VGA Video pins 16-23 (??) KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK) SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS) - SPK_BASE = 13 ' Speaker pin STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line) STAT_ATTR = %01110000_00000000 ' Status area screen attribute @@ -77,14 +77,11 @@ CON TRMST_ACTMASK = (TRMST_KBDACT | TRMST_DSPACT) ' bit mask for kbd or dsp active - - OBJ 'dsp : "VGA_1024" ' VGA Terminal Driver dsp : "AnsiTerm" ' VGA Terminal Driver kbd : "Keyboard" ' PS/2 Keyboard Driver sdc : "safe_spi" ' SD Card Driver - spk : "E555_SPKEngine" ' Speaker Driver dbg : "Parallax Serial Terminal Null" ' Serial Port Driver (debug output) VAR @@ -122,7 +119,6 @@ PUB main dsp.cls MsgNewLine - TimerCount := SLEEP dsp.vidOn statRows := (dsp.statInfo >> 8) & $FF @@ -168,14 +164,15 @@ PUB main MsgStr(string(" OK")) MsgNewLine - MsgStr(string("Starting Timer...")) - Result := cognew(Timer, @TimerStack) - if (Result < 0) - MsgStr(string(" Failed! Error: ")) - MsgDec(Result) - else - MsgStr(string(" OK")) - MsgNewLine + if (SLEEP > 0) + MsgStr(string("Starting Timer...")) + Result := cognew(Timer, @TimerStack) + if (Result < 0) + MsgStr(string(" Failed! Error: ")) + MsgDec(Result) + else + MsgStr(string(" OK")) + MsgNewLine MsgStr(string("Starting PortIO cog...")) Result := cognew(@PortIO, 0) + 1 @@ -185,10 +182,8 @@ PUB main else MsgStr(string(" OK")) MsgNewLine - - spk.speakerFrequency(1000, SPK_BASE) - waitcnt((clkfreq >> 4) + cnt) - spk.speakerFrequency(-1, SPK_BASE) + + dsp.beep MsgStr(string("PropIO Ready!")) MsgNewLine @@ -323,9 +318,10 @@ PRI Timer TimerCount-- PRI Activity - if (TimerCount == 0) - dsp.vidOn - TimerCount := SLEEP + if (SLEEP > 0) + if (TimerCount == 0) + dsp.vidOn + TimerCount := SLEEP { PRI DumpBuffer(Buffer) | i, j diff --git a/Source/Hardware/Prop/Spin/VGA_1024.spin b/Source/Prop/Spin/VGA_1024.spin similarity index 100% rename from Source/Hardware/Prop/Spin/VGA_1024.spin rename to Source/Prop/Spin/VGA_1024.spin diff --git a/Source/Hardware/Prop/Spin/VGA_HiRes_Text.spin b/Source/Prop/Spin/VGA_HiRes_Text.spin similarity index 100% rename from Source/Hardware/Prop/Spin/VGA_HiRes_Text.spin rename to Source/Prop/Spin/VGA_HiRes_Text.spin diff --git a/Source/Hardware/Prop/Spin/safe_spi.spin b/Source/Prop/Spin/safe_spi.spin similarity index 100% rename from Source/Hardware/Prop/Spin/safe_spi.spin rename to Source/Prop/Spin/safe_spi.spin diff --git a/Source/Hardware/Prop/Spin/vga8x8d.spin b/Source/Prop/Spin/vga8x8d.spin similarity index 100% rename from Source/Hardware/Prop/Spin/vga8x8d.spin rename to Source/Prop/Spin/vga8x8d.spin diff --git a/Source/Hardware/Prop/Spin/vgacolour.spin b/Source/Prop/Spin/vgacolour.spin similarity index 97% rename from Source/Hardware/Prop/Spin/vgacolour.spin rename to Source/Prop/Spin/vgacolour.spin index 9b50d4fc..c5cc2f80 100644 --- a/Source/Hardware/Prop/Spin/vgacolour.spin +++ b/Source/Prop/Spin/vgacolour.spin @@ -127,8 +127,8 @@ PUB stop | i '' Stop VGA driver - frees two COGs repeat i from 0 to 1 - if cog[i] - cogstop(cog[i]~ - 1) + if cog[i] + cogstop(cog[i]~ - 1) CON diff --git a/Source/ReadMe.txt b/Source/ReadMe.txt index 495503e6..81990b2e 100644 --- a/Source/ReadMe.txt +++ b/Source/ReadMe.txt @@ -279,12 +279,11 @@ You may notice there are a few additional Build*.cmd files in the Source directory. They are not used or required for building ROM firmware. Their purpose is described below: -BuildHardware: Some of the RetroBrew Computer support boards - require onboard firmware separate from the CPU - board firmware. For the most part, this is the - Propeller-based boards (ParPortProp and PropIO). - This build script generates the firmware for these - boards. +BuildProp: Some RetroBrew Computer peripheral boards are based + on the Parallax Propeller. The Propeller requires + custom onboard EEPROM firmware to operate. This + command file builds the firmware images for each + of the Propeller-based boards. BuildImages: RomWBW has the ability to create floppy disk and hard disk images for use on systems running the RomWBW