In the Apple ][ system monitor port, there are numerous conditional assembly sections for porting to the Apple I, mostly to handle the different hardware. However, I noticed that some of these conditionals may not be working properly (at least, on the hardware I have running the port of the monitor) in the mini-assembler. The first is at at line 136. Here, L6 is called instead of INSDS2, and I am unsure why a different subroutine is needed on Apple I hardware vs. any other 6502 hardware with regards to processing the mnemonic entered from the console. L0 is also called in INSDS1 if APPLE is defined and it's unclear why. In fact, with APPLE1 defined, I'm unable to get the mini-assembler to function properly with some mnemonics compared to the unmodified (Apple II) mini-assembler code, which works fine on my hardware. For example, if APPLE1 is defined, LDA and STA do not get mapped correctly to opcodes by the mini-assembler:
* F666G
!300: LDA #8A
0300- A7 ???
! STA 88
0301- 17 ???
A7 and 17 are not the correct opcodes for LDA immediate nor STA zero-page, and the mini-assembler is thus confused by the operands. Again the official code (without APPLE1 defined) correctly assembles these commands. Was there something special on the Apple I replica that needed different INSDS1 and INSDS2 routines?
Unless I am missing something, there is also some extraneous code in the mini-assembler conditionally assembled with APPLE1 defined on lines 266-261, which occur before MINIASM, which I do not think ever gets called.
I gather the Apple I port of the monitor was originally done by someone else, so I understand you may not have direct rationale for these changes. Thanks!
In the Apple ][ system monitor port, there are numerous conditional assembly sections for porting to the Apple I, mostly to handle the different hardware. However, I noticed that some of these conditionals may not be working properly (at least, on the hardware I have running the port of the monitor) in the mini-assembler. The first is at at line 136. Here,
L6is called instead ofINSDS2, and I am unsure why a different subroutine is needed on Apple I hardware vs. any other 6502 hardware with regards to processing the mnemonic entered from the console.L0is also called inINSDS1ifAPPLEis defined and it's unclear why. In fact, withAPPLE1defined, I'm unable to get the mini-assembler to function properly with some mnemonics compared to the unmodified (Apple II) mini-assembler code, which works fine on my hardware. For example, ifAPPLE1is defined, LDA and STA do not get mapped correctly to opcodes by the mini-assembler:A7 and 17 are not the correct opcodes for LDA immediate nor STA zero-page, and the mini-assembler is thus confused by the operands. Again the official code (without
APPLE1defined) correctly assembles these commands. Was there something special on the Apple I replica that needed differentINSDS1andINSDS2routines?Unless I am missing something, there is also some extraneous code in the mini-assembler conditionally assembled with
APPLE1defined on lines 266-261, which occur beforeMINIASM, which I do not think ever gets called.I gather the Apple I port of the monitor was originally done by someone else, so I understand you may not have direct rationale for these changes. Thanks!