
EDIT: "Superseded by v3.0"

Soy todo ojos

Me he basado en la figura 2 del documento https://www.cpcwiki.eu/imgs/6/61/Patent_GB2243701A.pdf
Código: Seleccionar todo
ld a,#ff
xor #88 ;;77
rrca
xor #8 ;;b3
rrca
xor #88 ;;51
rrca ;;a8
rrca
xor #80 ;;d4
rrca
xor #8 ;;62
rrca
xor #8 ;;39
rrca ;;9c
rrca
xor #8 ;;46
rrca
xor #8 ;;2b
rrca
xor #80 ;;15
rrca ;;8a
rrca
xor #88 ;;cd
rrca
xor #8 ;;ee
Código: Seleccionar todo
ORG #4000
DI
LD HL,L4011
LD BC,#BC11
XOR A
L4008:
RRA
XOR (HL)
INC HL
OUT (C),A
DEC C
JR NZ,L4008
EI
RET
L4011:
DB #FF,#7F,#FF,#08,#88,#08,#80,#80
DB #08,#08,#80,#08,#08,#00,#80,#88
DB #88
Código: Seleccionar todo
org #4000
;; globals
SCR_WIDTH EQU #50
run $
ld hl,boxes
call fill_tbl
;;ld hl,frame
;;call fill_tbl
jr $
;;======================================================================
;; FILL TABLE
;; in: HL (table_addr).
;; Destroy A,BC,HL,DE
.fill_tbl:
ld b,(hl):inc hl ;; num items
@ftb_lp
push bc
ld a,(hl):inc hl ;; colour
ld c,(hl):inc hl ;; -width bytes
ld b,(hl):inc hl ;; height
ld e,(hl):inc hl ;; scr addr
ld d,(hl):inc hl ;; scr addr
push hl
ex de,hl ;; scr addr -> HL
call fill_box_color ;; draw box. req: A,BC,HL
pop hl
pop bc
djnz @ftb_lp
ret
;;======================================================================
;; FILL BOX
;; in HL,C,B,A (scr_addr, -width bytes, height, colour).
;; Destroy A,B,C,HL,DE
.fill_box_clear:
xor a ;; colour = 0
.fill_box_color:
ld (@fbox_color+1),a ;; set colour
.fill_box:
ld a,b ;; A = height
ld b,#7
ld d,#c0
@fbox_lp
ld e,c ;; E = -width bytes
@fbox_color
ld (hl),0 ;; colour var -> screen
inc hl
inc e
jr nz,@fbox_color
dec a ;; dec height
ret z
add hl,bc ;; next line
jr nc,@fbox_lp
ld e,SCR_WIDTH
add hl,de ;; next row
jr @fbox_lp
;;======================================================================
;; db num_items
;; db colour, -width_bytes, height: dw scr_addr
.boxes:
db 8
db #f0,-20,35:dw #d390
db #0f,-25,40:dw #e423
db #ff,-10,30:dw #c51c
db #00,-5,20:dw #c4ce
;;.frame
;;db 4
db #10,-1,20:dw #c000
db #f0,-16,1:dw #c001
db #80,-1,20:dw #c011
db #f0,-16,1:dw #d8a1
Si no has podido tú...
Código: Seleccionar todo
; Desbloqueo del ASIC gama plus y GX4000 sin uso de tablas
di ; v3.1 -> 30 bytes!
ld bc,#BCFF
out (c),c
out (c),0 ; db #ED,#71
ld a,c
loop:
out (c),a
ld h,a ; h = 7654 3210
add hl,hl ; h = 6543 210*
rra ; a = 7765 4321
add hl,hl ; h = 5432 10**
xor h:and #F7:xor h ; a = 7765 1321
ld l,a ; l = 7765 1321
ld a,h ; a = 5432 10**
rla ; a = 4321 0***
and #88:xor l ; a = (7 xor 4)765 (1 xor 0)321
cp c
jr nz,loop
ei
ret
Usuarios navegando por este foro: No hay usuarios registrados
La Comunidad Española |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |