Browse Source

Finalize v2.9.0

patch v2.9.0
Wayne Warthen 8 years ago
parent
commit
55d7b5e80e
  1. 6
      Binary/Apps/Clean.cmd
  2. 14
      Binary/Apps/ReadMe.txt
  3. 4
      Binary/Apps/Tunes/Clean.cmd
  4. 10
      Binary/Apps/Tunes/ReadMe.txt
  5. 4
      Binary/Clean.cmd
  6. 7
      Binary/ReadMe.txt
  7. 2
      ReadMe.txt
  8. 4
      Source/Apps/Build.cmd
  9. 1
      Source/Apps/Clean.cmd
  10. 2
      Source/Apps/FDU/Build.cmd
  11. 2
      Source/Apps/FDU/Clean.cmd
  12. 13
      Source/Apps/PTxPlay/Build.cmd
  13. 5
      Source/Apps/PTxPlay/Clean.cmd
  14. 2124
      Source/Apps/PTxPlay/PTxPlay.asm
  15. BIN
      Source/Apps/PTxPlay/Tunes/Attack.pt3
  16. BIN
      Source/Apps/PTxPlay/Tunes/Backup.pt3
  17. BIN
      Source/Apps/PTxPlay/Tunes/BadMice.pt3
  18. BIN
      Source/Apps/PTxPlay/Tunes/HowRU.pt3
  19. BIN
      Source/Apps/PTxPlay/Tunes/Iteratn.pt3
  20. BIN
      Source/Apps/PTxPlay/Tunes/LookBack.pt3
  21. BIN
      Source/Apps/PTxPlay/Tunes/Louboutn.pt3
  22. BIN
      Source/Apps/PTxPlay/Tunes/Namida.pt3
  23. BIN
      Source/Apps/PTxPlay/Tunes/Recoll.pt3
  24. BIN
      Source/Apps/PTxPlay/Tunes/Sanxion.pt3
  25. BIN
      Source/Apps/PTxPlay/Tunes/Synch.pt3
  26. BIN
      Source/Apps/PTxPlay/Tunes/ToStar.pt3
  27. BIN
      Source/Apps/PTxPlay/Tunes/Victory.pt3
  28. BIN
      Source/Apps/PTxPlay/Tunes/Wicked.pt3
  29. BIN
      Source/Apps/PTxPlay/Tunes/YeOlde.pt3
  30. BIN
      Source/Apps/PTxPlay/Tunes/Yeovil.pt3
  31. 113
      Source/Apps/PTxPlay/readme.txt
  32. 87
      Source/Apps/Timer.asm
  33. 2
      Source/Apps/XM/Build.cmd
  34. 2
      Source/Apps/XM/Clean.cmd
  35. 2
      Source/CBIOS/ver.inc
  36. 11
      Source/HBIOS/Build.ps1
  37. 2
      Source/HBIOS/ver.inc
  38. 265
      Source/Images/ReadMe.txt
  39. BIN
      Source/Images/fd1/u0/ASM.COM
  40. BIN
      Source/Images/fd1/u0/CLRDIR.COM
  41. BIN
      Source/Images/fd1/u0/CR.COM
  42. BIN
      Source/Images/fd1/u0/DDT.COM
  43. BIN
      Source/Images/fd1/u0/DDTZ.COM
  44. 564
      Source/Images/fd1/u0/DDTZ.DOC
  45. BIN
      Source/Images/fd1/u0/DIF.COM
  46. BIN
      Source/Images/fd1/u0/DUMP.COM
  47. BIN
      Source/Images/fd1/u0/ED.COM
  48. BIN
      Source/Images/fd1/u0/LBREXT.COM
  49. BIN
      Source/Images/fd1/u0/LIB.COM
  50. BIN
      Source/Images/fd1/u0/LINK.COM
  51. BIN
      Source/Images/fd1/u0/LOAD.COM
  52. BIN
      Source/Images/fd1/u0/MAC.COM
  53. BIN
      Source/Images/fd1/u0/MBASIC.COM
  54. BIN
      Source/Images/fd1/u0/NULU.COM
  55. BIN
      Source/Images/fd1/u0/PIP.COM
  56. BIN
      Source/Images/fd1/u0/RMAC.COM
  57. BIN
      Source/Images/fd1/u0/SID.COM
  58. BIN
      Source/Images/fd1/u0/STAT.COM
  59. BIN
      Source/Images/fd1/u0/SUBMIT.COM
  60. BIN
      Source/Images/fd1/u0/SUPERSUB.COM
  61. BIN
      Source/Images/fd1/u0/UNARC.COM
  62. BIN
      Source/Images/fd1/u0/UNCR.COM
  63. BIN
      Source/Images/fd1/u0/UNZIP.COM
  64. BIN
      Source/Images/fd1/u0/XSUB.COM
  65. BIN
      Source/Images/fd1/u0/ZAP.COM
  66. BIN
      Source/Images/fd1/u0/ZDE.COM
  67. BIN
      Source/Images/fd1/u0/ZDE40.COM
  68. BIN
      Source/Images/fd1/u0/ZDENST.COM
  69. BIN
      Source/Images/hd0/s0/u3/Attack.pt3
  70. BIN
      Source/Images/hd0/s0/u3/Backup.pt3
  71. BIN
      Source/Images/hd0/s0/u3/BadMice.pt3
  72. BIN
      Source/Images/hd0/s0/u3/HowRU.pt3
  73. BIN
      Source/Images/hd0/s0/u3/Iteratn.pt3
  74. BIN
      Source/Images/hd0/s0/u3/LookBack.pt3
  75. BIN
      Source/Images/hd0/s0/u3/Louboutn.pt3
  76. BIN
      Source/Images/hd0/s0/u3/Namida.pt3
  77. BIN
      Source/Images/hd0/s0/u3/PTxPlay.com
  78. BIN
      Source/Images/hd0/s0/u3/Recoll.pt3
  79. BIN
      Source/Images/hd0/s0/u3/Sanxion.pt3
  80. BIN
      Source/Images/hd0/s0/u3/Synch.pt3
  81. BIN
      Source/Images/hd0/s0/u3/ToStar.pt3
  82. BIN
      Source/Images/hd0/s0/u3/Victory.pt3
  83. BIN
      Source/Images/hd0/s0/u3/Wicked.pt3
  84. BIN
      Source/Images/hd0/s0/u3/YeOlde.pt3
  85. BIN
      Source/Images/hd0/s0/u3/Yeovil.pt3

6
Binary/Apps/Clean.cmd

@ -0,0 +1,6 @@
@echo off
setlocal
if exist *.com del *.com
setlocal & cd Tunes && call Clean || exit /b 1 & endlocal

14
Binary/Apps/ReadMe.txt

@ -0,0 +1,14 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
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.

4
Binary/Apps/Tunes/Clean.cmd

@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.pt? del *.pt?

10
Binary/Apps/Tunes/ReadMe.txt

