• Please review our updated Terms and Rules here

Jameco JE664 EPROM Programmer

8-O-2 is indeed "odd". I should have paid more attention to the RS-232 pins when I had it open, but it is only wired to about 4 of them if I recall. I played around with a boat load of bauds and settings before I discovered the add with 9600 8-O-2 and nothing worked. But truth be told neither did 9600 8-O-2 on my 486. It wasn't until I tried 9600 8-O-2 on my Kaypro that I got somewhere. Though that could just be the cable as each machine has its own and perhaps one is a "null" and the other isn't. Anyway, when I get the time I'll use the Kaypro and try various comms parameters to see if I can get further. But at this point I'm guessing it will remain an "oddity" and spare parts unit.

I'll trace out the programmer pcb at some point. I have the manual for the rs232 board coming, he didn't have the programmer manual.
What programming modules do you have? It would be nice to know how the 2708 one is wired, but it probably wont be hard to figure out once I have
the socket traced out. There really isn't much to the whole thing, a 12 bit counter, four 2k x 8 rams some buffering and some glue logic.

It is a little crazy how many lights the thing has. They left space for five TIL311's and a led on every address bit
 
I'm guessing that the serial was only to upload and download data
to the programmers RAM.
Programming and such was done with the front panel.
In other words, there is no real program from the computer.
It just reads or writes data to or from the RS232 based
on front panel operation. The data would naturally be 8 bits.
Do remember what Al said. There is no uP to control things.
It would be unlikely to have anything to interpret commands
from the RS232.
Dwight
 
Last edited:
I've OCR'd the PDF pages of the Basic program with TextBridge 2.0. But, I don't have a programmer to test the
basic code to see were the typo's/errors are. There are likely mistakes, even after I've gone over it twice trying
to find any errors.

I need someone to test the program, and note the errors they find. When the code runs, it needs to be added to
Al's documentation on Bitsavers.

Code:
'
'The program lines that you will need to modify will be in the range from 9000 to 9999. No other changes
'should be needed.
'
'Lines 9000 through 9070 set up the RS-232C port for the correct characteristics. They set the
'baud rate to 9600, the number of data bits to 8, the number of stop bits to 2, and set odd parity.
'They also reset all of the flags and turn off any interrupt modes the port may have. Line 9010 tells
'the program that the base address of the port chip is 58H (88 decimal). You should change all of
'these lines to set up your chip. If you have an 8250 then the only change necessary should be set-
'ting P to the correct base address in line 9010. Remember that these modifications need not
'agree line for line with the sample program but only that each complete routine does its par-
'ticular task in any way possible.
'
'Some computers may require that you set up the port from hardware rather than software. In this
'case it may be necessary to move some jumpers or change a DIP switch or two. Instructions for
'this will be found in your hardware manuals.
'
'
'
'The DSR (Data Set Ready) line is checked in lines 9100 to 9130. If the DSR bit is in the proper state
'(1) then F is set to 1, otherwise it is set toO. Line 9120 does all the work here. It checks the DSR bit
'(bit 5) of the status register on the 8250 chip. To check any bit (0-7) of a register you can use the
'general statement
'
'IF (INP(REGADDR) AND (2^BIT)) = (2^BIT) THEN ...
'
'This will be true if BIT is a 1. If you want to check that a bit is 0, replace the "=" with a "< >".
'
'
'
'Lines 9200 to 9230 toggle the DTR (Data Terminal Ready) line toO and then back to 1. They do this
'by turning the DTR bit of the control register off and then back on. To turn any particular bit off
'use the statement
'
'OUT REGADDR,INP(REGADDR) AND (256-2^BIT)
'
'and to turn any bit on use
'
'OUT REGADDR,INP(REGADDR) OR (2^BIT)
'
'Change lines 9210 and 9220 to reflect your register locations and bit numbers.
'
'
'
'The CTS (Clear to Send) bit is checked in line 9320 of the CHECK CTS LINE routine. If it is correct
'(off) then F is set to 1, otherwise it is set to 0. This routine starts at line 9300 and ends at line 9330.
'Change line 9320 to reflect your chip address and bit location.
'
'
'OCR'd with TextBridge Classic 2.0 - L. Kraemer  11/16/2016
'
'
100 'JE665 RS-232C SERIAL COMMUNICATION PROGRAM
110 'BY DAVID H NELSON
120 'SEPTEMBER 14, 1983
130 GOSUB 8000				'CLEAR THE SCREEN
140 CLEAR 1000
150 PRINT TAB(26);"JAMECO ELECTRONICS":PRINT
160 PRINT TAB(20);"JE665 RS-232C INTERFACE OPTION":PRINT
170 PRINT TAB(21);"SERIAL COMMUNICATION PROGRAM":PRINT:PRINT
180 PRINT TAB(26);"SEPTEMBER 14, 1983"
190 PRINT : PRINT : PRINT : PRINT : PRINT : PRINT
200 PRINT "INITIALIZING . . ."
210 '***** INITIALIZATION *****
220 F$="GPLSVECX"
230 CS=2:SI$="16Kbit (2K x 8) EPROM active"
240 BA=28672
250 FOR X=BA TO BA+8192
260	POKE X,255
270 NEXT X
280 DEF FNH$(X) = RIGHT$("00"+HEX$(PEEK(BA+X)),2)
300 'SELECT EPROM SIZE
310 GOSUB 8000				'CLEAR SCREEN
320 PRINT TAB(10);SI$:PRINT
330 PRINT TAB(20);"1 - 8Kbit  (1K x 8)"
340 PRINT TAB(20);"2 - 16Kbit (2K x 8)"
350 PRINT TAB(20);"3 - 32Kbit (4K x 8)"
360 PRINT TAB(20);"4 - 64Kbit (8K x 8)"
370 PRINT : PRINT : PRINT
380 PRINT " SELECT EPROM SIZE >";
390 A$=INPUT$(1)
400 IF A$=CHR$(13) THEN 500
410 CS=VAL(A$)
420 IF CS<1 OR CS>4 THEN 390
430 IF CS=1 THEN SI$="8Kbit  (1K x 8) EPROM active"
440 IF CS=2 THEN SI$="16Kbit (2K x 8) EPROM active"
450 IF CS=3 THEN SI$="32Kbit (4K x 8) EPROM active"
460 IF CS=4 THEN SI$="64Kbit (8K x 8) EPROM active"
470 CS=INT((2^CS)*2+.5)
500 '***** MAIN PROGRAM *****
510 GOSUB 8000				'CLEAR SCREEN
520 PRINT TAB(20);"<< JE665 MAIN MENU>>":PRINT
530 PRINT TAB(20);"G - GET DATA FROM DISK"
540 PRINT TAB(20);"P - PUT DATA ON DISK"
550 PRINT TAB(20);"L - LOAD DATA FROM PROGRAMMER"
560 PRINT TAB(20);"S - SAVE DATA TO PROGRAMMER"
570 PRINT TAB(20);"V - VIEW DATA"
580 PRINT TAB(20);"E - ENTER DATA"
590 PRINT TAB(20);"C - CHANGE EPROM SIZE"
600 PRINT TAB(20);"X - EXIT THIS PROGRAM"
610 PRINT : PRINT : PRINT TAB(10);SI$ : PRINT : PRINT
620 PRINT TAB(10);"ENTER SELECTION >";
630 S$=INPUT$(1)
640 IF S$="C" THEN 300
650 FOR S=1 TO 8
660 	IF S$=MID$(F$,S,1) THEN 690
670 NEXT S
680 GOTO 630
690 ON S GOSUB 1000 , 2000 , 3000 , 4000 , 5000 , 6000 , 7000 , 7000
700 GOTO 500
1000 '***** GET DATA FROM DISK *****
1010 GOSUB 8000				'CLEAR SCRPEN
1020 PRINT TAB(10);"GET DATA FROM DISK":PRINT
1030 PRINT
1040 GOSUB 8100				'GET FILENAME
1050 IF FI$="" THEN RETURN
1060 ON ERROR GOTO 8300			'ERROR ROUTINE
1070 OPEN "R",#1,FI$
1080 FIELD#1,128 AS R$
1090 ON ERROR GOTO 0			'NO MORE ERROR HANDLING
1100 PRINT
1110 PRINT "GETTING DATA . . ."
1120 PRINT "[";TAB(CS*2);"]"
1130 FOR X = 1 TO CS*2
1140 	GET#1,X
1150 	PRINT "*";
1160 	FOR Y%=1 TO 128
1170 		POKE BA+(X-1)*128+Y%-1,ASC(MID$(R$,Y%,1))
1180 	NEXT Y%
1190 NEXT X
1200 PRINT : PRINT
1210 PRINT "FUNCTION COMPLETE"
1220 CLOSE 1
1230 RETURN
2000 '***** PUT DATA ON DISK *****
2010 GOSUB 8000        '		CLEAR SCREEN
2020 PRINT TAB(10);"PUT DATA ON DISK":PRINT
2030 PRINT
2040 GOSUB 8100        			'GET FILENAME
2050 IF FI$="" THEN RETURN
2060 ON ERROR GOTO 8300        		'ERROR ROUTINE
2070 OPEN "R",#1,FI$
2080 FIELD#1,128 AS R$
2090 ON ERROR GOTO 0
2100 PRINT
2110 PRINT "PUTTING DATA . . ."
2120 PRINT "[";TAB(CS*2);"]"
2130 FOR X=1 TO CS*2
2140 	PRINT "*";:P$=""
2150 	FOR Y%=1 TO 128
2160 	   P$=P$+CHR$(PEEK(BA+(X-1)*128+Y%-1))
2170 	NEXT Y%
2180 	LSET R$=P$
2190 	PUT#1,X
2200 NEXT X
2210 PRINT : PRINT
2220 PRINT "FUNCTION COMPLETE"
2230 CLOSE 1
2240 RETURN
3000 '***** LOAD DATA FROM PROGRAMMER *****
3010 GOSUB 8000        			'CLEAR SCREEN
3020 PRINT TAB(10);"LOAD DATA FROM PROGRAMMER":PRINT
3030 PRINT
3040 GOSUB 9000        			'SET UP PORT
3050 GOSUB 9100        			'CHECK DSR LINE
3060 IF F=1 THEN 3100
3070 PRINT "PRESS <RETURN> WHEN PROGRAMMER IS READY"
3080 A$=INPUT$(1):IF A$<>CHR$(13) THEN RETURN
3090 GOTO 3050
3100 GOSUB 9200        			'TOGGLE DTR LINE
3110 D=161:GOSUB 9500   		'SEND CONTROL WORD A1
3120 NB=CS-1   				'NUMBER OF BLOCKS - 1
3130 N1=NB:IF NB=31 THEN N1=15
3140 PRINT : PRINT "LOADING DATA . . ."
3150 FOR X=0 TO N1
3160 	D=168:GOSUB 9500        	'SEND CONTROL WORD A8
3170 	FOR Y=0 TO 255
3180 	   DS=255:GOSUB 9400:POKE BA+X*256+Y,DR 	'GET A BYTE
3190 	NEXT Y
3200 	GOSUB 9300     			'CHECK CTS LINE
3210 	IF F=0 THEN PRINT "NO ACKNOWLEDGE FROM PROGRAMMER":A$=INPUT$(1):RETURN
3220 NEXT X
3230 IF NB<>31 THEN RETURN
3240 D=160:GOSUB 9500   		'SEND CONTROL WORD A0
3250 D=169:GOSUB 9500   		'SEND CONTROL WORD A9
3260 FOR X=0 TO 15
3270 	FOR Y=0 TO 255
3280		DS=255:GOSUB 9400:POKE BA+4096+X*256+Y,DR	'GET A BYTE
3290 	NEXT Y
3300	GOSUB 9300			'CHECK CTS LINE
3310 	IF F=0 THEN PRINT "NO ACKNOWLEDGE FROM PROGRAMMER":A$=INPUT$(1):RETURN
3320	D=173:GOSUB 9500		'SEND CONTROL WORD AD
3330 NEXT X
3340 GOSUB 9200				'TOGGLE DTR LINE
3350 D=161:GOSUB 9500			'SEND CONTROL WORD A1
3360 D=168:GOSUB 9500			'SEND CONTROL WORD A8
3370 RETURN
4000 '***** SAVE DATA TO PROGRAMMER *****
4010 GOSUB 8000				'CLEAR SCREEN
4020 PRINT TAB(10);"SAVE DATA TO PROGRAMMER":PRINT
4030 PRINT
4040 GOSUB 9000
4050 GOSUB 9100				'CHECK DSR LINE
4060 IF F=1 THEN 4100
4070 PRINT "PRESS <RETURN> WHEN PROGRAMMER IS READY"
4080 A$=INPUT$(1):IF A$<>CHR$(13) THEN RETURN
4090 GOTO 4050
4100 GOSUB 9200				'TOGGLE DTR LINE
4110 D=161:GOSUB 9500			'SEND CONTROL WORD A1
4120 NB=CS-1				'NUMBER OF BLOCKS - 1
4130 N1=NB:IF NB=31 THEN N1=15
4140 PRINT : PRINT "SAVING DATA . . ."
4150 FOR X=0 TO N1
4160	D170:GOSUB 9500			'SEND CONTROL WORD AA
4170	FOR Y=0 TO 255
4180		DS=PEEK(BA+X*256+Y):GOSUB 9400
4190		IF DS<>DR THEN PRINT "VERIFY ERROR AT ";X*256+Y:A$=INPUT$(1):RETURN
4200	NEXT Y
4210	GOSUB 9300			'CHECK CTS LINE
4220 IF F=0 THEN PRINT "NO ACKNOWLEDGE FROM PROGRAMMER":A$=INPUT$(1):RETURN
4230 NEXT X
4240 IF NB<>31 THEN RETURN
4250 D=160:GOSUB 9500			'SEND CONTROL WORD A0
4260 D=171:GOSUB 9500			'SEND CONTROL WORD AB
4270 FOR X=0 TO 15
4280	FOR Y=0 TO 255
4290	DS=PEEK(BA+4096+X*256+Y):GOSUB 9400
4300	IF DS<>DR THEN PRINT "VERIFY ERROR AT ";4096+X*256+Y:A$=INPUT$(1):RETURN
4310	NEXT Y
4320	GOSUB 9300			'CHECK CTS LINE
4330 IF F=0 THEN PRINT "NO ACKNOWLEDGE FROM PROGRAMMER":A$=INPUT$(1):RETURN
4340	D=175:GOSUB 9500		'SEND CONTROL WORD AF
4350 NEXT X
4360 GOSUB 9200				'TOGGLE DTR LINE
4370 D=161:GOSUB 9500			'SEND CONTROL WORD A1
4380 D=168:GOSUB 9500			'SEND CONTROL WORD A8
4390 RETURN
5000 '***** VIEW DATA (ASCII AND HEX) *****
5010 GOSUB 8000				'CLEAR SCREEN
5020 PRINT TAB(10);"VIEW DATA (ASCII AND HEX)":PRINT
5030 SA$="O"
5040 INPUT "ENTER THE STARTING ADDRESS (0 TO 1FFF) ";SA$
5050 GOSUB 8400				'HEX TO DECIMAL
5060 IF SA>8191 THEN 5030
5070 US$="\	\ \	\ \	\ \	\ \	\	:\	\ \      \:"
5080 PRINT : PRINT
5090 PRINT "ADDR	DATA HEX	             DATA ASCII"
5100 PRINT "----  ------------------------------------   -------------------"                                                                     
5110 FOR X=1 TO 16
5120	AD$ = RIGHT$("0000"+HEX$(SA),4)
5130	H1$ = FNH$(SA)+FNH$(SA+1)+FNH$(SA+2)+FNH$(SA+3)
5140	H2$ = FNH$(SA+4)+FNH$(SA+5)+FNH$(SA+6)+FNH$(SA+7)
5150	H3$ = FNH$(SA+8)+FNH$(SA+9)+FNH$(SA+10)+FNH$(SA+11)
5160	H4$ = FNH$(SA+12)+FNH$(SA+13)+FNH$(SA+14)+FNH$(SA+15)
5170	A1$="" : A2$=""
5180	FOR Y=0 TO 7
5190	A = PEEK(BA+SA+Y)
5200	IF A<32 OR A>127 THEN A1$=A1$+"." ELSE A1$=A1$+CHR$(A)
5210	NEXT Y
5220	FOR Y=8 TO 15
5230		A = PEEK(BA+SA+Y)
5240		IF A<32 OR A>127 THEN A2$=A2$+"." ELSE A2$=A2$+CHR$(A)
5250	NEXT Y
5260	PRINT USING US$;AD$,H1$,H2$,H3$,H4$,A1$,A2$
5270	SA=SA+16
5280 IF SA>=8192 THEN PRINT:PRINT "PRESS ANY KEY FOR MENU";:A$=INPUT$(1):RETURN
5290 NEXT X
5300 PRINT : PRINT : PRINT
5310 PRINT "PRESS <RETURN> TO CONTINUE - 'A' FOR NEW ADDRESS - ANY OTHER FOR MENU";
5320 A$=INPUT$(1):IF A$=CHR$(13) THEN PRINT : GOTO 5080
5330 IF A$="A" THEN 5000
5340 RETURN
6000 '***** ENTER DATA *****
6010 GOSUB 8000				'CLEAR SCREEN
6020 PRINT TAB(10);"ENTER DATA":PRINT
6030 SA$="0"
6040 INPUT "ENTER THE STARTING ADDRESS (0 TO 1FFF) ";SA$
6050 GOSUB 8400				'HEX TO DECIMAL
6060 IF SA>8191 THEN 6030
6070 AD=SA
6080 AD$=RIGHT$("0000"+HEX$(AD),4)
6090 PRINT AD$;":";
6100 I$=""
6110 INPUT I$
6120 IF I$="" THEN 6240
6130 FOR X=1 TO LEN(I$)
6140 	IF MID$(I$,X,1)=" " THEN I$=LEFT$(I$,X-1)+RIGHT$(I$,LEN(I$)-X):GOTO 6140
6150 NEXT X
6160 L=LEN(I$):IF L/2<>INT(L/2) THEN 6090
6170 FOR Z=1 TO L-1 STEP 2
6180	SA$=MID$(I$,Z,2)
6190	GOSUB 8400			'HEX TO DECIMAL
6200	IF SA>255 THEN 6080
6210	POKE BASE+AD,SA : AD=AD+1 : IF AD>8191 THEN 6030
6220 NEXT Z
6230 GOTO 6080
6240 RETURN
7000 'EXIT THIS PROGRAM
7010 PRINT: PRINT : PRINT
7020 PRINT "ARE YOU READY TO EXIT (Y/N)?";
7030 IF INPUT$(1)<>"Y" THEN RETURN
7040 GOSUB 8000				'CLEAR SCREEN
7050 PRINT TAB(55);"THANK YOU"
7060 GOTO 9999
8000 'CLEAR THE SCREEN
8010 FOR ZZ=1 TO 25
8020	PRINT
8030 NEXT ZZ
8040 RETURN
8100 'GET A FILENAME
8110 ON ERROR GOTO 8500
8120 PRINT : PRINT "DIRECTORY:" : FILES "*.ROM" : PRINT : PRINT
8130 FI$=""
8140 INPUT "ENTER THE NAME OF THE FILE ";FI$
8150 LF = LEN(FI$)
8160 CL = INSTR(FI$,":")
8170 IF CL<>0 AND CL<>2 THEN 8140
8180 IF CL=0 AND LF>8 THEN 8140
8190 IF LF>10 THEN 8140
8200 PD = INSTR(FI$,".")
8210 IF PD>0 THEN 8140
8220 IF LF<1 THEN FI$="" : RETURN
8230 FI$ = FI$+".ROM"
8240 PRINT
8250 ON ERROR GOTO 0
8260 RETURN
8300 'ERROR HANDLING
8310 IF ERR=53 THEN PRINT "**** FILE NOT FOUND ****':CLOSE 1:RESUME 1030
8320 IF ERR=61 THEN PRINT "**** DISK FULL ****":CLOSE 1:RESUME 2030
8330 IF ERR=67 THEN PRINT "**** DIRECTORY FULL ****":CLOSE 1:RESUME 2030
8340 PRINT "ERROR NUMBER ";ERR;" AT LINE ";ERL :STOP
8350 RETURN
8400 'HEX TO DECIMAL (SA$ TO SA)
8410 SA=0
8420 FOR X=1 TO LEN(SA$)
8430 	FOR Y=0 TO 15
8440 	   IF MID$(SA$,X,1)=HEX$(Y) THEN SA=SA*16+Y
8450 	NEXT Y
8460 NEXT X
8470 RETURN
8500 'HANDLE "NO FILES"
8510 IF ERR=53 THEN PRINT "NO EPROM FILES"
8520 RESUME NEXT
9000 'SET UP THE RS 232 PORT
9010 P=5*16+8 				'SET P TO PORT ADDRESS
9020 OUT P+3,128+8+4+2+1     		'GET READY FOR BAUD DIVISOR
9030 OUT P,12:OUT P+1,0      		'SEND BAUD DIVISOR
9040 OUT P+3,8+4+2+1 			'SET 8 BITS,2 STOP BITS, ODD PARITY
9050 OUT P+5,0       			'RESET FLAGS
9060 OUT P+1,0       			'DISABLE ALL INTERRUPTS
9070 RETURN
9100 'CHECK DSR LINE (PROGRAMMER READY)
9110 F=0
9120 IF (INP(P+6)AND 32)=32 THEN F=1  	'DSR BIT IS ON
9130 RETURN
9200 'TOGGLE DTR LINE (SIGNAL "COMPUTER READY")
9210 OUT P+4,INP(P+4)AND 254  		'TURN DTR BIT OFF
9220 OUT P+4,INP(P+4)OR 1     		'TURN DTR BIT BACK ON
9230 RETURN
9300 'CHECK CTS LINE (PROGRAMMER ACKNOWLEDGE)
9310 F=0
9320 IF (INP(P+6)AND 16)<>16 THEN F=1 	'CTS BIT IS OFF
9330 RETURN
9400 'SEND DATA BYTE
9410 'DS - DATA SEND 	DR - DATA RECEIVE
9420 IF (INP(P+5)AND32)<>32 THEN 9420	'WAIT FOR TX REG EMPTY
9430 OUT P,DS	     			'SEND THE BYTE
9440 IF (INP(P+5)AND 1)<> 1 THEN 9440	'WAIT FOR DATA READY
9450 DR = INP(P)     			'GET THE ECHO
9460 RETURN
9500 'SEND CONTROL WORD
9510 'D - CONTROL WORD
9520 OUT P,D	 			'SEND IT OUT
9530 RETURN
9999 END





