Previous Thread
Next Thread
Print Thread
Page 35 of 56 1 2 33 34 35 36 37 55 56
rfka01 #106419 07/07/16 03:39 PM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
Today i promoted the Rainbow-100-B driver to working. I also added a fourth (PC double density) drive for better data exchange. Note that you will need IMPDRV3.SYS in CONFIG.SYS (and D: becomes unavailable).

The screenshot shows a Rainbow-100 B with amber monitor, mounted hard disk and real time clock. DC.COM (a fast, free Norton Commander clone) is running under CodeBlue (a 3rd party PC emulator). Most non-graphical applications work. cool

There is a FreeDOS image mounted on F: (you cannot boot that, before anyone asks)...

[Linked Image from dl.dropboxusercontent.com]

Noticed that DIPs are a bit garbled in newer builds. They used to be aligned according to the order of the DIP macros.

P.S.: the serial port still needs some love.


Last edited by Bavarese; 07/07/16 04:12 PM.
rfka01 #106430 07/08/16 12:45 AM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
From the Shoutbox:
Code
R. Belmont: Bav: if you're around, I have a question about your vtvideo patch. is the case 0x0b: meant to fall through into 0x0c? 
'0x0a' and '0x0b' are separate cases. Truth is, i changed the polarity of 'reverse_field' -late- to get correct colors (both in SETUP and the video test on the diag.disk).

Perhaps my idea of a reverse characters is wrong?

VT-180 specs, chapter 6-43 says: "reverse characters are (an) XOR of reverse video and reverse screen" and i came up with

Code
invert = invert ^ m_reverse_field ^ m_basic_attribute;
..which looked good. There is also a separate logic to handle 'blank' space (bit = m_reverse_field ^ m_basic_attribute).

I spent quite some time to reconcile my code with the docs, and verify character attributes. There was even a truth table in the VT100 tech.manual i implemented (see reference a. below).

It should be possible to iron out the remaining bugs. I assume a complete rewrite might be overkill for a business machine.

REFERENCES:
a. complete truth table (for attributes) from TABLE 4-6-4 (in VT100 technical manual)
b. VT-180 manual 6-30 (for screen attributes)
c. VT-180 specs, chapter 6-43 (where multiple attributes are described

Last edited by Bavarese; 07/08/16 12:52 AM.
rfka01 #106477 07/11/16 06:15 AM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
Saved from the Shoutbox:

Code
Lord Nightmare: bavarese: vtvideo.cpp is incorrectly showing vt100 video as interlaced regardless of the setting of the config bit on setup page B

Lord Nightmare: i assume changing the setup bit should instantly take effect

Lord Nightmare: to get to vt100 setup page b: boot vt100, press f5 repeatedly until setup page A comes up, then press '5' repeatedly until setup page B comes up

Lord Nightmare: the meaning of the block of config bits at the bottom can be found on page 6-4 (PDF page 249) of 

http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/terminal/vt100/EK-VT100-TM-003_VT100_Technical_Manual_Jul82.pdf

Lord Nightmare: NEVERMIND, I screwed up, the interlace bit works PERFECTLY. I miscounted which field to change the bit in
Lord Nightmare: what doesn't seem to work is the 'inverse video' or white on black vs black on white bit, nor the AVO functions which should have "SETUP A"
 blinking and "to exit press setup" underlined, but that is most likely a vt100 driver issue, not a vtvideo.cpp prob

Lord Nightmare: so AVO support in vt100 driver is currently at least partially broken, if not completely.

Bavarese: VTVIDEO contains 2 sections. The VT100 section

vt100_video_device::device_start(),
vt100_video_device::display_char)

is essentially unchanged since 2009 and many features (48 line mode; soft scroll; intensity / 4 color palette, interlaced mode) are unimplemented there...

When i began, i lacked ROMs and experience, plus i have never seen a VT style terminal to this day. So i am unable to compare my interpretation of attributes with live hardware.

The Rainbow is my reference machine. It doesnt have an AVO as such, while it treats the basic attribute as inverse (*)

Once you * have * the larger picture, this approach appears inadequate and must be expanded (...somehow) smile

You could try to adapt the VT driver to use

