JohnPCAE
-
Posts
814 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Community Map
Posts posted by JohnPCAE
-
-
You need an ACC unit (see the Bird's Nest forum thread) for hi-res graphics on the Inty.
-
It looks fantastic, but I think it needs something. Maybe the background changes as you progress, or is more varied? Powerups would make things interesting, too. Keep up the good work!
-
You know, there is also the ACC that I developed. I'm not interested in manufacturing them, but the design is both frozen and open for anyone else to. And it's documented and even comes with a sample program. It's not an Intellivision III but it does give the Inty many of the Inty III's graphics capabilities. And it comes with a coprocessor that's emulated in software. The only caveat is that if you use an Inty I with it, you need to implement the System Changer mod to really take advantage of it (it will work without the mod but the overlaid graphics will be rather dim because of the heavy resistor the Inty I puts inline with overlay video).
-
2
-
-
I've built and tested the last board that I have, which gives me three spares. Since I have surplus parts, I've ordered another set of 5 boards. I have no idea how many of these I plan to build, but it gives me something to do. I don't plan to send all of them out for free as there is a cost to making these, but the offer to send free ones to interested developers is still out there.
-
1
-
-
A few updates:
1. Corrected a handful of characters in the built-in fonts. They had been incorrectly shifted left by a pixel.
2. Updated the silkscreen and Gerber files for the mainboard to reflect the correct chip types (e.g. 74HCT).
3. Added Appendix C to the documentation that shows all built-in font characters.
4. Added Appendix D to the documentation that explains how to load new firmware to the Raspberry Pi Pico.
-
17 minutes ago, tschak909 said:
Is there a complete pin mapping of the edge connector somewhere?
-Thom
We can do you one better. Here's the Intellivoice service manual, which includes a complete schematic:
The Intellivoice connector would be a great solution for FujiNet, but it can also be problematic. Data pins D0-D7 are open-collector, but not all Intellivoice units have the required pull-up resistors R28-R35. So anything you plug into it should provide its own pull-ups. A simple SIP resistor pack can do the trick. Also, many Intellivoice units don't have the IDC connector at all. Those would have to be retrofitted. In my Intellivoice II project, I provide the expansion connector but not the pull-up resistors.
-
6 hours ago, DZ-Jay said:
Would this make the FujiNet implementation depend on your ACC device? I thought the idea was to define a means to interface the ESP32 directly with the Intellivision, via the cartridge port or something.dZ.
It does, but right now the ACC is the only thing that provides any sort of external device connectivity to the Inty. As to why I chose a parallel port, it provides a ton of capability while also being an industry standard. You can connect any old printer from the 80's or 90's and it will work as long as you have the software to drive it. Or you could rig a DIN connector to its pins and bit-bang the Commodore 64 IEC protocol if you wanted to. Or you could connect a resistor ladder to the data pins and get crude analog sound. Or anything else you could do with a PC's parallel port.
-
Just now, tschak909 said:
ok was making sure, will have to look at the schematic to see how you've decoded that.
-Thom
The decoding is done in the Raspberry Pi Pico. It does all of the heavy lifting. It's a dual-core microcontroller. One core talks to the Intellivision bus and emulates a coprocessor and the other core handles video output.
-
6 hours ago, tschak909 said:
Where does the parallel port sit in the memory map?
-Thom
All ACC registers are at $007E and $007F. You select the register by writing to $007E and you set (or read) the register's value at $007F. If you've ever done CGA, EGA, or VGA programming, it will look very familiar. I do something similar with my USB card by putting its registers at $007C and $007D (so please don't use those).
-
I put together some sample code for manipulating the ACC's parallel port. With this you can bit-bang the parallel port pins. Do you need me to build you an ACC unit so you have something to test with?
I'm also attaching a PDF that describes the operation of the parallel port on a PC. It's what I followed when implementing it on the ACC. The ACC's parallel port is meant to operate like the port on a PC as closely as possible. The only deviation is that pin 17 is output-only in my implementation because I didn't have an IC pin available to read it.
; ACC registers ACC_REG_INDEX EQU $007E ACC_REG_VALUE EQU $007F ACC_REG_SIGNATURE EQU 0 ; read-only, always returns MAGIC_SIGNATURE (0x5EE5) ACC_REG_ENABLE EQU 1 ; .........ppppevm m = enable memory, v = enable video, e = sprite exclusion, ACC_REG_PALETTE_INDEX EQU 2 ; .......rrrrrrrrr 0 .. 511 allowed (256 palette colors, 2 registers per color) ACC_REG_PALETTE_VALUE EQU 3 ; bbbbbbbbaaaaaaaa two timeslice values (four timeslice values make up a single palette color) ACC_REG_STATUS_INFO EQU 4 ; r.......mmmmmmmm read-only. returns the number of times MSYNC went from low to high and whether the emulator is running. ACC_REG_CURSOR EQU 5 ; ......bceeeessss s = start scanline, e = end scanline, c = show cursor, b = enable cursor blink ACC_REG_CURSOR_POS EQU 6 ; yyyyyyyyxxxxxxxx y = row (0 .. 23), x = column (0 .. 39/79) ACC_REG_CHAR_SCANLINES EQU 7 ; ............ssss 1 .. 15 allowed ACC_REG_SCROLL_V EQU 8 ; ............vvvv 0 .. char. scanlines - 1, specifies starting character scan line ACC_REG_BUFFER_START EQU 9 ; dword location within video memory (4-byte granularity) ACC_REG_BUFFER_PITCH EQU 10 ; 1 .. 160 allowed. character-mode virtual screen pitch in characters. ACC_REG_SCREEN_MODE EQU 11 ; 0 .. SCREEN_MODE_MAX allowed (anything over the max is treated as the max) ACC_REG_GRAM_START EQU 12 ; the location within video memory (word granularity). Used only by text modes. ACC_REG_RESERVED EQU 13 ACC_REG_CYCLE_COUNT_LO EQU 14 ; read-only. low word of the raw bus cycle count ACC_REG_CYCLE_COUNT_HI EQU 15 ; read-only. high word of the raw bus cycle count ACC_REG_PARALLEL_DATA EQU 16 ; ........dddddddd bidirectional parallel port data register ACC_REG_PARALLEL_STATUS EQU 17 ; ........dddddddd same format as PC parallel port status register ACC_REG_PARALLEL_CONTROL EQU 18 ; ..........d.dddd same format as PC parallel port control register ACC_REG_START_PROCESSOR EQU 19 ; write an address here to tell the emulator to immediately start running at that location ACC_REG_EBCI EQU 20 ; read by emulated BEXT instruction ACC_REG_INT_VECTOR EQU 21 ; memory location used when triggering an interrupt with REG_INTERRUPT ACC_REG_INTERRUPT EQU 22 ; writing anything here triggers an interrupt in the emulator. does nothing if the emulator is halted. ACC_REG_R0 EQU 23 ; emulated CP-1600 register R0 ACC_REG_R1 EQU 24 ; emulated CP-1600 register R1 ACC_REG_R2 EQU 25 ; emulated CP-1600 register R2 ACC_REG_R3 EQU 26 ; emulated CP-1600 register R3 ACC_REG_R4 EQU 27 ; emulated CP-1600 register R4 ACC_REG_R5 EQU 28 ; emulated CP-1600 register R5 ACC_REG_R6 EQU 29 ; emulated CP-1600 register R6 ACC_REG_R7 EQU 30 ; emulated CP-1600 register R7 ACC_REG_FLAGS EQU 31 ; emulated CP-1600 flags ACC_BUFFER EQU $D000 ACC_ENABLE_ACCESS EQU 1 ACC_ENABLE_VIDEO EQU 2 ACC_ENABLE EQU 3 ACC_SIGNATURE EQU $5EE5 ; ------------------------------------------------------------- ; Returns whether the ACC (Advanced Console Component) is present ; ; Returns value in R0 ; 0 - not present ; 1 - present IsACCPresent PROC PSHR R5 PSHR R1 MVII #ACC_REG_SIGNATURE, R0 MVO R0, ACC_REG_INDEX MVII #ACC_REG_VALUE, R1 MVI@ R1, R1 CLRR R0 CMPI #ACC_SIGNATURE, R1 BNEQ @@ACCNotFound INCR R0 @@ACCNotFound: PULR R1 PULR R7 ENDP ; ------------------------------------------------------------- ; Writes to the parallel port data pins ; ; Data pins are pins 2-9 on the DB25 connector. ; ; R0 - The byte to output WriteParallelDataPort PROC PSHR R5 PSHR R1 MVII #ACC_REG_PARALLEL_DATA, R1 MVO R1, ACC_REG_INDEX MVO R0, ACC_REG_VALUE PULR R1 PULR R7 ENDP ; ------------------------------------------------------------- ; Reads from the parallel port data pins and returns it in R0 ; ; Data pins are pins 2-9 on the DB25 connector. ReadParallelDataPort PROC PSHR R5 MVII #ACC_REG_PARALLEL_DATA, R0 MVO R0, ACC_REG_INDEX MVI ACC_REG_VALUE, R0 PULR R7 ENDP ; ------------------------------------------------------------- ; Reads from the parallel port status pins and returns it in R0. ; Use this to read port pins 1, 10-16. ; ; Bit Name Inverted Port pin Type ; --------------------------------------------------- ; 0 Strobe Yes 1 Control ; 1 AutoLF Yes 14 Control ; 2 Init No 16 Control ; 3 Error No 15 Status ; 4 Select No 13 Status ; 5 Paper out No 12 Status ; 6 ACK No 10 Status ; 7 Busy Yes 11 Status ReadParallelStatusPort PROC PSHR R5 MVII #ACC_REG_PARALLEL_STATUS, R0 MVO R0, ACC_REG_INDEX MVI ACC_REG_VALUE, R0 PULR R7 ENDP ; ------------------------------------------------------------- ; Writes to the parallel port control port. Use this to output ; to control port pins 1, 14, 16, 17 and set whether data pins ; 2-9 are input or output. ; ; Bit Name Port pin ; -------------------------------- ; 0 Strobe 1 ; 1 AutoLF 14 ; 2 Init 16 ; 3 Select printer 17 ; 4 Reserved N/A ; 5 Data input N/A ; 6 Reserved N/A ; 7 Reserved N/A ; ; R0 - The byte to output WriteParallelControlPort PROC PSHR R5 PSHR R1 MVII #ACC_REG_PARALLEL_CONTROL, R1 MVO R1, ACC_REG_INDEX MVO R0, ACC_REG_VALUE PULR R1 PULR R7 ENDP ; ------------------------------------------------------------- ; Reads from the parallel port control port and returns it in R0. ; This cannot be used to read the state of port pins 1, 14, 16, ; and 17 (see status port) but it can be used to read what is ; being output to those pins as well as read the state of the ; Data input bit. ; ; Bit Name Port pin ; -------------------------------- ; 0 Strobe 1 ; 1 AutoLF 14 ; 2 Init 16 ; 3 Select printer 17 ; 4 Reserved N/A ; 5 Data input N/A ; 6 Reserved N/A ; 7 Reserved N/A ReadParallelControlPort PROC PSHR R5 MVII #ACC_REG_PARALLEL_CONTROL, R0 MVO R0, ACC_REG_INDEX MVI ACC_REG_VALUE, R0 PULR R7 ENDP ; ------------------------------------------------------------- ; Sets the parallel port data pins to output SetParallelDataOutput PROC PSHR R5 PSHR R0 MVII #ACC_REG_PARALLEL_CONTROL, R0 MVO R0, ACC_REG_INDEX MVI ACC_REG_VALUE, R0 ANDI #$00DF, R0 MVO R0, ACC_REG_VALUE PULR R0 PULR R7 ENDP ; ------------------------------------------------------------- ; Sets the parallel port data pins to input SetParallelDataInput PROC PSHR R5 PSHR R0 MVII #ACC_REG_PARALLEL_CONTROL, R0 MVO R0, ACC_REG_INDEX MVI ACC_REG_VALUE, R0 ANDI #$00DF, R0 XORI #$0020, R0 MVO R0, ACC_REG_VALUE PULR R0 PULR R7 ENDP -
I did some searching and I ran across this helpful video. It appears that it's a hardware/software system that emulates disks, printers, and networking on various devices. It started out for Atari 8-bit and is being expanded to Apple ][, Coleco ADAM, and Commodore 64.
It seems to me that a lot would have to be stood up on the Intellivision side. As a games console, it has no concept of disk devices or external loading. There's no existing protocol whatsoever. I suppose we could piggyback on an existing protocol from one of the above systems, maybe? At any rate you'd need either an ECS for keyboard input or something else like the USB card I'm working on.
-
I'm still trying to understand. Does FujiNet have existing hardware that the Inty could talk to, or is it just a software stack? I've noted that you mentioned that you have cross-platform software, but we don't have a C compiler for the CP-1600 CPU as far as I know. We have IntyBasic which is a cross-compiler and we have CP-1600 assembly.
-
I'm building the 5th circuit board (which is the last one I have), but I have parts for more. So I'm tempted to order more boards. At any rate, I have two spares sitting on the table and soon a third one. Free to people interested in investigating developing for it.
-
2
-
-
These are the final Gerber files and BOM for the circuit boards:
-
1
-
-
It took a few iterations (thanks to the two folks who tested these for me), but these are the final versions of the case model files. These give a great fit with no issues. And a little bird tells me that labels and faceplates might become available...
-
1
-
-
Most of the ACC is beyond the scope of FujiNet. Its primary purpose is to provide upgraded text and graphics to the Intellivision. The parallel port was an addition that I was able to add to it. Nevertheless, here is an Eagle schematic of the unit. As for the parallel port portion of the schematic, I'll attach an image:
-
1
-
-
10 minutes ago, tschak909 said:
Well, the DB25 port conforms to a standard bidirectional parallel port with the exception of pin 17 (pin 17 is output-only rather than bidirectional). So, any external peripheral that can talk to a parallel port can talk to the Inty if an ACC is plugged in.
The port is a standard port, i.e. it doesn't implement ECP or EPP capability.
-
-
Two spares left now!
-
I have a third spare unit ready for any developer who wants to play with it. I have a total of five circuit boards, which means that I can build up to five units. So far I've built four, which leaves one for me and three spares.
-
I could see the 10% tolerance on C33 causing some hue variation from unit to unit, especially with brown.
-
1
-
-
Ah. I can see how the ROM access time could create a phase delay, and C33 would definitely induce a phase delay. I suppose the combination of the two results in the 23-degree advance that I saw. The fact that C33 has a 10% tolerance is really striking.
-
The point of the ACC is to exceed the graphical capabilities of the Master Component. From a graphical standpoint, it's a Keyboard Component on steroids. The coprocessor and parallel port are bonuses that I was able to add. The coprocessor is only possible because the CP-1600 in the Master Component uses so many NACT cycles: when there is a transition to a NACT, the CPU core that talks to the Master Component is free to execute a coprocessor instruction instead. And the parallel port is there simply because I had a couple of spare logic gate pins to support it.
-
I wonder if a small add-on with a Raspberry Pi Pico could emulate several AY sound chips and provide separate stereo sound on its own RCA jacks.
We might need to design something like the Aquarius Mini-Expander for the Inty with all the potential plugin add-ons out there. I'm thinking something that could accommodate five or six top-down plugin modules like the ECS Program Exapnder, but with different features:
1. Intellivoice
2. USB interface
3. Stereo sound
-
1
-


Bizarre Intellivision game
in Intellivision / Aquarius
Posted · Edited by JohnPCAE
No, my point is that it's not an Inty game, since AFAIK no one has any ACC units (even though I have 2 complete units ready to ship to interested devs).