I'm waiting on a USB to serial adapter to come from China, so the 68hc11 BASIC is pretty much on hold, and I haven't even looked at the IDE interface since I last mentioned it. The IDE port doesn't really need to be finished until I can use the 68hc11 board, and that was going to be used by BASIC... so it's not an immediate priority. I'm working on the VZ ROM disassembly in the time being.
As for the disassembly... there are now enough system variables being labeled by the sed script to where it's possible to identify what many parts of the ROM are doing.
One thing I discovered is that YAZD may not properly handle the RST instruction. It disassembles it, but it may not treat it like a JP. This left some commonly called functions as data. Microsoft used RST to conserve ROM space. While it certainly works, it also slows down the interpreter. But regardless of why, it left me having to manually define all the RST calls as entry points. I have also blindly labeled many other entry points to see what the code looks like.
Anyway... here is another excerpt from the disassembly to give you an idea of how things are shaping up. There are still system variables left to be defined, some of the entry points I manually created will need to be removed, and comments still need to be added. But since the process is automated, it only takes seconds to regenerate the disassembly and add or change labels. Once I create a block of define statements for system variables and label addresses containing string data, I should be able to reassemble the code. I'm debating on whether to fix the disassembler so it can do a lot of this or to just script it in sed to be done with it.
As for the disassembly... there are now enough system variables being labeled by the sed script to where it's possible to identify what many parts of the ROM are doing.
One thing I discovered is that YAZD may not properly handle the RST instruction. It disassembles it, but it may not treat it like a JP. This left some commonly called functions as data. Microsoft used RST to conserve ROM space. While it certainly works, it also slows down the interpreter. But regardless of why, it left me having to manually define all the RST calls as entry points. I have also blindly labeled many other entry points to see what the code looks like.
Anyway... here is another excerpt from the disassembly to give you an idea of how things are shaping up. There are still system variables left to be defined, some of the entry points I manually created will need to be removed, and comments still need to be added. But since the process is automated, it only takes seconds to regenerate the disassembly and add or change labels. Once I create a block of define statements for system variables and label addresses containing string data, I should be able to reassemble the code. I'm debating on whether to fix the disassembler so it can do a lot of this or to just script it in sed to be done with it.
; Referenced from 3747
L3752: INC HL
DEC BC
LD A,C
OR B
JR NZ,L3743
LD HL,7839h
RES 3,(HL)
LD HL,VERIFY_MSG
CALL PUTSTRING
LD HL,OK_MSG
CALL PUTSTRING
JP L36CF
VERIFY_MSG: DB 0Dh
DB 56h ; 'V'
DB 45h ; 'E'
DB 52h ; 'R'
DB 49h ; 'I'
DB 46h ; 'F'
DB 59h ; 'Y'
DB 20h ; ' '
DB 00h