6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Wed May 01, 2024 11:32 pm

All times are UTC




Post new topic Reply to topic  [ 334 posts ]  Go to page Previous  1 ... 19, 20, 21, 22, 23  Next
Author Message
PostPosted: Fri Apr 12, 2024 5:42 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
Yuri wrote:
CHM viewer under Windows 11 is pretty broken these days. Might make sense to start packaging the help as just loose HTML files at this point and just opening them in the user's browser of choice.


Sorry I did not respond to this earlier. I will look into packaging the help as a zipped folder of html files.

thanks!
Daryl

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Sat Apr 13, 2024 8:24 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
With thanks to Yuri's suggestion, I have created stand-alone Help support for those having trouble with the built-in help (6502.chm)

It's a folder with plain html files with an image subfolder. Start it using "_index.htm" or "help.htm"

Please note, this is stand alone - the Help button in the Simulator will not try to open these files. Use any browser to read the contents. I will research updating the Help button to allow opening these files and if it works, will release it in my next update. Spoiler alert: next one is almost done and has several improvements.

Also note, these files could use some cleaning up as they were translated from the old Polish help files Michael K. created and only slightly corrected and added to by me. If anyone wants to work on the clean-up, please share the results with me and I'll update the master copy and give credit for your help.

Link on my website https://sbc.rictor.org/kowalski.html and also here -> https://sbc.rictor.org/download/6502_Help.zip

I added directions on unblocking the program and help on Windows 10 & above machines - thanks for everyone pointing that issue out.

Thanks!
Daryl

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Sat Apr 13, 2024 8:50 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8169
Location: Midwestern USA
8BIT wrote:
Also note, these files could use some cleaning up as they were translated from the old Polish help files Michael K. created and only slightly corrected and added to by me. If anyone wants to work on the clean-up, please share the results with me and I'll update the master copy and give credit for your help.

Cleaning up the documentation is on one of the back burners of my recreational computing stove.  Regrettably, recreational computing has been competing with some paying programming for my increasingly-limited time.  Rather than just patch up the help files, I’m leaning toward writing a “manual” that expands on the existing help and includes code examples to better explain how to use macros, conditional assembly, etc.  As the old lament goes, so many projects...so little time.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 14, 2024 2:55 am 
Offline
User avatar

Joined: Tue Feb 28, 2023 11:39 pm
Posts: 137
Location: Texas
8BIT wrote:
I will research updating the Help button to allow opening these files and if it works, will release it in my next update.


Should be able to just call the Win32 ShellExecute() API on the index file and Windows will open the user's preferred browser to read that file.


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 17, 2024 5:53 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
As hinted to a few days ago, The latest update to the Kowalski Simulator is ready.

Here are the updates/fixes that I have completed for v1.3.5.0:
- Default assembler source files now have .asm extension. .65s is still supported.

- Added .bin file type for binary object files and made it default. .65b is still supported.

- .65p (program) object types are now functional for save and load. The file format is:
$FF
$FF
Start address low byte
Start address high byte
End address low byte
End address high byte
data ... ....
Start address low byte (optional additional blocks of data)
Start address high byte
End address low byte
End address high byte
data ... ....
Since start and end addresses are 16 bits, only bank 0 is supported.

- Confirmed 65.h Intel Hex file formats work for both save and load across multiple banks.

- default new source files are named "NewFile(n).asm, where (n) starts with number 1 and increments each time the program is run. The space was removed from the file name.

- Object files now take on name of the assembled program verses having the default "Binary Code" name. test1.asm saves as test1.bin, test1.65h, test1.65m, etc. If you do a load code file and then try to do save code, since it does not go through the assembler, it will have the default "BinaryCode" file name with the appropriate extension. The space was removed from that file name also.

- Find and Replace - add wild cards - these are Windows commdlg.dll functions and they do not support wild cards. Sorry.

- For 65816 assembly, entering JMP [$4567] will now assemble as a jump indirect long, just as JML ($4567) does. (This was actually fixed in a previous revision but I just noticed it)

- The 65C02 required the use of the DEA and INA mnemonic for accumulator mode. Now you can use INC or DEC alone and it will assemble with an accumulator operand. DEA and INA are still supported as well. Same for the 65816.

- I created the stand along html help files for those having issues with the CHM help file. I also created a user selection on the General tab of the Simulator options menu. You can choose which help to open when pressing Help-Contents on the menu bar.
Please note, the menu bar's context-selective help will only use the chm file so please do not remove it if you use the html files.
To use the new html files, place the html folder in the same folder as your program. I've added "6502.htm" to the program files which 6502.exe points to. It will redirect to the html folder.

- Speaking of the context-selective help, I fixed a few broken links and added few missing ones. Should be in good shape now.

- Finally, for BigDumbDinosaur (and others), I was able to modify the .paramtype macro function to accept numbered parameters. .strlen will also accept numbered parameters.
Note .def, .ref, and .passdef all require a globally-named variable as before.

