/* WIZ registers */ #define WIZ_MODE 0x27 #define WIZ_ADR0 0x2F #define WIZ_ADR1 0x37 #define WIZ_DATA 0x3F /* WIZ modes */ #define WIZ_MODE_STD 1 // indirect addressing #define WIZ_MODE_INC 3 // indirect addressing, auto increment unsigned char wiz_r(unsigned int adr) { #asm pop de ; caller address pop hl ; address to be read push hl; restore stack push de ld a,WIZ_MODE_STD ; set indirect address mode out (WIZ_MODE),a ld a,l ; set read address out (WIZ_ADR1),a ld a,h out (WIZ_ADR0),a in a,(WIZ_DATA) ; read value ld h,0 ; return value in HL ld l,a #endasm } void wiz_s(unsigned int adr, unsigned char data) { #asm pop de ; caller address pop bc ; data pop hl ; address to be written push hl; restore stack push bc push de ld a,WIZ_MODE_STD ; set indirect address mode out (WIZ_MODE),a ld a,l ; set write address out (WIZ_ADR1),a ld a,h out (WIZ_ADR0),a ld a,c ; write data out (WIZ_DATA),a #endasm }