I am trying to run Visicalc on the modern laptop (Lenovo Thinkpad X1 Extreme Gen.2). I created bootable flash drives with DOS 6.22 and Free DOS, booted from them and ran visicalc (vc.com file).

All rows have index 0 instead of 1,2,3... etc, and I can not enter values in the cells. On my old Asus K53E Laptop all works fine. Also all works fine in Virtual Box.

I understood that Virtual Box is one of the best solutions, but I would like to know the concrete reason why it not works correctly on real hardware and can I fix this incorrect behavior on my hardware. May be somebody observe the same issue.

  • 2
    Systems like Virtual Box were created exactly because of this. Modern CPUs/systems are only marginally related to the CPUs/systems that software was made for. It's like bolting a 1920s Ford Model T wheel to a Tesla, jsut because both are american cars. Comments and answers to your last question should have given a hint.
    – Raffzahn
    Dec 26, 2022 at 0:49
  • 2
    Well, it you really insist to stretch that, It doesn't fit. Same with your software. After all, have you checked if it's even compatible with DOS 6 or FreeDOS? Or any CPU past 286? Or on a video card like yours? Or from a device as big as that stick? It's most likely DOS1 compatible, thus using FCB access (Might be helpful if you'd at least add what version your're using) You're sitting in front of a complex device with millions of changes from 1983 in hard and software. Pick any...
    – Raffzahn
    Dec 26, 2022 at 5:21
  • 1
    @Raffzahn none of the issues you specified would obviously make a program use index 0 instead of index 1. I also have a hard time seeing why an old DOS program won’t run on a newer chip, especially since it successfully runs on something much faster than a 4.77MHz 8088.
    – RonJohn
    Dec 26, 2022 at 22:47
  • 1
    @RonJohn Turbo Pascal 3 provides a very old example of programs mysteriously breaking when being run on a newer machine. A calibration bit in the runtime library did a timing loop which was then divided by to get a counter value. When the machine was fast enough, the loop returned zero and the program crashed. Dec 27, 2022 at 0:26
  • 1
    Another example of programs not working as expected on newer hardware. I remember one of the Borland products complaining about not having enough memory on newer PCs. Turned out they used a signed comparison to check memory size and any machine with 512K RAM or more was therefore considered negative, hence less than the (for example) 128K needed to run the product. Or something like that. I remember debugging the code and changing the instruction to an unsigned one to get it going.
    – paxdiablo
    Feb 25, 2023 at 5:09


You must log in to answer this question.

Browse other questions tagged .