@ -0,0 +1,10 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains some sample ProTracker sound
files that can be played by the PTxPlay application.

4
Binary/Clean.cmd

@ -1,4 +1,6 @@
@echo off
setlocal
if exist *.bin del *.bin
if exist *.com del *.com
if exist *.img del *.img
@ -6,3 +8,5 @@ if exist *.rom del *.rom
if exist *.pdf del *.pdf
if exist *.log del *.log
if exist *.eeprom del *.eeprom
setlocal & cd Apps && call Clean || exit /b 1 & endlocal

7
Binary/ReadMe.txt

@ -105,3 +105,10 @@ indicates which file targets each of the Propeller board variants:
Refer to the board documentation of the boards for more information
on how to program the EEPROMs on these boards.
Apps Directory
--------------
The Apps subdirectory 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.

2
ReadMe.txt

@ -7,7 +7,7 @@
***********************************************************************
Wayne Warthen (wwarthen@gmail.com)
Version 2.9.0 (prerelease), 2018-01-16
Version 2.9.0, 2018-01-26
https://www.retrobrewcomputers.org/
RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for

4
Source/Apps/Build.cmd

@ -2,6 +2,7 @@
setlocal
set TOOLS=../../Tools
set APPBIN=..\..\Binary\Apps
set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH%
@ -27,6 +28,9 @@ 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
copy *.com %APPBIN%\
goto :eof

1
Source/Apps/Clean.cmd

@ -9,3 +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

2
Source/Apps/FDU/Build.cmd

@ -9,5 +9,5 @@ tasm -t80 -b -fFF FDU.asm FDU.com FDU.lst
if errorlevel 1 goto :eof
move /Y FDU.com ..
copy /Y FDU.com ..\..\..\Binary\Apps\
copy /Y FDU.txt ..\..\..\Doc\

2
Source/Apps/FDU/Clean.cmd

@ -1,4 +1,6 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.zip del *.zip

13
Source/Apps/PTxPlay/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 PTxPlay.asm PTxPlay.com PTxPlay.lst
if errorlevel 1 goto :eof
copy /Y PTxPlay.com ..\..\..\Binary\Apps\
copy /Y Tunes\*.pt3 ..\..\..\Binary\Apps\Tunes\

5
Source/Apps/PTxPlay/Clean.cmd

@ -0,0 +1,5 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst

2124
Source/Apps/PTxPlay/PTxPlay.asm

File diff suppressed because it is too large

BIN
Source/Apps/PTxPlay/Tunes/Attack.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Backup.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/BadMice.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/HowRU.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Iteratn.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/LookBack.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Louboutn.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Namida.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Recoll.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Sanxion.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Synch.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/ToStar.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Victory.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Wicked.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/YeOlde.pt3

Binary file not shown.

BIN
Source/Apps/PTxPlay/Tunes/Yeovil.pt3

Binary file not shown.

113
Source/Apps/PTxPlay/readme.txt