Updated 11/16/2016 08:00 for a few typo's and added the modification instructions from user manual



Thanks.


Larry
 
Last edited:
Thanks Al, Dwight. I'll do some "old fashioned" typing and pretend I'm entering a program from a magazine. :) Might take me a while as I don't have a lot of free time, but I will get it done as I do enjoy that kind of thing.

The programmer has a 24 pin module on it stamped 228-3345. There is also a jumper block but the label is mostly worn off. The top, where it is the most worn lists some manufacturers (AMD, Fujitsu, Hitachi and Intel are all I can make out) and one side that says ??GM 32 sec @ 2 ms
 
32 seconds at 2 ms pulses is 16000 or a 27128.
Does the adapter have any parts on it? Switches are
the standard way to extend the range of programmers
to do the larger devices.
As long as there is a way to set the various voltages,
the size of the EPROM isn't an issue if the adapter has
enough switches to bank the additional addresses.
Thanks for posting the stuff, Al.
Too bad you didn't get a schematic for the main board.
Can you make photos of the various adapter PC boards?
Dwight
 
Can you make photos of the various adapter PC boards?
Dwight

yea, I need to pop off the glued on plastic covers
the four plugs I have are:
jm16a tms 2516 -2716 (25v) 16s @ 2ms
jm32a moto,ti 2532 (25v) 32s @ 2ms
jm32b amd,fuj,hit,nec,intel 2732 (25v) 32s @ 2ms
jm64a 6864 - 68L64 (25v) 64s @ 2ms


