Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firmware images #1

Open
5 of 9 tasks
larsbrinkhoff opened this issue May 17, 2021 · 35 comments
Open
5 of 9 tasks

Firmware images #1

larsbrinkhoff opened this issue May 17, 2021 · 35 comments

Comments

@larsbrinkhoff
Copy link
Owner

larsbrinkhoff commented May 17, 2021

VT1xx ROMs. Four 2Kx8 make up the main firmware mapped at 0000-1FFF. The character set is another 2K8x, but is not available to the CPU. The "Advanced Video Option" (AVO) can supply extra RAM and ROM; the latter is in the 8000-BFFF range (16K).

  • VT100 firmware. Part numbers 23-031E2/23-061E2, 23-032E2, 23-033E2, 23-034E2.
  • VT100 US ASCII character set. Part number 23-018E2.
  • AVO ROM. Part number 23-093E2.
  • Alternate character set. Part number 23-094E2.
  • VT101, 1981 cost reduced, unexpandable; has its own firmware.
  • VT102, 1981 cost reduced, unexpandable; has its own firmware.
  • VT125 - ReGIS graphical language board (GPO).
  • VT132, 1980? base vt100 with AVO, STP, and its own 23-099e2/23-100e2 AVO character ROM set. Has its own base firmware ROMs which support block serial mode.
  • GIGI (with BASIC).

This comment will be continuously edited as more information appears.

@larsbrinkhoff
Copy link
Owner Author

larsbrinkhoff commented May 17, 2021

GIGI:
vk100.zip

23-017E4-00, E52
23-018E4-00, E51
23-031E4-00, E53
23-190E2-00, E50

@larsbrinkhoff
Copy link
Owner Author

larsbrinkhoff commented May 17, 2021

VT101:
vt101.zip

23-028E4-00, E71

@larsbrinkhoff
Copy link
Owner Author

larsbrinkhoff commented May 17, 2021

VT102:
vt102.zip

23-041E4-00, E69
23-042E4-00, E71
23-225E4-00, E69
23-226E4-00, E71

@larsbrinkhoff
Copy link
Owner Author

VT180:
vt180.zip

23-017E3-00
23-018E2-00, E4
23-021E3-00
23-032E2-00, E52
23-033E2-00, E45
23-034E2-00, E40
23-061E2-00, E56

@larsbrinkhoff
Copy link
Owner Author

CIT-101:
cit101.zip

@larsbrinkhoff
Copy link
Owner Author

VT220:
vt220.zip

23-011M1, E1
23-178E6
23-182E5, E4
23-183E5, E3
23-348E4, E13

And the LK201 keyboard:
lk201.zip

23-00S9
23-0042M2, E1

@larsbrinkhoff
Copy link
Owner Author

larsbrinkhoff commented May 23, 2021

Grepping the VT220 files I see both V2.1 and V2.3.

A VT102 screenshot shows V1.1, but I don't see that in the vt102.zip files. There are two "V1" though, so maybe the minor number is output separately.

@larsbrinkhoff larsbrinkhoff changed the title Firmware Firmware images May 28, 2021
@fsword7
Copy link

fsword7 commented May 30, 2021

Do not forget about VT105, VT125 and VT340. There are copies of VT105, VT132 and VT340 firmware images on the Internet but we can't find VT125 expansion firmware images for VT105 base terminal that contains ReGIS processor routines.

@larsbrinkhoff
Copy link
Owner Author

Thanks @fsword7. Yes, those are possible simulation targets as well. But I'm not sure how much time I will have to explore much further beoynd the basic VT100. We'll see.

Bitsavers has some VTxxx ROMs, and there are others packages for MAME. I know @jeffpar has collected a long list of ROM images for various DEC machines, but I can't seem to find it now.

@fsword7
Copy link

fsword7 commented May 31, 2021

I can't find ROM images for terminal on Bitsavers. I got all ROM images from Dunnington FTP site that includes some terminals, PDP-11, VAX and some devices (RQDX1/2/3 and TKZ50). @jeffpar do you still have images available?

@jeffpar
Copy link

jeffpar commented May 31, 2021

Not sure, but I will look and report back.

@larsbrinkhoff
Copy link
Owner Author

@fsword7
Copy link

