Re: A86: HI.


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

Re: A86: HI.




    ld hl,_asapvar          ;hl->name of program
    rst 20h             ;copy to OP1
    rst 10h             ;_findsym
    xor a
    ld hl,data_start-_asm_exec_ram+4        ;offset
    add hl,de               ;hl=pointer to data in original prog
    adc a,b             ;in case we overlapped pages
    call _SET_ABS_DEST_ADDR
    xor a                   ;no absolute addressing now
    ld hl,data_start            ;get data from here
    call _SET_ABS_SRC_ADDR
    ld hl,data_end-data_start   ;number of bytes to save
    call _SET_MM_NUM_BYTES
    jp _MM_LDIR         ;copy data and return


In a message dated 12/11/99 1:54:22 AM Eastern Standard Time, david@acz.org 
writes:

> Then write it back with a routine like this:
>  
>   ld hl,ProgramVar-1
>   rst 20h
>   rst 10h
>   call _ex_ahl_bde
>   ld de,GameSaveData-_asm_exec_ram+4
>   add hl,de
>   adc a,0
>   call _set_abs_dest_addr
>   sub a
>   ld hl,GameSaveData
>   call _set_abs_src_addr
>   ld hl,GameSaveDataSize
>   call _set_mm_num_bytes
>   call _mm_ldir
>   ret
>  
>  ProgramVar:
>   .db 4,"name"       ; 4 is the number of chars in 'name', which is the
>  program variable's name
>  
>  Note that I haven't done any 86 coding in a while and I just ripped this
>  from my last project, so there could be a more optimized way...
>  



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


Follow-Ups: