Difference between revisions of "Programming:Next / previous line calculation"
From CPCWiki - THE Amstrad CPC encyclopedia!
(→Firmware) |
(→Firmware) |
||
Line 66: | Line 66: | ||
call SCR_PREV_LINE | call SCR_PREV_LINE | ||
+ | |||
+ | |||
+ | ACTUAL #BC29 ROUTINE FOLLOWS: | ||
+ | |||
+ | ld a,h:sub #08:ld h,a:and #38:cp #38:ret nz | ||
+ | ld a,h:add #40:ld h,a:ld a,l:sub reg1*2:ld l,a:ret nc ; reg1= CRTC reg.1 value | ||
+ | ld a,h:dec h:and #07:ret nz | ||
+ | ld a,h:add #08:ld h,a:ret | ||
+ | |||
</pre> | </pre> | ||
[[Category:Programming]] | [[Category:Programming]] |
Revision as of 05:46, 16 January 2016
Next line
This routines calculate the next line from the given address.
Firmware
Input: HL=Address
Output: HL=Address of the next line
Destroyed: AF
SCR_NEXT_LINE equ #BC26 call SCR_NEXT_LINE ACTUAL #BC26 ROUTINE FOLLOWS: ld a,h:add #08:ld h,a:and #38:ret nz ld a,h:sub #40:ld h,a:ld a,l:add reg1*2:ld l,a:ret nc ;reg1= CRTC reg.1 value inc h:ld a,h:and #07:ret nz ld a,h:sub #08:ld h,a:ret
Without Firmware
Input: HL=Address
Output: HL=Address of the next line
Destroyed: AF,BC
; Richard Fairhurst ; October 1997 ; ;*** Next line down from HL *** .nline ld a,8 add h ld h,a ret nc ld bc,#c050 add hl,bc ret
Previous line
This routines calculate the previous line from the given address.
Firmware
Input: HL=Address
Output: HL=Address of the previous line
Destroyed: AF
SCR_PREV_LINE equ #BC29 call SCR_PREV_LINE ACTUAL #BC29 ROUTINE FOLLOWS: ld a,h:sub #08:ld h,a:and #38:cp #38:ret nz ld a,h:add #40:ld h,a:ld a,l:sub reg1*2:ld l,a:ret nc ; reg1= CRTC reg.1 value ld a,h:dec h:and #07:ret nz ld a,h:add #08:ld h,a:ret