There were a lot of changes and I tried to test many variations to ensure they worked as described. Please let me know if I broke something in the process. Enjoy!!!

https://sbc.rictor.org/kowalski.html

Cheers!
Daryl

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 17, 2024 6:02 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8169
Location: Midwestern USA
8BIT wrote:
As hinted to a few days ago, The latest update to the Kowalski Simulator is ready...

Excellent!

Quote:
Note .def, .ref, and .passdef all require a globally-named variable as before.

What is .passdef?  I’m not familiar with that one.

Once again, thank you for your hard work in maintaining and extending this software.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 17, 2024 2:10 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
BigDumbDinosaur wrote:

What is .passdef?  I’m not familiar with that one.


From what I can see, its the same as .DEF except it always returns true on pass 1 and only returns true on pass 2 if it is defined. Seems that it was intended to test forward-referenced variables.

Have fun with the changes!!

Daryl

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 17, 2024 6:42 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8169
Location: Midwestern USA
8BIT wrote:
BigDumbDinosaur wrote:

What is .passdef?  I’m not familiar with that one.

From what I can see, its the same as .DEF except it always returns true on pass 1 and only returns true on pass 2 if it is defined. Seems that it was intended to test forward-referenced variables.

I contrived a bit of code with .passdef to see how it works...

Code:
   .opt proc65c02,caseinsensitive,swapbin
;===============================================================================
;
;CONTRIVED EXAMPLE OF .PASSDEF USAGE
;
;   ———————————————————————————————————————————————————————————————————————
;   This code will assemble without error, but the STA SUM instruction will
;   not be assembled.  On the other hand, if the .PASSDEF conditional is
;   negated, e.g., !.PASSDEF(SUM), the STA SUM instruction will be assem-
;   led & added to the program.
;   ———————————————————————————————————————————————————————————————————————
;
         *=$2000
;
         clc
         lda #1
         adc #2
         .if .passdef(sum)     ;if <sum> is defined...
             sta sum           ;save 1+2
         .endif
         nop
         brk
;
sum      *=*+1                 ;sum storage
;
;===============================================================================
   .end

It appears the assembler’s logic for .passdef is inverted.  Also, I discovered that context-sensitive ([Shift-F1]) help for .passdef displays the help page for the .time pseudo-op.  There is no mention of .passdef in the main help.

BTW, I did some testing with the .PARAMTYPE macro conditional...it appears to work as advertised.  However, the transition from version 1.3.4.8 to 1.3.4.9 and 1.3.5.0 has broken the JMP instruction when assembled with a 24-bit operand.  Test code attached.  The instruction at line 48 will be incorrectly assembled.

Attachment:
File comment: JMP INSTRUCTION TESTING FOR 65C816
jump_usage.asm [6.2 KiB]
Downloaded 3 times

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Thu Apr 18, 2024 3:26 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
BigDumbDinosaur wrote:
Also, I discovered that context-sensitive ([Shift-F1]) help for .passdef displays the help page for the .time pseudo-op.  There is no mention of .passdef in the main help.

Well, that's because I copied the .TIME help contents to create the new ones and never went back and added the correct information!!!!
Easy fix on my next release. Not sure why Michael didn't include these in his help. (.def, .ref, .passdef, .paramtype, .strlen) Want to take a stab at writing something up?
Quote:
It appears the assembler’s logic for .passdef is inverted.

The logic appears to be simple - set to 1 on pass 1 and 1 if defined on pass 2 else 0. Odd that its getting inverted downstream in the process. I'll correct that once I find the root issue.
Quote:
However, the transition from version 1.3.4.8 to 1.3.4.9 and 1.3.5.0 has broken the JMP instruction when assembled with a 24-bit operand.

It figures - must have been when I tried to keep things inside the current bank. I'll dig into it.

thanks for the beta testing!!!

Daryl

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Thu Apr 18, 2024 5:21 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8169
Location: Midwestern USA
8BIT wrote:
BigDumbDinosaur wrote:
Also, I discovered that context-sensitive ([Shift-F1]) help for .passdef displays the help page for the .time pseudo-op.  There is no mention of .passdef in the main help.

Well, that's because I copied the .TIME help contents to create the new ones and never went back and added the correct information!!!!

That explains it!  :D

Quote:
Not sure why Michael didn't include these in his help. (.def, .ref, .passdef, .paramtype, .strlen) Want to take a stab at writing something up?

I'll write it up as “assembly-time conditionals,” or some such thing.

Quote:
Quote:
However, the transition from version 1.3.4.8 to 1.3.4.9 and 1.3.5.0 has broken the JMP instruction when assembled with a 24-bit operand.

It figures - must have been when I tried to keep things inside the current bank. I'll dig into it.

Classic software development issue.  :P

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 21, 2024 2:50 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
I have posted an update to correct the broken JMP $123456 instruction. As I figured, I broke it trying to fix another issue. I have tested the new code and both issues now work.