he probably has a jm32b module
 
It will have to do some exploring to see how the programming
voltage is selected. All of Al's adapters are for 25V. It doesn't
look like the resistors on the configuration plug are what you'd want
for selecting voltage. These would normally be 1% parts.
It probably is selected by connecting different resistors to ground.
They had an adapter for 12.5V so I think that should be enough
for most all EPROMs. Some EEPROMs need 5V but I suspect that
can be configured.
Dwight
 
32 seconds at 2 ms pulses is 16000 or a 27128.
Does the adapter have any parts on it?

31032300935_19c3112b21_z.jpg
 
Yes I think so based on the add, the table shows that as the only module that supports AMD and Fujitsu brands (which I can see on the label). Too bad as I want to program a 2764 EPROM for my Kaypro.

Don't be put off by the lack of there being one mentioned.
The algorithm they are using is a generic one and would work with most
any brand of EPROM.
One just needs the right voltage.
Most non-A 2764 are 21V the 2764A are usually 12.5V.
That is why we want the schematic for the jumpers.
We can do a lot of different parts.
Even though there are only 8K bytes of memory, with a simple adapter
and switch you can do larger EPROMs.
Do note the socket is 28 pin, they are just showing the 24 pin position.
Dwight
 
I typed in the program on my Kaypro (quite a while ago actually, but "life" got in the way of posting here). It's attached. Unfortunately there are some issues. Lines 240 to 270 initialize a section of RAM. It starts at 28672 and goes to 36864, poking 255 at each address. But my Kaypro only has 33848kb free with MBASIC. With the right boot disk I may be able to increase that but I haven't had the chance to experiment with that.

