IDEDOS 0.9x current state
This will be the manual for the 0.9x IDEDOS if it will get usable.
The IDE64 interface cartridge
The IDE64 cartridge is a device for connecting ATA(PI) devices to a C64/C128 like harddisks, CDROMs and ZIP drives.
It's plugged into the Expansion Port and connected to the device(s) by a 40 wire cable.
The IDE64 cartridge contains a 64Kb PEROM (flash EPROM containing IDEDOS, Machine Code Monitor, File Manager and Setup),
a 28kB RAM (used for internal buffers), a realtime clock chip (powered by a
battery), two LEDs (to indicate the presence of cartridge and device activity),
a Short-BUS for peripherals (like DUART Card) and an ispLSI chip.
CMOS Setup utility
The IDE64 cartridge has a battery backed up clock with some memory (DS1302) used to store the configuration settings and current time.
Of course it works without a battery too using the default settings and no clock. If you do not like the defaults, you can change them here.
You can start the CMOS Setup utility by pressing <- + RESTORE while in interactive mode. (like STOP + RESTORE)
Moveing is done with cursor keys, RETURN selects/changes item, + and - also changes item.
C= and STOP exits submenu, while C= saves setting and STOP discards them in main menu.
Setup does not touch memory range $0800
-$FFFF
so your work won't lost when need to change some settings.
Standard setup
General stuff.
Date, Time
Here's possible to set the built in clock. This has affect on the DATE
command, the file timestamping and on TI$ (see below). The calendar is built in and works in range 1980-2079. (Y2K compatible)
The clock ticks while the computer is turned off.
Paper, border, char color
This affect the default blue screen colors. Same paper and char color not accepted. (not readable and may be confusing)
Start boot file
The file called //:BOOT
can be autostarted from the boot drive at powerup or allways after reset.
The file must be executeable with RUN.
Boot device
The default drivenumber (at $BA
) after reset can be selected here.
(usefull for the dos wedge, monitor and autobooting)
1541 fastloader
Fastloader for the C1541 floppy drive. (and also fast read/write in manager)
Set basic clock
Sets TI$ to the time in the built in clock.
Keyboard repeat
Sets keyboard repeat after reset. (at $028A
)
Lowercase chars
Upper/lowercase chars after reset or STOP + RESTORE
Use dos wedge
You may disable it, if you have JiffyDos installed. For more see below!
C128 keyboard
If cartridge has cartconfig register, support is compiled in, and computer is a C128, it makes use of extra keys on keyboard.
Device numbers
All about device numbers.
LCD display
Device number for LCD display connected to short bus.
Serial device x
Selecting 9 for serial device 8, and 8 for serial device 9 will effectively swap them.
HDD x
Usefull when programs think device number 8 is the only one.
PC-LINK
Virtual drive. Needs serial/parallel cable and a server program on the PC.
Advanced setup
Master/Slave ATA(PI) device configuration.
Power management
Drive spindown time from 1 min to 2 hours in 15 steps. KILL will also spin down the drive if it's enabled.
(your device must support power management!)
Retry on error
Tells the device to retry on error.
Write cache
Will speed up writes if supported by device.
Read look-ahead
Will speed up reads if supported by device.
Slow down cdrom
Selects 200 Kb/s data transfer rate on CDROMs supporting this.
(deactivates the built in jet simulator on 32x or faster CDROMs if enabled)
Linear read max
Maximal sequential read/write allowed by the device. (setting it lower than 128 will degrade the performance of CFS filesystem greatly!)
You should decrease it from 128 if you get ?LOAD ERROR or ?FILE DATA ERROR when loading/saving a big program. (this is very unlikely)
Restore defaults
Does restore the default settings.
Save & exit
Save changes and exit cmos setup. (same as pressing C=)
Discard & exit
Forget changes and exit setup. (same as pressing STOP)
IDE File Manager
IDE File Manager is a software for copying, deleting, renaming, making
directories, and starting programs. Working with this program is
very easy. Start it from BASIC typeing command MAN. Maximal number of files is 510/panel.
Keys:
<- | - | Exit |
CONTROL | - | Change panel |
UP/DOWN | - | Move cursor |
F1/F7 LEFT/RIGHT | - | Page Up/Down |
1 | - | Refresh dir |
3 | - | Execute viewer plugin from boot drive ("//:VIEWER") |
5 | - | Copy file(s) |
6 | - | Rename file(s) |
7 | - | Create directory |
8 | - | Delete file(s) |
. | - | Go into parent dir |
/ | - | Go into root dir |
DEL | - | (Un)select file |
F2/HOME | - | Go on top of listing |
F8/CLR | - | Go to end of listing |
RETURN | - | Enter directory or LOAD"file",x RUN or start viewer plugin |
SHIFT+RETURN | - | LOAD"file",x,1 |
^ | - | Eject/reload media |
* | - | Invert file selection |
+ | - | Select all files |
- | - | Deselect all files |
C= | - | Select drive |
PCLink
Duart/parallel does not work yet.
Monitor
The monitor is designed to be fast and simple, but still usefull for debugging and fixing.
It's possible to edit every single byte in memory and I/O space without conflicting with internal variables of the monitor itself. Illegal opcodes and wildcard searching is included.
The monitor is started by hitting C= + RESTORE at the same time, or by executing a BRK instruction.
If C128 keyboard is enabled it's possible to use HELP to start the monitor.
Ripper mode
is activated by pressing the LEFT SHIFT key and the RESET button at the same time. On C128 the VDC registers are expanded at $D600
-$D6FF
for easier access, the status ($D600
) is copied into the 63th register. The VIC, CIA and color ram setting are updated on exit.
Commands:
@"command" @command @$ | - | Disk command or directory |
A xxxx NOP | - | Assemble |
B xx | - | Memory configuration:
00 -07 : C64
08 -1E : Serial device
1F : VDC memory (C128 only) |
C start end start2 | - | Compare memory |
D {start {end}} | - | Disassemble |
,start xx xx xx | - | Write hex data to memory and disassemble |
EC {start {end}} | - | Edit char (binary) |
[start xxxxxxxx | - | Write binary data to memory |
ES {start {end}} | - | Edit sprite (binary) |
]start xxxxxxxx | - | Write binary sprite data to memory |
F start end xx | - | Fill memory with byte |
G xxxx | - | Push BASIC warm start to stack and start program at xxxx, or execute program in serial device |
H start end xx ? "txt" | - | Search hex/any/ascii |
I {start {end}} | - | Dump memory in ascii |
'start xxxxxxx | - | Write ascii data to memory |
J {start {end}} | - | Dump memory in screencode |
.start xxxxxxx | - | Write screencode data to memory |
L "name" {start} | - | Load memory |
M {start {end}} | - | Dump memory in hex and ascii |
O xx | - | Actual drive |
:start xx xx xx xx | - | Write hex data to memory |
R | - | Show registers (including program counter) |
;xxxx xx xx | - | Change registers |
S "name" start end | - | Save memory |
T start end start2 | - | Copy memory |
V "name" {start} | - | Verify memory |
X | - | Continue program |
Q | - | Exit to BASIC warm start (usefull after hitting a BRK) |
Kernal calls
OPEN
Works for error channel and directory read for CFS/v0.02. File read only for CFS filesystem.
CLOSE
Works. Does update $98
for tape/rs232. If stdin or stdout used a closed file, it's redirected to /dev/null and /dev/zero (actually dev/$c7)
CLRCHN
Works. Does update $99
/$9a
for non-IDE64 files.
CHKIN
Works. Does update $99
for non-IDE64 files.
CHKOUT
Works. Does update $9a
for non-IDE64 files.
CHRIN
Works for error channel and CFS/v0.02 directory read. Does use $A4
-$A5
.
GETIN
Works for error channel and CFS/v0.02 directory read. Does use $A4
-$A5
.
Fixed raster bug with intros/programs using it to scan keyboard.
CHROUT
Works for error channel. Does use $A4
-$A5
. Did some optimization to console printing ;-)
CLALL
Same effect like the kernal one, however closeing the files real would be better.
LOAD
Works on CFS, for v0.02 dir read only.
Loads allways into RAM except loading address starts in range $D800
-$DBFF
.
Gives "OUT OF MEMORY" if:
- Tried to load below
$0334
- Loading reached
$0000
(overflow on memory top)
- Loading reached
$DC00
while loading to COLOR RAM.
For verify set $01
to be able to verify RAM in range $A000
-$BFFF
. Verifying RAM in range $D000
-$FFFF
is not possible.
SAVE
Does not work. (for drive 14 it actually does, but not usefull for test)
Gives "FILE DATA ERROR" if problem happened while saving.
Set $01
to be able to save RAM in range $A000
-$BFFF
. Saving RAM in range $D000
-$FFFF
is not possible.
BLKREAD
Works on CFS files, but is buggy.
BLKWRITE
Does not work.
Command channel
UI
or U9
Works.
UJ
or U:
Buggy.
U0>
(drive number change)
Works.
U0>P
(Power management)
Works.
cP
or CP
(partition change)
Works.
U0>E
(Eject/Load media)
Works.
U0>L
(Lock/Unlock media)
Works.
I
(Initialize)
Buggy.
C
or CD
(Change workdir)
Works.
Command channel error messages
00, OK,000,000,000,000
- No error since last action.
02, PARTITION SELECTED,XXX,000,000,000
- Partition number #XXX was selected.
20, READ ERROR,DP1,DP2,DP3,DP4
- Unrecoverable read error. Maybe a defective disk.
DP1
,DP2
,DP3
,DP4
is drive specific address of sector.
21, READ ERROR,DP1,DP2,DP3,DP4
- Timeout during read.
23, READ ERROR,DP1,DP2,DP3,DP4
- Problem with data checksumm.
26, WRITE PROTECT ON,000,000,000,000
- Write protected file/dir/partition/media.
29, DISK CHANGED,000,000,000,000
- Disk change detected.
30, SYNTAX ERROR,000,000,000,000
- Syntax error in command. (something is missing...)
31, UNKNOWN COMMAND,000,000,000,000
- Unknown/unimplemented command.
32, SYNTAX ERROR,000,000,000,000
- Command buffer overflow.
33, SYNTAX ERROR,000,000,000,000
- Illegal character in filename.
34, SYNTAX ERROR,000,000,000,000
- Missing filename.
39, PATH NOT FOUND,000,000,000,000
- Path not found.
62, FILE NOT FOUND,000,000,000,000
- File not found in directory.
67, ILLEGAL REQUEST,DP1,DP2,DP3,DP4
- Sector's address out of range. (corrupted diskformat while reading not closed file)
71, DIR ERROR,DP1,DP2,DP3,DP4
- No directory header found.
73, IDE DOS Vx.xx IDE64,DP1,DP2,DP3,DP4
73, IDE DOS Vx.xx CDROM,DP1,DP2,DP3,DP4
73, IDE DOS Vx.xx ZIP64,DP1,DP2,DP3,DP4
- Dos version, and drive type.
74, DRIVE NOT READY,000,000,000,000
- No disk in drive.
75, FORMAT ERROR,000,000,000,000
- Disk not in known format. Use format command/utility.
77, SELECTED PARTITION ILLEGAL,XXX,000,000,000
- Partition number #XXX not found/illegal.
BASIC extension
Optimization is quite good. No slowdown for my prime calculator ;-)
HDINIT
Works partially. Currently there's no way to tell it which drives to detect, it just
probes all.
INIT
Works. ;-) Fills memory with nulls, then reset.
DATE
Works. Prints date.
Example:
DATE
SUN MAY 19 13:43:26 2002
READY.
KILL
Switches cartridge off.
Example:
KILL
BYE!
READY.
LOAD
Useing no device number selects last used device. No filename means "*".
Example:
LOAD"$",8
SEARCHING FOR $
LOADING $0801-$099E
READY.
SAVE
Useing no device number selects last used device.
Example:
SAVE"TEST",8
SAVING TEST $0801-$1A43
READY.
VERIFY
Useing no device number selects last used device. No filename means "*".
Example:
VERIFY"TEST",8
SEARCHING FOR TEST
VERIFYING $0801-$1A43
OK
READY.
DOS Wedge
@ (disk command, error channel)
Works, does not return imediatly after sending command to serial bus.
@# (select default drivenumber)
Works, does not detect missing drives.
@$ (display directory)
Works. RUN/STOP too.
/ (load basic)
Works.
% (load assembly)
Works.
' (verify assembly)
Works. No OK message if succesfull.
^ (load and run)
Works, if error happens still typeing rU:
<- (save basic)
Works.
Compatibility FAQ
Commodore serial devices
Of course they work. Will include 1541 fastloader later.
SuperCPU
Should work, not tested on real hardware, only on emulated.
The SCPU IDEDOS expects emulation mode with directpage starting at the 0th byte of bank 0, like normal.
The high byte of register A is not preserved during operation.
RamLink, RetroReplay, Action Replay, Final cartridge
These hardwares use the same I/O space as the IDE64 cartridge, so they won't work.
CMD HD/FD/etc. (serial)
As these are serial devices they should work. They are supported by the manager too.
C128
Works in C64 mode. Inits VDC, clears $D02F
-$D030
.
The cartridge is not designed for 2MHz operation, so do not call IDE64 routines in 2MHz mode!
C128 keyboard is available if cartridge has cartconfig register and support is compiled in.
(Num pad, cursor keys, esc, tab, linefeed are available, help calls monitor, alt and noscroll unused)
JiffyDOS
It's detected. (tested with v6.01) @#<device> does not work with IDE64 drives without DOS Wedge enabled. (but always uses last accessed drive) With DOS Wedge features are missing ;-)
JiffyDos fastload is disabled (meaning 1/3 loading performance on 1541)
NTSC/PAL
Both works.
REU
Works, not touched.
Second SID
Supported if installed at $D438
or $D618
. (volume 0 is set)
+60K
Works, not touched.
Software
Could run everything that worked with older IDEDOS and only required read only mode ;-) Ok, until almost everything is not done yet I do not speak about this...
Forget about autostarting programs...
-Soci/Singular-
Document maintained by:
Kajtár Zsolt
Szigliget
Hóvirág u.15.
8264
Hungary
mail: soci at c64.rulez.org