@ -0,0 +1,113 @@
Universal PT2 and PT3 player for ZX Spectrum and MSX Release 1
(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
http://bulba.untergrund.net/ (http://bulba.at.kz/)
Release date: 30 of April 2007
Common remarks
--------------
The project is a compact combination of two players: Vortex Tracker II v1.0 PT3
player for ZX Spectrum and Universal PT2 player for ZX Spectrum and MSX
computers. This player is a little slower than standalone players, but more
compact: less than 2K instead of 2.6K (1.6+1).
As bonus there are some additional functions (conditional assembly):
1) ROUT procedure for ZX or MSX;
2) positions counter at (START+11);
3) ability to change channels allocation during playing;
4) checking loop point;
5) disabling official identificator.
New for this release: added PT v3.7 features (commands 1.xx and 2.xx).
Project was compiled in assembler for Win32:
SjASM Z80 Assembler v0.39f
Copyright 2005 Sjoerd Mastijn
Files
-----
PTxPlay.asm - source Z80 assembler code.
PTxPlay.h - same text is prepared for Alasm.
PTxPlay.txt - same text is prepared for ZX Asm 3.10.
PTxPlay - assembled binary code block in minimal configuration for ZX Spectrum
with identificator to load at #C000 address, zeroes at end can be truncated.
Entry points
------------
Before playing at (START+10) set bit 1 for PT2 and reset for PT3 and call START
(loading) address. To detect module type you can use UniSearch by Spectre.
Player is not reallocable, so you need to assemble with other ORG value, if you
want to load code at other than #C000 address, also you can place VARS area to
any other address too. After calling START AY is stop any sounding. At START+10
is located SETUP byte, where bit 0 is used to control looping of melody. At any
time you can set bit 0 to disable loop. Bit 7 can be checked at any moment, it
is set after reaching end of module (finishing playing of last position). Bits
2 and 3 is used for setting channels allocation. Only first three combinations
of these bits are allowed: 0 - ABC, 1 - ACB, 2 - BAC. ABC is used to output
channels "as is". ACB swaps B and C, and BAC swaps A and B. So, any stereo
combinations can be heard: ABC-stereo for the most xUSSR ZX-clones, ACB - East
Europe ones, and BAC - ZS Scorpion 256K.
In current compilation module must be loaded after variables (by default). Of
course, you can change it in source or in assembled code. Also you can specify
module address in HL as follows:
LD HL,PT3ModuleAddress
XOR A ;PT3
LD (START+10),A
CALL START+3
By calling START you are proceeding INIT procedure, which analyzes module type
bit and prepares corresponding player branches, checks PT3 module version and
prepares corresponding note and volume tables (it is need for correct playing of
modules of different PT3 subversions). Also you can call START after stopping
playing to mute AY sound. In last case you can call START+8 to simple mute AY
sound, to continue playing simply continue calling START+5 as usually.
To play, call START+5 address each 1/50 of second (interrupt). Playing selects
right portamento algorithm for old (v3.5-) and new (v3.6+ or VT II) modules.
During running PLAY subprogram no any interrupts are expected, it is your task
to right call PLAY. For example, next example is totaly right:
CALL #C000 ;calling init
EI ;enable interrupts
_LP HALT ;wait for next interrupt
CALL #C005 ;call play, player uses 10500 tacts max,
;so no interrupt can be before next HALT
XOR A ;test keyboard
IN A,(#FE)
CPL
AND 15
JR Z,_LP
CALL #C008 ;mute AY sound (you can resume playing from current place)
RET
At START+11 current position byte can be placed (see conditional assembly keys).
To get common number of position, see module header or use UniSearch by Spectre.
Example of playing without loop:
LD A,1
LD (START+10),A
CALL START
EI
LOOP HALT
CALL START+5
LD A,(START+10)
RLA
JR NC,LOOP
RET
Read also all comments in source file.
Thanks to Andrey Bogdanovich aka Spectre for help and UniSearch; Ivan Roshin for
tone and volume tables generators; Alfonso D.C. aka Dioniso for info about MSX.
Sergey Bulba
19 of September 2004 - 30 of April 2007

87
Source/Apps/Timer.asm

@ -18,6 +18,7 @@
;
; Change Log:
; 2018-01-14 [WBW] Initial release
; 2018-01-17 [WBW] Add HBIOS check
;_______________________________________________________________________________
;
; ToDo:
@ -37,6 +38,7 @@ ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
rmj .equ 2 ; intended CBIOS version - major
rmn .equ 9 ; intended CBIOS version - minor
;
bf_sysver .equ $F1 ; BIOS: VER function
bf_sysget .equ $F8 ; HBIOS: SYSGET function
bf_sysgettimer .equ $D0 ; TIMER subfunction
;
@ -70,6 +72,14 @@ init:
call crlf ; formatting
ld de,msgban ; point to version message part 1
call prtstr ; print it
;
call idbio ; identify active BIOS
cp 1 ; check for HBIOS
jp nz,errbio ; handle BIOS error
;
ld a,rmj << 4 | rmn ; expected HBIOS ver
cp d ; compare with result above
jp nz,errbio ; handle BIOS error
;
initx
; initialization complete
@ -81,14 +91,17 @@ initx
process:
; look for start of parms
ld hl,$81 ; point to start of parm area (past len byte)
;
process00:
call nonblank ; skip to next non-blank char
jp z,process0 ; no parms, go to display
jp z,process0 ; no more parms, go to display
;
; check for special option, introduced by a "/"
; check for option, introduced by a "/"
cp '/' ; start of options?
jp nz,usage ; yes, handle option
call option ; do option processing
ret nz ; done if non-zero reture
ret nz ; done if non-zero return
jr process00 ; continue looking for options
;
process0:
call crlf2 ; formatting
@ -137,6 +150,10 @@ option:
;
inc hl ; next char
ld a,(hl) ; get it
or a ; zero terminator?
ret z ; done if so
cp ' ' ; blank?
ret z ; done if so
cp '?' ; is it a '?'?
jp z,usage ; yes, display usage
cp 'C' ; is it a 'C', continuous?
@ -145,17 +162,58 @@ option:
;
usage:
;
call crlf2 ; blank line
ld de,msguse ; point to usage message
call prtstr ; print it
or $FF ; signal no action performed
ret ; and return
jp erruse ; display usage and get out
;
setcont:
;
or $FF ; set A to true
ld (cont),a ; and save it
xor a ; signal success
ld (cont),a ; and set continuous flag
jr option ; check for more option letters
;
; Identify active BIOS. RomWBW HBIOS=1, UNA UBIOS=2, else 0
;
idbio:
;
; Check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,idbio1 ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,idbio1 ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,idbio1 ; if not, not UNA, check others
;
ld bc,$04FA ; UNA: get BIOS date and version
rst 08 ; DE := ver, HL := date
;
ld a,2 ; UNA BIOS id = 2
ret ; and done
;
idbio1:
; Check for RomWBW (HBIOS)
ld hl,($FFFE) ; HL := HBIOS ident location
ld a,'W' ; First byte of ident
cp (hl) ; Compare
jr nz,idbio2 ; Not HBIOS
inc hl ; Next byte of ident
ld a,~'W' ; Second byte of ident
cp (hl) ; Compare
jr nz,idbio2 ; Not HBIOS
;
ld b,bf_sysver ; HBIOS: VER function
ld c,0 ; required reserved value
rst 08 ; DE := version, L := platform id
;
ld a,1 ; HBIOS BIOS id = 1
ret ; and done
;
idbio2:
; No idea what this is
xor a ; Setup return value of 0
ret ; and done
;
; Print character in A without destroying any registers
@ -375,8 +433,13 @@ erruse: ; command usage error (syntax)
errprm: ; command parameter error (syntax)
ld de,msgprm
jr err
;
errbio: ; invalid BIOS or version
ld de,msgbio
jr err
;
err: ; print error string and return error signal
call crlf ; print newline
call crlf2 ; print newline
;
err1: ; without the leading crlf
call prtstr ; print error string
@ -407,5 +470,7 @@ msguse .db "Usage: TIMER [/C] [/?]",13,10
.db " TIMER /? (display version and usage)",13,10
.db " TIMER /C (display timer value continuously)",0
msgprm .db "Parameter error (TIMER /? for usage)",0
msgbio .db "Incompatible BIOS or version, "
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
;
.end

2
Source/Apps/XM/Build.cmd

@ -16,4 +16,4 @@ zx mload25 XM=xmdm125,xmhb
rem set PROMPT=[Build] %PROMPT%
rem %comspec%
move /Y XM.com ..
copy /Y XM.com ..\..\..\Binary\Apps\

2
Source/Apps/XM/Clean.cmd

@ -4,4 +4,4 @@ setlocal
if exist *.hex del *.hex
if exist *.prn del *.prn
if exist *.lst del *.lst
if exist xm.com del xm.com
if exist *.com del *.com

2
Source/CBIOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.0-pre.0"
#DEFINE BIOSVER "2.9.0"

11
Source/HBIOS/Build.ps1

@ -51,6 +51,8 @@ $ComFile = "${OutDir}/${RomName}.com"
$ImgFile = "${OutDir}/${RomName}.img"
if ($Platform -eq "UNA") {$CBiosFile = '../CBIOS/cbios_una.bin'} else {$CBiosFile = '../CBIOS/cbios_wbw.bin'}
$RomApps = "assign","fdu","format","mode","osldr","rtc","survey","syscopy","sysgen","talk","timer","xm"
""
"Building ${RomName}: ${ROMSize}KB ROM configuration ${Config} for Z${CPUType}..."
""
@ -129,7 +131,14 @@ if (Test-Path "../RomDsk/${Platform}/*.*")
{
cpmcp -f $RomFmt $RomDiskFile ../RomDsk/${Platform}/*.* 0:
}
cpmcp -f $RomFmt $RomDiskFile ../Apps/*.com 0:
foreach ($App in $RomApps)
{
cpmcp -f $RomFmt $RomDiskFile ../../Binary/Apps/$App.com 0:
}
# cpmcp -f $RomFmt $RomDiskFile ../Apps/*.com 0:
cpmcp -f $RomFmt $RomDiskFile *.sys 0:
if ($Platform -eq "UNA")

2
Source/HBIOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.0-pre.0"
#DEFINE BIOSVER "2.9.0"

265
Source/Images/ReadMe.txt

@ -1,70 +1,51 @@
************************************************************
*** I m a g e M a k e r ***
*** ***
*** Disk Image Generator for RomWBW ***
************************************************************
Builders: Wayne Warthen (wwarthen@gmail.com)
Updated: 2014-02-16
Version: 2.5.3
This is a supplemental toolset for RomWBW that builds
floppy and/or hard disk images that can be used on
RomWBW by writing the image to a floppy or hard
disk (include CF and SD cards).
In summary, CP/M files are placed inside of a pre-defined
Windows directory structure. A script is then run to
create floppy and/or hard disk images from the directory
tree contents. The resultant images may be copied directly
to floppy or hard disk media or used for SIMH emulator
disk images.
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains a toolset for RomWBW that builds floppy and
hard disk media images that can be used on RomWBW by writing the
image to a floppy or hard disk (including CF and SD cards).
In summary, CP/M files are placed inside of a pre-defined Windows
directory structure. A script is then run to create the floppy and
hard disk images from the directory tree contents. The resultant
images may be copied directly to floppy or hard disk media or used
for SIMH emulator disk images.
System Requirements
-------------------
This ImageMaker scripts run on Microsoft Windows XP
or greater (32 and 64 bit variants of Windows are
fine).
Other than the contents of the ImageMaker zip archive,
you will need to have Microsoft PowerShell installed.
All variants of Windows XP and later support PowerShell.
It is included in all versions after Windows XP. If you
are using Windows XP, you will need to download it from
Microsoft and install it (free download).
By default, PowerShell will not run arbitrary scripts
that are not signed. In order to run the ImageMaker
scripts, you will need to tell PowerShell it is OK
to run run "local" scripts that are not signed.
Right-click the file in the ImageMaker archive
called FixPowerShell and choose "Run as Administrator"
and follow the instructions.
The scripts run on Microsoft Windows XP or greater (32 and 64 bit
variants of Windows are fine). You will need to have Microsoft
PowerShell installed. All variants of Windows XP and later support
PowerShell. It is included in all versions after Windows XP. If you
are using Windows XP, you will need to download it from Microsoft and
install it (free download).
The cpmtools toolset is used to generate the actual disk images.
This toolset is included in the distribution.
Preparing the Source Directory Contents
---------------------------------------
The ImageMaker script expects your files to be found
in the Source directory inside a specific directory
structure. Note that you will see there are some
CP/M files in the Source directory tree in the
distribution. These are simply test files I used
and have no specific meaing. You will probably want
to replace them with your own files as desired.
If you look at the Source directory, you will find
4 directories. fd0 and fd1 will contain the files
to be placed in the two floppy images gneerated.
hd0 and hd1 will contain the files to be used
to generate the two hard disk images. There
is nothing magic about the fact that there are
two of each kind of image generated. It just
seemed like a good number to the author. A quick
review of the scripts and you will see it is very
easy to modify the number of images generated if
you want.
The script expects your files to be found inside a specific directory
structure. Note that you will see there are some CP/M files in the
Source directory tree in the distribution. These are simply test
files I used and have no specific meaing. You will probably want to
replace them with your own files as desired.
If you look at the Images directory, you will find 4
sub-directories. fd0 and fd1 will contain the files to be placed in
the two floppy images gneerated. hd0 and hd1 will contain the files
to be used to generate the two hard disk images. There is nothing
magic about the fact that there are two of each kind of image
generated. It just seemed like a good number to the author. A quick
review of the scripts and you will see it is very easy to modify the
number of images generated if you want.
For floppy disks, the structure is:
@ -73,18 +54,16 @@ For floppy disks, the structure is:
|
+--> u15
Above, fd0 refers to the first floppy disk image and
u0...u15 refer to the user areas on the disk. You
place whatever files you want on fd0, user 0 in the
fd0\u0 directory. You will notice that not all of the
u0...u15 directories exist. The script does not care
and treats a non-existent directory as a directory with
no files. The fd1 directory is exactly the same as fd0 --
it is simply the second floppy image.
Above, fd0 refers to the first floppy disk image and u0...u15 refer
to the user areas on the disk. You place whatever files you want on
fd0, user 0 in the fd0\u0 directory. You will notice that not all of
the u0...u15 directories exist. The script does not care and treats
a non-existent directory as a directory with no files. The fd1
directory is exactly the same as fd0 -- it is simply the second
floppy image.
At present, the scripts assume that the floppy media
is 1.44MB. You will need to modify the scripts if you
want to create different media.
At present, the scripts assume that the floppy media is 1.44MB. You
will need to modify the scripts if you want to create different media.
For hard disks, the structure has one more level:
@ -108,56 +87,49 @@ For hard disks, the structure has one more level:
|
+--> u15
The above uses the same concept as the floppy disk source
structure, but includes an additional directory layer to
represent the first 4 slices of the hard disk. For most
RomWBW builds, s0-s3 would show up as the first 4 hard
disk drive letters, frequently E: to H:.
No files should be placed in the first two layers of the
tree (hd0 or s0-s3). All files go into the lowest level
of the tree (u0-u15). As above, empty or non-existent
directories are not a problem for the script. Just fill
in or create the appropriate directories. The only constraint
is the the script will only look for two hard disks (hd0-hd1),
4 slices (s0-s4), and 16 user areas (u0-u15). The
number of hard disks and number of slices could be changed
by modifying the generation scripts.
The above uses the same concept as the floppy disk source structure,
but includes an additional directory layer to represent the first 4
slices of the hard disk. For most RomWBW builds, s0-s3 would show up
as the first 4 hard disk drive letters, frequently E: to H:.
No files should be placed in the first two layers of the tree (hd0 or
s0-s3). All files go into the lowest level of the tree (u0-u15). As
above, empty or non-existent directories are not a problem for the
script. Just fill in or create the appropriate directories. The
only constraint is the the script will only look for two hard disks
(hd0-hd1), 4 slices (s0-s4), and 16 user areas (u0-u15). The number
of hard disks and number of slices could be changed by modifying the
generation scripts.
Building the Images
-------------------
The image creation process simply traverses the directory
structures described above and builds a raw image each
floppy disk or hard disk. Note that cpmtools is used
to generate the images and is included in the archive
under the Tools directory.
The scripts are intended to be run from a command
prompt. Open a command prompt and navigate to the
ImageMaker directory. To build the floppy disk
images (fd0 and fd1), use the command "BuildFD".
To build the hard disk images (hd0, hd1), use the
command "BuildHD". You can use the command
"BuildAll" to build both the floppy and hard
disk images in one run.
After completion of the script, the resultant image
files are placed in the Output directory with names
such as fd0.img and hd0.img.
Below is sample output from building the
hard disk images:
| C:\Users\WWarthen\Projects\N8VEM\Build\ImageMaker>BuildHD
The image creation process simply traverses the directory structures
described above and builds a raw image each floppy disk or hard
disk. Note that cpmtools is used to generate the images and is
included in the distribution under the Tools directory.
The scripts are intended to be run from a command prompt. Open a
command prompt and navigate to the Images directory. To build the
floppy disk images (fd0 and fd1), use the command "BuildFD". To build
the hard disk images (hd0, hd1), use the command "BuildHD". You can
use the command "BuildAll" to build both the floppy and hard disk
images in one run.
After completion of the script, the resultant image files are placed
in the Binary directory with names such as fd0.img and hd0.img.
Below is sample output from building the hard disk images:
| C:\Users\WWarthen\Projects\N8VEM\Build\RomWBW\Images>BuildHD
| Creating work file...
| Creating hard disk images...
| Generating Hard Disk 0...
| Adding files to slice 0...
| cpmcp -f n8vem_hd0 slice0.tmp Source/hd0/s0/u0/*.* 0:
| cpmcp -f n8vem_hd0 slice0.tmp Source/hd0/s0/u2/*.* 2:
| cpmcp -f wbw_hd0 slice0.tmp Source/hd0/s0/u0/*.* 0:
| cpmcp -f wbw_hd0 slice0.tmp Source/hd0/s0/u2/*.* 2:
| Adding files to slice 1...
| cpmcp -f n8vem_hd0 slice1.tmp Source/hd0/s1/u0/*.* 0:
| cpmcp -f wbw_hd0 slice1.tmp Source/hd0/s1/u0/*.* 0:
| Adding files to slice 2...
| Adding files to slice 3...
| Combining slices into final disk image hd0...
@ -178,41 +150,36 @@ hard disk images:
| slice3.tmp
| 1 file(s) copied.
|
| C:\Users\WWarthen\Projects\N8VEM\Build\ImageMaker>
| C:\Users\WWarthen\Projects\N8VEM\Build\RomWBW\Images>
Be aware that the script always builds the image file
from scratch. It will not update the previous contents.
Any contents of a pre-existing image file will be
permanently destroyed.
Be aware that the script always builds the image file from scratch.
It will not update the previous contents. Any contents of a
pre-existing image file will be permanently destroyed.
Installing Images
-----------------
First of all, a MAJOR WARNING!!!! The tools described
below are quite capable of obliterating your running
Windows system drive. Use with extreme caution and
make sure you have backups.
First of all, a MAJOR WARNING!!!! The tools described below are
quite capable of obliterating your running Windows system drive. Use
with extreme caution and make sure you have backups.
To install a floppy image on floppy media, you can use
the tool called RaWriteWin. This tool is included in the
Tools directory of the distribution.
This tool will write your floppy image (fd0.img or fd1.img)
to a floppy disk using a raw block transfer. The tool is
To install a floppy image on floppy media, you can use the tool
called RaWriteWin. This tool is included in the Tools directory of
the distribution. This tool will write your floppy image (fd0.img or
fd1.img) to a floppy disk using a raw block transfer. The tool is
GUI based and it's operation is self explanatory.
To install a hard disk image on a CF card or SD card, you
must have the appropriate media card slot on your computer.
If you do, you can use the tool called Win32 Disk Imager.
This tool is also included in the Tools directory of the
distribution. This tool will write your hard disk
image (hd0.img or hd1.img) to the designated media
card. This tool is also GUI based and self explanatory.
To install a hard disk image on a CF card or SD card, you must have
the appropriate media card slot on your computer. If you do, you can
use the tool called Win32 Disk Imager. This tool is also included in
the Tools directory of the distribution. This tool will write your
hard disk image (hd0.img or hd1.img) to the designated media card.
This tool is also GUI based and self explanatory.
Use of the SIMH emulator is outside of the scope of this
document. However, if you use SIMH, you will find that
you can attach the hard disk images to the emulator with
lines such as the following in your SIMH configuration
file:
Use of the SIMH emulator is outside of the scope of this document.
However, if you use SIMH, you will find that you can attach the hard
disk images to the emulator with lines such as the following in your
SIMH configuration file:
| attach hdsk0 hd0.img
| set hdsk0 format=HDSK
@ -222,19 +189,16 @@ file:
Making Disk Images Bootable
---------------------------
The current generation of these scripts does not make
the resultant media bootable. This is primarily because
there are multiple choices for what you can put on the
boot tracks of the media and that is a choice best left
to the user.
The current generation of these scripts does not make the resultant
media bootable. This is primarily because there are multiple choices
for what you can put on the boot tracks of the media and that is a
choice best left to the user.
The simplest way to make a resultant image bootable is
to do it from your running CP/M system. Boot your
system using the ROM selection, then use the COPYSYS
command to make the desired drive bootable.
The simplest way to make a resultant image bootable is to do it from
your running CP/M system. Boot your system using the ROM selection,
then use the COPYSYS command to make the desired drive bootable.
You would use a command like the following to make
drive C bootable.
You would use a command like the following to make drive C bootable.
| B>COPYSYS C:=CPM.SYS
@ -242,5 +206,6 @@ Notes
-----
I realize these instructions are very minimal. I am happy to answer
questions. You will find the Google Group 'N8VEM' to be a great
source of information as well.
questions. You will find the RetroBrew Computers Forum at
https://www.retrobrewcomputers.org/forum/ to be a great source of
information as well.

BIN
Source/Images/fd1/u0/ASM.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/CLRDIR.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/CR.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/DDT.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/DDTZ.COM

Binary file not shown.

564
Source/Images/fd1/u0/DDTZ.DOC

@ -1,564 +0,0 @@
DDTZ v2.7
by C.B. Falconer
edited by George A. Havach
Introduction:
============
DDTZ v2.7 is a complete replacement for DDT, Digital Research's
famous Dynamic Debugging Tool, with improved functionality, bug
extermination, and full Z80 support. In general, DDTZ is fully
compatible with the original utility, but it has extra and
extended commands and many fewer quirks. All Z80-specific
instructions can be (dis)assembled, though in Intel rather then
Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U'
commands) both 8080 and Z80 instructions, depending on which CPU
is operating. On startup, the program announces which CPU it is
running on.
DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test
for a 64180 CPU, since this cannot be done without executing
illegal Z80 instructions, which in turn will crash some
simulators. However v2.7 does not execute any 64180 instructions
internally, only in the subject program.
This issue supplies the "M" version assembled, to avoid errors
when switching between MSDOS and CPM systems. The command table
is updated accordingly. Most CPM users are also MSDOS users, but
not vice-versa.
The program is invoked by typing
ddtz<ret>
or
ddtz [d:]filespec<ret>
In the second form, DDTZ will load the specified file into
memory starting at 0100H, unless it's a .HEX file that sets its
own load address. Besides reporting the NEXT free address and
the PC (program counter) after a successful load, DDTZ also shows
the number of memory pages needed for a SAVE. Instead of having
to write all this down, just use the 'X' command at any time to
redisplay these three values for the current application.
NOTE: loading more code above the NEXT pointer revises these
values.
As in DDT, when a program is loaded above the area holding the
'A' and 'U' (and now 'W') command code, these commands are
disabled, and the extra memory is released to the user. Thus,
DDTZ can occupy as little as 3K total memory space. Unlike DDT,
however, DDTZ will not overwrite itself or the system on program
loads (except .HEX files).
At initialization, the stack pointer (SP) points to a return to
DDTZ, just like for the CCP. Thus, programs that normally return
to the CCP will be returned to DDTZ. The 'B' command
reinitializes this condition.
The intercept vector copies the BDOS version number, etc., so
an object program does not know that DDTZ is running (except
for BIOS-BDOS vector size). Thus, programs that check the version
number should execute correctly under DDTZ.
All input parameters can now be entered in any of three formats:
(1) hexadecimal (as in DDT),
(2) decimal, by adding a leading '#' character,
(3) ASCII, by enclosing between either single or double
quotes; either one or two characters are allowed.
Leading blanks in command lines and parameters are absorbed.
Either a comma or a (single) space is a valid delimiter.
Either uppercase or lowercase input is accepted.
The default command (for anything not otherwise recognizable)
is 'H'. This allows convenient calculation, along with the other
features described below. So, to convert a number, just enter
it!
As in DDT, the prompt character is '-', and the only error
message is the query ('?'), which generally kicks you back to
command mode.
New Commands (Over DDT):
=======================
NOTE: letters in parenthesis, e.g. "(U)", show the equivalent
command for DDTZM version (compatible with MSDOS debug).
@ Sets or shows (with no parameter) the internally stored
"base" value. Also used with the 'S' and 'D' commands as
an optional parameter (though without the '@') to display
memory from an arbitrary base marker (offset). When set to
zero (the default), it does not affect any screen displays.
B B)egin: resets the USER stack pointer to its initial value,
such that any program that exits by an RET will return to
DDTZ. DDTZ provides a default stack space of
approximately 24 bytes for user programs.
C C)ompare first_address,last_address,against_address: shows
all the byte differences between two memory areas, in the
format
XXXX aa YYYY bb
where XXXX and YYYY are the comparative memory addresses,
and aa and bb are the corresponding byte values. Can be
used to verify the identity of two files by first
loading them into different memory areas with the 'R'
command (see below).
W Write: stores the modified memory area to disk under the
(K) filename specified by the 'I' command, overwriting the
original file from which it was loaded (the user is queried
before doing so). By default, the image of memory from
0100H through the "NEXT" value -1 is saved. "K first_addr,
last_address" overrides this and allows writing ANY memory
area to a file. Almost a necessity for CPM 3.0 (no SAVE!).
K)eep on DDTZ
X eXamine: redisplays the "NEXT PC SAVE" report at any time.
(Q) Q)uery size on DDTZ.
S S)earch first_address, last_addr, value: searches the
(W) specified memory area for the value (a 16-bit word, not a
byte) and shows the locations of all such. Very useful for
finding CALL's or JMP's to a particular address, etc.
W)here on DDTZ
Y Y)our_option parm1,parm2,address: executes an arbitrary
routine at the specified address, with the BC and DE
registers set to parm1 and parm2, respectively.
Z Displays (but does not alter) the Z80's alternate register
set, including the index registers (disabled if running on
an 8080). On Z80's, automatically included as the last
part of the display by the 'X' command.
Based (Offset) Displays:
=======================
The 'D' and 'E' commands can use a stored base value (offset),
as set by the '@' command. The current @ value may be
overridden for a single execution of these commands by adding the
base as an extra parameter in the command line. The effect is
to add this value to the first/last address and display
accordingly. The address listing on the left becomes XXXX:YYYY,
where XXXX is the offset address and YYYY is the actual memory
address being displayed. For example, if you have a data area
located at 42B7H and wish to preserve easy access, just enter
"@42b7". Now, "d0,3f" will dump memory starting at 4237H.
Further Changes from DDT:
========================
A A)ssemble now accepts the full Z80 as well as 8080
instruction set, although it expects them in Intel rather
than Zilog format (see notes below under the 'L'
command). When in doubt, see the mnemnonic list below.
D D)isplay or D)ump will accept an optional third parameter
to set the base value for a single execution only. Format
has been cleaned up.
H H)ex_arithmetic on two values also shows their
difference in decimal. With only one value, converts to
hexadecimal, decimal, and ASCII (low-order byte only).
N N)ame now allows drive specification (d:...) and sets up
(I) the complete command line, including both FCB's (at
addresses 005CH and 006CH). The tail (stored at 0081H up)
is NOT upshifted.
I)nput on DDTZ
U U)nassemble now displays the raw hexcode, especially handy
(L) when examining non-code areas. Intel (8080 style) mnemonics
are used, so some disassembled instructions may look
strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become
'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes
'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)'
becomes 'PCIX'.
L)ist on DDTZ
L L)oad now permits loading a file into memory with an
(R) offset, which is added to the default load address of
0100H. When reading in a .HEX file with a preset bias,
the 'R' command will not transfer control to an invalid
execution point. Another execution of the 'R' command will
reread the input file, e.g.:
n blah<ret>
l<ret>
...modify the code and generally mess about...
l<ret>
The original file is reloaded, and the modifications are
removed.
R)ead on DDTZ
E E)nter, like D)isplay, now accepts an optional second
(S) parameter to set the base value for a single execution
only.
S)ubstitute or S)et on DDTZ
T T)rap/trace on termination now shows the complete CPU
state. Traps and traces no longer lock up when a user RST
7 instruction is executed. Tracing of BDOS/BIOS calls is
heavily trun cated, avoiding clutter and preventing system
crashes.
NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others
can crash the system.
R R)egisters also shows what two-byte values the HL and SP
(X) registers are actually pointing to. On Z80's, displays the
alternate register set.
eX)amine on DDTZ
NOTE: Any use of the 'W' or 'L' command resets the system DMA
transfer address to the standard default value of 0080H.
; This is the output of DDTZ when disassembling OPTYPE.TRY
NOP LDA 06A4 MOV M,H
LXI B,06A4 DCX SP MOV M,L
STAX B INR A HLT
INX B DCR A MOV M,A
INR B MVI A,20 MOV A,B
DCR B CMC MOV A,C
MVI B,20 MOV B,B MOV A,D
RLC MOV B,C MOV A,E
EXAF MOV B,D MOV A,H
DAD B MOV B,E MOV A,L
LDAX B MOV B,H MOV A,M
DCX B MOV B,L MOV A,A
INR C MOV B,M ADD B
DCR C MOV B,A ADD C
MVI C,20 MOV C,B ADD D
RRC MOV C,C ADD E
DJNZ 0134 MOV C,D ADD H
LXI D,06A4 MOV C,E ADD L
STAX D MOV C,H ADD M
INX D MOV C,L ADD A
INR D MOV C,M ADC B
DCR D MOV C,A ADC C
MVI D,20 MOV D,B ADC D
RAL MOV D,C ADC E
JR 0134 MOV D,D ADC H
DAD D MOV D,E ADC L
LDAX D MOV D,H ADC M
DCX D MOV D,L ADC A
INR E MOV D,M SUB B
DCR E MOV D,A SUB C
MVI E,20 MOV E,B SUB D
RAR MOV E,C SUB E
JRNZ 0134 MOV E,D SUB H
LXI H,06A4 MOV E,E SUB L
SHLD 06A4 MOV E,H SUB M
INX H MOV E,L SUB A
INR H MOV E,M SBB B
DCR H MOV E,A SBB C
MVI H,20 MOV H,B SBB D
DAA MOV H,C SBB E
JRZ 0134 MOV H,D SBB H
DAD H MOV H,E SBB L
LHLD 06A4 MOV H,H SBB M
DCX H MOV H,L SBB A
INR L MOV H,M ANA B
DCR L MOV H,A ANA C
MVI L,20 MOV L,B ANA D
CMA MOV L,C ANA E
JRNC 0134 MOV L,D ANA H
LXI SP,06A4 MOV L,E ANA L
STA 06A4 MOV L,H ANA M
INX SP MOV L,L ANA A
INR M MOV L,M XRA B
DCR M MOV L,A XRA C
MVI M,20 MOV M,B XRA D
STC MOV M,C XRA E
JRC 0134 MOV M,D XRA H
DAD SP MOV M,E XRA L
XRA M JPE 06A4 SLAR M
XRA A XCHG SLAR A
ORA B CPE 06A4 SRAR B
ORA C XRI 20 SRAR C
ORA D RST 5 SRAR D
ORA E RP SRAR E
ORA H POP PSW SRAR H
ORA L JP 06A4 SRAR L
ORA M DI SRAR M
ORA A CP 06A4 SRAR A
CMP B PUSH PSW SLLR B
CMP C ORI 20 SLLR C
CMP D RST 6 SLLR D
CMP E RM SLLR E
CMP H SPHL SLLR H
CMP L JM 06A4 SLLR L
CMP M EI SLLR M
CMP A CM 06A4 SLLR A
RNZ CPI 20 SRLR B
POP B RST 7 SRLR C
JNZ 06A4 RLCR B SRLR D
JMP 06A4 RLCR C SRLR E
CNZ 06A4 RLCR D SRLR H
PUSH B RLCR E SRLR L
ADI 20 RLCR H SRLR M
RST 0 RLCR L SRLR A
RZ RLCR M BIT 0,B
RET RLCR A BIT 0,C
JZ 06A4 RRCR B BIT 0,D
CZ 06A4 RRCR C BIT 0,E
CALL 06A4 RRCR D BIT 0,H
ACI 20 RRCR E BIT 0,L
RST 1 RRCR H BIT 0,M
RNC RRCR L BIT 0,A
POP D RRCR M BIT 1,B
JNC 06A4 RRCR A BIT 1,C
OUT 20 RALR B BIT 1,D
CNC 06A4 RALR C BIT 1,E
PUSH D RALR D BIT 1,H
SUI 20 RALR E BIT 1,L
RST 2 RALR H BIT 1,M
RC RALR L BIT 1,A
EXX RALR M BIT 2,B
JC 06A4 RALR A BIT 2,C
IN 20 RARR B BIT 2,D
CC 06A4 RARR C BIT 2,E
SBI 20 RARR D BIT 2,H
RST 3 RARR E BIT 2,L
RPO RARR H BIT 2,M
POP H RARR L BIT 2,A
JPO 06A4 RARR M BIT 3,B
XTHL RARR A BIT 3,C
CPO 06A4 SLAR B BIT 3,D
PUSH H SLAR C BIT 3,E
ANI 20 SLAR D BIT 3,H
RST 4 SLAR E BIT 3,L
RPE SLAR H BIT 3,M
PCHL SLAR L BIT 3,A
BIT 4,B RES 3,D SET 2,H
BIT 4,C RES 3,E SET 2,L
BIT 4,D RES 3,H SET 2,M
BIT 4,E RES 3,L SET 2,A
BIT 4,H RES 3,M SET 3,B
BIT 4,L RES 3,A SET 3,C
BIT 4,M RES 4,B SET 3,D
BIT 4,A RES 4,C SET 3,E
BIT 5,B RES 4,D SET 3,H
BIT 5,C RES 4,E SET 3,L
BIT 5,D RES 4,H SET 3,M
BIT 5,E RES 4,L SET 3,A
BIT 5,H RES 4,M SET 4,B
BIT 5,L RES 4,A SET 4,C
BIT 5,M RES 5,B SET 4,D
BIT 5,A RES 5,C SET 4,E
BIT 6,B RES 5,D SET 4,H
BIT 6,C RES 5,E SET 4,L
BIT 6,D RES 5,H SET 4,M
BIT 6,E RES 5,L SET 4,A
BIT 6,H RES 5,M SET 5,B
BIT 6,L RES 5,A SET 5,C
BIT 6,M RES 6,B SET 5,D
BIT 6,A RES 6,C SET 5,E
BIT 7,B RES 6,D SET 5,H
BIT 7,C RES 6,E SET 5,L
BIT 7,D RES 6,H SET 5,M
BIT 7,E RES 6,L SET 5,A
BIT 7,H RES 6,M SET 6,B
BIT 7,L RES 6,A SET 6,C
BIT 7,M RES 7,B SET 6,D
BIT 7,A RES 7,C SET 6,E
RES 0,B RES 7,D SET 6,H
RES 0,C RES 7,E SET 6,L
RES 0,D RES 7,H SET 6,M
RES 0,E RES 7,L SET 6,A
RES 0,H RES 7,M SET 7,B
RES 0,L RES 7,A SET 7,C
RES 0,M SET 0,B SET 7,D
RES 0,A SET 0,C SET 7,E
RES 1,B SET 0,D SET 7,H
RES 1,C SET 0,E SET 7,L
RES 1,D SET 0,H SET 7,M
RES 1,E SET 0,L SET 7,A
RES 1,H SET 0,M DADX B
RES 1,L SET 0,A DADX D
RES 1,M SET 1,B LXI X,06A4
RES 1,A SET 1,C SIXD 06A4
RES 2,B SET 1,D INX X
RES 2,C SET 1,E DADX X
RES 2,D SET 1,H LIXD 06A4
RES 2,E SET 1,L DCX X
RES 2,H SET 1,M INR [X+05]
RES 2,L SET 1,A DCR [X+05]
RES 2,M SET 2,B MVI [X+05],20
RES 2,A SET 2,C DADX SP
RES 3,B SET 2,D MOV B,[X+05]
RES 3,C SET 2,E MOV C,[X+05]
MOV D,[X+05] DSBC B DADY B
MOV E,[X+05] SBCD 06A4 DADY D
MOV H,[X+05] NEG LXI Y,06A4
MOV L,[X+05] RETN SIYD 06A4
MOV [X+05],B IM0 INX Y
MOV [X+05],C LDIA DADY Y
MOV [X+05],D INP C LIYD 06A4
MOV [X+05],E OUTP C DCX Y
MOV [X+05],H DADC B INR [Y+05]
MOV [X+05],L LBCD 06A4 DCR [Y+05]
MOV [X+05],A RETI MVI [Y+05],2
MOV A,[X+05] LDRA DADY SP
ADD [X+05] INP D MOV B,[Y+05]
ADC [X+05] OUTP D MOV C,[Y+05]
SUB [X+05] DSBC D MOV D,[Y+05]
SBB [X+05] SDED 06A4 MOV E,[Y+05]
ANA [X+05] IM1 MOV H,[Y+05]
XRA [X+05] LDAI MOV L,[Y+05]
ORA [X+05] INP E MOV [Y+05],B
CMP [X+05] OUTP E MOV [Y+05],C
POP X DADC D MOV [Y+05],D
XTIX LDED 06A4 MOV [Y+05],E
PUSH X IM2 MOV [Y+05],H
PCIX LDAR MOV [Y+05],L
SPIX INP H MOV [Y+05],A
RLCR [X+05] OUTP H MOV A,[Y+05]
RRCR [X+05] DSBC H ADD [Y+05]
RALR [X+05] shld 06A4 ADC [Y+05]
RARR [X+05] RRD SUB [Y+05]
SLAR [X+05] INP L SBB [Y+05]
SRAR [X+05] OUTP L ANA [Y+05]
SRLR [X+05] DADC H XRA [Y+05]
BIT 0,[X+05] lhld 06A4 ORA [Y+05]
BIT 1,[X+05] RLD CMP [Y+05]
BIT 2,[X+05] INP M POP Y
BIT 3,[X+05] OUTP M XTIY
BIT 4,[X+05] DSBC SP PUSH Y
BIT 5,[X+05] SSPD 06A4 PCIY
BIT 6,[X+05] INP A SPIY
BIT 7,[X+05] OUTP A RLCR [Y+05]
RES 0,[X+05] DADC SP RRCR [Y+05]
RES 1,[X+05] LSPD 06A4 RALR [Y+05]
RES 2,[X+05] LDI RARR [Y+05]
RES 3,[X+05] CCI SLAR [Y+05]
RES 4,[X+05] INI SRAR [Y+05]
RES 5,[X+05] OTI SRLR [Y+05]
RES 6,[X+05] LDD BIT 0,[Y+05]
RES 7,[X+05] CCD BIT 1,[Y+05]
SET 0,[X+05] IND BIT 2,[Y+05]
SET 1,[X+05] OTD BIT 3,[Y+05]
SET 2,[X+05] LDIR BIT 4,[Y+05]
SET 3,[X+05] CCIR BIT 5,[Y+05]
SET 4,[X+05] INIR BIT 6,[Y+05]
SET 5,[X+05] OTIR BIT 7,[Y+05]
SET 6,[X+05] LDDR RES 0,[Y+05]
SET 7,[X+05] CCDR RES 1,[Y+05]
INP B INDR RES 2,[Y+05]
OUTP B OTDR RES 3,[Y+05]
RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05]
RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05]
RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05]
RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05]
; These are the result of disassembling 64180OPS.TRY
; These opcodes are available ONLY on the 64180 CPU
; DDTZ will both assemble and disassemble these.
IN0 B,20 TST E MLT B
OUT0 20,B IN0 H,20 MLT D
TST B OUT0 20,H TSTI 20
IN0 C,20 TST H MLT H
OUT0 20,C IN0 L,20 TSIO 20
TST C OUT0 20,L SLP
IN0 D,20 TST L MLT SP
OUT0 20,D TST M OTIM
TST D IN0 A,20 OTDM
IN0 E,20 OUT0 20,A OIMR
OUT0 20,E TST A ODMR
; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY.
; DDTZ will disassemble these, but will not assemble them.
; They use xh/xl (or yh/yl) as separate byte registers.
; Use these at your own risk.
INRX H ACXR H MOVY H,B
DCRX H ACXR L MOVY H,C
MVIX H,20 SUXR H MOVY H,D
INRX L SUXR L MOVY H,E
DCRX L SBXR H MOVY H,A
MVIX L,20 SBXR L MOVY L,B
MOVX B,H NDXR H MOVY L,C
MOVX B,L NDXR L MOVY L,D
MOVX C,H XRXR H MOVY L,E
MOVX C,L XRXR L MOVY L,A
MOVX D,H ORXR H MOVY A,H
MOVX D,L ORXR L MOVY A,L
MOVX E,H CPXR H ADYR H
MOVX E,L CPXR L ADYR L
MOVX H,B INRY H ACYR H
MOVX H,C DCRY H ACYR L
MOVX H,D MVIY H,20 SUYR H
MOVX H,E INRY L SUYR L
MOVX H,A DCRY L SBYR H
MOVX L,B MVIY L,20 SBYR L
MOVX L,C MOVY B,H NDYR H
MOVX L,D MOVY B,L NDYR L
MOVX L,E MOVY C,H XRYR H
MOVX L,A MOVY C,L XRYR L
MOVX A,H MOVY D,H ORYR H
MOVX A,L MOVY D,L ORYR L
ADXR H MOVY E,H CPYR H
ADXR L MOVY E,L CPYR L
Command Summary:
===============
DDTZM command DDTZ command
============= ============
@ (base)
A)ssemble first_address A
B)egin {i.e., initialize stack and return} B
C)ompare first_address,last_address,against_address C
D)ump first_address[,last_address[,base]] D
E)nter_in_memory first_address[,base] S)ubstitute
F)ill first_address,last_address,value F
G)o_to [address][,trap1[,trap2]] G
H)ex_arithmetic value1(,value2) H
L)oad_file (offset) R)ead
M)ove first_address,last_address,destination M
N)nput FCBs_command_line I)nput
Q)uit (not avail)
R)egister examine/change [register|flag] X)amine
S)earch first_address,last_address,word W)hereis
T)race_execution [count] T
Untrace_execution [count] (i.e. do count instr) U)ntrace
U)nassemble_code first_address[,last_address] L)ist code
W)rite [first_address,last_address] K)eep
X)amine {i.e. display memory parameters for application} Q)uery
Y)our_option BC:=parm1,DE:=parm2,call_address Y
Z)80_register_display Z
If you find this program useful, contributions will be gratefully
accepted and will encourage further development and release of
useful CPM programs. My practice is to include source.
C.B. Falconer
680 Hartford Turnpike,
Hamden, Conn. 06517 (203) 281-1438
DDTZ and its associated documentation and other files are
copyright (c) 1980-1988 by C.B. Falconer. They may be freely
copied and used for non-commercial purposes ONLY.

BIN
Source/Images/fd1/u0/DIF.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/DUMP.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/ED.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/LBREXT.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/LIB.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/LINK.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/LOAD.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/MAC.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/MBASIC.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/NULU.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/PIP.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/RMAC.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/SID.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/STAT.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/SUBMIT.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/SUPERSUB.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/UNARC.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/UNCR.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/UNZIP.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/XSUB.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/ZAP.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/ZDE.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/ZDE40.COM

Binary file not shown.

BIN
Source/Images/fd1/u0/ZDENST.COM

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Attack.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Backup.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/BadMice.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/HowRU.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Iteratn.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/LookBack.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Louboutn.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Namida.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/PTxPlay.com

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Recoll.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Sanxion.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Synch.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/ToStar.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Victory.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Wicked.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/YeOlde.pt3

Binary file not shown.

BIN
Source/Images/hd0/s0/u3/Yeovil.pt3

Binary file not shown.
Loading…
Cancel
Save