GithubHelp home page GithubHelp logo

Comments (6)

TzOk83 avatar TzOk83 commented on August 14, 2024 1

Thank you for the update. I knew about the turbo keys, but sometimes it is easier to have a DOS executable to switch the clock, eg. to use it in a batch file, so I made this: https://github.com/TzOk83/setclk and believe it or not, this is my first useful program in x86 assembly.

P.S.
According to your table, 60h is 0 WS for 7.15 MHz.

from 8088_bios.

skiselev avatar skiselev commented on August 14, 2024

To be honest, I didn't look at that much. So it is a good reminder.
I recall that with processor running at 9.54 MHz and 0WS I was getting issues with some ISA cards, e.g. the output on TVGA9000i was corrupted.
I can try adding a BIOS configuration option to specify the wait states configuration

from 8088_bios.

TzOk83 avatar TzOk83 commented on August 14, 2024

Forgive me my ignorance, but do you set FLCK flag (bit 3) during initial setup? If this bit is set, then in consecutive port writes, bits 0-4 are ignored. This would make it easier to software change remaining bits, as the configuration register is write-only, so you can't read current configuration from it to mask bits 0-4 and change only bits 5-7.

Here is my little utility to set the CPU clock from DOS:
setclk.zip

from 8088_bios.

skiselev avatar skiselev commented on August 14, 2024

The lower 640 KiB of memory, always operate at 0 WS. The wait states given in the CPU Clock Frequency and Wait States table only refer to the memory above 640 KiB (video memory, BIOS extensions, UMBs, ROM BIOS)

The BIOS does not set the FLCK (bit 3 ), so bits 0-4 remained unlocked, and you need to take care of updating them properly.
The BIOS supports switching between turbo modes using the following key combinations: Ctrl-Alt-<+> - 9.54 MHz, Ctrl-Alt-<*> - 7.15 MHz, and Ctrl-Alt-<-> - 4.77 MHz. In addition to bits 5-7, the BIOS also sets bit 1, if 8087 FPU is present. It checks the equipment configuration word to determine that. See cpu.inc for details.

I re-tested my Micro 8088 board with both Faraday FE2010A and Proton PT8010AF chipsets with all the combinations of settings described in the CPU Clock Frequency and Wait States table. My VGA card does not work well with Faraday FE2010A, when it is configured for 9.64 MHz with 0 memory wait states - I see video memory corruption. It does work well with Proton PT8010AF. I suspect there is a difference in the way these chipsets check the IORDY signal (VGA should generate wait states, but Proton doesn't seem to process them).

Also, there is a slight difference in the way DRAM refresh is disabled between these two chipsets. I updated the BIOS to disable the DRAM refresh on both chipsets. See 978df80

from 8088_bios.

skiselev avatar skiselev commented on August 14, 2024

I've added a configuration option in the BIOS setup to change the wait state configuration. I did not implement 0 WS for the upper memory, as it results in unstable configuration on FE2010A chipset. See d4f5ec3

from 8088_bios.

skiselev avatar skiselev commented on August 14, 2024

I believe my table is correct... When I use FE2010A, my system work fine with 0 WS at 7.15 MHz, but it doesn't work with 0 WS at 9.54 MHz (video memory glitches)

from 8088_bios.

Related Issues (20)

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.