'rainbow_video_device::display_char' and
'rainbow_video_device::device_reset()'

instead of the vt100_ (old, 2009 style) routines.

Evaluation of DC011 and DC012 (write) registers is mostly the same. Just take care of the extra 'break' statements in cases 0x0d and 0x0f (of routine dc012_w)...!

(*) P.S.: i think that a VT100 _with_ AVO interprets the 'basic attribute' as inverse, while one without treats it as _underline_.

Last edited by Bavarese; 07/11/16 07:41 AM.
Bavarese #106508 07/13/16 05:48 AM
Joined: Jan 2016
Posts: 76
Likes: 5
B
Member
Offline
Member
B
Joined: Jan 2016
Posts: 76
Likes: 5
Originally Posted by Bavarese
(*) P.S.: i think that a VT100 _with_ AVO interprets the 'basic attribute' as inverse, while one without treats it as _underline_. [/b]

I recall this being one of the (few) differences between running programs on the Rainbow and running them on the VT102 at work (which had the AVO stuff). It mattered only for one silly program I ran back in the day, but I can't recall what that was.

Warner

P.S. I'm back. I had to take a couple months off from this project, but I'm back now.

rfka01 #106749 08/04/16 12:39 PM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
I have done some data forensics on weak disks. If you happen to have the unaltered, original file (or a dump of the IBM character set) please post it!

Most important is the lost Code Blue (IBM emulator) update - required for DOS 3.10b. Now comes with documentation, hints, and a key map -

1) https://dl.dropboxusercontent.com/u/37819653/BANNISTER/CODEBLUE_3.x_UPDATE_rev.20160804.7z
Note: CB3.EXE floating around has all mandatory and optional patches applied ('Yes' everywhere, 'fast' key repeat, IBM character ROM installed). My patch is better / more flexible smile

This update expects version 2.0 of CB.EXE (from 1987)...


IFormat & IDrive (with IFORMAT3, which had a harmless bad spot around offset $229D):
2) https://dl.dropboxusercontent.com/u/37819653/BANNISTER/IFORMAT_RECOVERED.7z


3) the fast, free Norton Commander clone written in assembly (Soeren Kragh, 1992) i used in the screenshot above.

(last download contains an untampered archive. Must be invoked via CodeBlue /V on the Rainbow, as it was written for PCs)

Last edited by Bavarese; 08/04/16 05:58 PM.
rfka01 #106750 08/04/16 02:10 PM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
Post 3.10 patches from January 1990 for CodeBlue. Handles a bug in the keyboard routine. Also addresses users of international keyboards (January 1990).

Interesting because it lists (and somehow knows / patches in) all the various keyboards sold (mine for example, is a 'LK201-AG')...

Last edited by Bavarese; 08/04/16 05:59 PM.
rfka01 #106887 08/15/16 09:56 AM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
(Question regarding screen macro)

How do i specify a second, totally independent graphical screen from within the rainbow. driver?

First screen is reserved for the on-board output (vt100 video, text only; working).

The 2nd (new) screen should be driven exclusively by the NEC 7220 display controller (accessed in several drivers like QX10, DMV, IF800 and VT240).

I now have implemented some of the extra logic on the Rainbow color graphics board, as well as the mandatory

UPD7220_DISPLAY_PIXELS_MEMBER( hgdc_display_pixels );

...and now cant figure out how to "set the screen". Is it

Code
MCFG_UPD7220_SET_SCREEN("screen2")

 or 

MCFG_VIDEO_SET_SCREEN("screen2")
I'd also like to have a callback to set and clear the video interrupt on VSYNCs, similar to the VT100 (text only) video driver. For the vt100 video driver, it used to be something like

Code
MCFG_CPU_VBLANK_INT_DRIVER("screen", rainbow_state, vblank_irq)
 MCFG_VT_VIDEO_CLEAR_VIDEO_INTERRUPT_CALLBACK(WRITELINE(rainbow_state, clear_video_interrupt))
Can you help me? Is there something obvious i overlooked?

Thank you very much,
Karl.

Errors i copied over from previous attempts:

Code
Driver rainbow (file rainbow.cpp): 1 errors, 0 warnings
Errors:
   uPD7220 device 'upd7220': No screen specified for device ':upd7220', but multiple screens found