fsword7 commented May 31, 2021

Oh, I now got it. I was looking for other terminals on Bitsavers. Thanks.

@jeffpar
Copy link

jeffpar commented May 31, 2021

Thanks @fsword7. Yes, those are possible simulation targets as well. But I'm not sure how much time I will have to explore much further beoynd the basic VT100. We'll see.

Bitsavers has some VTxxx ROMs, and there are others packages for MAME. I know @jeffpar has collected a long list of ROM images for various DEC machines, but I can't seem to find it now.

Is this maybe the page you were thinking of?

@fsword7
Copy link

fsword7 commented May 31, 2021

Yeah! Thanks. I already found it before. I did not know who collected a listing of ROM images until now.

@larsbrinkhoff
Copy link
Owner Author

Yes, that's the one. Thanks!

@avih
Copy link
Contributor

avih commented Aug 13, 2021

Hi, and thanks for maintaining this.

I'm interested in terminal emulation in general, and real hardware is hard to come by (and takes up space...) so it's not easy to test how a real VTXXX behaves (though docs do exist).

Other than this project, there's only one other hardware emulator which I know of - http://blog.schmorp.de/2015-11-10-emulating-vt102-hardware-in-perl-1.html which can help evaluate the behavior on a real VT100, so personally I find it much more than a niche "real retro vt100 for the RPI" project (and appreciate the -Q option), with some real world use cases other than being cute (though cute is valuable too!).

So I was hoping to try some of the other rom dumps posted above (personally I'm interested in VT102 and VT220, but the more the merrier), but couldn't quite figure out how to create a new rom.c from their content.

Which of those roms are supposed to (theoretically) work out of the box? I'd presume at least vt102? What about VT220, and possibly others?

How shuld one create a new rom.c from their content?

Maybe this project could incorporate the working roms into the source files so that one could choose (at compile or run time) which system to emulate?

Thanks again.

@larsbrinkhoff
Copy link
Owner Author

Hello @avih,

Thanks for your comments. There is also a working VT100 in MAME, and there's another one in JavaScript. I didn't know the one in Perl, so thanks for that.

There's no automated way to make a rom.c from a ROM image. It's basically just a hexdump.

For now I would only expect VT100 and VT101 ROMs to work. VT102 would probably expect AVO (advanced video option, more attributes like bold, bright, blink, etc) which I haven't implemented yet. VT220 and up are significantly different hardware.

Support for more models would absolutely be in scope for this project, but at this point I don't have much time.

@avih
Copy link
Contributor

avih commented Aug 13, 2021

There is also a working VT100 in MAME, and there's another one in JavaScript

Nice. I somehow had the impression that the MAME one is incomplete or impractical, and was not aware of the JS one. Link please?

EDIT: for future reference, I was able to use the vt102 emulation in MAME after following this https://zork.net/~st/jottings/Real-VT102-emulation-with-MAME.html . Got it working as far as what's described there, which does have caveats. FWIW, nowhere near as simple and immediate as using this project.

There's no automated way to make a rom.c from a ROM image. It's basically just a hexdump.

Yeah, it looks as such. So for the vt101 one should just replace the first array at rom.c with a dump of the bin file inside https://github.com/larsbrinkhoff/terminal-simulator/files/6492806/vt101.zip ? (or just use -R romfile.bin with that zip content?)

VT102 would probably expect AVO (advanced video option, more attributes like bold, bright, blink, etc) which I haven't implemented yet.

This would be very nice ;)

at this point I don't have much time.

Right, such is life...

Thanks again though.

@larsbrinkhoff
Copy link
Owner Author

Here's the JavaScript VT100 emulator: https://www.pcjs.org/machines/dec/vt100/

So for the vt101 one should just replace the first array at rom.c with a dump of the bin file

Yes. Don't use -R, that's for loading a CP/M executable.

@avih
Copy link
Contributor

avih commented Aug 14, 2021

Here's the JavaScript VT100 emulator: https://www.pcjs.org/machines/dec/vt100/

Thanks. For me, like MAME, it was not easy to use as a test platform.

For reference, There's also this which I think is vt100+avo: https://github.com/phooky/VT100-Hax . I was able to get the ncurses version running (one might want to replace -lncurses with -lncursesw at the Makefile and run it with ./vt100sim -r ../../ROMs/basic.bin, and use F10 and then ^D to exit).

