;; This example shows how to scroll the screen vertically using ;; the CPC+. ;; ;; This example is designed for CPC+ only and will ;; not work on CPC or KC Compact. ;; ;;;; This example will compile with the MAXAM assembler ;; or the built-in assembler of WinAPE32. ;; NOTE - For this example to work, the code must not ;; be in the range &4000-&7fff inclusive. The ASIC registers ;; are paged into this range, and the code would not be ;; visible to the CPU if it was also in this range. org &8000 ld hl,&4000 ld b,200 ld c,8 xor a .lp push af push bc push hl ld e,l ld d,h inc de ld (hl),a ld bc,79 ldir pop hl pop bc ld a,h add a,8 ld h,a dec c jr nz,lp2 ld c,8 ld a,l add a,80 ld l,a ld a,h adc a,&c0 ld h,a .lp2 pop af inc a djnz lp ;;-------------------------------------------------- ;; STEP 1 - Unlock CPC+ additional features ;; unlock asic to gain access to asic registers di ld b,&bc ld hl,sequence ld e,17 .seq ld a,(hl) out (c),a inc hl dec e jr nz,seq ei ld bc,&bc0c out (c),c ld bc,&bd30 out (c),c ld bc,&bc0d out (c),c ld bc,&bd00 out (c),c ld bc,&7fb8 out (c),c ld hl,&1000 ld a,h ld (&6802),a ld a,l ld (&6803),a .ml ld b,&f5 .ml1 in a,(c) rra jr nc,ml1 ;; no scroll ld a,0 ld (&6804),a ld a,100 ld (&6800),a ld (&6801),a ld a,(scrl_val) inc a and 7 ld (scrl_val),a add a,a add a,a add a,a add a,a ld (scrl+1),a halt .scrl ld a,0 ld (&6804),a xor a ld (&6800),a ld (&6801),a jp ml .scrl_val defb 0 ;;---------------------------------------------------------- ;; this is the sequence to unlock the ASIC extra features .sequence defb &ff,&00,&ff,&77,&b3,&51,&a8,&d4,&62,&39,&9c,&46,&2b,&15,&8a,&cd,&ee