Code Monkey home page Code Monkey logo

glabios's People

Contributors

640-kb avatar atomiclunchbox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

glabios's Issues

Book8088 support

Current Book8088 build boots. However, there is an error 6000 (keyboard controller and keyboard stuck error), pressing any key allows the computer to continue to boot and the keyboard seems to work as expected.

Book8088 version 2 with VGA and V20 processor with only minimal testing.
Additionally, it has 2MB EMS ISA card and RTC ISA on port 70h. When I get time, I want to try adding GLaTICK to the BIOS.

Could a 8086/V30 version of this be developed for the OlivettI M24 (AT&T 6300), the IBM PS/2 Model 30, etc?

I love seeing new software (and firmware) being developed to squeeze every last bit of performance out of our beloved vintage systems, and to allow them to do things they were never designed to do. Thanks for sharing this with the world! ☺️

How difficult would it be to port GLaBIOS to popular 8086/V30 systems from back in the day?

There are a number notable of 8086-based PC/XT systems that this would be useful for:

  • Olivetti M24 / AT&T 6300
  • IBM PS/2 Models 25 and 30 (there are both 8086-based and 286-based variants of these models)
  • 8086-based models of the Tandy 1000

For instance, I grew up with the 8086-based Olivetti M24, and it's always been an obsession for me to tune and optimize it further than the designers of the system initially intended. Would love to see a version of GLaBIOS being developed for that old beast.

Thanks for considering.

Question about TD3300A

Is there some documentation available for TD3300A or everything used here (e.g. reg 0x90 usage) has been accomplished by reverse engineering juko's BIOS?

RTC Clock Support

Any chance for the following features:

-Expansion ROM search end segment at FE00h?
-RTC detection at 2C0h?

BTW, impressive work!

Best regards

Auto detect max memory (736k)

Hi!

Thank you very much for creating this. It would be impossible of us working on downstream emulators to create out of the box opensource emulators without projects like this. <3

If I could wish for something it would be the ability to auto detect the max memory size. (above 640k)

Right now it is a compile flag controlling it. But it would be cool if the 736kb could be detected automatically. (as an option)
I think this would be possible by first look at the switches and detect EGA/VGA, then determine if there is a MDA or CGA card by testing some IO registers. Perhaps a simple r/w test.

If this was supported we would not have to ship multiple builds of the BIOS. :)

Thanks again!

The retf 2 return from interrupt handlers could be replaced by using lahf

Example:

RETF 2 ; IRET with current flags
(In int 16h function 01h handler, similar in int 15h and int 13h handlers.)

You can use iret here by modifying the stack frame's fl word with the lahf instruction. This could be shared among all handlers that want to return CF or ZF. This is what it should look like:

push bp
mov bp, sp
push ax
lahf
; bp + 0 = saved bp
; bp + 2 = ip
; bp + 4 = cs
; bp + 6 = fl
mov byte [bp + 6], ah
pop ax
pop bp
iret

The benefit is that all the control flags IF, TF, and DF are restored from what they held when the interrupt was invoked.

Micro 8088 floppy

I've noticed that FDD won't work on Micro 8088 unless I add Sergey's Multi-Floppy BIOS Extension.

ROM BASIC (INT 18) loads but crashes

ROM BASIC (INT 18) loads but doesn't work properly. Memory at 40:200 (or 50:100 or 60:0, which is ES and SS when BASIC is running) is being overwritten after first key press. Screen doesn't draw properly first time.

.lst

Hi,

Please consider including the .lst for each .rom-file, e.g. the assembly listing annotated with all addresses and hexcodes.

Smaller (32K) BIOS and ROM files for NuXT

Currently, 128KB images are offered, which can be flashed on the whole EEPROM. While this is a nice thing, I would like to see also smaller 32K images. AFAICS, you cannot flash those 128KB images via software on the NuXT itself. And if flashed externally, the whole EEPROM is programmed.

NuXT has a 128KB EEPROM, which is controlled via DIP switch, aka "dual BIOS". ON = First 64KB, OFF = Last 64KB. As 64KB can't be flashed at once, it must be divided into 2x32KB, 32KB for BIOS and 32KB for ROM. Flashing those 32KB files makes it possible to flash them via uflash in DOS. If a BIOS/ROM is smaller than 32KB, the rest up to 32768 Bytes is filled up with FF.

See manual, which describes this: https://raw.githubusercontent.com/monotech/NuXTv2/master/Monotech%20NuXT%202.0%20User%20Manual.pdf

Using smaller 32K images, it makes possible to flash them and for example, use ON=GlaDOS and OFF=Micro8080_Bios, so you can toggle between two BIOS variants.

INT_IRQ will not write 0xFF to INT_LAST in case of an unknown interrupt

Although the code sets the "default" value of 0FFh to AH, that will not get written to INT_LAST i

INT_IRQ PROC
ASSUME DS:_BDA
PUSH AX ; save registers
PUSH BX
MOV BX, SEG _BDA ; set up for DS to BDA
MOV AX, DBW <0FFH, OCW3 <,,,,11B>> ; AL = OCW3 (Read ISR reg on next pulse)
; AH = default return 0xFF in INT_LAST <-- default value
OUT INT_P0, AL ; write to PIC port 0 (20h)
PUSH DS ; save DS and delay for PIC at least 1 clock pulse
IN AL, INT_P0 ; get In-Service Register (ISR)
TEST AL, AL ; is there an active hardware interrupt?
JZ INT_IRQ_DONE ; jump and exit if not <-- if there is no active interrupt, it will exit without writing 0FFh to INT_LAST
MOV AH, AL ; Save ISR in AH
IN AL, INT_IMR ; get current Interrupt Mask Register (IMR)
MOV DS, BX ; set DS to BDA
MOV INT_LAST, AH ; save last interrupt to BDA and delay for PIC <-- not reached if there is no active interrupt
OR AL, AH ; apply IMR mask to ISR
OUT INT_IMR, AL ; write AL to PIC port 1 (21h)
MOV AL, INT_EOI ; End of Interrupt OCW
OUT INT_P0, AL ; write EOI to PIC port 0 (20h)
INT_IRQ_DONE:
POP DS
POP BX
POP AX
IRET