So we have 5 working hardware emulators: MAME, JS (vt100), VT100-Hax (vt100+avo), the perl one (vt100[+avo]/vt102/vt131), and this project (vt100).

This project is very easy to run and has feature for faithful reproduction of the real behavior/timing and visual output, while the perl one is mostly intended for behavior testing, and it has some features to help with that (status LEDSs, faster than real vt100, XON/XOFF handled internally to avoid drops), but needs to run in a terminal...

Good to have a choice :)

@larsbrinkhoff
Copy link
Owner Author

Oh right, VT100-Hax was a major source of information for me. Sorry I forgot to mention it.

@larsbrinkhoff
Copy link
Owner Author

VT240 board, photo by @techfury90.
vt240

@hisdeedsaredust
Copy link

I don't think you've picked up on these yet, for the VT125:
https://github.com/technomancer-lv/vt125-rom/tree/main/rom

From a quick concatenation, in the order they're listed, the disassembly makes sense. The ReGIS state machine is all visible as 14 jump tables between ~2600h and 3a00h and there's a load of glyph data from ~4200h.

I would've loved to have extended my ANSI parser specification to cover ReGIS years ago, but I didn't have any graphics terminal to experiment with!

@larsbrinkhoff
Copy link
Owner Author

Thank you @hisdeedsaredust. That's right, I hadn't located the VT125 ROM yet.

@hisdeedsaredust
Copy link

A VT102 screenshot shows V1.1, but I don't see that in the vt102.zip files. There are two "V1" though, so maybe the minor number is output separately.

The VT102 files are V1.2. The version number is present in ASCII form in both ROMS as V12 and a following 0ch byte for the binary form.

MAME ROM sites can also supply the VT131 extra ROM, which is tiny because nearly all of the functionality of the VT131 is an integral part of the base VT102 ROMS. The VT131 ROM only exists to (1) be a way to trigger the change to VT131 mode, and (2) to provide SET-UP C screen.

@larsbrinkhoff
Copy link
Owner Author

Thanks again @hisdeedsaredust! I better gather up all those ROM images and put them in one place.

@WarlockD
Copy link

Oh thought I should post, I have some VT52 roms off a board I bought years ago. Had to build something custom to get them though. The chips are named 119a9,120a9, 121a9, 122a9.

I was going to make a hex format but as I was dumping the roms I kind of forgot what sockets they were in and there really isn't a 4bit format for HEX that I am aware off. First like is just a hex text dump from the start of the chip and then a break out per line.

Hope this helps. I ment to do something like this 5 years ago but life got in a way, glad somone is working on it.
vt52_rom_dump.txt

@larsbrinkhoff
Copy link
Owner Author

larsbrinkhoff commented Sep 6, 2022

@9track revealed his set of ROM dumps, including VAXstation 100:
http://www.9track.net/roms/

vs100.zip

@larsbrinkhoff
Copy link
Owner Author

@mitchdotnet
Copy link

Hi, found this project while searching for info on my physical VT101 (which is now technically a VT102 after a board swap). Anyway, I also have the AVO board for a VT100 and see that its ROM is missing from your collection. Is this something you still need? I have no problem dumping it for you.

@larsbrinkhoff
Copy link
Owner Author

@mitchdotnet, yes please!

Admittedly, I haven't been working actively on this for a while, but there are still some things I'd like to do in the future.

@mitchdotnet
Copy link

mitchdotnet commented Feb 21, 2024

Cool, I'll try to get to it this weekend. Where/how would you like me to send it once I've got it dumped?

EDIT: nvm, I'll just put it on my site and send a link

@mitchdotnet
Copy link

I may have jumped the gun a bit here. I'll have to take a look at my actual AVO board when I get home later but every other example I'm seeing just has 4 empty sockets where I'd expect to find the ROM(s), and if I'm reading the tech manual correctly these are unused by default and extra ROMs on the AVO are only needed when used in specific configurations that used the Word Processing Keyboard or non-US/UK languages or a combination of both.

2024-02-21_9-27-31

@larsbrinkhoff
Copy link
Owner Author

larsbrinkhoff commented Feb 21, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants