diff --git a/Binary/Apps/ReadMe.txt b/Binary/Apps/ReadMe.txt index 3659f2c7..6fb4ccf8 100644 --- a/Binary/Apps/ReadMe.txt +++ b/Binary/Apps/ReadMe.txt @@ -10,5 +10,5 @@ This directory contains the executable application files that are specific to RomWBW. The source for these applications is found in the Source\Apps directory of the distribution. -The Tunes subdirectory contains some sample ProTracker sound -files that can be played by the PTxPlay application. \ No newline at end of file +The Tunes subdirectory contains some sample ProTracker and MYM sound +files that can be played by the TUNE application. \ No newline at end of file diff --git a/Binary/Apps/Tunes/Demo.mym b/Binary/Apps/Tunes/Demo.mym new file mode 100644 index 00000000..255fc160 Binary files /dev/null and b/Binary/Apps/Tunes/Demo.mym differ diff --git a/Binary/Apps/Tunes/Demo1.mym b/Binary/Apps/Tunes/Demo1.mym new file mode 100644 index 00000000..b224f321 Binary files /dev/null and b/Binary/Apps/Tunes/Demo1.mym differ diff --git a/Binary/Apps/Tunes/Demo3.mym b/Binary/Apps/Tunes/Demo3.mym new file mode 100644 index 00000000..808db891 Binary files /dev/null and b/Binary/Apps/Tunes/Demo3.mym differ diff --git a/Binary/Apps/Tunes/Demo3mix.mym b/Binary/Apps/Tunes/Demo3mix.mym new file mode 100644 index 00000000..b5981848 Binary files /dev/null and b/Binary/Apps/Tunes/Demo3mix.mym differ diff --git a/Binary/Apps/Tunes/Demo4.mym b/Binary/Apps/Tunes/Demo4.mym new file mode 100644 index 00000000..ed2e8a85 Binary files /dev/null and b/Binary/Apps/Tunes/Demo4.mym differ diff --git a/Binary/Apps/Tunes/ReadMe.txt b/Binary/Apps/Tunes/ReadMe.txt index 0cb783e1..366efefe 100644 --- a/Binary/Apps/Tunes/ReadMe.txt +++ b/Binary/Apps/Tunes/ReadMe.txt @@ -6,5 +6,5 @@ *** *** *********************************************************************** -This directory contains some sample ProTracker sound -files that can be played by the PTxPlay application. \ No newline at end of file +This directory contains some sample ProTracker and MYM sound +files that can be played by the TUNE application. \ No newline at end of file diff --git a/Source/Apps/Build.cmd b/Source/Apps/Build.cmd index 2018c6f6..b2dea6cf 100644 --- a/Source/Apps/Build.cmd +++ b/Source/Apps/Build.cmd @@ -28,7 +28,7 @@ zx MLOAD25 -SURVEY.COM=SURVEY.HEX setlocal & cd XM && call Build || exit /b 1 & endlocal setlocal & cd FDU && call Build || exit /b 1 & endlocal -setlocal & cd PTxPlay && call Build || exit /b 1 & endlocal +setlocal & cd Tune && call Build || exit /b 1 & endlocal copy *.com %APPBIN%\ diff --git a/Source/Apps/Clean.cmd b/Source/Apps/Clean.cmd index c5394519..66bb9407 100644 --- a/Source/Apps/Clean.cmd +++ b/Source/Apps/Clean.cmd @@ -9,4 +9,4 @@ if exist *.prn del *.prn setlocal & cd XM && call Clean || exit /b 1 & endlocal setlocal & cd FDU && call Clean || exit /b 1 & endlocal -setlocal & cd PTxPlay && call Clean || exit /b 1 & endlocal +setlocal & cd Tune && call Clean || exit /b 1 & endlocal diff --git a/Source/Apps/PTxPlay/Build.cmd b/Source/Apps/PTxPlay/Build.cmd deleted file mode 100644 index 325a01db..00000000 --- a/Source/Apps/PTxPlay/Build.cmd +++ /dev/null @@ -1,13 +0,0 @@ -@echo off -setlocal - -set TOOLS=../../../Tools -set PATH=%TOOLS%\tasm32;%PATH% -set TASMTABS=%TOOLS%\tasm32 - -tasm -t180 -g3 -fFF PTxPlay.asm PTxPlay.com PTxPlay.lst - -if errorlevel 1 goto :eof - -copy /Y PTxPlay.com ..\..\..\Binary\Apps\ -copy /Y Tunes\*.pt3 ..\..\..\Binary\Apps\Tunes\ \ No newline at end of file diff --git a/Source/Apps/Tune/Build.cmd b/Source/Apps/Tune/Build.cmd new file mode 100644 index 00000000..568f73dc --- /dev/null +++ b/Source/Apps/Tune/Build.cmd @@ -0,0 +1,13 @@ +@echo off +setlocal + +set TOOLS=../../../Tools +set PATH=%TOOLS%\tasm32;%PATH% +set TASMTABS=%TOOLS%\tasm32 + +tasm -t180 -g3 -fFF Tune.asm Tune.com Tune.lst + +if errorlevel 1 goto :eof + +copy /Y Tune.com ..\..\..\Binary\Apps\ +copy /Y Tunes\*.* ..\..\..\Binary\Apps\Tunes\ \ No newline at end of file diff --git a/Source/Apps/PTxPlay/Clean.cmd b/Source/Apps/Tune/Clean.cmd similarity index 100% rename from Source/Apps/PTxPlay/Clean.cmd rename to Source/Apps/Tune/Clean.cmd diff --git a/Source/Apps/Tune/MYMPlay.txt b/Source/Apps/Tune/MYMPlay.txt new file mode 100644 index 00000000..265d7403 --- /dev/null +++ b/Source/Apps/Tune/MYMPlay.txt @@ -0,0 +1,50 @@ + + MYMPLAY 0.4 by Lieves!Tuore + +This is just a quick project inspired +by discussion in comp.sys.msx. + +STSound by Leonard/Oxygene is a player +for YM files, which are basically just +plain PSG register dumps. The format is +unfortunately not well suited for a +low-memory system like MSX1. Therefore, +I introduced a brand new fileformat +called MYM. It holds the same data but +compressed differently. + +To convert between YM and MYM there's a +utility, YM2MYM. It packs a _raw_ YM +file to a MYM file. So before you start +to convert shitload of YM tunes, unpack +them with LHA first. Only YM2/YM3/YM3b +files can be converted at the moment. +Many new YM's are YM5, however. + +The other files are MYM2YM for reverse +conversion and of course the player +itself (including the source). The +assembly source is for Table-driven +assembler (TASM), not GEN80, sorry +about that. I stripped the tailing 0's +from the final .COM file to make it +smaller (Now it IS small ;v) + +Thanks to Spectrum and CPC fanatics +we now have version for both platforms +too. MSX version is the most "mature" +one at the moment, but let's see about +that... + +Version 0.4 comes with an updated +YM2MYM converter that now recognizes +YM5 files. The actual MYMPlay is +better too, it takes 1.7kB less memory +so you can play bigger tunes (if any). + +You'll find a pile of MYM tunes here: +ftp://ftp.kameli.net/pub/mym/ +And the latest version of MYMPLAY here: +http://www.kameli.net/lt/ + + Marq/L!T, marq@iki.fi diff --git a/Source/Apps/PTxPlay/readme.txt b/Source/Apps/Tune/PTxPlay.txt similarity index 100% rename from Source/Apps/PTxPlay/readme.txt rename to Source/Apps/Tune/PTxPlay.txt diff --git a/Source/Apps/PTxPlay/PTxPlay.asm b/Source/Apps/Tune/Tune.asm similarity index 58% rename from Source/Apps/PTxPlay/PTxPlay.asm rename to Source/Apps/Tune/Tune.asm index 70823cc7..f2c03141 100644 --- a/Source/Apps/PTxPlay/PTxPlay.asm +++ b/Source/Apps/Tune/Tune.asm @@ -1,39 +1,48 @@ ;=============================================================================== -; PTXPLAY - Play PT2/PT3 sound files +; TUNE - Play PT2/PT3/MYM sound files ; ;=============================================================================== ; ; Author: Wayne Warthen (wwarthen@gmail.com) ; -; This application is basically just a RomWBW wrapper of the -; Universal PT2 and PT3 player by S.V.Bulba. See comments -; below. +; This application is basically just a RomWBW wrapper for the +; Universal PT2 and PT3 player by S.V.Bulba and the MYM player +; by Marq/Lieves!Tuore. See comments below. ;_______________________________________________________________________________ ; ; Usage: -; PTXPLAY +; TUNE ; ; of sound file to load and play -; Filename extension determines file type (.pt2 or .pt3) +; Filename extension determines file type (.PT2, .PT3, or .MYM) ; ; Notes: -; - Supports AY-3-8910 or compatible (such as YM2149). +; - Supports AY-3-8910, YM2149, etc. +; - Plays PT2, PT3, or MYM format files. File extension (.PT2, .PT3, or .MYM) +; determines file type. ; - Max Z80 CPU clock is about 8MHz or sound chip will not handle speed. -; - Z180 is automatically switched to maximum I/O wait state insertions -; during I/O to sound chip. +; - Higher CPU clock speeds are possible on Z180 because extra I/O +; wait states are added during I/O to sound chip. ; - Uses hardware timer support on Z180 processors. Otherwise, a delay ; loop calibrated to CPU speed is used. -; - Plays PT2 or PT3 format files. File extension (.PT2 or .PT3) determines -; file type. +; - Delay loop is calibrated to CPU speed, but it does not compensate for +; time variations in each quark loop resulting from data decompression. +; An average quark processing time is assumed in each loop. ;_______________________________________________________________________________ ; ; Change Log: ; 2018-01-26 [WBW] Initial release +; 2018-01-28 [WBW] Added support for MYM sound files ;_______________________________________________________________________________ ; ; ToDo: +; 1) Add an option to play file in a continuous loop? ;_______________________________________________________________________________ ; +;=============================================================================== +; Main program +;=============================================================================== +; RESTART .EQU $0000 ; CP/M restart vector BDOS .EQU $0005 ; BDOS invocation vector ; @@ -49,197 +58,272 @@ DCNTL .EQU $72 ; Z180 DCNTL PORT ; FCB .EQU $5C ; Location of default FCB ; +HEAPEND .EQU $C000 ; End of heap storage +; +TYPPT2 .EQU 1 ; FILTYP value for PT2 sound file +TYPPT3 .EQU 2 ; FILTYP value for PT3 sound file +TYPMYM .EQU 3 ; FILTYP value for MYM sound file +; ; ; .ORG $0100 ; CALL CRLF - LD DE,MSGBAN ; Point to banner message - CALL PRTSTR ; Print message -; - ; Check BIOS and version - CALL IDBIO ; Identify hardware BIOS - CP 1 ; RomWBW HBIOS? - JP NZ,ERRBIO ; If not, handle BIOS error - LD A,RMJ << 4 | RMN ; expected HBIOS ver - CP D ; compare with result above - JP NZ,ERRBIO ; handle BIOS error + LD DE,MSGBAN ; Point to banner message + CALL PRTSTR ; Print message +; + ; Check BIOS and version + CALL IDBIO ; Identify hardware BIOS + CP 1 ; RomWBW HBIOS? + JP NZ,ERRBIO ; If not, handle BIOS error + LD A,RMJ << 4 | RMN ; Expected HBIOS ver + CP D ; Compare with result above + JP NZ,ERRBIO ; Handle BIOS error ; ; Use platform id to derive port addresses - LD A,L ; Platform ID is still in L from above - LD C,L ; Save platform id in C for now - LD HL,$D0D8 ; For RC2014, RSEL=D8, RDAT=D0 - LD DE,MSGRC ; Message for RC2014 platform - CP 7 ; RC2014? - JR Z,_SETP ; If so, set ports - LD HL,$9D9C ; For N8, RSEL=9C, RDAT=9D - LD DE,MSGN8 ; Message for N8 platform - CP 4 ; N8? - JR Z,_SETP ; If so, set ports - LD HL,$9B9A ; Otherwise SCG, RSEL=9A, RDAT=9B - LD DE,MSGSCG ; Message for SCG platform - LD A,$FF ; Write $FF to the - OUT ($9C),A ; ... SCG ACR register to activate card -_SETP LD (PORTS),HL ; Save port values - CALL CRLF ; Formatting - CALL PRTSTR ; Display platform string + LD A,L ; Platform ID is still in L from above + LD C,L ; Save platform id in C for now + LD HL,$D0D8 ; For RC2014, RSEL=D8, RDAT=D0 + LD DE,MSGRC ; Message for RC2014 platform + CP 7 ; RC2014? + JR Z,_SETP ; If so, set ports + LD HL,$9D9C ; For N8, RSEL=9C, RDAT=9D + LD DE,MSGN8 ; Message for N8 platform + CP 4 ; N8? + JR Z,_SETP ; If so, set ports + LD HL,$9B9A ; Otherwise SCG, RSEL=9A, RDAT=9B + LD DE,MSGSCG ; Message for SCG platform + LD A,$FF ; Write $FF to the + OUT ($9C),A ; ... SCG ACR register to activate card +_SETP LD (PORTS),HL ; Save port values + CALL CRLF ; Formatting + CALL PRTSTR ; Display platform string ; ; Choose quark wait mode based on platform - LD A,C ; Recover platform id - LD B,1 ; Assume timer mode - LD DE,MSGTIM ; Corresponding display string - CP 4 ; N8? - JR Z,_SETM ; If so, commit timer mode - CP 5 ; MK4? - JR Z,_SETM ; If so, commit timer mode - LD B,0 ; Otherwise, delay mode - LD DE,MSGDLY ; Corresponding display string -_SETM LD A,B ; Mode flag value to A - LD (WMOD),A ; Save wait mode - CALL PRTSTR ; Print it + LD A,C ; Recover platform id + LD B,1 ; Assume timer mode + LD DE,MSGTIM ; Corresponding display string + CP 4 ; N8? + JR Z,_SETM ; If so, commit timer mode + CP 5 ; MK4? + JR Z,_SETM ; If so, commit timer mode + LD B,0 ; Otherwise, delay mode + LD DE,MSGDLY ; Corresponding display string +_SETM LD A,B ; Mode flag value to A + LD (WMOD),A ; Save wait mode + CALL PRTSTR ; Print it ; ; Get CPU speed & type from RomWBW HBIOS and compute quark delay factor - LD B,$F8 ; HBIOS SYSGET function 0xF8 - LD C,$F0 ; CPUINFO subfunction 0xF0 - RST 08 ; Do it, DE := CPU speed in KHz - SRL D ; Divide by 2 - RR E ; ... for delay factor - EX DE,HL ; Move result to HL - OR A ; Clear carry - LD DE,185 ; Avg TS / quark = 7400, so 185 delay loops - SBC HL,DE ; ... removed for quark processing overhead - LD (QDLY),HL ; Save result as quark delay factor + LD B,$F8 ; HBIOS SYSGET function 0xF8 + LD C,$F0 ; CPUINFO subfunction 0xF0 + RST 08 ; Do it, DE := CPU speed in KHz + SRL D ; Divide by 2 + RR E ; ... for delay factor + EX DE,HL ; Move result to HL + LD (QDLY),HL ; Save result as quark delay factor ; ; Test for hardware (sound chip detection) - LD DE,(PORTS) ; D := RDAT, E := RSEL - LD C,E ; Port = RSEL - LD A,2 ; Register 2 - OUT (C),A ; Select register 2 - LD C,D ; Port = RDAT - LD A,$AA ; Value = $AA - OUT (C),A ; Write $AA to register 2 - LD C,E ; Port = RSEL - IN A,(C) ; Read back value in register 2 - ;CALL PRTHEX ; *debug* - CP $AA ; Value as written? - JP NZ,ERRHW ; If not, handle hardware error + LD DE,(PORTS) ; D := RDAT, E := RSEL + LD C,E ; Port = RSEL + LD A,2 ; Register 2 + OUT (C),A ; Select register 2 + LD C,D ; Port = RDAT + LD A,$AA ; Value = $AA + OUT (C),A ; Write $AA to register 2 + LD C,E ; Port = RSEL + IN A,(C) ; Read back value in register 2 + ;CALL PRTHEX ; *debug* + CP $AA ; Value as written? + JP NZ,ERRHW ; If not, handle hardware error +; + ; Clear heap storage + LD HL,HEAP ; Point to heap start + XOR A ; A := zero + LD (HEAP),A ; Clear first byte of heap + LD DE,HEAP+1 ; Set dest to next byte + LD BC,HEAPEND-HEAP-1 ; Size of heap except first byte + LDIR ; Propagate zero to rest of heap ; - ; Check sound filename (must be *.PT2 or *.PT3) - LD A,(FCB+1) ; Get first char of filename - CP ' ' ; Compare to blank - JP Z,ERRNAM ; If so, missing filename - LD A,(FCB+9) ; Extension char 1 - CP 'P' ; Check for 'P' - JP NZ,ERRNAM ; If not, bad file extension - LD A,(FCB+10) ; Extension char 2 - CP 'T' ; Check for 'T' - JP NZ,ERRNAM ; If not, bad file extension - LD A,(FCB+11) ; Extension char 3 - LD C,2 ; SETUP value of 2 for PT2 sound file - CP '2' ; Check for '2' - JR Z,_SET ; If so, commit SETUP value - LD C,0 ; SETUP value of 0 for PT3 sound file - CP '3' ; Check for '3' - JR Z,_SET ; If so, commit SETUP value - JP ERRNAM ; Anything else is a bad file extension -_SET LD A,C ; Get SETUP value - LD (START+10),A ; Save SETUP value + ; Check sound filename (must be *.PT2, *.PT3, or *.MYM) + LD A,(FCB+1) ; Get first char of filename + CP ' ' ; Compare to blank + JP Z,ERRCMD ; If so, missing filename + LD A,(FCB+9) ; Extension char 1 + CP 'P' ; Check for 'P' + JP NZ,CHKMYM ; If not, check for MYM extension + LD A,(FCB+10) ; Extension char 2 + CP 'T' ; Check for 'T' + JP NZ,ERRNAM ; If not, bad file extension + LD A,(FCB+11) ; Extension char 3 + LD C,TYPPT2 ; Assume PT2 file type + CP '2' ; Check for '2' + JR Z,_SET ; If so, commit file type value + LD C,TYPPT3 ; Assume PT3 file type + CP '3' ; Check for '3' + JR Z,_SET ; If so, commit file type value + JP ERRNAM ; Anything else is a bad file extension +CHKMYM LD A,(FCB+9) ; Extension char 1 + CP 'M' ; Check for 'M' + JP NZ,ERRNAM ; If not, bad file extension + LD A,(FCB+10) ; Extension char 2 + CP 'Y' ; Check for 'Y' + JP NZ,ERRNAM ; If not, bad file extension + LD A,(FCB+11) ; Extension char 3 + LD C,TYPMYM ; Assume MYM file type + CP 'M' ; Check for 'M' + JR Z,_SET ; If so, commit file type value + JP ERRNAM ; Anything else is a bad file extension +_SET LD A,C ; Get file type value + LD (FILTYP),A ; Save file type value ; ; Load sound file -_LD0 LD C,15 ; CPM Open File function - LD DE,FCB ; FCB - CALL BDOS ; Do it - INC A ; Test for error $FF - JP Z,ERRFIL ; Handle file error -; - LD HL,MDLADDR - LD (DMA),HL -; -_LD LD HL,(DMA) ; Get load address - PUSH HL ; Save it - LD DE,128 ; Bump by size of - ADD HL,DE ; ... one record - LD (DMA),HL ; Save for next loop - LD A,$C0 ; A := page limit for load - CP H ; Check to see if limit hit - JP Z,ERRSIZ ; Handle size error - POP DE ; Restore current DMA to DE - LD C,26 ; CPM Set DMA function - CALL BDOS ; Read next 128 bytes -; - LD C,20 ; CPM Read Sequential function - LD DE,FCB ; FCB - CALL BDOS ; Read next 128 bytes - OR A ; Set flags to check EOF - JR NZ,_LDX ; Non-zero is EOF - JR Z,_LD ; Load loop +_LD0 LD C,15 ; CPM Open File function + LD DE,FCB ; FCB + CALL BDOS ; Do it + INC A ; Test for error $FF + JP Z,ERRFIL ; Handle file error ; -_LDX LD C,16 ; CPM Close File function - LD DE,FCB ; FCB - CALL BDOS ; Do it -; - ; Play loop - CALL CRLF2 ; Formatting - LD DE,MSGPLY ; Playing message - CALL PRTSTR ; Print message - ;CALL CRLF2 ; Formatting + LD A,(FILTYP) ; Get file type + LD HL,MDLADDR ; Assume load address + LD (DMA),HL ; ... for PTx files + CP TYPMYM ; MYM file? + JR NZ,_LD ; If not, all set + LD HL,rows ; Otherwise, load address + LD (DMA),HL ; ... for MYM files +; +_LD LD HL,(DMA) ; Get load address + PUSH HL ; Save it + LD DE,128 ; Bump by size of + ADD HL,DE ; ... one record + LD (DMA),HL ; Save for next loop + LD A,HEAPEND >> 8 ; A := page limit for load + CP H ; Check to see if limit hit + JP Z,ERRSIZ ; Handle size error + POP DE ; Restore current DMA to DE + LD C,26 ; CPM Set DMA function + CALL BDOS ; Read next 128 bytes +; + LD C,20 ; CPM Read Sequential function + LD DE,FCB ; FCB + CALL BDOS ; Read next 128 bytes + OR A ; Set flags to check EOF + JR NZ,_LDX ; Non-zero is EOF + JR Z,_LD ; Load loop +; +_LDX LD C,16 ; CPM Close File function + LD DE,FCB ; FCB + CALL BDOS ; Do it +; + ; Play loop + CALL CRLF2 ; Formatting + LD DE,MSGPLY ; Playing message + CALL PRTSTR ; Print message + ;CALL CRLF2 ; Formatting + + LD A,(FILTYP) ; Get file type + CP TYPPT2 ; PT2? + JR Z,GOPT2 ; If so, do it + CP TYPPT3 ; PT3? + JR Z,GOPT3 ; If so, do it + CP TYPMYM ; MYM? + JR Z,gomym ; If so, do it + JP ERRNAM ; This should never happen + +GOPT2 LD A,2 ; SETUP value to PT2 sound files + LD (START+10),A ; Save it + ; Avg TS / quark for PT2 files has *not* been measured!!! + LD DE,185 ; Avg TS / quark = 7400, so 185 delay loops + JR GOPTX ; Play PTx file + +GOPT3 LD A,0 ; SETUP value to PT3 sound files + LD (START+10),A ; Save it + LD DE,185 ; Avg TS / quark = 7400, so 185 delay loops + JR GOPTX ; Play PTx file + +GOPTX LD HL,(QDLY) ; Get basic quark delay + OR A ; Clear carry + SBC HL,DE ; Adjust for file type + LD (QDLY),HL ; Save updated quark delay factor + CALL START ; Do initialization +PTXLP CALL START+5 ; Play one quark + LD A,(START+10) ; Get setup byte + BIT 7,A ; Check bit 7 (loop point passed) + JR NZ,EXIT ; Bail out when done playing + CALL GETKEY ; Check for keypress + JR NZ,EXIT ; Abort on keypress + ;LD A,13 ; Back to + ;CALL PRTCHR ; ... start of line + ;LD A,(CurPos) ; Get current position + ;CALL PRTHEX ; ... and display it + CALL WAITQ ; Wait one quark period + JR PTXLP ; Loop for next quark +; +gomym ld hl,(QDLY) ; Get basic quark delay + or a ; Clear carry + ld de,125 ; Avg TS / quark = ~5000, so 125 delay loops + sbc hl,de ; Adjust for file type + ld (QDLY),hl ; Save updated quark delay factor + ;ld bc,(rows) + ;call PRTHEXWORD + call mymini ; Initialize player + call extract ; Unpack the first fragment +mymlp call extract + jr nc,EXIT ; CF clear at end of tune +waitvb call WAITQ + call upsg ; Update PSG registers + call GETKEY ; Check for keypess + jr nz,EXIT ; Bail out if so + ld a,(played) ; Wait until VBI has played a fragment + or a + jr nz,waitvb + ld (psource),iy + ld a,FRAG + ld (played),a + ;call PRTDOT + jr mymlp ; - CALL START ; Do initialization -_LP CALL START+5 ; Play one quark - LD A,(START+10) ; Get setup byte - BIT 7,A ; Check bit 7 (loop point passed) - JR NZ,EXIT ; Bail out when done playing - CALL GETKEY ; Check for keypress - JR NZ,EXIT ; Abort on keypress - ;LD A,13 ; Back to - ;CALL PRTCHR ; ... start of line - ;LD A,(CurPos) ; Get current position - ;CALL PRTHEX ; ... and display it - CALL WAITQ ; Wait one quark period - JR _LP ; Loop for next quark -; -EXIT CALL START+8 ; Mute audio - ;CALL CRLF2 ; Formatting - LD DE,MSGEND ; Completion message - CALL PRTSTR ; Print message - CALL CRLF ; Formatting - JP 0 ; Exit the easy way +EXIT CALL START+8 ; Mute audio + ;CALL CRLF2 ; Formatting + LD DE,MSGEND ; Completion message + CALL PRTSTR ; Print message + CALL CRLF ; Formatting + JP 0 ; Exit the easy way ; ; Wait for quark play time. Can use hardware timer if ; supported by hardware or simple delay loop otherwise. ; Delay loop requires QDLY to be pre-set to to achieve ; optimal 20ms wait time. ; -WAITQ LD A,(WMOD) ; Get delay mode - OR A ; Set flags - JR Z,DLY ; Delay mode +WAITQ LD A,(WMOD) ; Get delay mode + OR A ; Set flags + JR Z,DLY ; Delay mode +; + ; Timer loop + CALL TIM2 ; Read timer LSB into A + LD C,A ; Init prev value +TIM1 PUSH BC ; Save prev value + CALL TIM2 ; Read timer LSB into A + POP BC ; Recover prev value + CP C ; Compare to prev + RET NZ ; Done if changed + JR TIM1 ; Else, loop ; - ; Timer loop - CALL TIM2 ; Read timer LSB into A - LD C,A ; Init prev value -TIM1 PUSH BC ; Save prev value - CALL TIM2 ; Read timer LSB into A - POP BC ; Recover prev value - CP C ; Compare to prev - RET NZ ; Done if changed - JR TIM1 ; Else, loop -; -TIM2 LD B,$F8 ; BIOS SYSGET function - LD C,$D0 ; TIMER sub-function - RST 08 ; Call BIOS - LD A,L ; MSB to A - RET ; Return to loop +TIM2 LD B,$F8 ; BIOS SYSGET function + LD C,$D0 ; TIMER sub-function + RST 08 ; Call BIOS + LD A,L ; MSB to A + RET ; Return to loop ; ; Delay spin loop (40 tstates per loop) -DLY LD BC,(QDLY) ; Load quark delay factor -DLY1 DEC BC ; [6] - NOP ; [4] - NOP ; [4] - NOP ; [4] - NOP ; [4] - LD A,B ; [4] - OR C ; [4] - JP NZ,DLY1 ; [10] +DLY LD BC,(QDLY) ; Load quark delay factor +DLY1 DEC BC ; [6] + NOP ; [4] + NOP ; [4] + NOP ; [4] + NOP ; [4] + LD A,B ; [4] + OR C ; [4] + JP NZ,DLY1 ; [10] RET ; ; Get a keystroke from CPM @@ -477,6 +561,10 @@ ERRHW: ; Hardware error, sound chip not detected LD DE,MSGHW JR ERR ; +ERRCMD: ; Command error, display usage info + LD DE,MSGUSE + JR ERR +; ERRNAM: ; Missing or invalid filename parameter LD DE,MSGNAM JR ERR @@ -503,6 +591,7 @@ QDLY .DW 0 ; quark delay factor WMOD .DB 0 ; delay mode, non-zero to use timer DCSAV .DB 0 ; for saving Z180 DCNTL value DMA .DW 0 ; Working DMA +FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM) TMP .DB 0 ; work around use of undocumented Z80 @@ -510,13 +599,15 @@ PORTS: RSEL .DB 0 ; Register selection port RDAT .DB 0 ; Register data port -MSGBAN .DB "PTxPlayer for RomWBW v1.0, 26-Jan-2018",13,10 - .DB "Copyright (C) 2018, Wayne Warthen, GNU GPL v3",13,10 - .DB "Copyright (C) 2004-2007 S.V.Bulba",0 +MSGBAN .DB "Tune Player for RomWBW v2.0, 28-Jan-2018",0 +MSGUSE .DB "Copyright (C) 2018, Wayne Warthen, GNU GPL v3",13,10 + .DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10 + .DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10 + .DB "Usage: TUNE .[PT2|PT3|MYM]",0 MSGBIO .DB "Incompatible BIOS or version, " .DB "HBIOS v", '0' + RMJ, ".", '0' + RMN, " required",0 MSGHW .DB "Hardware error, sound chip not detected!",0 -MSGNAM .DB "Sound filename missing or invalid (must be .PT2 or .PT3)",0 +MSGNAM .DB "Sound filename invalid (must be .PT2, .PT3, or .MYM)",0 MSGFIL .DB "Sound file not found!",0 MSGSIZ .DB "Sound file too large to load!",0 MSGRC .DB "RC2014 Ed Brindley Sound Module",0 @@ -525,8 +616,12 @@ MSGSCG .DB "RetroBrew SCG ECB Adapter",0 MSGTIM .DB ", timer mode",0 MSGDLY .DB ", delay mode",0 MSGPLY .DB "Playing...",0 -MSGEND .DB "Done",0 - +MSGEND .DB " Done",0 +; +;=============================================================================== +; PTx Player Routines +;=============================================================================== +; ;Universal PT2 and PT3 player for ZX Spectrum and MSX ;(c)2004-2007 S.V.Bulba ;http://bulba.untergrund.net (http://bulba.at.kz) @@ -2030,56 +2125,7 @@ T_PACK .DB $06EC*2/256,$06EC*2 .DB $0D60-$0C80 .DB $0E10-$0D60 .DB $0EF8-$0E10 - -;vars from here can be stripped -;you can move VARS to any other address - -VARS - -ChanA .FILL CHP,$00 -ChanB .FILL CHP,$00 -ChanC .FILL CHP,$00 - -;GlobalVars -DelyCnt .DB 0 -CurESld .DW 0 -CurEDel .DB 0 -Ns_Base_AddToNs -Ns_Base .DB 0 -AddToNs .DB 0 - -AYREGS - -VT_ .FILL 256,$00 ;CreatedVolumeTableAddress - -EnvBase .EQU VT_+14 - -T1_ .EQU VT_+16 ;Tone tables data depacked here - -T_OLD_1 .EQU T1_ -T_OLD_2 .EQU T_OLD_1+24 -T_OLD_3 .EQU T_OLD_2+24 -T_OLD_0 .EQU T_OLD_3+2 -T_NEW_0 .EQU T_OLD_0 -T_NEW_1 .EQU T_OLD_1 -T_NEW_2 .EQU T_NEW_0+24 -T_NEW_3 .EQU T_OLD_3 - -PT2EMPTYORN .EQU VT_+31 ;1,0,0 sequence - -NT_ .FILL 192,$00 ;CreatedNoteTableAddress - -;local var -Ampl .EQU AYREGS+AmplC - -VAR0END .EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1 - -VARSEND .EQU $ - -MDLADDR .EQU $ - - .END - +; ;Release 0 steps: ;02/27/2005 ;Merging PT2 and PT3 players; debug @@ -2122,3 +2168,368 @@ MDLADDR .EQU $ ;Notes: ;Pro Tracker 3.4r can not be detected by header, so PT3.4r tone ;tables realy used only for modules of 3.3 and older versions. +; +;=============================================================================== +; MYM Player Routines +;=============================================================================== +; +; MYMPLAY - Player for MYM-tunes +; MSX-version by Marq/Lieves!Tuore & Fit 30.1.2000 +: +; 1.2.2000 - Added the disk loader. Thanks to Yzi & Plaque for examples. +; 7.2.2000 - Removed one unpack window -> freed 1.7kB memory +; +; Source suitable for Table-driven assembler (TASM), sorry all +; Devpac freaks :v/ + +FRAG .equ 128 ; Fragment size +REGS .equ 14 ; Number of PSG registers +FBITS .equ 7 ; Bits needed to store fragment offset +; +mymini exx ; Starting values for procedure readbits + ld e,1 + ld d,0 + ld hl,data + exx + + ld hl,uncomp+FRAG ; Starting values for the playing variables + ld (dest1),hl + ld (dest2),hl + ld (psource),hl + ld a,FRAG + ld (played),a + ld hl,0 + ld (prows),hl +; +; *** Unpack a fragment. Returns IY=new playing position for VBI +extract: + ld a,0 +regloop: + push af + ld c,a + ld b,0 + ld hl,regbits ; D=Bits in this PSG register + add hl,bc + ld d,(hl) + ld hl,current ; E=Current value of a PSG register + add hl,bc + ld e,(hl) + + ld bc,FRAG*3 + ld hl,(dest1) ; IX=Destination 1 + ld ix,(dest1) + add hl,bc + ld (dest1),hl + ld hl,(dest2) ; HL=Destination 2 + push hl + add hl,bc + ld (dest2),hl + pop hl + + ex af,af' + ld a,FRAG ; AF'=fragment end counter + ex af,af' + ld a,1 ; Get fragment bit + call readbits + or a + jr nz,compfrag ; 1=Compressed fragment, 0=Unchanged + + ld b,FRAG ; Unchanged fragment: just set all to E +sweep: ld (hl),e + inc hl + ld (ix),e + inc ix + djnz sweep + jp nextreg + +compfrag: ; Compressed fragment + ld a,1 + call readbits + or a + jr nz,notprev ; 0=Previous register value, 1=raw/compressed + + ld (hl),e ; Unchanged register + inc hl + ld (ix),e + inc ix + ex af,af' + dec a + ex af,af' + jp nextbit + +notprev: + ld a,1 + call readbits + or a + jr z,packed ; 0=compressed data, 1=raw data + + ld a,d ; Raw data, read regbits[i] bits + call readbits + ld e,a + ld (hl),a + inc hl + ld (ix),a + inc ix + ex af,af' + dec a + ex af,af' + jp nextbit + +packed: ld a,FBITS ; Reference to previous data: + call readbits ; Read the offset + ld c,a + ld a,FBITS ; Read the number of bytes + call readbits + ld b,a + + push hl + push bc + ld bc,-FRAG + add hl,bc + pop bc + ld a,b + ld b,0 + add hl,bc + ld b,a + push hl + pop iy ; IY=source address + pop hl + + inc b +copy: ld a,(iy) ; Copy from previous data + inc iy + ld e,a ; Set current value + ld (hl),a + inc hl + ld (ix),a + inc ix + ex af,af' + dec a + ex af,af' + djnz copy + +nextbit: + ex af,af' ; If AF'=0 then fragment is done + ld c,a + ex af,af' + ld a,c + or a + jp nz,compfrag + +nextreg: + pop af + ld b,0 ; Save the current value of PSG reg + ld c,a + push hl + ld hl,current + add hl,bc + ld (hl),e + pop hl + + inc a ; Check if all registers are done + cp REGS + jp nz,regloop + + or a ; Check if dest2 must be wrapped + ld bc,rows + sbc hl,bc + jr nz,nowrap + + ld ix,FRAG+uncomp + ld hl,FRAG+uncomp + ld iy,(2*FRAG)+uncomp + jr endext + +nowrap: ld ix,uncomp + ld hl,(2*FRAG)+uncomp + ld iy,(FRAG)+uncomp + +endext: ld (dest1),ix + ld (dest2),hl + + ld bc,FRAG ; Check end-of-file. Clumsy :v/ + ld hl,(prows) + add hl,bc + ld (prows),hl + ld bc,(rows) + or a + sbc hl,bc + +; jr c,noend ; If rows>played rows then exit +; exx ; Otherwise restart +; ld e,1 +; ld d,0 +; ld hl,data +; exx +; ld hl,0 +; ld (prows),hl + +noend: ret + +; *** Reads A bits from data, returns bits in A +readbits: + exx + ld b,a + ld c,0 + +onebit: sla c ; Get one bit at a time + rrc e + jr nc,nonew ; Wrap the AND value + ld d,(hl) + inc hl + +nonew: ld a,e + and d + jr z,zero + inc c +zero: djnz onebit + + ld a,c + exx + ret + +; *** Update PSG registers +upsg: ld a,(WMOD) ; if WMOD = 1, CPU is z180 + or a ; set flags + jr z,upsg1 ; skip z180 stuff + di + in0 a,(DCNTL) ; get wait states + ld (DCSAV),a ; save value + or %00110000 ; force slow operation (i/o w/s=3) + out0 (DCNTL),a ; and update DCNTL + +upsg1: ld hl,(psource) + ld de,(PORTS) ; E := RSEL, D := RDAT + xor a + +psglp: ld c,e ; C := RSEL + out (c),a ; Select register + ld c,d ; C := RDAT + outi ; Set register value + inc a ; Next register + ld bc,(3*FRAG)-1 ; Bytes to skip before next reg-1 + add hl,bc ; Update HL + cp REGS-1 ; Check for next to last register? + jr nz,psglp ; If not, loop + + ld a,$FF ; Prepare to check for $FF value + cp (hl) ; If last reg (13) is $FF + jr z,notrig ; ... then don't output + ld a,13 ; Register 13 + ld c,e ; C := RSEL + out (c),a ; Select register + ld c,d ; C := RDAT + outi ; Set register value + +notrig: ld hl,(psource) + inc hl + ld (psource),hl + + ld a,(played) + or a + jr z,endint + dec a + ld (played),a + +endint: ld a,(WMOD) ; If WMOD = 1, CPU is Z180 + or a ; Set flags + ret z ; Skip Z180 stuff + ld a,(DCSAV) ; Get saved DCNTL value + out0 (DCNTL),a ; And restore it + ei + ret ; And done +; +; *** Program data +played .db 0 ; VBI counter +dest1 .dw 0 ; Uncompress destination 1 +dest2 .dw 0 ; - " - 2 +psource .dw 0 ; Playing offset for the VB-player +prows .dw 0 ; Rows played so far + +; Bits per PSG register +regbits .db 8,4,8,4,8,4,5,8,5,5,5,8,8,8 +; Current values of PSG registers +current .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0 +; +;=============================================================================== +;=============================================================================== +; PTx/MYM Shared Heap Storage +;=============================================================================== +;=============================================================================== +; +; Note that two different storage layouts are defined below. One for PTx and +; one for MYM. They share the same storage area starting at the HEAP marker, +; but only one defintion will be active depending on the type of file +; being played. +; +HEAP .EQU $ +; +;=============================================================================== +; PTx Player Storage +;=============================================================================== +; + .ORG HEAP +; +;vars from here can be stripped +;you can move VARS to any other address + +VARS + +ChanA .DS CHP +ChanB .DS CHP +ChanC .DS CHP + +;GlobalVars +DelyCnt .DS 1 +CurESld .DS 2 +CurEDel .DS 1 +Ns_Base_AddToNs +Ns_Base .DS 1 +AddToNs .DS 1 + +AYREGS + +VT_ .DS 256 ;CreatedVolumeTableAddress + +EnvBase .EQU VT_+14 + +T1_ .EQU VT_+16 ;Tone tables data depacked here + +T_OLD_1 .EQU T1_ +T_OLD_2 .EQU T_OLD_1+24 +T_OLD_3 .EQU T_OLD_2+24 +T_OLD_0 .EQU T_OLD_3+2 +T_NEW_0 .EQU T_OLD_0 +T_NEW_1 .EQU T_OLD_1 +T_NEW_2 .EQU T_NEW_0+24 +T_NEW_3 .EQU T_OLD_3 + +PT2EMPTYORN .EQU VT_+31 ;1,0,0 sequence + +NT_ .FILL 192 ;CreatedNoteTableAddress + +;local var +Ampl .EQU AYREGS+AmplC + +VAR0END .EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1 + +VARSEND .EQU $ + +MDLADDR .EQU $ +; +;=============================================================================== +; MYM Player Storage +;=============================================================================== +; + .ORG HEAP +; Reserve room for uncompressed data +uncomp: +.org $+(3*FRAG*REGS) + +; The tune is stored here +rows: .dw 0 +data: +; +;=============================================================================== + .END + diff --git a/Source/Apps/PTxPlay/Tunes/Attack.pt3 b/Source/Apps/Tune/Tunes/Attack.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Attack.pt3 rename to Source/Apps/Tune/Tunes/Attack.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Backup.pt3 b/Source/Apps/Tune/Tunes/Backup.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Backup.pt3 rename to Source/Apps/Tune/Tunes/Backup.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/BadMice.pt3 b/Source/Apps/Tune/Tunes/BadMice.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/BadMice.pt3 rename to Source/Apps/Tune/Tunes/BadMice.pt3 diff --git a/Source/Apps/Tune/Tunes/Demo.mym b/Source/Apps/Tune/Tunes/Demo.mym new file mode 100644 index 00000000..255fc160 Binary files /dev/null and b/Source/Apps/Tune/Tunes/Demo.mym differ diff --git a/Source/Apps/Tune/Tunes/Demo1.mym b/Source/Apps/Tune/Tunes/Demo1.mym new file mode 100644 index 00000000..b224f321 Binary files /dev/null and b/Source/Apps/Tune/Tunes/Demo1.mym differ diff --git a/Source/Apps/Tune/Tunes/Demo3.mym b/Source/Apps/Tune/Tunes/Demo3.mym new file mode 100644 index 00000000..808db891 Binary files /dev/null and b/Source/Apps/Tune/Tunes/Demo3.mym differ diff --git a/Source/Apps/Tune/Tunes/Demo3mix.mym b/Source/Apps/Tune/Tunes/Demo3mix.mym new file mode 100644 index 00000000..b5981848 Binary files /dev/null and b/Source/Apps/Tune/Tunes/Demo3mix.mym differ diff --git a/Source/Apps/Tune/Tunes/Demo4.mym b/Source/Apps/Tune/Tunes/Demo4.mym new file mode 100644 index 00000000..ed2e8a85 Binary files /dev/null and b/Source/Apps/Tune/Tunes/Demo4.mym differ diff --git a/Source/Apps/PTxPlay/Tunes/HowRU.pt3 b/Source/Apps/Tune/Tunes/HowRU.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/HowRU.pt3 rename to Source/Apps/Tune/Tunes/HowRU.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Iteratn.pt3 b/Source/Apps/Tune/Tunes/Iteratn.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Iteratn.pt3 rename to Source/Apps/Tune/Tunes/Iteratn.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/LookBack.pt3 b/Source/Apps/Tune/Tunes/LookBack.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/LookBack.pt3 rename to Source/Apps/Tune/Tunes/LookBack.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Louboutn.pt3 b/Source/Apps/Tune/Tunes/Louboutn.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Louboutn.pt3 rename to Source/Apps/Tune/Tunes/Louboutn.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Namida.pt3 b/Source/Apps/Tune/Tunes/Namida.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Namida.pt3 rename to Source/Apps/Tune/Tunes/Namida.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Recoll.pt3 b/Source/Apps/Tune/Tunes/Recoll.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Recoll.pt3 rename to Source/Apps/Tune/Tunes/Recoll.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Sanxion.pt3 b/Source/Apps/Tune/Tunes/Sanxion.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Sanxion.pt3 rename to Source/Apps/Tune/Tunes/Sanxion.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Synch.pt3 b/Source/Apps/Tune/Tunes/Synch.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Synch.pt3 rename to Source/Apps/Tune/Tunes/Synch.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/ToStar.pt3 b/Source/Apps/Tune/Tunes/ToStar.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/ToStar.pt3 rename to Source/Apps/Tune/Tunes/ToStar.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Victory.pt3 b/Source/Apps/Tune/Tunes/Victory.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Victory.pt3 rename to Source/Apps/Tune/Tunes/Victory.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Wicked.pt3 b/Source/Apps/Tune/Tunes/Wicked.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Wicked.pt3 rename to Source/Apps/Tune/Tunes/Wicked.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/YeOlde.pt3 b/Source/Apps/Tune/Tunes/YeOlde.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/YeOlde.pt3 rename to Source/Apps/Tune/Tunes/YeOlde.pt3 diff --git a/Source/Apps/PTxPlay/Tunes/Yeovil.pt3 b/Source/Apps/Tune/Tunes/Yeovil.pt3 similarity index 100% rename from Source/Apps/PTxPlay/Tunes/Yeovil.pt3 rename to Source/Apps/Tune/Tunes/Yeovil.pt3 diff --git a/Source/Images/hd0/s0/u0/CLRDIR.COM b/Source/Images/hd0/s0/u0/CLRDIR.COM deleted file mode 100644 index d1f2a7d6..00000000 Binary files a/Source/Images/hd0/s0/u0/CLRDIR.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/FD_DIDE.COM b/Source/Images/hd0/s0/u0/FD_DIDE.COM deleted file mode 100644 index 409cf1f8..00000000 Binary files a/Source/Images/hd0/s0/u0/FD_DIDE.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/FD_DIO.COM b/Source/Images/hd0/s0/u0/FD_DIO.COM deleted file mode 100644 index d411a1fb..00000000 Binary files a/Source/Images/hd0/s0/u0/FD_DIO.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/FD_DIO3.COM b/Source/Images/hd0/s0/u0/FD_DIO3.COM deleted file mode 100644 index dcea26ca..00000000 Binary files a/Source/Images/hd0/s0/u0/FD_DIO3.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/FD_N8.COM b/Source/Images/hd0/s0/u0/FD_N8.COM deleted file mode 100644 index 0090b8c8..00000000 Binary files a/Source/Images/hd0/s0/u0/FD_N8.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/FD_ZETA.COM b/Source/Images/hd0/s0/u0/FD_ZETA.COM deleted file mode 100644 index ef602c05..00000000 Binary files a/Source/Images/hd0/s0/u0/FD_ZETA.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/FD_ZETA2.COM b/Source/Images/hd0/s0/u0/FD_ZETA2.COM deleted file mode 100644 index 214698d4..00000000 Binary files a/Source/Images/hd0/s0/u0/FD_ZETA2.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WS.COM b/Source/Images/hd0/s0/u0/WS.COM deleted file mode 100644 index aa028bc3..00000000 Binary files a/Source/Images/hd0/s0/u0/WS.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WS.OVR b/Source/Images/hd0/s0/u0/WS.OVR deleted file mode 100644 index 5e3c8773..00000000 Binary files a/Source/Images/hd0/s0/u0/WS.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSCHANGE.COM b/Source/Images/hd0/s0/u0/WSCHANGE.COM deleted file mode 100644 index bc85c1fc..00000000 Binary files a/Source/Images/hd0/s0/u0/WSCHANGE.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSCHANGE.OVR b/Source/Images/hd0/s0/u0/WSCHANGE.OVR deleted file mode 100644 index 4f707c63..00000000 Binary files a/Source/Images/hd0/s0/u0/WSCHANGE.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSCHHELP.OVR b/Source/Images/hd0/s0/u0/WSCHHELP.OVR deleted file mode 100644 index 49becf77..00000000 Binary files a/Source/Images/hd0/s0/u0/WSCHHELP.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSHELP.OVR b/Source/Images/hd0/s0/u0/WSHELP.OVR deleted file mode 100644 index 02634675..00000000 Binary files a/Source/Images/hd0/s0/u0/WSHELP.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSMSGS.OVR b/Source/Images/hd0/s0/u0/WSMSGS.OVR deleted file mode 100644 index 84625d8e..00000000 Binary files a/Source/Images/hd0/s0/u0/WSMSGS.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSPRINT.OVR b/Source/Images/hd0/s0/u0/WSPRINT.OVR deleted file mode 100644 index 83bef6ea..00000000 Binary files a/Source/Images/hd0/s0/u0/WSPRINT.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSREADME.TXT b/Source/Images/hd0/s0/u0/WSREADME.TXT deleted file mode 100644 index 7a75b22c..00000000 --- a/Source/Images/hd0/s0/u0/WSREADME.TXT +++ /dev/null @@ -1,880 +0,0 @@ - --THE README FILE-- - ------------------------ - -README contains late-breaking news and tips about WordStar, -and information about printers. - - -THE DISKS THAT CAME IN YOUR PACKAGE ------------------------------------ - -The file HOMONYMS.TXT is included on the Speller disk -contrary to what is listed in Appendix D. - - -INSTALLATION ------------- - -WINSTALL and WSCHANGE - - WordStar has two installation programs: - - o WINSTALL contains the basic choices to install WordStar. - It is recommended for all users. - - Be sure and install your valid disk drives since WordStar - running under CP/M cannot recover from attempts to access non- - existent disk drives. - - o WSCHANGE contains every installation and customization - choice. It is designed for advanced users and users who - want to customize WordStar after they're familiar with it. - Use the menu listing below for a directory of the menus - in WSCHANGE. - -Directory of WSCHANGE Menus - - The chart below shows the organization of menus in WSCHANGE. - Print it out and refer to it as you customize WordStar. - - Main Installation Menu - - A Console - A Monitor - A Monitor selection - B Monitor name - C Screen sizing - B Function keys - C Monitor patches - A Special characters - B Cursor control - C Screen control - D Keyboard patches - A Function keys - B Save function keys - E Interface patches - A Console busy handshaking - B Special I/O subroutines - B Printer - A Printer choices - A Printer selection - B Printer name - C Default printer driver - B Printer driver library - A Select library file - B Create smaller library - C Add new printer driver - D Change printer driver data - C WS printer patches - A Custom print controls, printer initialization - - NOTE: Disregard the "CUSTOM & SIMPLE Controls Save CUSTOM/SIMPLE - Controls" option shown. This is not available from this menu. - - D Printing defaults - E Printer interface - A Printer port selection - B Printer busy handshaking - C Printer subroutines - C Computer - A Disk drives - A Valid disk drives - B Maximum valid user number - C Delay disk access if typing - B Operating system - A Single-user system - B Multi-user MP/M - C Multi-user Turbo DOS - D ZCPR3 - C Memory usage - D WordStar files - E Directory display - F Computer patches - D WordStar - A Page layout - A Page sizing & margins - B Headers & footers - C Tabs - B Editing settings - A Edit screen & help level - B Typing - C Paragraph alignment - D Blocks - E Erase & unerase - F Lines & characters - G Find & replace - H WordStar 3.3 compatibility - I Printing defaults - C Other features - A Spelling checks - B Nondocument mode - C Indexing - D Shorthand (key macros) - E Merge printing - F Miscellaneous - E Patching - A Auto patcher - B Save settings - C Reset all settings - -MEMORY USAGE ------------- - - WordStar requires a minimum TPA size of 50 kbytes to run - using the factory defaults. The TPA is the amount of memory - available in your computer for use by programs that have a - file type of COM. To see how big the TPA is in your computer, - press the question mark key (?) at the Opening Menu. - - The amount of memory required by WordStar can be reduced by - approximately 3 kbytes if necessary. Use the WSCHANGE program - to select the minimum memory configuration option. The menu - will show you what capabilities are being reduced. - - WordStar uses a general-purpose buffer for a variety of - tasks. WordStar allocates memory to this buffer for editing, - for merge printing, and at the Opening Menu (see BFSIZE in - PATCH.LST). The buffer used for editing is usually the most - sensitive to a reduced TPA size. (You may be able to use the - Opening Menu and print, but there may be insufficient memory - for editing.) - - The merge print buffer is used only to hold merge print - variable names and data. Increase it if you run out of memory - while merge printing. - - The Opening Menu buffer is used primarily to hold the file - directory, and for miscellaneous tasks. - - -LOW-MEMORY INDICATOR IN STATUS LINE ------------------------------------ - - If the Low-Memory indicator appears in the status line, it - means that WordStar was unable to complete some function. - The most common symptoms are: the line number in the - status line is wrong, or a paragraph alignment could not be - completed. You may correct the line counter by saving your - file, exiting WordStar, and re-loading your file. To correct - the paragraph alignment, move your cursor to the point where - paragraph alignment stopped, and then press ^B again. - - The reason this comes up is that WordStar was not able to fit - a big enough chunk of text into memory at one time. - - When you first begin editing, WordStar uses the value from - EDSIZE in the user area to determine the minimum amount - of memory required for a page of text. The default - is set for approximately a 55 line by 66 column page. If - your page size is routinely larger than this, you may want - to increase EDSIZE. Multiply the number of lines by the - number of columns, and divide by 128. - - If the Low-Memory indicator comes on while printing, it is due - to either the same reasons as for editing, or there is - insufficient memory to print the text proportionally spaced. - The amount of memory required depends on which printer - driver you are using. If you aren't using the .PS ON dot - command to turn proportional spacing on in your document, - low memory won't be a problem. Also, WordStar uses more - memory for merge printing than it does for regular printing - (around 2.5 kbytes more). - - The Low-Memory indicator will also appear when a full disk error - is encountered during editing. Treat the disk-full error as you - would normally. - - -RAM-RESIDENT PROGRAMS ---------------------- - - RAM-resident programs, such as SmartKey, reduce the amount of - working memory (TPA) that WordStar can use. The new features in - WordStar, such as shorthand, may reduce the need for these - RAM-resident programs, thus freeing memory for WordStar. - - -ZCPR3 SUPPORT -------------- - - In order to enable the ZCPR facilities within WordStar, the user - must use the Z3INS utility provided with ZCPR to install the - address of the ZCPR "environment" into WordStar. The environment - contains information that WordStar uses to support ZCPR-specific - functions. - - Generally, the user should log onto the drive containing the file - WS.COM, and issue the command: - - Z3INS SYS.ENV WS.COM - - The user should also run either WINSTALL or WSCHANGE to further - install WordStar for ZCPR. However, this is not mandatory because - the only thing that happens is that the WordStar sign-on says - "ZCPR3," and the LGLUSR location in the user area is changed for a - maximum user number of 31. (The normal default for LGLUSR is 15.) - - Once the user has installed WordStar for use with ZCPR, the user - will be able to use the following ZCPR features: - - - A named directory may be used when logging onto a new drive/user. - - - A named directory may be used instead of a drive/user as part - of any file name. - - - The drive/user always appears above file directories. (For CP/M - only the drive letter is shown if the user number is zero.) - - - The directory name also appears above the directory if one has - been defined for the currently logged drive/user. - - - If WordStar does not find its OVR files on the current drive and - user, it will search the drives and user numbers in the ZCPR - search path rather than using its standard search pattern. - - - WordStar installs itself as a ZCPR "shell" process which lets the - user enter any legal ZCPR command when running a program. (CP/M - can only run programs that are COM files.) - - -OSBORNE USERS -------------- - - The command to change a hard carriage return to a soft carriage - return (document mode) or to turn Auto-indent ON (nondocument - mode) does not function on the Osborne because of a limitation - in its BIOS. The following patch can be applied to change the - command from ^^ to ^- (Ctrl-Hyphen): - - Using DDT or SID in the file WSMSGS.OVR: - - At 02DA replace 1E with a 1D - At 02EF replace 1E with a 1D - At 0359 replace 1E with a 1D - At 06B2 replace 1E with a 1D - At 06C9 replace 1E with a 1D - - At the system prompt type SAVE 53 WSMSGS.OVR - - For more information on how to use SID or DDT, see your CP/M - reference guide. As always, be sure and apply the patch to a - COPY of the file. - - -INSTRUCTIONS FOR TWO FLOPPY DISK COMPUTERS ------------------------------------------- - - Do not remove the Program disk while you are using WordStar. - - The Printer Driver Library file (WSPRINT.OVR) on the WordStar - program disk is much smaller than the Printer Driver Library - file contained on the disk labeled PRINTER. Be sure to read the - section in "Starting" that discusses the printer library file. - - -RUN A PROGRAM -------------- - - Once you press R you can type the drive and user number for the - program you want to run. You may run only .COM files. CCP commands, - such as DIR cannot be used. - - -INDEXING --------- - -Using StarIndex - - StarIndex 1.01 works with files created with this release of - WordStar. - -"Can't Use That Printer" Message - - When WordStar creates an index or table of contents, it uses - the printer drivers $INDEX and $TOC. If you created a smaller - WSPRINT.OVR file, you may have left these drivers out. To - return them to the file, copy the original WSPRINT.OVR file - onto your disk. When you create a smaller file again, be sure - to save these drivers. See Appendix C in the WordStar manual - for a list of other drivers to save. - - -SPELL CHECKING --------------- - - Dual floppy disk users: - - Unless you have sufficient room on your working WordStar program - disk for the files TW.COM, SPELL.COM, MARKFIX.COM, REVIEW.COM and - MAINDICT.CMP you will not be able to run a spell check from the - Opening Menu. You will need to exit WordStar and replace the - working WordStar program disk with the dictionary disk you created - during installation. This disk should contain the files listed - above. Make sure the disk in drive B has the file you want to - spell-check. - - Follow the directions for running a spell check in The WORD Plus - manual. - - -UPGRADING FROM A PREVIOUS RELEASE ---------------------------------- - - This release of WordStar contains many new features and commands. - See the "What's New" booklet for a complete list. The following - changes came in too late to be included in the documentation. - -Printer Patches - - Previous versions of WordStar treat most dot matrix printers - and other non-daisy wheel printers as a DRAFT printer with a - few patchable items. Because of this, many users have used - these patches to be able to use certain features of their - printers. Sometimes the patches have been quite extensive, and - some users have many files that count on them. - - The printer drivers of WordStar Release 4, on the other hand, - are very powerful. Almost every driver recognizes all the print - controls and all the dot commands. In fact, if a document is - written to be printed on one kind of printer, it is likely that - it will also print fine on some other printer. - - However, if you want to use your existing files with WordStar - 4, and those files rely on the user area being patched in a - special way, you can probably do so by moving the patches into - WordStar 4, and using the CUSTOM or SIMPLE printer driver. - - On the INSTALL disk is a program called MOVEPRN.COM that - copies the printer driver portion of the previous release's - user area into files that can be installed into Release 4 with - the "auto patcher" feature. - - Copy the program MOVEPRN.COM onto the disk containing the - WS.COM file for the previous version. Type - - MOVEPRN WS.COM FILE1.PAT FILE2.PAT - - MOVEPRN extracts the proper portions of the user area and - writes them into two files that may then be used with the "auto - patcher" feature of WSCHANGE. - - FILE1.PAT is to be used with the general patching menu - (Choose E "Patching" on the WSCHANGE Main Menu, then A "Auto - Patcher"). FILE2.PAT should be used to install strings first - into the SIMPLE driver, and then into the CUSTOM driver (choose - B "Printer" on the WSCHANGE Main Menu, then B "Printer driver - library", D "Change printer driver data" and D "Driver auto - patcher"). - - Test print your document first with the SIMPLE driver, and then - with the CUSTOM driver to see which one produces the most - satisfactory results. - - Also read Appendix C for more information on using the Auto - Patcher. - - -Hanging Indents - - For WordStar Professional Release 4, MailMerge reformats indented - text created with ^OG to the current margins. If you want the text - to remain indented, use embedded ruler lines or the .RM, .LM, - and .PM commands. See the "Reference Guide" for more information. - - Pressing ^OG to wrap back to the first tab on the ruler line after - having reached the last tab works the same way it did in previous - versions of WordStar, contrary to what is stated in the manual. - - -TERMINALS ---------- - - WordStar comes installed for an "idealized" special terminal. - WINSTALL and WSCHANGE allow you to install many terminals by - name, thus allowing WordStar to take advantage of the special - features that the terminal might support, such as underlining - or the function keys. - - Use either WINSTALL or WSCHANGE to pick your specific terminal - or computer screen from the Monitor menu. If your terminal - isn't on the menu, it probably emulates one of those that is - there. Look in your terminal documentation to find out. - - After you install WordStar for the proper terminal, run - WordStar and open the file PRINT.TST to see which attributes - (such as bold and underline) work on your screen. - WordStar will highlight the following in some way... - - Bold (^PB) - Underline (^PS) - Strike-out (^PX) - Subscript (^PV) - Superscript (^PT) - Doublestrike (^PD) - Italics (^PY) - Blocks (^KB, ^KK) - Error messages - - Most of the time, normal text will be shown in dim intensity, - and highlighted text will be shown in bright intensity. You - may have to use a brightness and/or contrast knob to adjust - your screen the first time you use WordStar this way. - - If your dim intensity is too dim to see well, and you can't - adjust it, you can change the BRITE flag to ON using WSCHANGE. - This will invert bright and dim in your text, so that regular - text is displayed bright, and highlighted text will be - displayed as dim. However, text in the menus is not affected. - - -DISPLAY PROBLEMS WITH TERMINALS -------------------------------- - - Once you have installed WordStar for the proper terminal, you - may still experience display problems. - - If text from the previous screen remains after WordStar - displays a new screenful of text, the most likely cause is - cursor wrap. Basically, WordStar must know what happens to the - cursor when a character is displayed at the rightmost position - of the screen. It can either remain at the right edge, or it - can wrap to the beginning of the next line. The WRAP flag in - WordStar must be set either on or off to correspond to the - way the terminal works. (It is generally set for the - terminal's factory default, but the default can usually be - changed using the terminal's setup mode.) - - Another possible cause for display problems is your terminal's - incomplete emulation of some other terminal. The most - common differences are... - - Line insert (LININS), line delete (LINDEL), - Erase to end of screen (ERAEOS), - Erase to end of line (ERAEOL), - And, erase screen (ERASCR). - - Look in the manual for your terminal and use WSCHANGE to see - if the control sequences match. - - -PRINTERS --------- - -WHAT'S IN THIS SECTION - - This section contains the following information: - - Choosing a Printer - Setting Up Your Printer - Printer Drivers - Proportional Printing - Laser Printers - Information on Specific Printers - -CHOOSING A PRINTER - - WordStar is ready to work with over 100 printers. The printer you - choose during installation becomes your default printer. However, - when you print a document, you can choose any other printer. To - choose a default printer, follow these steps: - - 1. Look at the Printer Information brochure that came in your - package. The first chart shows the printers listed on the - Printer Selection Menus. If your printer is on the menu, - simply choose it during installation. - - 2. If your printer isn't listed on the menu, it may work like a - printer that is. Refer to the second chart in the Printer - Information brochure for a list of printers that work like - printers on the menu. When WordStar asks you to choose a - printer, choose the printer that works like yours. - - 3. If neither chart lists your printer, choose Typewriter Printer - (if your printer can backspace) or Draft Printer (if it can't). - These choices may not take advantage of all your printer's - features, but they will work with almost any printer. - - Note: If you choose Draft or Typewriter, you can modify custom - print controls and printer initialization. - - If you want to make more modifications to take advantage of your - printer's feature, choose the Custom or Simple drivers, then use - the WS Printer Patches section of WSCHANGE to tell WordStar the - codes for your printer. Refer to your printer manual for these - codes. Some printers work better with the Custom driver and some - with the Simple driver. Try using both and see which works better - with your printer. See the "Reference Guide" for more information. - -SETTING UP YOUR PRINTER - -Choosing a Printer Port - - Each printer is connected to a printer port at the back of - the computer. WordStar looks for printers on the LST: port. - If your printer is connected to a different port, use - WSCHANGE to tell WordStar the correct port. - -Testing Your Printer Connection - - At the operating system prompt, type "PIP LST:=READ.ME." This - file should be printed by your printer. If it is not, your printer - may be connected to a different port. See your computer reference - manual, and the section on the STAT command in your CP/M - reference manual for more information. - - -PRINTER DRIVERS - - The WSPRINT.OVR file on the Printers disk contains a printer - driver for each printer on the Printer Selection Menu. The printer - driver for a printer contains all the codes WordStar needs to work - with that printer. - - Each printer driver has a short name. If you choose a printer when - you print a document, you see the names of the printer drivers, not - the names of the printers. - -PROPORTIONAL PRINTING - - WordStar supports proportional printing on a number of printers. - To turn on proportional printing, either install WordStar to - default to proportional printing, or place a ".PS on" command - in your document. At print time, WordStar selects the - appropriate proportional font based on the character width - (.CW) currently in effect. - - The specific printer descriptions later in this section show - recommended character widths for proportional typefaces. - These widths are for a normal mix of upper- and lowercase - letters. If you have many words or phrases all in uppercase - or if you want your text less densely printed, choose a larger - character width. - - While WordStar mostly sets character widths based on the - proportional-width table in the driver, on the more advanced - daisy wheel printers, WordStar uses the printer's proportional- - spacing mode. WordStar determines how much white space is needed - to right-justify the line based on its own proportional width - tables. If the table values don't match the wheel installed, - WordStar won't be able to justify the line correctly. - - WordStar sends standard ASCII characters; if a proportional wheel - uses a different spoke mapping, set up the printer to handle this. - -LASER PRINTERS - - WordStar supports laser printer features such as font changes - and proportional spacing. - - WordStar supports several laser printers: the Canon LPB-8 A1 & A2; - the Hewlett-Packard LaserJet, LaserJet+, and LaserJet 500+; - and the Ricoh LP4080. Refer to the "Specific Printer - Information" section of this file for information on these - printers. General notes about using laser printers are given below. - -Paper Size and Margins - - Laser printers come with preset page margins. You need to - compensate for these margins by changing page length in your - WordStar documents. The chart below shows the recommended - settings for 8 1/2 X 11 inch paper for both portrait and landscape - orientations. These settings allow 55 lines of text for portrait - orientation and 40 lines of text for landscape orientation (at 6 - lines per inch). They also allow for a footer of up to 3 lines - and a one-line header. If you use multiple-line headers, adjust - the top margin accordingly. - - Dot Default Portrait Landscape - Setting Command Value Orientation Orientation - ------- ------- ------- ----------- ----------- - page length .PL 66 62 47 - top margin .MT 3 2 2 - bottom margin .MB 8 5 5 - header margin .HM 2 1 1 - footer margin .FM 2 2 2 - - If the laser printer is your primary printer, you can use WSCHANGE - to make these settings the defaults. - - Because laser printers leave small margins at the left and right - sides of the page, you may want to use a smaller page offset - setting (the default is .PO 8). - -Form Feeds - - When you print with a laser printer, answer Y for yes to the "Use - form feeds (Y/N)?" prompt at print time. (The default is NO.) If - the laser printer is your primary printer, you can use WSCHANGE to - change the default to yes. - -WordStar Commands for Font Selection - - The WordStar dot commands and print control commands listed below - determine the fonts used for printing a document. - - .PR .PR OR=L selects landscape orientation; .PR OR=P (or just - .PR OR) selects portrait orientation (the default). If - either of these commands appears after the first printing - line on a page, the orientation will not change until the - following page. - - .PS .PS ON selects proportionally spaced characters; .PS OFF - (the default) selects fixed-spaced characters. - - .CW The character-width setting (.CW followed by the width in - 120ths of an inch) determines the character pitch and font - selected for fixed-width printing. For proportional fonts, it - determines the point size and proportional-width table - selected. - - .LQ .LQ ON selects near letter quality print (if supported by - your printer). LQ OFF selects draft quality print. Default - is ON. - - ^PY The italic print control toggles between normal and italic - characters when the appropriate italic font is available. - - ^PB The boldface print control toggles between normal and bold - characters when the appropriate bold font is available. - - ^PD The double strike print control used with the laser printers - toggles overprinting with a horizontal offset of 1/120" - between the two character images. This allows a bold effect - where no bold font is available. - - ^PA ^PA turns alternate pitch on. Use .CW to assign different - character widths to normal pitch (see ^PN below) and alternate - pitch so that each pitch accesses a different font. You can - then change fonts by switching between the two pitches. This - is the only way to use two fonts on the same line. - (See "Character width" and "Pitch" in the "Reference Guide.") - - ^PN ^PN turns normal pitch on. You can use it with ^PA as - described above. - - ^P@ When working with columns, if you use alternate and normal - pitch for two fonts, or if you use proportional spacing, you - may need to use ^P@ to make sure the columns line up. - Remember that the column position set with ^P@ is determined - by the normal pitch character width. (See "Columns" and - "Proportional spacing" in the "Reference Guide." - -INFORMATION ON SPECIFIC PRINTERS - - This section describes the capabilities of each printer listed on - the Printer Selection Menu. The printers are listed in alphabetical - order (except for the generic printers such as "Draft," - "Typewriter," "Custom," "Simple," and the various print-to-disk - options, which are listed first). - - There is a chart for each printer explaining how features work and - listing any special notes about the printer. Each printer is - described in the following format: - -PRINTER NAME ----- Driver: (short name) - - ^PY Effect of italics/ribbon color print control - ^PT/V Subscript/superscript information - .CW Information on available character widths and fonts. The - chart shows the .CW, .LQ, and .PS settings required to use - different fonts. - - .LQ OFF .LQ ON .PS ON Font Name - ------- ------ ------ --------- - .cw val .cw val recommended value (range) font 1 - .cw val .cw val recommended value (range) font 2 - - .UL Continuous-underline information (if restrictions) - .UJ Microspace-justification information (if restrictions) - - N/A means a command has no effect on this printer. - - NOTES Switch settings, special features, anomalies. - -DRAFT PRINTER (nonbackspacing) ----- Driver: DRAFT - - ^PD Overprints the line twice - ^PB Overprints the line three times - ^PS Overprints the underscore character in a separate pass - ^PT/V Prints super/subscripts with a full line between - super/subscript and text - .LH Sets line height only in multiples of full lines - .CW N/A - .PS N/A - .LQ N/A - .UJ N/A - - NOTES This driver works with any printer that doesn't automatically - perform a line feed when it receives a carriage return command. All - overprinting is done by returning the carriage and passing over the - line again. - -TYPEWRITER PRINTER (backspacing) ----- Driver: TYPEWR - - ^PD Backspaces and overprints each character twice - ^PB Backspaces and overprints each character three times - ^PS Backspaces and overprints the underscore character - ^PT/V Prints super/subscripts with a full line between - super/subscript and text - .LH Sets line height only in multiples of full lines - .CW N/A - .PS N/A - .LQ N/A - .UJ N/A - - NOTES This driver works with any printer that doesn't automatically - perform a line feed when a it receives a carriage return command, - and responds to a backspace character. Overprinting is done by - backspacing. - -AUTO LINE FEED PRINTER (backspacing) ----- Driver: AUTOLF - - ^PD Backspaces and overprints each character twice - ^PB Backspaces and overprints each character three times - ^PS Backspaces and overprints the underscore character - ^PT/V Prints super/subscripts with a full line between - super/subscript and text - .LH Sets line height only in multiples of full lines - .CW N/A - .PS N/A - .LQ N/A - .UJ N/A - - NOTES This driver works with any printer that automatically - performs a line feed when it receives a carriage return character, - and responds to a backspace command. Overprinting is done by - backspacing. - -SIMPLE CUSTOMIZABLE PRINTERS ----- Driver: SIMPLE - - All print controls cause control strings (on and off) in - the user area to be sent to the printer. These strings - are used by both the SIMPLE and CUSTOM drivers. They can - be installed with the WSCHANGE program. - - .LQ Controlled by user area strings - .PS Controlled by user area strings - .CW N/A - .UJ N/A - .LH N/A - - NOTES This printer driver prints the line in one pass, sending - control strings from the user area to select print enhancements. - -CUSTOMIZABLE PRINTERS ----- Driver: CUSTOM - - All print controls cause control strings (on and off) in - the user area to be sent to the printer. These strings - are used by both the SIMPLE and CUSTOM drivers. They can - be installed with the WSCHANGE program. - - .LQ ON/OFF controlled by user area strings - .PS ON/OFF controlled by user area strings - .LH Sets line height only in multiples of full lines - .UJ N/A - .CW N/A - - NOTES This driver prints the line in multiple passes, sending - control strings from the user area to select print enhancements. - -PREVIEW TO DISK ----- Driver: PRVIEW - - This driver prints documents to the PREVIEW.WS file to allow - you to preview the format and appearance of a document before - printing. Headers, footers, and pagination are shown correctly - and print controls remain in the file to display onscreen - attributes. Dot commands are not printed. - -PRINT TO DISK WITHOUT PRINT CONTROLS ----- Driver: ASCII - - This driver prints to the ASCII.WS file, stripping headers and - footers, high bits, and print controls. - -PRINT TO DISK WITHOUT HEADERS AND FOOTERS ----- Driver: XTRACT - - This driver prints to the XTRACT.WS disk file, stripping headers - and footers, but preserving high bits and print controls. - -ANADEX 9500A, 9500B ----- Driver: 9500 - - ^PY N/A - ^PT/V Even superscript roll - - .CW .CW Font name - --- --------- - 9 13.3 cpi - 10 12 cpi - 12 10 cpi - 18 6.7 cpi - 20 6 cpi - 24 5 cpi - - .LH 1/24" resolution, use even values - .UJ This printer has no incremental horizontal positioning - .PS N/A - .LQ N/A - -ANADEX 9501B, INTEQ 5100B ----- Driver: 9501B - - ^PY N/A - ^PT/V Even superscript roll - - .CW .CW Font name - --- --------- - 7 16.7 cpi - 8 15 cpi - 10 12.5 cpi - 12 10 cpi - 14 8.3 cpi - 16 7.5 cpi - 20 6.2 cpi - 24 5 cpi - - .LH 1/24" resolution, use even values - .UJ This printer has no incremental horizontal positioning - .PS N/A - .LQ N/A - -C. ITOH STARWRITER 1550 AND 8510 ----- Driver: C1550 - - ^PY N/A - ^PT/V Prints full-size characters with roll - - .CW .CW Font Name - --- --------- - 7 compressed - 10 elite - 12 pica - 14 expanded compressed - 20 expanded elite - 24 expanded pica - - .LQ N/A - .PS N/A - .UL Continuous underlining suppresses microspace justification - -C. ITOH F10 STARWRITER ----- Driver: QUME - - See Diablo 630, 1610, 1620 Daisy Wheel. - - Note: Proportional printing was tested with a Theme 10 wheel. - -CANON LBP-8A1 AND LBP-8A2 LASER PRINTER ----- Driver: LBP8 - - ^PY Selects italics if appropriate font installed - ^PT/V Prints full-size characters with roll - .PS .PS - .CW OFF ON Font Name - --- -- --------- - 6 - 20 cpi - 8 - 15 cpi - 9 - 13.3 cpi - 10 - 12 cpi (elite) - 12 - 10 cpi - 20 - 6 cpi - 24 - 5 cpi - 16 - 7.5 cpi - - 7 (0-8) Garland 8 point - - 10 (9-11) Garland 12 point - - 14 (12-17) Expanded 8 point - - 20 (18-30) Expand \ No newline at end of file diff --git a/Source/Images/hd0/s0/u0/WSSHORT.OVR b/Source/Images/hd0/s0/u0/WSSHORT.OVR deleted file mode 100644 index b44f1480..00000000 Binary files a/Source/Images/hd0/s0/u0/WSSHORT.OVR and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/WSU.COM b/Source/Images/hd0/s0/u0/WSU.COM deleted file mode 100644 index 39830fdf..00000000 Binary files a/Source/Images/hd0/s0/u0/WSU.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/ZDENST.COM b/Source/Images/hd0/s0/u0/ZDENST.COM deleted file mode 100644 index 8ccc9767..00000000 Binary files a/Source/Images/hd0/s0/u0/ZDENST.COM and /dev/null differ diff --git a/Source/Images/hd0/s0/u0/copy.com b/Source/Images/hd0/s0/u0/copy.com deleted file mode 100644 index 606c81a5..00000000 Binary files a/Source/Images/hd0/s0/u0/copy.com and /dev/null differ diff --git a/Source/Images/hd0/s0/u3/Demo.mym b/Source/Images/hd0/s0/u3/Demo.mym new file mode 100644 index 00000000..255fc160 Binary files /dev/null and b/Source/Images/hd0/s0/u3/Demo.mym differ diff --git a/Source/Images/hd0/s0/u3/Demo1.mym b/Source/Images/hd0/s0/u3/Demo1.mym new file mode 100644 index 00000000..b224f321 Binary files /dev/null and b/Source/Images/hd0/s0/u3/Demo1.mym differ diff --git a/Source/Images/hd0/s0/u3/Demo3.mym b/Source/Images/hd0/s0/u3/Demo3.mym new file mode 100644 index 00000000..808db891 Binary files /dev/null and b/Source/Images/hd0/s0/u3/Demo3.mym differ diff --git a/Source/Images/hd0/s0/u3/Demo3mix.mym b/Source/Images/hd0/s0/u3/Demo3mix.mym new file mode 100644 index 00000000..b5981848 Binary files /dev/null and b/Source/Images/hd0/s0/u3/Demo3mix.mym differ diff --git a/Source/Images/hd0/s0/u3/Demo4.mym b/Source/Images/hd0/s0/u3/Demo4.mym new file mode 100644 index 00000000..ed2e8a85 Binary files /dev/null and b/Source/Images/hd0/s0/u3/Demo4.mym differ diff --git a/Source/Images/hd0/s0/u3/PTxPlay.com b/Source/Images/hd0/s0/u3/PTxPlay.com deleted file mode 100644 index 3b47c5c7..00000000 Binary files a/Source/Images/hd0/s0/u3/PTxPlay.com and /dev/null differ diff --git a/Source/Images/hd0/s0/u3/Tune.com b/Source/Images/hd0/s0/u3/Tune.com new file mode 100644 index 00000000..d1a12818 Binary files /dev/null and b/Source/Images/hd0/s0/u3/Tune.com differ