S-JIFFYDOS C64
S-JIFFYDOS is a C64 operating-system, that works in a C64 or a Flash 8 (a
German kind of S-CPU) in an eprom. It is a patch for JIFFYDOS. But don't be
afraid, nobody must renounce for the original JIFFYDOS, this instruction
describes, how you build CBM-, JIFFYDOS-, S-JIFFYDOS and, if you want,
also a German S-JIFFYDOS, into the C64 and the Flash 8. Because it's a patch
for JIFFYDOS V6.01, it doesn't work without this at all. It uses the
original JD IEC bus routines, so it works with all JD- und only-CBM
floppies and reaches also the same speed. If you have JD, then try at once
the program "test s-jiffydos" and look at the features:
Disadvantage to JD:
- no RS232 routines
- you must type the floppy orders in quotation marks (this is simplified
by the F-keys because they print them on the screen)
Advantage to JD:
- expanded F-keys:
F1 @"$" Directory
F3 /% intelligent load
F5 ^pound intelligent start
F7 @" : floppy status/order
F2 @d list from disk
F4 @t text from disk
F6 <- save
F8 @s: scratch
CBM&F1 lI list
CBM&F3 rU run
CBM&F5 c=12:sY4096*c starts machine language program at $c000
CBM&F7 @l lock / unlock
- If there is no file name, intelligent load/start takes the first
program from disk
- intelligent load routine:
SJD loads a program almost always correct, no matter it's a
machinenlanguage- or a Basicprogram. It analyses the startadress of the
program from the disk. If it is $0401 (VC20 or dir), $0801 (C64), $1001
(C16/+4) oder $1c01 (C128), then SJD loads to the basic begin, if not to the
disk startadress. After the loading SJD tests, whether the basic begin is
within the start- and the endadress of the loaded file; if yes it sets the
basic end vector and at F5 generates additionally a RUN, if not , it makes
nothing respectively a SYS . With F3 almost all programs of a
disk are loaded correctly, even if you don't know whether it's a Basic- or a
Ml-program, and F5 starts them correctly.
- shows the load adresses hexadezimal
- After a reset all mains of the IEC bus are inaktivated, so you can swap
the device with CMD drives at once.
- All ram vectors are the same as CBM, so you can switch from CBM to SJD and
back, without making the @x order before
- Ctrl & (Return) goes always to the begin of the line and ends the insert-,
the quotation mark- and the revers-mode
- Ctrl & (Delete) deletes the rest of the line
- (Stop) ends the insert-, the quotation mark and the revers-mode
- the reset funktion is expandes:
& Space skips the CBM80 code test
& Stop like Stop & Restore
& q like Stop, but retains the ram vectors
& 1 & (arrow left) deletes the ram (don't do this in the test version
because here is the SJD)
Instead of the reset button you often also can use the restore key
- shift & Ctrl & CBM shows the SJD status as a rasterbar
- shift & Ctrl & CBM & 1-4 changes the SJD status:
-1 off
-2 userport printer on
-3 JIFFYDOS wedge orders on
-4 function keys on
- there is also a kernal version with a German keyboard, which changes the
German special characters correctly to Epson compatieble printers.
- supports a Centronics printer at the userport. Best is an Epson compatieble,
because only with this the German special characters are printed
correctly and the reverse Characters are changed to cursive ones (and not to
international special characters). You should switch on the cursiv-character-
charset at your printer (and the German country specific charset). You must
switch on that the printer makes at every carriage return an additional
linefeed. At devicenumber 4 SJD test first, without changing anything at the
userport, whether there is a seriell printer present. Only if this is not,
it tests the presence of a userport printer and bypasses the IEC-OUT
routine. The secundary adress makes:
- 0-7 seriell or paralell printer
- 8-11 only parallel printer (if you are shure that in a self written basic
program a userport printer is present, you should take the secundary adress
8-11, to avoid a DEVICE NOT PRESENT ERROR when the printer buffer is full)
- 12-15 only seriell printer
You can have two printers permanently switched on at the C64 and determine
with the secundary adress to which the print should go.
- 0 & seriell: no code change
- 0 & parallel: graficchars -> space / revers -> cursiv
- 1-3,11,15 no change
- 4,8,12 & US-Kernal: no change
- 4,8,12 & DE-Kernal: small <-> capital and German special chars change
- 5,9,13 small <-> capital change
- 6,10,14 graficc.->space / rev->cursiv
- 7 & seriell: no change
- 7 & parallel & US-kernal: small <-> capital change
- 7 & parallel & DE-kernal: small <-> capital a.germn.spcl.chr.change
If you want in a self written basic program on the one hand to change
characters and on the other hand transmit ESC orders without change, you
open two channels:
10 open4,4,11 : rem linearchannel
20 open4,4,9 : rem code change channel
and transmit the ESC orders with print#4 and the texts with print#5.
Basic listings are printed with "open 4,4,9:cmd4:list", because here reverse
characters are changed to cursiv ones, and so f.e. a "Ctrl-L" doesn't cause a
form feed.
At word processers you should take the linear channel, secundary adress 11.
You need two formatted disks for the files which you must burn into the
eprom. Attention, the generated files contain original JIFFYDOS routines,
they have the Copyright of CMD and you must not give them to others; everybody
who wants SJD, must before buy JD, and this must be for the C64, JD only in
the SCPU is not enough. Additionally it is not allowed to sell the JD eproms
after you have built in the SJD eproms.
"all-gen/char-set" generates a file with the German and the original US-
charset und you must only start it if you want to change the character rom to
an eprom (with adapter rocket).
"all-gen/bas-int" genarates the basic interpreter and must be started always.
If you want an eprom for the C64 then you must start the programs c1* bis
c4*, for the Flash 8 f1* bis f5*.The source disk must contain the c1*-
or the f1*- files, the destination disk is the first formatated disk.
If you have finished this, you must generate the single Interims files to
the final file which is burned into an eprom. Dependant you have a C64old (24
pin rom), a C64new (28 pin rom) or a flash 8, you must start the
corresponding "eprom-gen/" program. Source disk is now the first disk with
the generated "(c)cmd" interrims files, destination disk the second prepared
disk. You also must not give the final files to others.
Next you must burn the eproms corresponding the instructions of your
eprommer. The ending 00 means the area $0000 - $7fff and 80 the area $8000 -
$ffff. For the C64old you need a 27C256 with 250 nS, for the C64new a 27C512
with 250 nS and for the F8 a 27C512 mit 75 nS (tests with a 120 nS eprom also
have been sucessfull, but this can also cause crashes).
After this you must build off the roms and build in the eproms. And now a
warning: I have tested SJD, but I don't give any warranty on SJD, errors or
destruction of hardware. The use of SJD is to 100% to your own Risk.
Of course the C64 and all other devices must be switched off and put off from
the electricity during rebuilding it. The eproms and the chips of the C64 are
extremly sensible to electrostatic currency, they get destroyed. You must
always pay attention to eliminate it, f.e. by touching grounded metall things
like heating pipes.
First you must remove the old rom. If it is in a rocket, then you easily pull
it out. To support this you can put a screw driver cautiously between chip
and rocket and turn it without destroying copper lines of the
mainboard. If the rom is soldered to the board then it's very difficult. You
have theese possibilities:
- You give the C64 to a shop where TV sets are repared and ask whether they
solder the chip out.
- You solder it out yourself with a special pump. This is extremly
difficult and if only one of the 24 or 28 pins isn't completely free the
copper main from the mainboard tears off when your pull out the rom and your
C64 is electronic scrap. You should only dare it if your are a solder
professional.
- You don't need the original CBM rom afterwards. You can cut off all pins
and then solder out every pin seperately. You should cut off the pins
with a sharp scissor and with a big distance from the mainboard to avoid
that the scissor destroys a copper main. On the other hand if you cut the
pins off with a small distance from the chip, the pins afterwards still come a
little bit out of the chip, so you can solder the chip on a rocket and use it
as reserve.
Now dont't solder the eprom onto the mainboard but solder first a IC rocket.
Before you pull the eprom into the rocket, you first must bend off one or
two pins so far that they don't get any contact with the rocket. You must
connect every pin first with a 10 kOhm resistor, which other end goes to +5V
(best is pin 28 of the eproms) and secondly to a wire, which goes to the
outer pin of a tumbler switch.The middle pin of this switch goes to 0V
(best is pin 14 of the eprom). You need a tumbler switch without middle
position for the Flash 8 and one with for both C64. You must bend off one pin
(pin 1, A15) at the F8 and two pins at the C64: At the C64old it is pin 27 and
26 (A14 and 13) and at the C64new it is pin 1 und 27 (A15 und 14). The F8 has
always SJD with German keyboard, if you want this at the C64 you need
additionally a universal silicium diode (f.e. 1N4148) and a tumbler switch
without middle position. A wire goes additionally from one outer pin of the
first switch to the diode, from the diode to the middle pin of the
additional switch and from one outer pin of this to the other outer pin of
the first switch. The side of the diode which has a ring (=kathode) must show
towards pin27 (C64old) respectively pin 1 (C64new).
The character rom is at the C64 chip U5 and always has 24 pins, so you need an
adapter rocket even at the C64new. At the C128 it is probably U18, but here
you must try yourself how you can change the rom because this rom has
originally several charsets (at least the German C128). At the F8 you must
change the operating system eprom in C10, at the C64 it is in U4 and at the
C128 in U32. At the C64new and at the C128 it has 28 pins, so you can easily
pull the Rom off and push the eprom in. At the C64old the operating system rom
(the character rom in any case) has only 24 pins, so you need here an
adapter rocket for the eprom that has alway 28 pins. If you want to build the
adapter rocket yourself, you need a 28 pin IC-rocket, a platine with one side
with copper with 1.2" to 1.6" (3 x 4 cm) edge length and two 12 pin small
pinstrips. The layout is in "pic/epr/c64old" and is the same also
for the character set, but attention you must put it sidechanged onto the
copper side of the platine. Best is if you rub the wholes for the rocket and
for the strips from a symbolfoil onto the copper and connect them correctly
(sides changed) with accid constant pencil. This way the platine comes into
the acid (Fe 2 O 3). Then you must clean it thoroughly an test for short
circuits or copper interruptions. Then you must drill the wholes and put in
the rocket from the non copper side and the pinstrips from the copper side,
solder them and test again short circuits and interruptions. This
adapter rocket comes into the rocket from the C64 mainboard and in it comes
the eprom, but think that one or two pins must be bend off.
A small scheme are in the C64 programs "pic/epr/...". A small scheme of the
eproms, the switches and the pins which must be bend off is in the table down.
The cable between userport and centronics printer can be bought as
Geoscable or you can build it yourself. The instructions are at the end of this
article.
After you have pushed in the eprom(s) you can switch on the C64. It must
start after a few seconds with a modified reset text. If it doesn't
start, switch off at once and check everything, especially whether a pin is
unintentionally not in the rocket or a pin is brocken, but pay attention to
the electrostatic currency.
At the F8 you can select with the original kernal- and the additional
switch one of the four operating systems. At the C64 you can select with
the tumbler switch with middle position out of JD, CBM and SJD. If you have it,
the tumbler switch without middle position selects US-SJD to German.
---------------------------------------
Summery eproms
C64old C64new/C128 Flash8 characset
position
U4 U4/U32 C10 U5/C64
?U18/C128
24pins 28pins 28pins 24pins
eprom type
27C256 27C512 27C512 27C64/C64
27C?/C128
250nS 250nS 75nS 250nS
adapter rocket necessary?
yes no no yes
pins, which must be bend off and be
connected with 10 kOhm resister and
with outer pin of a tumbler switch
Pin27=A14 Pin1=A15 Pin1=A15 Pin2=A12
Pin26=A13 Pin27=A14
switch with/without middle position
with with without without
C64old C64new/C128 Flash8 characset
---------------------------------------
printer cable Userport - Centronics
plain cable 12 wires, about 3 feet
CIA userport Centronics printer
cable
Port B0 C ------- 2 Data 0
Port B1 D ------- 3 Data 1
Port B2 E ------- 4 Data 2
Port B3 F ------- 5 Data 3
Port B4 G ------- 6 Data 4
Port B5 H ------- 7 Data 5
Port B6 J ------- 8 Data 6
Port B7 K ------- 9 Data 7
Port A2 L ------- 1 Strobe
grnd 1,12,A,N -----+- 16,19-30 grnd
cab- I
le +- 14 Autofeed XT
Flag B ------- 10 Acknowledge
(Reset) (3) ---<--- (31) (Prime)
1N4148
CIA userport Centronics printer
Instead of pin 10 (Acknowledge) you can also use pin 11 (Busy).
If pin 14 (Autofeed XT) is connected to printer ground, then some printers make
at every carriage return automatically an additional linefeed. If your printer
does not, you must modify the printer menue to do so (CR=CR+LF).
If you want that the printer makes a reset when the C64 makes one, then you
must connect Pin 3 of the C64 with a silicium universal diode (z.B. 1N4148)
with Pin 31 of the printer. The side with the ring (= Kathode) must show
towards the C64.
Home