The next hurdle is the RS-232 section. The program as written is for an ACE chip whereas the Kaypro uses the Z80 SIO. In some assembling language comms programs it has been simple to change the port value but this program is beyond that. I have found some information on the Z80 SIO for programming but nothing that equates to what is in the program. It is beyond me. The lines in question are:

Code:
9000 'SET UP THE RS 232 PORT
9010 P=5*16+8             'SET P TO PORT ADDRESS
9020 OUT P+3,128+8+4+2+1  'GET READY FOR BAUD DIVISOR
9030 OUT P,12:OUT P+1,0   'SEND BAUD DIVISOR
9040 OUT P+3,8+4+2+1      'SET 8 BITS, 2 STOP BITS, ODD PARITY
9050 OUT P+5,0            'RESET FLAGS
9060 OUT P+1,0            'DISABLE ALL INTERRUPTS
 

Attachments

  • je665.bas.zip
    5.1 KB · Views: 1
Doug_M,
Can you save your typed Basic program on the Kaypro with: save "je665.bas",A
so it is plain ASCII text, versus being tokenized?

Thanks.

Larry
 
Last edited:
yea, I need to pop off the glued on plastic covers
the four plugs I have are:
jm16a tms 2516 -2716 (25v) 16s @ 2ms
jm32a moto,ti 2532 (25v) 32s @ 2ms
jm32b amd,fuj,hit,nec,intel 2732 (25v) 32s @ 2ms
jm64a 6864 - 68L64 (25v) 64s @ 2ms


he probably has a jm32b module
Sorry to stir up an old thread. I've also got a JE664 programmer with JE665 RS-232C interface, but I only have one jumper module:
JM64B (INTEL, 21V, PRGM 64 SEC @ 2 MS)

Were you able to trace out your jumper modules? I'd be willing to trace out the one I have. It would be great to create simple schematics for each jumper module variant as documentation, so enthusiasts can make their own jumper modules as needed. Also for posterity!
 
Back
Top