Hi all, I've just uploaded release 14.08. This release adds support for Tandy 1000 and PCjr, including 3-channel sound and noise generation. This opens the door to playing a host of Tandy BASIC games that can be found online!
There is also a new CGA mode including a (somewhat crude) emulation of composite colorburst artifacts in SCREEN 2. Plus numerous bugfixes.
Let me know if you find any regressions or other bugs in this version.
Thanks,
Rob
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2014-08-20
Thanks for the release! I have found an issue that probably existed in earlier versions of PC-BASIC too. The following command does not work the same way as in GW-BASIC 3.23:
LOCATE ,,1,7
After executing the above command, the cursor will stay below the character in GW-BASIC 3.23, but will stay in the middle of the character in PC-BASIC. Hope this will be fixed, thanks!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, thanks for your report, and you're right - I never did get the cursor shape to work correctly so far. There just seems to be little logic to it so it may be a matter of trying all 256 combinations.
Do you have an original program that makes use of various cursor shapes? If so, would you mind sharing it so I can have a look at this?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Meanwhile, if you use --preset=cga , you'll get the expected behaviour because the font size will be only 8x8 pixels. Perhaps it even looks more authentic :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'll see if I can put together a full changelog for 14.08.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2014-08-24
Thanks for the cursor shape fix. But there is also a further issue. In GW-BASIC after executing the LOCATE ,,1,7 command in a BASIC program, the cursor will show up in that shape during the execution of the program even when the current command is not INPUT. But in PC-BASIC the cursor seems never show up except when the current command is INPUT. Below is a very simple GW-BASIC program for testing:
10 CLS:LOCATE ,,1,7
20 PRINT "Enter 1 or 2: ";
30 I$=INKEY$:IF I$<>"1" AND I$<>"2" THEN 30
40 PRINT:PRINT "You have entered: ";I$
50 END
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, thanks for reporting that - I'm still working on the cursor visibility as I don't fully understand when GW-BASIC makes it visible and when not. It seems the LOCATE ,,1 is sometimes honoured and sometimes not. PC-BASIC currently ignores it completely which is not the correct behaviour (as you rightly remark), but I had some issues with the cursor getting in the way in graphical games. It may simply be a graphical versus text mode issue. I'll look into it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've updated the cursor visibility in git. I think your test program now behaves as expected. Thanks!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2014-08-26
Thanks! Yup, now LOCATE ,,1,7 works as expected. However, it seems the usual LOCATE command will not work any more if the fourth parameter (i.e. 7) is not specified. For example, neither of the following commands will run now:
10 LOCATE 1,1
and
10 LOCATE ,,1
Both will result the following error:
File "D:\test\pcbasic-code\console.py", line 426, in set_cursor_shape
if from_line & 0xe0 == 0 and to_line & 0xe0 == 0:
TypeError: unsupported operand type(s) for &: 'NoneType' and 'int'
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, thanks for your interest! PC-BASIC emulates GW-BASIC only, not a complete Intel/MS-DOS PC. Therefore machine language programming (i.e., using the CPU's instruction set directly) is beyond the scope of this emulator. I would recommend using DOSBox in such a case: DOSBox emulates the CPU and peripherals on a lower level and can handle machine code. Another option is to use an MS-DOS virtual machine in VirtualBox or a similar VM package.
Last edit: Rob Hagemans 2014-09-16
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi all, I've just uploaded release 14.08. This release adds support for Tandy 1000 and PCjr, including 3-channel sound and noise generation. This opens the door to playing a host of Tandy BASIC games that can be found online!
There is also a new CGA mode including a (somewhat crude) emulation of composite colorburst artifacts in SCREEN 2. Plus numerous bugfixes.
Let me know if you find any regressions or other bugs in this version.
Thanks,
Rob
Thanks for the release! I have found an issue that probably existed in earlier versions of PC-BASIC too. The following command does not work the same way as in GW-BASIC 3.23:
LOCATE ,,1,7
After executing the above command, the cursor will stay below the character in GW-BASIC 3.23, but will stay in the middle of the character in PC-BASIC. Hope this will be fixed, thanks!
Hi, thanks for your report, and you're right - I never did get the cursor shape to work correctly so far. There just seems to be little logic to it so it may be a matter of trying all 256 combinations.
Do you have an original program that makes use of various cursor shapes? If so, would you mind sharing it so I can have a look at this?
Meanwhile, if you use --preset=cga , you'll get the expected behaviour because the font size will be only 8x8 pixels. Perhaps it even looks more authentic :)
This is now fixed in git.
I took the liberty to publish an entry here:
http://freshcode.club/projects/pcbasic
(can still be edited, btw.)
Thanks Mario, looks great - much appreciated!
I'll see if I can put together a full changelog for 14.08.
Thanks for the cursor shape fix. But there is also a further issue. In GW-BASIC after executing the LOCATE ,,1,7 command in a BASIC program, the cursor will show up in that shape during the execution of the program even when the current command is not INPUT. But in PC-BASIC the cursor seems never show up except when the current command is INPUT. Below is a very simple GW-BASIC program for testing:
10 CLS:LOCATE ,,1,7
20 PRINT "Enter 1 or 2: ";
30 I$=INKEY$:IF I$<>"1" AND I$<>"2" THEN 30
40 PRINT:PRINT "You have entered: ";I$
50 END
Hi, thanks for reporting that - I'm still working on the cursor visibility as I don't fully understand when GW-BASIC makes it visible and when not. It seems the LOCATE ,,1 is sometimes honoured and sometimes not. PC-BASIC currently ignores it completely which is not the correct behaviour (as you rightly remark), but I had some issues with the cursor getting in the way in graphical games. It may simply be a graphical versus text mode issue. I'll look into it.
I've updated the cursor visibility in git. I think your test program now behaves as expected. Thanks!
Thanks! Yup, now LOCATE ,,1,7 works as expected. However, it seems the usual LOCATE command will not work any more if the fourth parameter (i.e. 7) is not specified. For example, neither of the following commands will run now:
10 LOCATE 1,1
and
10 LOCATE ,,1
Both will result the following error:
File "D:\test\pcbasic-code\console.py", line 426, in set_cursor_shape
if from_line & 0xe0 == 0 and to_line & 0xe0 == 0:
TypeError: unsupported operand type(s) for &: 'NoneType' and 'int'
Ah, whitespace bug. Yay Python ;) Fixed now.
it doesn't do ML(Machine Language) programming
Hi, thanks for your interest! PC-BASIC emulates GW-BASIC only, not a complete Intel/MS-DOS PC. Therefore machine language programming (i.e., using the CPU's instruction set directly) is beyond the scope of this emulator. I would recommend using DOSBox in such a case: DOSBox emulates the CPU and peripherals on a lower level and can handle machine code. Another option is to use an MS-DOS virtual machine in VirtualBox or a similar VM package.
Last edit: Rob Hagemans 2014-09-16