Find it here -> https://sbc.rictor.org/download/6502%20v1.3.5.1.zip

As for .ref, .def. & .passdef, I can see how each is being tested but am not sure how demonstrate their individual use.

.ref = 1 if the label name is stored in the label database, otherwise return 0.
.def = 1 if label name stored in database AND its type is not UNDEF., otherwise return 0
Types include address, value, macro name, macro address.
.passdef is the same as .def with both parameters being met or return 0. If they are met, it returns 1 if pass=1 and 1 if pass=2 AND it has
been checked; or 0 if it has not been checked. I can see where this might lead to phase errors if used with .IF

I'm not sure how to show meaningful ways to use each.

My spring garden work is starting to pick up so I will not be able to work on more updates for a while. Until then...
thanks!
Daryl

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Sun Apr 21, 2024 5:46 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8169
Location: Midwestern USA
8BIT wrote:
I have posted an update to correct the broken JMP $123456 instruction. As I figured, I broke it trying to fix another issue. I have tested the new code and both issues now work.

Find it here -> https://sbc.rictor.org/download/6502%20v1.3.5.1.zip

I will grab it in the next day or so and give it a whirl.  It’s going to be a busy music weekend...little time for bits and bytes.  :D

Quote:
As for .ref, .def. & .passdef, I can see how each is being tested but am not sure how demonstrate their individual use.

.ref = 1 if the label name is stored in the label database, otherwise return 0.
.def = 1 if label name stored in database AND its type is not UNDEF., otherwise return 0
Types include address, value, macro name, macro address.
.passdef is the same as .def with both parameters being met or return 0. If they are met, it returns 1 if pass=1 and 1 if pass=2 AND it has
been checked; or 0 if it has not been checked. I can see where this might lead to phase errors if used with .IF

I'm not sure how to show meaningful ways to use each.

I posted a topic a while ago on some of those conditional assembly directives.  I wrote that prior to knowing that .PASSDEF was one of the conditionals.  I need to put together something more comprehensive...it’s on one of the numerous back burners of my computing stove.

Quote:
My spring garden work is starting to pick up so I will not be able to work on more updates for a while.

No garden here, but I’m out in farm country.  Around mid-July, I expect that the sweet corn will be ready for first harvest.  We’ve had somewhat-greater-than-average rainfall so far, which tends to accelerate things.  A local farmer organically grows a variety of produce, which gets eagerly consumed in my house.  :D  His sweet corn is second to none, in my not-uninformed opinion.  :wink:  It goes great with a juicy rib-eye steak.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 24, 2024 11:07 pm 
Offline
User avatar

Joined: Tue Feb 28, 2023 11:39 pm
Posts: 137
Location: Texas
8BIT wrote:
I have posted an update to correct the broken JMP $123456 instruction. As I figured, I broke it trying to fix another issue. I have tested the new code and both issues now work.

Find it here -> https://sbc.rictor.org/download/6502%20v1.3.5.1.zip

As for .ref, .def. & .passdef, I can see how each is being tested but am not sure how demonstrate their individual use.

.ref = 1 if the label name is stored in the label database, otherwise return 0.
.def = 1 if label name stored in database AND its type is not UNDEF., otherwise return 0
Types include address, value, macro name, macro address.
.passdef is the same as .def with both parameters being met or return 0. If they are met, it returns 1 if pass=1 and 1 if pass=2 AND it has
been checked; or 0 if it has not been checked. I can see where this might lead to phase errors if used with .IF

I'm not sure how to show meaningful ways to use each.

My spring garden work is starting to pick up so I will not be able to work on more updates for a while. Until then...
thanks!
Daryl


Mmmm... fram fresh produce would be nice. Unfortunately I live dead in the middle of the city and no access to such things. (Not that I have the patience to cook anything for myself, but I do like making stuff for groups when they come over.)


ANYHOW!

Would you mind if I dumped this code into a github repo Daryl?


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 24, 2024 11:15 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1682
Location: Sacramento, CA
Yuri wrote:
Would you mind if I dumped this code into a github repo Daryl?


No, go ahead!

Nothing beats home grown food!!!

_________________
Please visit my website -> https://sbc.rictor.org/


Top
 Profile  
Reply with quote  
PostPosted: Wed Apr 24, 2024 11:47 pm 
Offline
User avatar

Joined: Tue Feb 28, 2023 11:39 pm
Posts: 137
Location: Texas
8BIT wrote:
Yuri wrote:
Would you mind if I dumped this code into a github repo Daryl?


No, go ahead!

Nothing beats home grown food!!!



Excellent!

I've placed the code here:
https://github.com/Kelmar/kowalski


I'm thinking that I will try branching and seeing if I can port it to using wxWidgets or something so folks can run it on other OSes than Windows.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 334 posts ]  Go to page Previous  1 ... 19, 20, 21, 22, 23  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: