I successfully separated DetectType routine from VATProcessEntry routine, which itself has been separated from VATFind. DetectType now takes the address of a VAT entry in
hl and returns the program's typemask in
a and a pointer to a 16x16 icon in
ix.
a=$ff indicates the specified program is either hidden to DCS or invalid. This clears the way for the two most immediate items on my ToDo list:
:: Enhance RunProg to only take the address of a program's VAT entry as its input and deduce everything else necessary
:: Implement the RunProg vector.
Interestingly enough, I still have the space constraints listed below, although I have already added and implemented a third (empty) page:
Code: Page 0 is 15832 bytes long (552 bytes to spare)
Page 1 is 16167 bytes long (217 bytes to spare)
Page 2 is 1426 bytes long (14958 bytes to spare)
1.4KB is already taken up by the vector table on page 3 as well as the skeletal ion library I have on each page for swift access to those routines without cross-page calling. After I finish the two items above, my next-most-pressing ToDo items:
:: Homescreen parser hook implementation to call RunProg
:: Chaining, if necessary?
:: Research and list all routines necessary for Celtic III and xLib emulation. Figure out what code can be reused and what needs to be written from scratch.
:: Implement BASIC interface to DCS GUI system