------------
On another occasion (different macro config):

MCFG_VIDEO_SET_SCREEN called on device ':screen2' with no video interface

Macro code for screen 1 and screen 2 (= preliminary):
Code
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(132 * 10, 49 * 10)
MCFG_SCREEN_VISIBLE_AREA(0, 80 * 10 - 1, 0, 48 * 10 - 1)

MCFG_SCREEN_UPDATE_DRIVER(rainbow_state, screen_update_rainbow)
MCFG_SCREEN_PALETTE("vt100_video:palette")
MCFG_GFXDECODE_ADD("gfxdecode", "vt100_video:palette", rainbow)

MCFG_DEVICE_ADD("vt100_video", RAINBOW_VIDEO, 0)
MCFG_VT_SET_SCREEN("screen")
MCFG_VT_CHARGEN("chargen")
MCFG_VT_VIDEO_RAM_CALLBACK(READ8(rainbow_state, read_video_ram_r))
MCFG_VT_VIDEO_CLEAR_VIDEO_INTERRUPT_CALLBACK(WRITELINE(rainbow_state, clear_video_interrupt))

// ************************************************ SECOND video hardware (GDC-NEW) 

/* Devices  (GDC-NEW) */
	MCFG_DEVICE_ADD("upd7220", UPD7220, 8000000/6) // unk clock
//	MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map)
	MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(rainbow_state, hgdc_display_pixels)

MCFG_SCREEN_ADD("screen2", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate 
MCFG_SCREEN_SIZE(800, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 800-1, 0, 240-1)

MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)

Last edited by Bavarese; 08/15/16 10:01 AM.
rfka01 #106888 08/15/16 10:02 AM
Joined: May 2004
Posts: 996
Likes: 103
D
Senior Member
Offline
Senior Member
D
Joined: May 2004
Posts: 996
Likes: 103
You need to add a new screen with

Code
MCFG_SCREEN_ADD("screen name", RASTER) ...

For the VSYNC there is a callback you can add:

Code
MCFG_UPD7220_VSYNC_CALLBACK

EDIT: MCFG_VIDEO_SET_SCREEN needs to be added after your 7720 device in the machine config, not after the screen.

Last edited by Duke; 08/15/16 10:09 AM.
rfka01 #106917 08/18/16 03:24 PM
Joined: Apr 2012
Posts: 193
B
Senior Member
Offline
Senior Member
B
Joined: Apr 2012
Posts: 193
I am working on code for the circuitry DEC apparently added to the Graphics Option.

Six ports (0x50 to 0x55) seem to add functionality not present on the original NEC 7220, for example up to 4 bit planes, a color map, a scroll map (and more).

https://dl.dropboxusercontent.com/u/37819653/BANNISTER/GDC_and_EXTRA_PORTS.jpg

Currently, i dont know how to implement the Readback Latch (see path in red at right top) which provides 16 bits to the FIFO.

I see that Read, modify, write (RMW) cycles are unimplemented in upd7220.cpp... There must be a way to pipe back display data (orange) to the GDC. How is it done correctly?

There is also some logic involving a "pixel mask" - data apparently coming from the GDC (green arrow).

Thanks for insights,
Karl

https://dl.dropboxusercontent.com/u...on_Programmers_Reference_Guide_Jun84.pdf

[Click to enlarge block diagram]
[Linked Image from dl.dropboxusercontent.com]

Last edited by Bavarese; 08/18/16 03:29 PM.
rfka01 #106919 08/18/16 03:38 PM
Joined: Jan 2012
Posts: 891
Likes: 17
C
Senior Member
Offline
Senior Member
C
Joined: Jan 2012
Posts: 891
Likes: 17
That looks quite similar to the vt240. You should look there for hints. You'll probably find it somewhat opaque though as the hardware is rather odd.

Page 35 of 56 1 2 33 34 35 36 37 55 56

Link Copied to Clipboard
Who's Online Now
3 members (Cpt. Pugwash, 2 invisible), 196 guests, and 1 robot.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,320
Posts121,923
Members5,074
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Forum hosted by www.retrogamesformac.com