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

 U4        U4/U32       C10     U5/C64
 24pins    28pins     28pins    24pins

eprom type
 27C256    27C512    27C512   27C64/C64
  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
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)
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.