INT_IRQ ENDP

Micro 8088 default turbo option

I've noticed that the default CPU clock set for Micro 8088 is 9.54 MHz, 4 RAM WS and this is not good, as it will fail on boards with 14.3MHz quartz. 7.15 MHz, 0 RAM WS would be much safer.

Is there any option to switch the "Turbo Mode" ON and OFF?

UART detection code is not robust enough

The UART detection code seems to rely on the fact that the UART will have bits 7-3 in the IIR reset to 0.
This is probably true for 8250 and 16450 UARTs. The 16550, 16550A, 16750, and various other newer UARTs can have non-zero values in bits 7-6 and 3.
Particularly, I observed an issue were GLaBIOS will not detect the UART after enabling FIFO on a 16550A UART and then warm-resetting the system (the SYSCHK utility mentioned here does that: skiselev/8088_bios#31)

8088 BIOS uses a slightly more complicated approach: It writes 00001111b to IER, reads IER back, and verifies that it still has the same value, and then it writes 0 or IER, and again verifies that it reads back the same value

EMS support?

Hi!

Have you given EMS support any thoughts? I see you have worked a bit on the Intel Above board. :)

I currently emulate the LoTech EMS 2MB board. But lately with the addition of VGA support in VirtualXT I have been trying to minimize the conventional memory usage in the default image. So I have reduced the amount of drivers that are loaded by default. GLaTICK helps a lot, but it would also be very cool if we had a GLaMEM. ;)

Big thanks again for supplying GLaBIOS <3

Turbo button not working on Juko ST

Description

1 - PC always boots on Turbo Mode
2 - Pressing the Turbo Button does not trigger switch between Turbo and Normal mode.

#1: I guess this is related to TURBO_TYPE default value.
#2: is this implemented?

Hardware

  • Juko ST clone + NECv20 @ 12 MHz

BIOS Version

GLABIOS_0.2.4_VS.ROM

80286 support?

Hi, I have an IBM 5162 XT/286 as well as 5170 / AT. Have you considered supporting the 286 at any point?

Cheers!

How do I build this on Linux?

MASM isn't available on Linux. I don't want to use Windows or DOSBox. Is there a MASM-like assembler that's available for Linux? Maybe convert it into a NASM-compatible syntax as a separate assembly file?

expanding the documentation on how to build

Hi,

Can you please elaborate on the build proces?
Because with current mlasm32.com assembler (with /Zm) doesn't succeed.

C:\GLaBIOS\src>ml /Zm GLABIOS.ASM
Microsoft (R) Macro Assembler Version 14.38.33133.0
Copyright (C) Microsoft Corporation.  All rights reserved.

 Assembling: GLABIOS.ASM
GLABIOS.ASM(1380) : error A2008:syntax error : CR3
GLABIOS.ASM(6267) : error A2023:instruction operand must have size
GLABIOS.ASM(4416) : error A2006:undefined symbol : TC0
GLABIOS.ASM(2556) : warning A4013:instructions and initialized data not supported in AT segments
GLABIOS.ASM(2732) : error A2004:symbol type conflict
GLABIOS.ASM(3264) : error A2004:symbol type conflict
GLABIOS.ASM(3417) : error A2004:symbol type conflict
GLABIOS.ASM(3450) : error A2004:symbol type conflict
GLABIOS.ASM(3679) : error A2004:symbol type conflict
GLABIOS.ASM(3680) : error A2004:symbol type conflict
GLABIOS.ASM(4293) : error A2004:symbol type conflict
GLABIOS.ASM(4441) : error A2004:symbol type conflict
GLABIOS.ASM(4800) : error A2004:symbol type conflict
GLABIOS.ASM(4902) : error A2004:symbol type conflict
GLABIOS.ASM(5327) : error A2004:symbol type conflict
GLABIOS.ASM(5399) : error A2004:symbol type conflict
GLABIOS.ASM(5707) : error A2004:symbol type conflict
GLABIOS.ASM(6126) : error A2004:symbol type conflict
GLABIOS.ASM(6805) : error A2004:symbol type conflict
GLABIOS.ASM(7867) : error A2004:symbol type conflict
GLABIOS.ASM(8090) : error A2004:symbol type conflict
GLABIOS.ASM(8134) : error A2004:symbol type conflict
GLABIOS.ASM(8240) : error A2004:symbol type conflict
GLABIOS.ASM(8245) : error A2004:symbol type conflict
GLABIOS.ASM(8251) : error A2004:symbol type conflict
GLABIOS.ASM(8253) : error A2004:symbol type conflict
GLABIOS.ASM(8258) : error A2004:symbol type conflict
GLABIOS.ASM(8266) : error A2004:symbol type conflict
GLABIOS.ASM(10199) : error A2004:symbol type conflict
GLABIOS.ASM(10217) : error A2004:symbol type conflict
GLABIOS.ASM(11453) : error A2004:symbol type conflict
...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.