Replic'Oric

This is the right place to discuss on how to implement hardware vsync, adding a VIA or AY chipset, puting multiple roms, or how to design a new flash expansion card.
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Replic'Oric

Post by Godzil »

Hi there, I'll present to all of you my Replic'Oric project:

But what is Replic'Oric? Replic'Oric is an Oric Replica with two version and this project have a few goals:
- The first goal is to provide a fully useable Oric Schematics as the only know schematics is an old scan from originals paper from Oric International and some part are barely readable or some components does tell their part number. (I.E. IC21 which is a 74LS04)
- The schematics will also include all known official reworks found in the service manual and on Oric from Oric France (buffer on Phi2, Diodes on tape signals.., +5V for SCART connector)
- The second goal is to provide replacement PCB for broken Oric. Thoses PCB will of course have a similar layout of the official one, especially on the connectors position, but I will try to keep major components positions and orientation

And there will be at least two version for the replica
- The first version will be a fully vanilla one is to get a standard replica where all original components could be soldered and get a fully functional Oric.
- The second version will be a more "modern" version of the Oric removing the need of the ULA and most of the TTL chips and use a CPLD (or FPGA) to replace them, the 6502, VIA, PSG will of course be the same. This version will of course keep all the standard connectors, and may why not include all the StratoCumulus enhancement.

The roadmap is as follow:
End of this week or next week: The schematics should be finished followed by a verification that everything is OK => The "new" schematic will be released
End of May: The PCB layout should be done => release of the PCB layout
June-July: A batch of PCB could be done (10 pieces will cost around $10/PCB, 30 pieces will be around $7, VAT and delivery excluded)
End of this year: Depending on the difficulty of sourcing components, fully functional replica PCB could be made and sold (price unknown as it will really depends on components prices)

One problem on the "fully functional replica" is provisioning in ULA. But the more problematic is the ROM as there is still copyright on it. I may need to deliver without ROM or a Free one that will not be an Oric ROM. Or try to get official authorisation to distribute physical copy of the Oric 1/Atmos ROM (Bill G. where are you? ;))
The ULA problem could be solved by an ULA replica in a CPLD with an adaptation board to fit in a DIL40.

At the same time, the StratoCumulus project will also be done in parallel, but the roadmap is still unclear for now, so I can't comment on it (and it will depends on other non Oric projects) And depending on what the Second version of the Replic'Oric will include, it may need to wait for the StratoCumulus.

Another part, is on the mechanical part. I'm absolutely not an expert on this, and the most complex part will be the Keyboard, I think it's almost impossible now to build a copy of the Oric keyboard, and plastic mould cost really a lot and I don't know what's happen to Tangerine mould but I suspect they were trashed.. I really don't know if making a replica case could be possible in the current situation.
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Replic'Oric

Post by iss »

Congrats for the idea and for the readiness to make it real!
I have the same intentions but (as usual) no enough time.
Anyway, I would like to be helpful with everything, so here some info which may be handy.
jorodr already started his project Pravetz-9D - an extended version of Pravetz-8D/Atmos.
The schematic (drawn in KiCAD) is almost finished and is without modifications.
About ULA: I think it can be found enough chips.
About PCB: Yes, it should be 'compatible' with the original one, but if the chips are properly placed and routed a relatively large area can be freed for something useful.
About KBD: There is already nice solution - USB keyboard :).
usbkbd-8d.jpg
usbkbd-8d.jpg (29.05 KiB) Viewed 25479 times
oricfan
Private
Posts: 1
Joined: Thu Mar 06, 2014 8:11 pm

Re: Replic'Oric

Post by oricfan »

More pictures from me :)
Attachments
Pravetz 8D USB keyboard
Pravetz 8D USB keyboard
8DUsbKey.jpg (432.58 KiB) Viewed 25462 times
User avatar
Chema
Game master
Posts: 3013
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Replic'Oric

Post by Chema »

All this stuff is really incredible. I am not a hardware guy, but your work is impressive.

Congratulations.
User avatar
coco.oric
Squad Leader
Posts: 720
Joined: Tue Aug 11, 2009 9:50 am
Location: North of France
Contact:

Re: Replic'Oric

Post by coco.oric »

There's a lot of ideas wow !
I'm don't understand a lot of things about hardware but it will be marvelous is some of them are finishing in a small production
coco.oric as DidierV, CEO Member
Historic owner of Oric, Apple II, Atari ST, Amiga
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: Replic'Oric

Post by Godzil »

The schematic capture is done! I will now verify that there is no missing net or component (but I doubt) and already start to place component on the pcb!

The work Tangerine made on the pcb layout is not that bad for a hand drawn pcb (there were no cad software a that time) as the component are really packed. There are a few possible improvement, but this is not the goal for this step.

The version will be issue 6 that include all know official rework including the one from Oric International on tape input and the 5V for RGB output. I use a compatible DIN connector so existing cable should work.

The component placement should be really similar to the issue 4. There could be small adjustment as i don't need precise placement for chip, only the connector and hole will be at the exact same place (and NMI button and speaker)

One last thing, to accommodate with more easy to find 20cm x 15cm pcb panel, the pcb will be 0.5cm less on the large side (the two screw hole may be a bit cut, but that's not a real problem.)
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Replic'Oric

Post by iss »

Good progress! Do you plan to release your work to public (at least the schematic)?
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: Replic'Oric

Post by Godzil »

iss wrote:Good progress! Do you plan to release your work to public (at least the schematic)?
Of course! The goal of the first step of this project is to provide a complete replica of the Oric and in an open source manner!

I will publish it as soon as it is correct for me
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: Replic'Oric

Post by Godzil »

I will update this topic, but maybe not as often as my blog so if you want to be sure to have the latest news you can take a look at my dev blog here: http://www.986-studio.com/category/retr ... ting/oric/
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: Replic'Oric

Post by Godzil »

This is part of the "NewOric" and StratoCumulus project.
As I'm working on this project, I come to this specs for the recolouring mode:

There is 16 palettes (4bit), with 8 entry for each palette, the entry will replace the original ULA colours by the defined in the palette.

Each colour have 4 bit per component (total 12bit: 4096 possible colours)
So we could display (without raster & mid-frame change tricks) a total of 16*8 = 128 colours per screen.

There is 8 colour mode, three specialized for both ULA mode (Text and Hires) and “normal mode” where only one palette is set for the whole screen. All other mode are region based colour map.
Mode 7 is still to be defined

So each palette will have a number between 0 to 15, which use 4 bits.

mode 0 = 1 block of 240x200 => Global Screen Mode => Use 4 bit => 1 byte
mode 1 = 40 x 25 block of 6x8 (Text mode) => Text Mode => Use 40*25*4bit => 500 bytes
mode 2 = 40 x 200 block of 6x1 (Hires Mode) => Hires Mode => Use 40*200*4bit => 4000 bytes
mode 3 = 14 x 13 of 18x 16 => Small Region => Use 14*13*4bit => 91 bytes
mode 4 = 8 x 7 of 30x 32 => Medium1 Region => Use 8*7*4bit => 28 bytes
mode 5 = 4 x 4 of 60x 56 => Medium2 Region => Use 4*4*4bit => 8 bytes
mode 6 = 2 x 2 of 120x104 => Large Region => Use 2*2*4bit => 2 bytes
mode 7 = TDB
So there is a maximum of 4000byte to (<4KB) to be transferred for the worst mode (Hires)

/!\ This colour modes does not change the ULA behaviour it will just replace normal colours by a palette system with multiple possible colour maps /!\

The goal of this is to keep maximum compatibility with original hardware and may allow to use the text mode as a more advanced tile-map engine as is it currently.
(sorry still not possible to do pixel precise scrolling.)

Mode 3 to 6 “colour overlay” are slightly larger than the real screen (240×200) this is due to rounding error, and the all region are just cropped (everything that goes beyond the screen 240×200 is just ignored)
Mode 7 could be do to be a “Hicolour Hires mode” in a per pixel palette, but this mode can’t be used (at least to change frequently the colour map) for anything else than still pictures.
This mode will consume 24000 bytes.

This colour-map video memory should be normally accessed via new registers in the $0300 address space. It could also be possible to allow access to it through the overlay mechanism.

I will make an Oricutron Patch to propose this behaviour on emulated Oric to let people try this way of (re)colouring the Oric.

There is no plan on changing the display resolution, or add new behaviour on the standard ULA display buffer.
The only thing I think that could be added is some sort of hardware sprites but at the expense of not being compatible with standard Oric.

( See: http://www.986-studio.com/2014/04/23/re ... ring-mode/ )

This is a request for comment
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: Replic'Oric

Post by Godzil »

Hi there :)

I've made a prototype of the new display colouring mode in Oricutron. I've attached to this post a Win32 executable and a basic demo tape that show how will behave the color overlay.

It currently only support mode 0, 1 and 2, but it proove that it works and can be usefull.

Don't take registers address as final, this is only a test demo, and it could change.

To use the tape demo, put the oricutron_neworic.exe in the same folder as your oricutron, then, if you want to automatically start on it, change the cfg file to put "neworic" in place of "atmos" in the "machine" field
If you don't want to change the config file, just select the "NewOric" hardware type in the GUI.

( /!\ Overlay in this post mean Colour overlay, and not the 16K memory overlay /!\ )

There is currently 4 registers:

#03E0 : MODE : Select colour overlay mode
#03E1 : MEMSEL : Select between palette (0) / overlay memory (1)
#03E2 : PTR : Set Palette/Memory pointer (PTR), This register use a flipflop to select between b15-b8 and b7-b0.
#03E3 : DATA : Write/Read from palette or overlary memory. On each read/write PTR is incremented by 1

If you read or write on MODE and MEMSEL the PTR flipflop will reset and next write to PTR will set b15-b8.

(BTW all #03Ex are reseved in this version and handled by the ULA)

Caveats: This version of Oricutron could be slower than the normal one, this is an emulation problem and will not be on the hardware, there will not be any impact on the device speed. The patch is based on Oricutron 1.1

Hint: the "scanline" mode does nothing in the NewOric mode, or it does something, it behave like if the overlay was not here. So you can use this to toggle the "overlay" display.

Also, the OpenGL mode does not display the colour overlay.

Here the basic code in the tape:

Code: Select all

1 CLS:PAPER 0:INK 7
2 PRINT "Showing Recoloring!"
3 PRINT CHR$(128);"0";CHR$(129);"1";CHR$(130);"2";CHR$(131);"3";CHR$(132);"4";CHR$(133);"5";CHR$(134);"6";CHR$(135);"7"
4 PRINT:PRINT
7 POKE #3E0, 0: ' Set mode 0
8 POKE #3E1, 0: ' Set MEMORY to PALETTE
9 R=0:G=0:B=0
10 FOR R = 0 TO 15
11 GOSUB 100
12 NEXT:R = 0
20 FOR G = 0 TO 15
21 GOSUB 100
22 NEXT:G = 0
30 FOR B = 0 TO 15
31 GOSUB 100
32 NEXT:B=0
40 GOSUB 100
41 PRINT "Preparing next test.";CHR$(13);
42 POKE #3E0, 1: ' Set mode 1
43 POKE #3E1, 1
44 POKE #3E2, 0:POKE #3E2, 0
45 FOR Y = 0 TO 24 STEP 2:
46 FOR X=0 TO 39 STEP 2:POKE #3E3, #01 : NEXT
47 FOR X=0 TO 39 STEP 2:POKE #3E3, #10 : NEXT:NEXT
48 POKE #3E1, 0
49 PRINT "Show Mode 1 effect..."
50 FOR R = 15 TO 0 STEP -5
51 FOR G = 15 TO 0 STEP -5
52 FOR B = 15 TO 0 STEP -5
53 GOSUB 100
54 NEXT:NEXT:NEXT
55 WAIT 100:R=0:G=0:B=0
56 GOSUB 100
60 POKE #3E0, 2:60 POKE #3E1, 0
61 PRINT "Show Mode 2 effect..."
62 FOR R = 15 TO 0 STEP -5
63 FOR G = 15 TO 0 STEP -5
64 FOR B = 15 TO 0 STEP -5
65 GOSUB 100
66 NEXT:NEXT:NEXT
67 WAIT 100:R=0:G=0:B=0
99 END
100 ' Change color
101 POKE #3E2, 0: ' Set PTR to #0000 to only change black
102 POKE #3E2, 0
103 POKE #3E3, R
104 POKE #3E3, G * 16 + B
105 PRINT "RGB = ("; R; ",";G; ",";B;")    ";CHR$(13);
106 WAIT 2
107 RETURN
Enjoy!
Attachments
basic_test.tap
(1.04 KiB) Downloaded 716 times
oricutron_neworic.zip
(477.5 KiB) Downloaded 793 times
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Re: Replic'Oric

Post by Xeron »

Hmmm.. I didn't have OpenGL mode or scanlines enabled, but I didn't see any effect.

I tried setting the swdepth to 16 and 32 as well, didn't make any difference.
User avatar
ibisum
Wing Commander
Posts: 1643
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Replic'Oric

Post by ibisum »

I'm not able to run this (no Windows machine at the moment) but thought I'd add to the threads my thoughts on the 'Expanded Oric' topic.. which I will approach from the perspective of a naive dilettante, since the other end of that spectrum is well and truly covered. ;)

If I were to express some 'factors' for Oric-1 expansion, it may look like this:

1. Any "Expanded Oric" should try to remain true to the spirit of the original, insofar as it remains 100% compatible (i.e. can run old Oric software too).
2. Expansions to the Oric architecture, then, should be done in such a way that they don't alter the original.
3. These are the easiest way we can currently massively expand on the original: RAM and DISK, and VIDEO.
4. The 'next-easiest' might be I/O: USB, Serial, etc.
5. How to remain compatible with the original, but yet offer new features?
6. Start at the RAM.
7. The original Oric used well-defined RAM pages as a primary interface.
8. An Oric-1 with 128K RAM might use Page #80 (128th block of RAM), for example, as a place to store extra color information.
9. The Video component of the Oric-Expanded might use the 'normal' Video page for its inputs...
10. But *also* consult page #80 for extra color information, which ..
11. .. render Video with 16-bits of color data per pixel, instead of 8.
12. This would mean a modified original Oric 1.1 ROM that is 'granted' access to more RAM pages can still run original Oric-1 software, but nevertheless give Expanded programs the ability to do .. a little more.
13. Page #7F could be used, for example, for sample playback.
14. &etc.

Maybe this isn't as grand a step in the order of things as adding VGA, PCI, and other such wonders to the Oric base, but I think that there is another way to consider 'upgrades' to an Oric which might be beneficial, even if lower scope.
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: Replic'Oric

Post by Godzil »

Xeron: I forgot to tell that it only fork in 32bit mode (I was too lazy to add support for the 16Bit mode :D)

Are you sure that you run it in 32bit mode?

Ibisum: don't worry, first the "memory" used will not be on the system ram, the "ULA" will have it's own memory, and the first goal if this project is to keep 100% compatibility with the 1 and the Atmos.

The "NewOric" project is mainly a project to try to do what could have been done if Oric Product International had wanted at that time to create a (real) successor to the Atmos with 100% compatibility with it and adding intersting new features.
My solution to provide more colors is one of them, but don't worry, it will allow to have more colors, but it won't make things especially easy as the framebuffer remain the same :)


Edit: I've just tested on another computer, put the exe in the same folder as the Oricutron installed by the OSDK, then switch to the "New Oric" hardware, and load the tape.

Ho I forgot to say that the tape does not have the autorun enabled, this was intended to allow to look at the code, so you need to explicitly run it :)
User avatar
ibisum
Wing Commander
Posts: 1643
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Replic'Oric

Post by ibisum »

The "NewOric" project is mainly a project to try to do what could have been done if Oric Product International had wanted at that time to create a (real) successor to the Atmos with 100% compatibility with it and adding intersting new features.
:)
Post Reply