|
Post by gz on Jul 14, 2023 11:37:40 GMT 1
Hey Y'all,
I am using vDos 2020.03.01 with my trusty QBASIC and GWBASIC accounting applications and everything is working perfectly, including printing, all great.
Today I tried the latest version of vDos which is working except printing, as soon as the printing command is initiated I get thrown out into the programming environment, so the windows printer dialog doesn't even open.
Just want to report this regression, hope it's useful information to you and maybe I can help you fix it.
Let me know what I could provide to help you track down this problem.
Best, George
|
|
|
Post by Jos on Jul 14, 2023 12:16:15 GMT 1
In version 2022.05.01 support of (virtual) parallel hardware ports was dropped.
I never saw that being used, and it’s hard to imagine a program directly addressing a hardware port for printing. Can you post a program demonstrating the issue?
Jos
|
|
|
Post by steveinaus on Jul 26, 2023 8:47:50 GMT 1
Hi, I think I am having this issue. I can print anything from the dos prompt but printing within the basic program attached it just crashes saying it can't access the printer. Any ideas? Steve Attachments:SCORE3.BAS (93.94 KB)
|
|
|
Post by Jos on Jul 26, 2023 9:28:30 GMT 1
Starting the program, it asks for a password: Jos
|
|
|
Post by steveinaus on Jul 30, 2023 10:25:15 GMT 1
Jos, Sorry about that. Thought you might be just looking at the programming. Password is score3 I have reattached with the whole program directory so you can see the whole thing. Thanks, Steve SCORE3PROG.zip (654.25 KB)
|
|
|
Post by Jos on Jul 30, 2023 15:31:20 GMT 1
I indeed at first had a quick look at SCORE3.BAS. But that only showed me an ambiguous line in FUNCTION PrinterReady:
“IF ((OutRegs.ax AND &H1000) = 0) OR ((OutRegs.ax AND &H1000000) = 0) THEN”
The preceding INT 17h is still supported, AX however a 16-bit register, the largest value it can hold FFFFh. “AND &H1000000” so makes no sense, and if accepted should always result in 0.
Printing is seemingly done by “PRINT #3, …”. #3 being the DOS file handle that defaults to PRN, aka LPT1. Nothing has changed to handling LPT1, so the program should print like before.
Running SCORE3 with data, I figured out what causes the “FATAL ERROR - You have attempted to…”. Before QB starts writing (by DOS API) to LPT1, it checks that physical port address in the BIOS data area. No idea to what effect. QB doesn’t output directly to that port. Checking the DOS result code of actually writing data is more reliable and universal.
Support of direct access to (emulated) physical parallel ports is dropped. So those addresses (LPT1-LPT4) in the BIOS data area are left out. Adding a dummy of LPT1 back in made SCORE3 print again. I’ll await if that has no side-effects, and leave it in for the next vDos version. For now you have to do with the 2022.05.01 version.
Jos
|
|