Re: A86: absolute address resolution


[Prev][Next][Index][Thread]

Re: A86: absolute address resolution




Are you aware that the rom call _load_ram_ahl will do exactly what your 
routine tries to do?


In a message dated 12/5/99 21:42:28 Eastern Standard Time, 
croop@oregontrail.net writes:

> Does anyone see any obvious defects in this routine?  I've tested it on
>  the emulator in several programs, but the last few versions tested out
>  ok too, until a week or so later when I discovered an error.  But I
>  think I've got it now.  Apparently, until tonight, my concept of what
>  paged memory meant wasn't quite what TI's concept was...
>  
>  Cassady Roop
>  
>  
>  ;decodeABS   decodes absolute address in ahl.
>  ;by Cassady Roop
>  ;input - AHL = absolute address, like that outputted by _findsym
>  ;output - A = page
>  ;     HL = offset into page.
>  decodeABS:
>   cp 0            ;is a zero?
>   ret z           ;if so, hl is already a valid pointer
>   dec a
>   rlca            ;*2
>   rlca            ;*4
>   ld de, $4000        ;length of one page
>  dABSloop:
>   push hl         ;save
>   sbc hl, de      ;hl=hl-de
>   jr c, dABSdone      ;if hl was less than $4000
>   pop bc          ;get rid of the value we saved
>   inc a           ;increment the page counter
>   jr dABSloop     ;reloop
>  dABSdone:
>   inc a           ;page correction
>   pop hl          ;the last pushed value is the offset
>   ret         ;we are done
>  



----
Jonah Cohen
<ComAsYuAre@aol.com>
http://linux.hypnotic.org/~jonah/


Follow-Ups: