06-01-2010, 05:42 PM
boriel Wrote:The problem here is __ATTR_ADDR is taking into account a configurable SCREEN_ADDRESS variable (previously discussed here). So if you want your program to work in a variable screen address, you should work considering 0 offset an adding (SCREEN_ADDRESS) at the end, so should change it this way:
Code:;; 23 T-States up to here
;; The following must be changed, start form 0 and add (SCREEN_ADDRESS) later
; add a,88 ; 88 * 256 = 22528 - start of attributes.
Boriel - if you put in the limit that any screen address has to be 256-byte aligned (and really, it should be. That's the whole point of INC H going to the next line in a character), then you could just tweak the add A,88 there to add in the "page number" instead.... no?
I think that would be a better result, allowing for a variable screen address.
Incidentally, why have a variable screen address? For writing to a shadow screen? If it's about other computers....they won't have the screen layout of a spectrum anyway!