This will be the manual for the IDE64 interface cartridge with the upcoming IDEDOS 0.9x. Incomplete but planned parts are marked this way,
inserted texts since last version are marked this way, while deleted texts are marked this way.
The IDE64 cartridge was created to provide the fastest I/O and biggest storage capacity available for the C64/C128 computers, at cheap price. It's possible to connect and use ATA(PI) devices to a C64/C128 like harddisks, CDROMs, CompactFlash cards and ZIP drives just like ordinary disk drives. 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.
Make sure that the computer is powered off. The cartridge must be plugged into the expansion so that the chips are on top as seen on the picture. The ATA(PI) devices are connected with a 40 wire IDE-cable to the port on the end of the cartridge. Make sure that the red line on the cable is at pin 1 on both ends. (pin 1 is usually near the reset button on the cartridge, and on power cord side on the devices) 2 devices can be connected on the cable, one is called master, the other slave. It's important that there's only one master and one slave on a cable, so check the jumper setting of your devices.
The external devices need external power too, so connect them to a pc power supply or something similar. AT-style power supplys will work without problems (some require a minimal load to start, so it may not work alone without any devices). ATX-style supplys require that the green wire is connected to a black one, but do this at your own risk without connecting any devices to the supply to minimalize possible damage. (if everything goes well, the cooler must spin up) First test your devices with the supply without connecting to the cartridge to see if everything is ok.
Compact Flash card plugged into the V3.4 version of the cartridge does not require any external power supply. If you want to use an ATA(PI) device and CompactFlash card at the same time, then configure the device as slave, because the CF card is allways master.
Peripherals are connected to the other port of the cartridge with a 34 wire cable similar to the floppy cable in pcs, but without wire swaping. Peripherals do not require any external power.
There's a battery holder on the back of the cartridge. It's strongly recommended to put a battery into it (3 Volt) otherwise the setup settings can't be permanently stored and the file timestamping won't work. If using accu or super cap instead of battery, then enable recharging in the CMOS Setup utility.
When everything is ready, you may turn on your equipment. It's recommended to first turn on the power supply, then the computer, however if you have devices that do not spin-up until the computer is turned on and your AT-supply does not start without load (giving an annoying noise) you must do this the other way around. If your devices are not detected on poweron, try giving HDINIT on the basic prompt. If still nothing, turn off your computer and powersupply, then check the cables and jumper settings. If you suspect that there's some software bug preventing the detection of the device (eg. it works in some other equipment) than contact us on the mailinglist.
If everything is ok the boot screen should come up first (black screen with light-blue characters) with the information on the version of IDEDOS and the connected devices. Then the standard c64 reset screen should appear in less the 30 seconds, depending on the connected devices. Holding down CONTROL will hold the bootup screen, so it can be read. The boot screen only appears on poweron, so if you want to autodetect your devices later to see everything is ok use HDINIT. If there's no boot screen just a standard c64 reset screen without the usual "IDE-DOS xxxxx EXPANDED" you may use the wrong version of IDEDOS. (eg. SuperCPU version on c64, c64 version on SuperCPU, config register version on old cartridge) If "30719 BASIC BYTES FREE" appears that means there's no valid IDEDOS burned into the perom of the cartridge. If "CORRUPT PEROM!" message appears instead of regular boot, than consider rewriting your perom using the perom programmer utility.
To use the builtin selftest of IDEDOS hold down LEFTSHIFT while turning on the computer (or simply use SHIFTLOCK).
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.
The CMOS Setup utility is started by pressing <— + RESTORE while in interactive mode. (like STOP + RESTORE) Moving 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.
General settings.
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. (but requires battery)
This affect the default blue screen colors. Same paper and char color not accepted. (not readable and may be confusing)
The file called "1//:BOOT,PRG" can be autostarted from the boot drive at powerup or allways after reset. The file must be executeable with RUN. Hold C= if you want to skip autoboot, or hold STOP to skip starting of program.
The default drivenumber (at $BA
) after reset can be selected here.
(usefull for the dos wedge, monitor and autobooting)
Fastloader for the C1541 floppy drive. (and also fast read/write in manager)
Sets TI$ to the time in the built in clock.
Sets keyboard repeat after reset. (at $028A
)
Upper/lowercase chars after reset or STOP + RESTORE.
You may disable it, if you have JiffyDos installed. For more see below!
If cartridge has cartconfig register, support is compiled in, and computer is a C128, it makes use of extra keys on keyboard.
Key | Function |
---|---|
ESC | CHR$(27) |
TAB | CHR$(9) |
ALT | -nothing- |
HELP | Enter monitor |
LINE FEED | CHR$(10) |
NO SCROLL | -nothing- |
CURSOR KEYS and NUM PAD | Their usual meaning |
Enables/disables the use of "B=W"
. Cleared on reset. You may have to enable it when creating filesystem.
Selects accu charging current. Leave it on "Battery" if not using accu or super cap. Charging a battery is useless, and some low quality products may even leak if charged.
Device number mapping to drives. -- means device is disabled.
Device number for LCD display connected to short bus.
Device number mapping for serial devices. Selecting 9 for serial device 8, and 8 for serial device 9 will effectively swap them.
Usefull when programs think device number 8 is the only one.
Virtual drive. Needs serial/parallel cable and a server program on the PC.
Master/Slave ATA(PI) device configuration.
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!)
Tells the device to retry on error.
Will speed up writes if supported by device.
Will speed up reads if supported by device.
Selects 255 Kb/s data transfer rate on CDROMs supporting this. (deactivates the built in jet simulator on 32x or faster CDROMs if enabled) Has no effect on transfer rate, because the cartridge transfers data much slower.
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)
Does restore the default settings.
Save changes and exit cmos setup. (same as pressing C=)
Forget changes and exit setup. (same as pressing STOP)
To use a new disk with IDE64 you must first create the filesystem on it. IDEDOS has it's own filesystem
called CFS. It allows to use disks up to 128 Gb, files up to 4Gb with holes and fast seeking, relative files up to 16Mb, 16 partitions,
unlimited directorys and files (only limited by the capacity of disk), customizable filetypes, and
new file permissions.
To create the filesystem on a harddrive/ZIPdrive use the provided format utility. It allow's to create partitions, change partition flags and create filesystems on them. First set the "Direct write" option in the setup utility to enabled, then start the format utility. Follow the instructions. Don't forget that formatting a partition will erase all data on it permanently!
CDROM device do not need any special treatment, just use ISO9660/Joilet format CDs to be able
to read them.
The partitioner tool and the CFS filesystem creator is integrated into one executable called CFSfdisk. First it was a prototype utility running on GNU/Linux systems, then it was ported to C64 with the CC65 compiler.
CFSfdisk version 6 Copyright (C) 2001-2003 Kajtar Zsolt (Soci/Singular) CFSfdisk comes with ABSOLUTELY NO WARRANTY; for details see LICENSE. This is free software, and you are welcome to redistribute it under certain conditions; se LICENSE for details. Drive number (4-30):
For LBA disks only the LBA sectors matters, for CHS ignore LBA sectors. Cylinders (1-65536, default 1244): Heads (1-16, default 16): Sectors (1-255, default 63): LBA (256-268435456, default 1253952):
Did not found any CFS partition entry in PC BIOS partition table. I assume you want to use the whole disk. If you want to share the disk with other operating systems, use the fdisk utility, and make a partition entry with type 0xCF. Creating new disklabel.
Creating new partition table.
Command (m for help): m Command action a select boot partition d delete a partition g set global disklabel h toggle hidden flag l toggle lbamode m print this menu n add new partition o create an empty partition table p print the partition table r toggle writeable flag t change partition's type q quit without saving changes w write table to disk and exit
Command (m for help): n Partition number (1-16): 1 Start (4-1253952, default 4): End or +x or +xG or +xM or +xK or +x% (10-1253952, default 1253952): +50% Partition's name: stuff
Command (m for help): p Drive 12: 1253952 sectors Disklabel: " " Nr Boot Flags Start End Blocks Id System Name 1 * -- 4 626977 313487 1 CFS stuff 2 -- 626978 831777 102400 1 CFS work 3 -- 831778 864545 16384 1 CFS geos 4 -- 864546 1253952 194703+ 1 CFS backup
Command (m for help): g New disklabel: soci's disk Command (m for help): a Partition number (1-16): 2 Command (m for help): p Drive 12: 1253952 sectors Disklabel: "soci's disk " Nr Boot Flags Start End Blocks Id System Name 1 -- 4 626977 313487 1 CFS stuff 2 * -- 626978 831777 102400 1 CFS work 3 -- 831778 864545 16384 1 CFS geos 4 -- 864546 1253952 194703+ 1 CFS backup
Command (m for help): t Hex code (type L to list codes): l 0 Empty 1 CFS 2 GEOS Hex code (type L to list codes): 2 Command (m for help): h Partition number (1-16): 3 Command (m for help): p Drive 12: 1253952 sectors Disklabel: "soci's disk " Nr Boot Flags Start End Blocks Id System Name 1 -- 4 626977 313487 1 CFS stuff 2 * -- 626978 831777 102400 1 CFS work 3 H- 831778 864545 16384 2 GEOS geos 4 -- 864546 1253952 194703+ 1 CFS backup
Command (m for help): w Formatting partition 1...done. Formatting partition 2...done. Formatting partition 4...done. Done.
Command (m for help): r Partition number (1-16): 4 Command (m for help): p Drive 12: 1253952 sectors Disklabel: "soci's disk " Nr Boot Flags Start End Blocks Id System Name 1 -- 4 626977 313487 1 CFS stuff 2 * -- 626978 831777 102400 1 CFS work 3 H- 831778 864545 16384 2 GEOS geos 4 -R 864546 1253952 194703+ 1 CFS backup Command (m for help): w Done.
CFSfdisk autodetects CHS/LBA disks, so you don't have to worry about this (at least on C64). But if want to change it, use 'l'. The current setting is visible in the ' Drive xx:' line, if there are numbers about cylinders, etc. then the disk is in CHS format.
If you only want to reformat a partition without deleting/readding it just change it's type to CFS even if was already in CFS format.
When using a new disk at least 1 partition must be created. Partitions provide the highest level of organizing data. Each partition has it's own filesystem, so possible disk/software errors can't destroy the whole data at once. It's also possible to select the default partition on boot, set the global disklabel, partition names and partition attributes (hidden/readonly) with the format utility. The readonly attribute is usefull to prevent accidental changes to a filesystem.
Examples:@$=P 255 "SOCI'S DISK " IDE64 1 "STUFF" CFS 2 "WORK" *CFS 4 "BACKUP" CFS< 3 PARTITIONS. READY.
@CP4 02, PARTITION SELECTED,004,000,000,000 READY.
OPEN 15,12,15,"C"+CHR$(208)+CHR$(1):CLOSE15 READY.
LOAD"2//GT/:FILE" SEARCHING FOR 2//GT/:FILE LOADIND $0801-$0932 READY.
A directory is a list of files. To view the directory use LOAD"$" then LIST, DIR, or
@$. Of course LOAD will erase the current program in memory, while the last 2 methods will
preserve your work.
The number before the first line is the partition number, it's followed by the directory's name, finally the ID string like IDE64. The following lines provide informations about the size of each file in 256 byte blocks (so 4 blocks are 1Kb), the name of the file enclosed in quotation marks, and it's filetype at the right side. The last line shows the total block count of all files in the list.
Example:LIST 2 "TEST " IDE64 0 "PLUGINS" DIR 40 "BOOT" PRG 2 "CONFIG EXT" 5 "TOD" ASM 23 "VIEWER" PRG 70 BLOCKS USED. READY.
Putting a few thousand files in one long directory is not an optimal way of organizing data, so IDEDOS provides 'subdirectorys'. Subdirectorys look like normal files with filetype DIR in directory listings. Directorys are organized into a tree like structure starting from the root directory. The root directory is the top level directory, it's parent directory is itself. After boot this directory is selected as the working directory. The working directory is the directory which is used when no path is given in the filename just like in LOAD"$". Managing directorys is done via channel #15 commands, but these examples will use the DOS Wedge to simplify things. (more about the channel #15 commands and the DOS Wedge later)
Examples:@MD:DIRNAME
@CD:DIRNAME @/DIRNAME
@CD<—
@CD:..
@/..
@RD:DIRNAME
Each file in the tree structure can be reached with a 'path'. The path is composed from the name of the directorys separated by a slash character.
ROOT-DIR / | \ / | \ A B C | / \ | / \ F E D
Let's say the working directory is 'C' now. To load a file from directory 'E' use the following: LOAD"/E/:FILE". This is a relative path. It's also possible to specify the location of a file from the root directory, it's called absolute path: LOAD"//C/E/:FILE". As it seems the path is enclosed between 2 slashes before a semicolon, after it is the name of file. In the last example the real path was '/C/E' where the slash before C indicates the it's an absolute path.
Now let's compose a relative path, but now our working directory is 'F': LOAD"/../../C/E/:FILE". There's no directory named '..' in the graph, as this is a special directory, and it means the parent directory. That's why 'CD:..' means change to parent directory in some previous example. There's another special directory called '.' which means the directory itself. These 2 special directorys allways exists.
To embed the partition number into the filename place it before the path, eg. '13/C/:E'.
Examples:10 OPEN 15,12,15 20 PRINT#15,"CD:/" :REM GOTO ROOT-DIR 30 PRINT#15,"MD:A" :REM CREATE A 40 PRINT#15,"MD/A/:F" :REM CREATE F 50 PRINT#15,"MD:B" :REM CREATE B 60 PRINT#15,"CD:B" :REM ENTER B JUST FOR FUN 70 PRINT#15,"MD//:C" :REM CREATE C 80 PRINT#15,"MD//C/:E" :REM CREATE E 90 PRINT#15,"MD/../C/./E/../:D":REM CREATE D ;-) 100 CLOSE 15
10 OPEN 15,12,15 20 A=A+1:OPEN A,12,0,"$":GET#A,A$,A$ 30 GET#A,A$,A$,A$,B$:A$=A$+CHR$(0):B$=B$+CHR$(0):IF ST THEN 130 40 PRINT TAB(A*2-2);ASC(A$)+ASC(B$)*256;:B=1:D$="":N$="" 50 GET#A,A$:IF A$="" THEN 110 60 PRINT A$;:IF A$=CHR$(34) THEN B=B+1:GOTO 50 70 ON B GOTO 50,80,90 80 N$=N$+A$:GOTO 50 90 IF A$<>CHR$(32) THEN D$=D$+A$ 100 GOTO 50 110 PRINT:IF D$="DIR" THEN PRINT:PRINT#15,"CD:"+N$:GOTO 20 120 GOTO 30 130 CLOSE A:A=A-1:IF A THEN PRINT#15,"CD"CHR$(95):PRINT:GOTO 30 140 CLOSE 15
It's possible to filter directory listings to show only a subset of files in a directory by using wildcards. There are 2 different wildcards: '?' matches exactly one character, while '*' matches any number of characters. These wildcards can be used in path elements or filename too, in this case the first filename will be matched. To filter directory listing by filetype append '=TYP' to the filename.
Examples:LOAD"$A*" SEARCHING FOR $A* LOADING $0801-$08DF READY. LIST 1 "PICTURES " IDE64 132 "ALIEN BAR BY WEC" FUN 29 "ALIEN-LIFE BY MB" SHI 132 "ALLEY BY MIKE" FUN 132 "ANGEL BY FZ" FUN 72 "ARNIE BY AMN" DRL 497 BLOCKS USED. READY.
@$*DEPACKER 1 "UTILITIES " IDE64 9 "DMC 5.0 DEPACKER" PRG 10 "DMC 5.1 DEPACKER" PRG 19 BLOCKS USED. READY.
@$*PLAYER* 1 "UTILITIES " IDE64 0 "MUSIC PLAYER" DIR 9 "CD PLAYER 1" PRG 12 "CD PLAYER 3" PRG 12 "CD PLAYER 4" PRG 77 "CUBIC PLAYER" PRG 110 BLOCKS USED. READY.
@$???? 1 "UTILITIES " IDE64 0 "DEMO" DIR 0 BLOCKS USED. READY.
@$K*=D64 1 "DEMOS " IDE64 683 "KJU" D64 683 "KRESTAGE 2" D64 768 "KRESTOLOGY 1" D64 768 "KRESTOLOGY 2" D64 683 "KRESTOOLS" D64 3585 BLOCKS USED. READY.
Files store programs and data on disk. Traditionally files could only be
accessed sequentially like on tape, but later relative files appeared with
fixed record lengths on disk drives. Using IDEDOS with the CFS filesystem
it's now possible to use randomly accessible files up to 4 Gb without the
fixed record length. Relative files are also available for compatibility
reasons, these are limited to 16 Mb. There's also a special purpose file
called link, which can be used to reference other files.
Normal files are the most common on disk, they can be created by SAVE or OPEN.
Saving
SAVE"[[@][<partition>][<path>]:]FILENAME"[,<device>]
Will write something about thismore later...
By using direct access commands you can read/write any sector of disk. Common use of direct access commands is to access unknown filesystems, manage the partition table and to create the filesystem. It's also important in diskeditor applications.
To use direct access, you need to open 2 channels, one for commands, and one for data.
The command channel can be opened with the usual OPEN <lfn>,<device>,15.
The data channel is opened similar to opening normal files, except that the file name must be a hash sign.
(OPEN <lfn>,<device>,<channel>,"#") The channel number must be greater than 1.
This 'file' will be a circular data buffer holding 512/2048 bytes depending on the device used. The end of buffer can be found by checking the variable ST
.
The block-read command reads the specified sector into the buffer and sets the buffer pointer to the start of buffer. It can also be used to get the ATA(PI) device identity information to find out the geometry, diskname, etc. as described in ATA(PI) standards.
The block-write command writes the buffer content to the specified sector and sets the buffer pointer to the start of buffer.
The buffer pointer selects individual bytes in the buffer. Reading and writing will start on the buffer position and the buffer pointer will be incremented by the number of bytes read/written.
10 OPEN15,12,15:OPEN4,12,4,"#" 20 PRINT#15,"B=R"CHR$(4)CHR$(0)CHR$(0)CHR$(0)CHR$(1) 30 PRINT#15,"B=P"CHR$(4)CHR$(8)CHR$(0) 40 FORA=0TO15:GET#4,A$:PRINTA$;:NEXT 50 CLOSE4:CLOSE15
10 OPEN15,12,15:OPEN4,12,4,"#" 20 PRINT#15,"B=R"CHR$(4)CHR$(0)CHR$(0)CHR$(0)CHR$(0) 30 PRINT#15,"B=P"CHR$(4)CHR$(46)CHR$(0) 40 PRINT"FIRMWARE REVISION:":B=4:GOSUB90 50 PRINT"MODEL NUMBER:":B=20:GOSUB90 60 PRINT#15,"B=P"CHR$(4)CHR$(20)CHR$(0) 70 PRINT"SERIAL NUMBER:":B=10:GOSUB90 80 CLOSE4:CLOSE15:END 90 FORA=1TOB:GET#4,A$,B$:PRINTB$A$;:NEXT:PRINT:RETURN
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 typing command MAN.
The screen is divided into 2 parts called "panel"s,
each containing a directory listing, with the maximal number of displayable files isof 510/panel.
The black line is the file selector, which can be moved by the CRSR and F<x> keys.
Selecting the active panel is done by the CONTROL keys. The right side of each panel shows the summ of selected
files block count, the number of selected files, the used/free blocks in directory/disk and the drivenumber with the
current partition. The current directory path is displayed on the top of screen, while the drive type and disklabel is on
top of each panel. Tagging files for operation on multiple files (eg. copying) in done with the DEL key.
Plugins are external programs called by the file manager to extend it's functionality.
Plugins show text/various graphic formats, play sid files and animations, extract archives and disk images or just fire up an assembler with the file.
Plugins are started by pressing RETURN or 3 on a file. When pressing 3
the file called "1//:VIEWER" is started from the boot drive. The action taken when RETURN
is pressed is determined by the file called "1//ETC/:MANPLUGINS".
Plugins are machine code files compiled to $1000
. When started at $1000
they should display
some kind of prompt for getting the filename. The manager starts the plugins at $1003
with the
accumulator loaded with the length of filename, the X register with the lower, the Y with the higher byte of
the address to the filename. $BA
contains the current device number the file is on. The filename
allways includes the filetype separated by a comma on the end.
*= $1000 jmp printc jmp start txt .text 13,"FILENAME:",0 printc lda #<txt ldy #>txt jsr $ab1e ; print prompt ldy #255 oqu iny jsr $ffcf ; get input sta $200,y cmp #13 bne oqu tya ; setup fake manager start ldx #<$200 ldy #>$200 start jsr $ffbd ; setup filename ("SD,MOV") lda #filenumber ; file number (1-255) ldx $ba ; actual device number ldy #secaddy ; secondary address jsr $ffba jsr $ffc0 ; open file ... ; play movie rts ; done
The plugin must not destroy $0002
-$0333
badly and must not modify $0800
-$0FFF
! Please leave the VIC/SID/CIA, etc. after exit
of the plugin in a usable state...
Not done yet.
Here's the list of keys and their functions in manager:
Key | Function |
---|---|
<— | Exit |
CONTROL | Change panel |
UP/DOWN | Move cursor |
F1 or LEFT | Page Up |
F7 or RIGHT | Page Down |
1 | Refresh dir |
3 | Execute viewer plugin |
5 | Copy file(s) |
7 | Create directory |
9 | Send disk command |
. | 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 |
* | Invert file selection |
+ | Select all files |
- | Deselect all files |
C= | Select drive |
C= + SHIFT | Select charset |
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, or pressing LEFTSHIFT + RESET.
If C128 keyboard is enabled it's possible to use HELP to start the monitor.
To recover from died monitor (not very likely) press LEFTSHIFT + RESET. Memory won't get distorted.
To rip from games/etc, press LEFTSHIFT+RESET while the program is running. A few bytes from stack, the contents of both CIAs, the memory configuration
at $00
/$01
and the processor registers will be lost, but the memory is not touched. (not a real freezer, but at least it's possible to rip ifli pictures...)
To use the monitor like a real freezer monitor you must make sure that the NMI and BRK vectors won't get overwritten in ram. If so, press C= + RESTORE to freeze the program. The chip states, processor registers and memory is preserved. In the C64 version it's possible to call the monitor even from configurations like 5. (I/O area must be available)
Command | Function |
---|---|
@command | Disk command and status |
@$ | Directory |
A xxxx NOP | Assemble |
B xx | Memory configuration |
BT | Backtrace |
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 | Execute at address |
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 |
K "name" | Defreeze 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 |
;xxxx xx xx | Change registers |
S "name" | Freeze memory |
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 |
<— {address} | (left arrow) Push address(es) to astack. |
^| | (up arrow) Pop address from astack. |
* | Select RAM/ROM |
@ 00, OK,000,000,000,000
@CD:SOURCE 00, OK,000,000,000,000
@$T* 2 "TEST " IDE64 13105"TRANCEANDACID" 5 "TOD" ASM 13110 BLOCKS USED.
O C
R ADDR AC XR YR SP BK DR NV-BDIZC ;E5D1 00 00 0A F3 07 0C 00100010
$01
,
banks 8-1E selects the drive's memory with that device number, bank 1F selects VDC memory (C128 only).
B 4
IDE64 MONITOR ADDR AC XR YR SP BK DR NV-BDIZC ;E5D1 00 00 01 F2 07 08 00100010 X
BRK EXCEPTION ADDR AC XR YR SP BK DR NV-BDIZC ;1230 10 00 0A C6 07 0D 00110000 Q
$080D
. When program terminates it trys to return to monitor with a BRK.
G 80D
A 1000 EE 20 D0 INC $D020 A1003 4C 00 10 JMP $1000 A1006 B3 30 LAX ($30),Y A1008 NOP
D 1000 ,1000 EE 20 D0 INC $D020 ,1003 4C 00 10 JMP $1000 ,1006 B3 30 LAX ($30),Y
M E478 :E478 20 2A 2A 2A 2A 20 43 4F **** CO :E480 4D 4D 4F 44 4F 52 45 20 MMODORE :E488 36 34 20 42 41 53 49 43 64 BASIC :E490 20 56 32 20 2A 2A 2A 2A V2 ****
i a0a0 'a0a0 DfoRnexTdatAinput~inpuTdiMreaDle 'a0c0 TgotOruNiFrestorEgosuBreturNreMs 'a0e0 toPoNwaiTloaDsavEverifYdeFpokEpr 'a100 inT~prinTconTlisTclRcmDsySopeNcl
J 400 .0400 **** COMMODORE 64 BASIC V2 * .0428 *** .0450 64K RAM SYSTEM .0478 IDE-DOS BETA! EXPANDED
B 3 EC D008 [D008 ...##... [D009 ..####.. [D00A .##..##. [D00B .######. [D00C .##..##. [D00D .##..##. [D00E .##..##. [D00F ........
ES A00 ]0A00 ........................ ]0A03 ........................ ]0A06 ........................ ]0A09 ........................ ]0A0C ........................ ]0A0F ........................ ]0A12 ........................ ]0A15 ........................ ]0A18 ...........#######...... ]0A1B .........##########..... ]0A1E .......############..... ]0A21 ......#######.....#..... ]0A24 .....########.....#..... ]0A27 ....########......#..... ]0A2A ....########..#...#..... ]0A2D ....#######...#..##..... ]0A30 .....##.......#..##..... ]0A33 ......#...........#..... ]0A36 ......#...........##.... ]0A39 .......#....#......#.... ]0A3C ........##...#....#.....
$400-$7FF
to $C00-$FFF
. Overlapping areas are supported.
T 400 7FF C00
$2000-$3FFF
with $E000-$FFFF
.
C 2000 3FFF E000 3FC0 3FC1 3FC2
$2-$FFFF
with $00.
B 4 F 2 FFFF 0
$1237
, $1233
and $1230
are the caller JSR
addresses, $30
is some pushed data.
A1230 20 33 12 JSR $1233 A1233 20 36 12 JSR $1236 A1236 08 PHP A1237 20 3A 12 JSR $123A A123A 00 BRK A123B G 1230 BRK EXCEPTION ADDR AC XR YR SP BK DR NV-BDIZC ;1230 10 00 0A C6 07 0D 00110000 BT 1237 30 1233 1230 7A E3 1009 050E 10
H E000 FFFF ? 77 2 E5B4 E5BC EB3C D E5B4 ,E5B4 AC 77 02 LDY $0277 ,E5B7 A2 00 LDX #$00 ,E5B9 BD 78 02 LDA $0278,X
H E000 FFFF "COMM" E47E
S"SPRITES" 2000 21FF OK
L"SPRITES" 2000-21FF OK L"SPRITES" 2200 2200-23FF OK
V"SPRITES" 2000-21FF OK V"SPRITES" 2200 2312 2313 2200-23FF OK
S"MYFREEZE" OK
K"MYFREEZE" 0000-FFFF OK
W
H E000 FFFF 20 BA FF <—E1DD E1F0 E22B E23F E24E D^| ,E24E 20 BA FF JSR $FFBA ,E251 20 06 E2 JSR $E206 ,E254 20 0E E2 JSR $E20E D^| ,E23F 20 BA FF JSR $FFBA ,E242 20 06 E2 JSR $E206 ,E245 20 00 E2 JSR $E200 D^| ,E22B 20 BA FF JSR $FFBA ,E22E 20 06 E2 JSR $E206 ,E231 20 00 E2 JSR $E200 D^| ,E1F0 20 BA FF JSR $FFBA ,E1F3 20 06 E2 JSR $E206 ,E1F6 20 00 E2 JSR $E200 D^| ,E1DD 20 BA FF JSR $FFBA ,E1E0 20 06 E2 JSR $E206 ,E1E3 20 57 E2 JSR $E257
$FCE2
appears. (other keys work similar)
,FCDD D0 02 BNE $FCE1 ,FCDF E6 AD INC $AD ,FCE1 60 RTS ,FCE2 A2 FF LDX #$FF ,FCE4 78 SEI ,FCE5 9A TXS ,FCE6 D8 CLD ,FCE7 20 02 FD JSR $FD02
ADDR AC XR YR SP BK DR NV-BDIZC ;EAB4 03 03 15 EA 07 08 00100101 * RAM R ADDR AC XR YR SP BK DR NV-BDIZC ;EAB4 03 03 15 EA 04 08 00100101
These are one/two character long commands to speed up some frequently typed command at the basic prompt. Enable/disable this feature in the setup utility.
It sends the parameter (if any) to the last used device and then prints the command channel.
Examples:@ 00, OK,000,000,000,000 READY.
@S:MYFILE 01, FILES SCRATCHED,001,000,000,000 READY.
Selects the specified device as last used device.
Example:@#8 READY.
Display directory without affecting memory
Example:@$S*.DRL=P 1 "TEST " IDE64 33 "SHUDDER.DRL" PRG 33 BLOCKS USED. READY.
Loads a basic file, like LOAD"FILE",<current device>.
Example:@$ 1 "TEST " IDE64 0 "PLUGINS" DIR 132 "2 PLANETS BY" FUN 45 "DRAZPAINT 2.0" PRG /1 "DRAZLACE V1.0" PRG 64 "TASM" PRG SEARCHING FOR DRAZLACE V1.0 LOADING $0801-$3023 READY.
Loads an assembly file, like LOAD"FILE",<current device>,1.
Example:LIST 1 "TEST " IDE64 0 "PLUGINS" DIR 132 "2 PLANETS BY" FUN 45 "DRAZPAINT 2.0" PRG 41 "DRAZLACE V1.0" PRG %4 "TASM" PRG 33 "SHUDDER.DRL" PRG SEARCHING FOR TASM LOADING $9000-$CF00 READY.
Verifys an assembly file, like VERIFY"FILE",<current device>,1.
Example:´DRAZLACE* SEARCHING FOR DRAZLACE* VERIFYING $0801-$3023 OK READY.
Loads a basic file, like /, and than starts it with RUN.
Example:
^|DRAZLACE*
SEARCHING FOR DRAZLACE*
LOADING $0801-$3023
READY.
Ru:
Saves a basic file, like SAVE"FILE",<current device>.
Example:
<—MYFILE
SAVING MYFILE $0801-$0932
READY.
Loads an assembly file, like %, and than starts it with JMP at it's load address.
Example:£TASM SEARCHING FOR TASM LOADING $9000-$CF00
Most basic extensions slow down program execution, but this one has some optimizations to avoid the performance hit. In this chapter the new/changed BASIC commands are described.
Prints the date and time.
Example:DATE THU AUG 14 11:12:26 2003 READY.
Trys to autodetect devices connected to the cartridge.
Example:HDINIT MASTER: ST9385AG READY.
Fills memory with nulls, then reset. Usefull before linking.
Switches cartridge off. Usefull if you suspect compatibility problems with a program.
Example:KILL BYE! READY.
Loads a program file into memory. Using no device number selects last used device. No filename means "*".
Example:LOAD SEARCHING FOR * LOADING $0801-$099E READY.
Starts the built in filemanager.
Saves program to disk. Using no device number selects last used device.
Example:SAVE"TEST" SAVING TEST $0801-$1A43 READY.
Verifys that the program in memory matches the on-disk version. Using no device number selects last used device. No filename means "*".
Example:VERIFY"TEST" SEARCHING FOR TEST VERIFYING $0801-$1A43 OK READY.
This part is not finished...
Description: | Read status word |
Implementation: | Standard |
Communication registers: | None |
Preparatory routines: | None |
Error returns: | None |
Status: | None |
Registers affected: | A |
jsr chrin ; read data from file sta data,y jsr readst ; test status and #$40 ; end of file flag bne endoffile
Bit | Meaning |
---|---|
7 | Device not present |
6 | End of File |
5 | (Tape CRC error) |
4 | Verify/read error (Tape read error) |
3 | (Tape long block) |
2 | (Tape short block) |
1 | Timeout on receive |
0 | Timeout on send |
Description: | Control kernal message printing |
Implementation: | Standard |
Communication registers: | A |
Preparatory routines: | None |
Error returns: | None |
Status: | None |
Registers affected: | A |
lda #$00 jsr setmsg ;turn off messages
Bit | Meaning |
---|---|
7 | Full error messages (LOADING, etc.) |
6 | Kernal error messages (I/O ERROR#x) |
5..0 | Undefined |
Description: | Check if stop was pressed |
Implementation: | Standard |
Communication registers: | A |
Preparatory routines: | None |
Error returns: | None |
Status: | None |
Registers affected: | A, X |
jsr chrin sta ($fb),y jsr stop beq stoped ;stop was pressed ... stopped lda #filenum jmp close ;close file and exit
Description: | Sets Logical File Number, Device Number, and Secondary Address |
Implementation: | Standard |
Communication registers: | A, X, Y |
Preparatory routines: | None |
Error returns: | None |
Status: | None |
Registers affected: | None |
lda #filenumber ; file number (1-255) ldx $ba ; actual device number ldy #secaddy ; secondary address jsr setlfs ... jsr open
Device number | Device |
---|---|
0 | Keyboard |
1 | Datassette(TM) |
2 | RS-232C device |
3 | CRT display |
4..5 | Serial bus printer |
6..7 | Serial bus plotter |
8..11 | CBM serial bus disk drive |
12 | Primary IDE controller, Master (default) |
13 | Primary IDE controller, Slave (default) |
14 | PC-link serial/parallel (default) |
15..30 | Other |
31..255 | Illegal |
Secondary address | Open mode |
---|---|
0 | Read access (load) |
1 | Write access (save) |
2..14 | Data channel |
15 | Status/command channel |
16..127 | Illegal |
128..255 | Illegal (serial bus specific) |
Description: | Sets filename for OPEN/LOAD/SAVE routine |
Implementation: | Standard |
Communication registers: | A, X, Y |
Preparatory routines: | None |
Error returns: | None |
Status: | None |
Registers affected: | None |
lda #8 ; filename length ldx #<name ; pointer to filename, low byte ldy #>name ; pointer to filename, high byte jsr setnam ... jsr open name .text "filename"
Description: | Open a logical file |
Implementation: | IDE Extended |
Communication registers: | None |
Preparatory routines: | SETLFS, SETNAM |
Error returns: | 1, 2, |
Status: | $00, $80 (see READST) |
Registers affected: | A, X, Y |
lda #filenumber ; file number (1-255) ldx $ba ; actual device number ldy #secaddy ; secondary address jsr setlfs lda #8 ; filename length ldx #<name ; pointer to filename, low byte ldy #>name ; pointer to filename, high byte jsr setnam jsr open name .text "filename"
Description: | Close a logical file |
Implementation: | IDE Extended |
Communication registers: | A |
Preparatory routines: | None |
Error returns: | 0, 240 (see errorcodes) |
Status: | $00, $03, $80 (see READST) |
Registers affected: | A, X, Y |
lda #filenumber ; opened file number jsr close
Description: | Set standard input |
Implementation: | IDE Extended |
Communication registers: | X |
Preparatory routines: | valid OPEN |
Error returns: | 0, 3, 5, |
Status: | $00, $03, $80 (see READST) |
Registers affected: | A, X |
... jsr open ; open file ldx #filenumber ; opened file number jsr chkin ; set input ldx #0 jsr chrin ; get bytes sta $400,x ...
Description: | Set standard output |
Implementation: | IDE Extended |
Communication registers: | X |
Preparatory routines: | valid OPEN |
Error returns: | 0, 3, 5, |
Status: | $00, $03, $80 (see READST) |
Registers affected: | A, X |
... jsr open ; open file ldx #filenumber ; opened file number jsr chkout ; set output ldx #0 lda $400,x jsr chrout ; write out data ...
Description: | Get a character from standard input |
Implementation: | IDE Extended |
Communication registers: | None |
Preparatory routines: | valid OPEN, CHKIN |
Error returns: | |
Status: | $00, $40, $42, $52, $80 (see READST) |
Registers affected: | A (Y but not for file I/O) |
... jsr chkin ldy #0 jsr chrin sta data,y iny ...
Description: | Get a character from standard input |
Implementation: | IDE Extended |
Communication registers: | None |
Preparatory routines: | valid OPEN, CHKIN |
Error returns: | |
Status: | $00, $40, $42, $52, $80 (see READST) |
Registers affected: | A (X, Y but not for file I/O) |
... jsr chkin ldy #0 jsr getin sta data,y iny ...
... jsr clrchn ;keyboard/screen ... wait jsr getin ;get key beq wait ;nothing pressed? cmp #32 ;space pressed?
Description: | Output a character to standard output |
Implementation: | IDE Extended |
Communication registers: | A |
Preparatory routines: | valid OPEN, CHKOUT |
Error returns: | |
Status: | $00, $03, $80 (see READST) |
Registers affected: | None |
... jsr chkout lda #$00 jsr chrout ;write 0 ...
Description: | Close all files and set standard input/output to keyboard/CRT |
Implementation: | IDE Extended |
Communication registers: | None |
Preparatory routines: | None |
Error returns: | |
Status: | $00, $03, $80 (see READST) |
Registers affected: | A, X |
jsr clall ; close all files, set default i/o jmp run ; run program
Description: | Set standard input/output to keyboard/CRT |
Implementation: | IDE Extended |
Communication registers: | None |
Preparatory routines: | None |
Error returns: | |
Status: | $00, $03, $80 (see READST) |
Registers affected: | A, X |
... jsr chkin ... lda #1 jsr close jsr clrchn ; set default i/o
Description: | Load memory from file |
Implementation: | IDE Extended |
Communication registers: | A, X, Y |
Preparatory routines: | SETLFS, SETNAM |
Error returns: | 0, 4, 5, 8, 9, 16 (see errorcodes) |
Status: | $00, $10, $40, $42, $50, $52, $80 (see READST) |
Registers affected: | A, X, Y |
lda #1 ; filename length ldx #<dirnam ldy #>dirnam ; filename pointer jsr setnam lda #1 ; file number ldx $ba ; actual device number ldy #0 ; sec.address 0=new location, 1=original location jsr setlfs lda #$00 ; load flag (1=verify) ldx #<dirbuff ldy #>dirbuff ; new start address jsr load bcc loadok ... rts loadok stx $ae ; new end after load/verify sty $af ... rts dirnam .text "$"
Description: | Save memory to file |
Implementation: | IDE Extended |
Communication registers: | A, X, Y |
Preparatory routines: | SETLFS, SETNAM |
Error returns: | 0, 5, 8, 9, 24 (see errorcodes) |
Status: | $00, $03, $80 (see READST) |
Registers affected: | A, X, Y |
$0200
to $CFFF
. For save ram under the BASIC rom don't forget to set $01
!
databegin = $fb lda #1 ; file number ldx $ba ; actual device number ldy #0 ; sec.address jsr setlfs lda #8 ; filename length ldx #<name ldy #>name ; filename pointer jsr setnam lda #<$1000 sta databegin ; begin lda #>$1000 sta databegin+1 lda #databegin ldx #<$8000 ldy #>$8000 ; end jsr save name .text "filename"
Description: | Save data block to IDE device |
Implementation: | IDE only |
Communication registers: | A, X, Y |
Preparatory routines: | valid OPEN, CHKOUT |
Error returns: | 5, 7, 9 (see errorcodes) |
Status: | $00, $80 (see READST) |
Registers affected: | A, X, Y |
Note: Not possible to save under I/O. (eg. saving from $D800 will save color ram) To access RAM under the BASIC and KERNAL ROM, set $01 correctly. Saving RAM under the KERNAL ROM is not supported on SuperCPU.
If you want your application using READ/WRITE make runnable on a not IDE64 equiped machine, check for IDE64 presence before calling these two calls, and use standard routines instead of, as described above. (Imagine what happens at JSR $DEF1 if there's open I/O space at $DE00-$DEFF...)
Example:lda $de60 ;check ide64 cmp #$49 bne old lda $de61 cmp #$44 bne old lda $de62 cmp #$45 bne old lda #zp jsr $def1 bcc ok cmp #9 ;illegal device beq old2 ;tried to use call on non-ide64 device ok ... rts old2 ldx #channel jsr chkout old ... ;old byte by byte routine rts
Description: | Load data block from IDE device |
Implementation: | IDE only |
Communication registers: | A, X, Y |
Preparatory routines: | valid OPEN, CHKIN |
Error returns: | 5, 6, 9 (see errorcodes) |
Status: | $00, $40, $42, $52, $80 (see READST) |
Registers affected: | A, X, Y |
Note: This routine does not load under I/O. (e.g. reading to $D800 will overwrite color ram)
Example:lda #1 ; source filenumber ldx $ba ; actual device number ldy #0 ; secondary address for read jsr setlfs lda #outputname-inputname ldx #<inputname ldy #>inputname jsr setnam jsr open ; open input file lda #2 ; destination filenumber ldx $ba ; actual device number ldy #1 ; secondary address for write jsr setlfs lda #status-outputname ldx #<outputname ldy #>outputname jsr setnam jsr open ; open output file lda #<startadd sta $fb lda #>startadd ; buffer start address sta $fc ldx #1 ; set input to source file jsr chkin ldx #2 jsr chkout ; set output to destination file loop lda #$fb ; pointer to zeropage with start address ldx #<blocksize ldy #>blocksize ; block size jsr read ; read bit $90 ; readst php ; status to stack lda #$fb jsr write ; write plp ; status bvc loop ; test end of file lda #2 jsr close ; close output file lda #1 jsr close ; close input file jsr clall ; set default i/o device rts inputname .text "/bin/input-file" outputname .text "/tmp/output-file" status .byte 0
Accu | Meaning |
---|---|
0 | Routine terminated by the STOP key |
1 | Too many open files |
2 | File already open |
3 | File not open |
4 | File not found |
5 | Device not present |
6 | File is not an input file |
7 | File is not an output file |
8 | File name is missing |
9 | Illegal device number |
16 | Out of memory (load) |
24 | File data error (save) |
240 | Top-of-memory change RS-232 buffer allocation/deallocation |
The slowest method but the easiest if you already have a X1541, XE1541, XM1541 or XA1541 cable. Maximal transfer speed is around 5000 bytes/sec.
Pin | C64 serial port | Pin | PC printer port |
---|---|---|---|
2 | GND | 18...25 | GND |
3 | ATN | 1 | STROBE |
4 | CLK | 14 | AUTOFEED |
5 | DATA | 17 | SELECT IN |
This cable will not work with all printer ports.
This connection is made between the parallel port of a PC and the user port of a C64 using a cable similar to Laplink,
however the layout was based on PC64 cable.
Pin | C64 user port | Pin | PC printer port |
---|---|---|---|
A,1 | GND | 18...25 | GND |
C | PB0 out | 15 | ERROR in |
D | PB1 out | 13 | SELECT in |
E | PB2 out | 12 | PAPER in |
F | PB3 out | 10 | ACK IN in |
H | PB4 in | 2 | D0 out |
J | PB5 in | 3 | D1 out |
K | PB6 in | 4 | D2 out |
L | PB7 in | 5 | D3 out |
M | PA2 out | 11 | BUSY in |
N,12 | GND | 18...25 | GND |
B | FLAG in (not mandatory) | 9 | D7 (not mandatory) |
Incorrectly built cable can damage the printer or/and userport! Same for plugging the cable while the computers are turned on...
It's using a null modem cable with handshake between your PC's serial port and a port of a duart card.
Communication is done at 115200 bit/s resulting in an effective transfer speed of ? bytes/sec.
9 pin | C64 duart port | 9 pin | 25 pin | PC serial port |
---|---|---|---|---|
2 | RxD | 3 | 2 | TxD |
3 | TxD | 2 | 3 | RxD |
7 | RTS | 8 | 5 | CTS |
8 | CTS | 7 | 4 | RTS |
5 | GND | 5 | 7 | GND |
Will write this a bit more verbose later. Some examples use the dos wedge like "@I", of course the @ at the beginning of line is not part of the command.
For more see chapter Using files.
Seek to file position.
Format:PRINT#<command lfn>,"P"; CHR$(<file channel>); CHR$(POSITIONBITS0TO7); CHR$(POSITIONBITS8TO15); CHR$(POSITIONBITS16TO23); CHR$(POSITIONBITS24TO31)
10 OPEN 15,12,15:OPEN 4,12,4,"FILE" 20 PRINT#15,"P"; CHR$(4); CHR$(159); CHR$(134); CHR$(1); CHR$(0) 30 GET#4,A$:CLOSE 4:CLOSE 15
Redetect filesystem and go into root directory of default partition.
Example:@I 00, OK,000,000,000,000
Delete a file. For empty directorys use RD. File must have the DELETEABLE flag set, and must be on a writeable partition.
Example:@S:FILE 01, FILES SCRATCHED,001,000,000,000
Partition changing.
Example:@CP2 02, PARTITION SELECTED,002,000,000,000
OPEN 15,12,15,"C"+CHR$(208)+CHR$(3):CLOSE 15 READY.
To tempolary change the device number (till next reset) send "U0>"+CHR$(new)
to the device.
If 'new' is 0 then the device is disabled.
OPEN 15,12,15,"U0>"+CHR$(8):CLOSE15 READY.
Sending 'UI
' or 'U9
' on command channel returns the dos version of the device.
@UI 73, IDE DOS BETA! IDE64,000,000,000,000
Sending 'UJ
' or 'U:
' on command channel resets (re-detects) the device.
@UJ 73, IDE DOS BETA! IDE64,000,000,000,000
It's possible to enter/exit powersaving mode if the device support it.
Examples:@U0>P0 00, OK,000,000,000,000
@U0>P1 00, OK,000,000,000,000
More usefull on CDROM/ZIPdrive than on harddisk.
Examples:@U0>E0 00, OK,000,000,000,000
@U0>E1 00, OK,000,000,000,000
It's possible to prevent media removal on CDROM/ZIPdrives.
Examples:@U0>L0 00, OK,000,000,000,000
@U0>L1 00, OK,000,000,000,000
For more see chapter Direct access.
For more see chapter Using directorys.
@CD:NEWDIR 00, OK,000,000,000,000
@MD:NEWDIR 00, OK,000,000,000,000
These are the possible returned error messages on channel #15 with their short descriptions.
dp1
,dp2
,dp3
,dp4
is drive specific address of sector.
Of course they work. Will include 1541 fastloader later. 1541, 1570, 1571 and 1581 are supported by the manager.
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.
These hardwares use the same I/O space as the IDE64 cartridge, so they won't work.
Should work, but needs more testing.
As these are serial devices they should work. They are supported by the manager too.
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)
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 in the SCPU version (meaning 1/3 loading performance on 1541, but still 2x faster than normal)
Loading and saving is accelerated if the drive has JiffyDos, even
if there's no JiffyDOS rom installed in the computer (selectable at compile time). If you get sometimes random "?LOAD ERROR"s when loading directory
from a JiffyDOS drive, then that's not a bug in IDEDOS. The original JiffyDOS load routine trys to workaround this by retrying IECIN
,
and this causes an endless loop until STOP is pressed. I prefer getting an error over waiting forever...
Both works.
Works, not touched.
Supported if installed at $D420
. (volume 0 is set) This is changeable at compiletime.
Works, not touched.
Does not work, because the IDE64 cartridge cannot manipulate the EXROM line.
Works.
Forget about autostarting programs...
Use LBA formatted harddisks if possible, it's much faster to scratch etc. because there's no chs→lba→chs translation, which is slow.
Document maintained by:
Kajtár Zsolt