mirror of https://github.com/zxdos/zxuno.git
Añado launcher vertical
This commit is contained in:
parent
62103cb13c
commit
562bce021e
|
|
@ -0,0 +1,925 @@
|
|||
output launcher.rom
|
||||
include version.asm
|
||||
define vertical 1
|
||||
macro wreg dir, dato
|
||||
rst $28
|
||||
defb dir, dato
|
||||
endm
|
||||
define call_prnstr rst $18
|
||||
define zxuno_port $fc3b
|
||||
define master_conf 0
|
||||
define master_mapper 1
|
||||
define flash_spi 2
|
||||
define flash_cs 3
|
||||
define scan_code 4
|
||||
define key_stat 5
|
||||
define joy_conf 6
|
||||
define key_map 7
|
||||
define nmi_event 8
|
||||
define mouse_data 9
|
||||
define mouse_status 10
|
||||
define scandbl_ctrl 11
|
||||
define raster_line 12
|
||||
define raster_ctrl 13
|
||||
define dev_control 14
|
||||
define dev_control2 15
|
||||
define core_addr $fc
|
||||
define core_boot $fd
|
||||
define cold_boot $fe
|
||||
define core_id $ff
|
||||
|
||||
define SPI_PORT $eb
|
||||
define OUT_PORT $e7
|
||||
define MMC_0 $fe ; D0 LOW = SLOT0 active
|
||||
define CMD0 $40
|
||||
define CMD1 $41
|
||||
define CMD8 $48
|
||||
define SET_BLOCKLEN $50
|
||||
define READ_SINGLE $51
|
||||
define CMD41 $69
|
||||
define CMD55 $77
|
||||
define CMD58 $7a
|
||||
|
||||
define cmbpnt $8f00
|
||||
define colcmb $8fc6 ;lo: color de lista hi: temporal
|
||||
define menuop $8fc8 ;lo: menu superior hi: submenu
|
||||
define corwid $8fca ;lo: X attr coor hi: attr width
|
||||
define cmbcor $8fcc ;lo: Y coord hi: X coord
|
||||
define codcnt $8fce ;lo: codigo ascii hi: repdel
|
||||
define items $8fd0 ;lo: totales hi: en pantalla
|
||||
define offsel $8fd2 ;lo: offset visible hi: seleccionado
|
||||
; inputs lo: cursor position hi: max length
|
||||
; otro lo: pagina actual hi: mascara paginas
|
||||
define sdhc $8fd4
|
||||
define scnbak $8fd5
|
||||
define empstr $8fd6
|
||||
define config $9000
|
||||
define indexe $a000
|
||||
define active $a040
|
||||
define bitstr active+1
|
||||
define quietb bitstr+1
|
||||
define checkc quietb+1
|
||||
define keyiss checkc+1
|
||||
define timing keyiss+1
|
||||
define conten timing+1
|
||||
define divmap conten+1
|
||||
define nmidiv divmap+1
|
||||
define grapmo nmidiv+1
|
||||
|
||||
define layout grapmo+1
|
||||
define joykey layout+1
|
||||
define joydb9 joykey+1
|
||||
define outvid joydb9+1
|
||||
define scanli outvid+1
|
||||
define freque scanli+1
|
||||
define cpuspd freque+1
|
||||
define roboot cpuspd+1 ; boot as root
|
||||
|
||||
define tmpbuf $7800
|
||||
define tmpbu2 $7880
|
||||
define bnames $a100
|
||||
define stack $aab0
|
||||
|
||||
di
|
||||
jp start
|
||||
|
||||
block $18-$
|
||||
rst18 jp prnstr
|
||||
|
||||
block $28-$
|
||||
rst28 ld bc, zxuno_port + $100
|
||||
pop hl
|
||||
outi
|
||||
ld b, (zxuno_port >> 8)+2
|
||||
outi
|
||||
jp (hl)
|
||||
|
||||
; ----------------------
|
||||
; THE 'KEYBOARD' ROUTINE
|
||||
; ----------------------
|
||||
block $38-$
|
||||
rst38 push af
|
||||
ex af, af'
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
ld de, keytab-1&$ff
|
||||
ld bc, $fefe
|
||||
ld l, d
|
||||
keyscn in a, (c)
|
||||
cpl
|
||||
and $1f
|
||||
ld h, l
|
||||
jr z, keysc5
|
||||
keysc1 inc l
|
||||
srl a
|
||||
jr nc, keysc1
|
||||
ex af, af'
|
||||
ld a, l
|
||||
cp $25 ;symbol, change here
|
||||
jr z, keysc3
|
||||
cp $01 ;shift, change here
|
||||
jr z, keysc2
|
||||
inc d
|
||||
dec d
|
||||
ld d, l
|
||||
jr z, keysc4
|
||||
xor a
|
||||
jr keysc6
|
||||
keysc2 ld e, 39+keytab&$ff
|
||||
defb $c2 ;JP NZ,xxxx
|
||||
keysc3 ld e, 79+keytab&$ff
|
||||
keysc4 ex af, af'
|
||||
jr nz, keysc1
|
||||
keysc5 ld a, h
|
||||
add a, 5
|
||||
ld l, a
|
||||
rlc b
|
||||
jr c, keyscn
|
||||
in a, ($1f)
|
||||
or a
|
||||
jr z, nokemp
|
||||
ld hl, kemp-1
|
||||
sikemp inc hl
|
||||
rrca
|
||||
jr nc, sikemp
|
||||
jr sikem2
|
||||
nokemp ld h, a
|
||||
add a, d
|
||||
jr z, keysc6
|
||||
ld d, h
|
||||
ld l, a
|
||||
add hl, de
|
||||
sikem2 ld a, (hl)
|
||||
keysc6 ld hl, (codcnt)
|
||||
jr z, keysc8
|
||||
res 7, l
|
||||
cp l
|
||||
jr nz, keysc7
|
||||
dec h
|
||||
jr nz, keysc9
|
||||
ld h, 3
|
||||
defb $c2
|
||||
keysc7 ld h, 32
|
||||
or $80
|
||||
keysc8 ld l, a
|
||||
keysc9 ld (codcnt), hl
|
||||
ei
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
ex af, af'
|
||||
pop af
|
||||
ret ; return.
|
||||
; ---------------
|
||||
; THE 'KEY TABLE'
|
||||
; ---------------
|
||||
keytab defb $00, $7a, $78, $63, $76 ; Caps z x c v
|
||||
defb $61, $73, $64, $66, $67 ; a s d f g
|
||||
defb $71, $77, $65, $72, $74 ; q w e r t
|
||||
defb $31, $32, $33, $34, $35 ; 1 2 3 4 5
|
||||
defb $30, $39, $38, $37, $36 ; 0 9 8 7 6
|
||||
defb $70, $6f, $69, $75, $79 ; p o i u y
|
||||
defb $0d, $6c, $6b, $6a, $68 ; Enter l k j h
|
||||
defb $20, $00, $6d, $6e, $62 ; Space Symbol m n b
|
||||
defb $00, $5a, $58, $43, $56 ; Caps Z X C V
|
||||
defb $41, $53, $44, $46, $47 ; A S D F G
|
||||
defb $51, $57, $45, $52, $54 ; Q W E R T
|
||||
defb $17, $19, $1a, $1b, $1e ; Edit CapsLk TruVid InvVid Left
|
||||
defb $18, $16, $1f, $1c, $1d ; Del Graph Right Up Down
|
||||
defb $50, $4f, $49, $55, $59 ; P O I U Y
|
||||
defb $0d, $4c, $4b, $4a, $48 ; Enter L K J H
|
||||
defb $0c, $00, $4d, $4e, $42 ; Break Symbol M N B
|
||||
defb $00, $3a, $60, $3f, $2f ; Caps : ` ? /
|
||||
defb $7e, $7c, $5c, $7b, $7d ; ~ | \ { }
|
||||
defb $51, $57, $45, $3c, $3e ; Q W E < >
|
||||
defb $21, $40, $23, $24, $25 ; ! @ # $ %
|
||||
defb $5f, $29, $28, $27, $26 ; _ ) ( ' &
|
||||
defb $22, $3b, $7f, $5d, $5b ; " ; (c) ] [
|
||||
defb $0d, $3d, $2b, $2d, $5e ; Enter = + - ^
|
||||
defb $20, $00, $2e, $2c, $2a ; Space Symbol . , *
|
||||
kemp defb $1f, $1e, $1d, $1c, $0d ; Right Left Down Up Enter
|
||||
|
||||
start ld sp, stack
|
||||
ld hl, chrstr
|
||||
ld de, $b080
|
||||
ld bc, chrend-chrstr
|
||||
ldir
|
||||
call loadch
|
||||
ld hl, $b000
|
||||
ld de, $b400
|
||||
start1 ld b, $04
|
||||
start2 ld a, (hl)
|
||||
rrca
|
||||
rrca
|
||||
ld (de), a
|
||||
inc de
|
||||
cpi
|
||||
jp pe, start2
|
||||
ld a, h
|
||||
cp a, $bc
|
||||
jr nz, start1
|
||||
ei
|
||||
|
||||
;++++++++++++++++++++++++++++++++++
|
||||
;++++++++ Boot list ++++++++
|
||||
;++++++++++++++++++++++++++++++++++
|
||||
blst ld hl, finbez-1
|
||||
ld d, $7a
|
||||
call dzx7b ; descomprimir
|
||||
call drcs
|
||||
ld hl, bnames-1
|
||||
ld bc, $20
|
||||
ld a, c
|
||||
laun0 add hl, bc
|
||||
inc e
|
||||
cp (hl)
|
||||
jr z, laun0
|
||||
inc e
|
||||
ld a, e
|
||||
ld l, a
|
||||
cp 24
|
||||
jr c, laun1
|
||||
ld a, 24
|
||||
laun1 ld h, a
|
||||
ld (items), hl
|
||||
ld hl, $0104 ; coordenada X
|
||||
push hl
|
||||
ld iy, (items)
|
||||
ld hl, cad62
|
||||
ld (cmbpnt), hl
|
||||
ld iy, indexe
|
||||
ld ix, cmbpnt
|
||||
ld de, tmpbuf
|
||||
ld b, e
|
||||
ld hl, bnames
|
||||
call addbl1
|
||||
laun2 ld c, $20
|
||||
add hl, bc
|
||||
call addbls
|
||||
jr nc, laun2
|
||||
ld (ix+1), a
|
||||
ld a, (items+1)
|
||||
ld e, a
|
||||
ld d, 24
|
||||
call chcol
|
||||
defw $1203
|
||||
defw %0111100001000111
|
||||
bls375 ld hl, 0;(active)
|
||||
ld a, h
|
||||
pop hl
|
||||
ld h, 4
|
||||
blst4 call combol
|
||||
ld b, a
|
||||
ld a, (codcnt)
|
||||
sub $0d
|
||||
jr nz, blst4
|
||||
call calbit
|
||||
ld bc, zxuno_port
|
||||
ld e, core_addr
|
||||
out (c), e
|
||||
inc b
|
||||
out (c), h
|
||||
out (c), l
|
||||
out (c), 0
|
||||
wreg core_boot, 1
|
||||
|
||||
; ------------------------------------
|
||||
; Calculate start address of bitstream
|
||||
; B: number of bitstream
|
||||
; Returns:
|
||||
; HL: address of bitstream
|
||||
; ------------------------------------
|
||||
calbit inc b
|
||||
IF version<5
|
||||
calbi1 ld a, 9
|
||||
cp b
|
||||
ld hl, $0040
|
||||
jr nc, calbi2
|
||||
ld hl, $0b80
|
||||
calbi2 ld de, $0540
|
||||
ELSE
|
||||
calbi1 ld hl, $0980
|
||||
ld de, $0740
|
||||
ENDIF
|
||||
calbi3 add hl, de
|
||||
djnz calbi3
|
||||
ret
|
||||
|
||||
deixl ld (ix+0), e
|
||||
ld (ix+1), d
|
||||
deixl1 inc ixl
|
||||
inc ixl
|
||||
ret
|
||||
|
||||
; ----------------------------
|
||||
; Add an entry to the bootlist
|
||||
; ----------------------------
|
||||
addbls ld (ix+0), e
|
||||
ld (ix+1), d
|
||||
push hl
|
||||
IF vertical=0
|
||||
call str2tmp
|
||||
ELSE
|
||||
push de
|
||||
call str2tmp
|
||||
pop hl
|
||||
ld a, l
|
||||
add a, 25
|
||||
ld l, a
|
||||
jr nc, addbl0
|
||||
inc h
|
||||
addbl0 ld (hl), 0
|
||||
ENDIF
|
||||
pop hl
|
||||
addbl1 inc iyl
|
||||
call deixl1
|
||||
ld a, (items)
|
||||
sub 2
|
||||
sub iyl
|
||||
ret
|
||||
|
||||
; -------------------------------------
|
||||
; Transforms space finished string to a null terminated one
|
||||
; HL: end of origin string
|
||||
; DE: start of moved string
|
||||
; -------------------------------------
|
||||
str2tmp ld c, $21
|
||||
push hl
|
||||
str2t1 dec hl
|
||||
dec c
|
||||
ld a, (hl)
|
||||
cp $20
|
||||
jr z, str2t1
|
||||
pop hl
|
||||
ld a, l
|
||||
sub $20
|
||||
ld l, a
|
||||
jr nc, str2t2
|
||||
dec h
|
||||
str2t2 ldir
|
||||
xor a
|
||||
ld (de), a
|
||||
inc de
|
||||
ret
|
||||
|
||||
; -------------------------------------
|
||||
; Show a combo list to select one element
|
||||
; Parameters:
|
||||
;(corwid)
|
||||
; cmbpnt: list of pointers (last is $ffff)
|
||||
; A: preselected one
|
||||
; HL: X coord (H) and Y coord (L) of the first element
|
||||
; DE: window width (D) and window height (E)
|
||||
; Returns:
|
||||
; A: item selected
|
||||
; -------------------------------------
|
||||
combol push hl
|
||||
push de
|
||||
ex af, af'
|
||||
ld (cmbcor), hl
|
||||
ld hl, cmbpnt+1
|
||||
combo1 ld a, (hl)
|
||||
inc l
|
||||
inc l
|
||||
inc a
|
||||
jr nz, combo1
|
||||
srl l
|
||||
dec l
|
||||
ld c, l
|
||||
ld h, e
|
||||
ld b, d
|
||||
ld (items), hl
|
||||
ld hl, empstr
|
||||
combo2 ld (hl), $20
|
||||
inc l
|
||||
djnz combo2
|
||||
ld (hl), a
|
||||
ex af, af'
|
||||
ld (offsel+1), a
|
||||
sub e
|
||||
jr nc, combo3
|
||||
sbc a, a
|
||||
combo3 inc a
|
||||
combo4 ld (offsel), a
|
||||
ld iy, (items)
|
||||
ld iyl, iyh
|
||||
ld bc, (cmbcor)
|
||||
ld a, iyl
|
||||
or a
|
||||
jr z, combo7
|
||||
combo5 ld ix, empstr
|
||||
call_prnstr
|
||||
dec iyl
|
||||
jr nz, combo5
|
||||
ld a, (offsel)
|
||||
ld bc, (cmbcor)
|
||||
add a, a
|
||||
ld h, cmbpnt>>8
|
||||
ld l, a
|
||||
combo6 ld a, (hl)
|
||||
ld ixl, a
|
||||
inc l
|
||||
ld a, (hl)
|
||||
inc l
|
||||
ld ixh, a
|
||||
push hl
|
||||
call_prnstr
|
||||
pop hl
|
||||
dec iyh
|
||||
jr nz, combo6
|
||||
combo7 ld de, (corwid)
|
||||
ld hl, (cmbcor)
|
||||
ld h, e
|
||||
ld a, (items+1)
|
||||
ld e, a
|
||||
ld a, (colcmb)
|
||||
call window
|
||||
ld de, (corwid)
|
||||
ld hl, (offsel)
|
||||
ld a, (cmbcor)
|
||||
add a, h
|
||||
sub l
|
||||
ld l, a
|
||||
ld h, e
|
||||
ld e, 1
|
||||
ld a, (colcmb-1)
|
||||
call window
|
||||
call waitky
|
||||
ld hl, (offsel)
|
||||
sub $0d
|
||||
jr c, comboa
|
||||
jr z, comboa
|
||||
ld bc, (items)
|
||||
sub $1c-$0d
|
||||
jr nz, combo9
|
||||
dec h
|
||||
jp m, combo7
|
||||
ld a, h
|
||||
cp l
|
||||
ld (offsel), hl
|
||||
jr nc, combo7
|
||||
ld a, l
|
||||
dec a
|
||||
combo8 jr combo4
|
||||
combo9 dec a ; $1d
|
||||
jr nz, comboa
|
||||
inc h
|
||||
ld a, h
|
||||
cp c
|
||||
jr z, combo7
|
||||
sub l
|
||||
cp b
|
||||
ld (offsel), hl
|
||||
jr nz, combo7
|
||||
ld a, l
|
||||
inc a
|
||||
jr combo8
|
||||
comboa ld a, h
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
|
||||
; -------------------------------------
|
||||
; Draw a window in the attribute area
|
||||
; Parameters:
|
||||
; A: attribute color
|
||||
; HL: X coordinate (H) and Y coordinate (L)
|
||||
; DE: window width (D) and window height (E)
|
||||
; -------------------------------------
|
||||
IF vertical=0
|
||||
window push hl
|
||||
push de
|
||||
ld c, h
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld h, $16
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
windo1 ld b, d
|
||||
windo2 ld (hl), a
|
||||
inc hl
|
||||
djnz windo2
|
||||
ld c, d
|
||||
sbc hl, bc
|
||||
ld c, $20
|
||||
add hl, bc
|
||||
dec e
|
||||
jr nz, windo1
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
ELSE
|
||||
window push hl
|
||||
push de
|
||||
ld c, l;h
|
||||
push af
|
||||
ld a, 23
|
||||
sub h
|
||||
ld l, a
|
||||
pop af
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld h, $16
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld c, e
|
||||
add hl, bc
|
||||
|
||||
windo1 ld b, e;d
|
||||
windo2 dec hl
|
||||
ld (hl), a
|
||||
djnz windo2
|
||||
ld c, e
|
||||
add hl, bc
|
||||
ld bc, $ffe0
|
||||
add hl, bc
|
||||
dec d;e
|
||||
jr nz, windo1
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
ENDIF
|
||||
|
||||
; -------------------------------------
|
||||
; Change corwid and colcmb variables
|
||||
; Parameters: PC
|
||||
chcol pop hl
|
||||
ld a, (hl)
|
||||
inc hl
|
||||
ld (corwid), a
|
||||
ld a, (hl)
|
||||
inc hl
|
||||
ld (corwid+1), a
|
||||
ld a, (hl)
|
||||
inc hl
|
||||
ld (colcmb), a
|
||||
ld a, (hl)
|
||||
inc hl
|
||||
ld (colcmb-1), a
|
||||
jp (hl)
|
||||
|
||||
; -------------------------------------
|
||||
; Wait for a key
|
||||
; Returns:
|
||||
; A: ascii code of the key
|
||||
; -------------------------------------
|
||||
waitky ld a, (codcnt)
|
||||
sub $80
|
||||
jr c, waitky ; Espero la pulsación de una tecla
|
||||
ld (codcnt), a
|
||||
ret
|
||||
|
||||
; -----------------------------------------------------------------------------
|
||||
; ZX7 Backwards by Einar Saukas, Antonio Villena
|
||||
; Parameters:
|
||||
; HL: source address (compressed data)
|
||||
; DE: destination address (decompressing)
|
||||
; -----------------------------------------------------------------------------
|
||||
dzx7b ld bc, $8000
|
||||
ld a, b
|
||||
copyby inc c
|
||||
ldd
|
||||
mainlo add a, a
|
||||
call z, getbit
|
||||
jr nc, copyby
|
||||
push de
|
||||
ld d, c
|
||||
defb $30
|
||||
lenval add a, a
|
||||
call z, getbit
|
||||
rl c
|
||||
rl b
|
||||
add a, a
|
||||
call z, getbit
|
||||
jr nc, lenval
|
||||
inc c
|
||||
jr z, exitdz
|
||||
ld e, (hl)
|
||||
dec hl
|
||||
sll e
|
||||
jr nc, offend
|
||||
ld d, $10
|
||||
nexbit add a, a
|
||||
call z, getbit
|
||||
rl d
|
||||
jr nc, nexbit
|
||||
inc d
|
||||
srl d
|
||||
offend rr e
|
||||
ex (sp), hl
|
||||
ex de, hl
|
||||
adc hl, de
|
||||
lddr
|
||||
exitdz pop hl
|
||||
jr nc, mainlo
|
||||
ret
|
||||
|
||||
getbit ld a, (hl)
|
||||
dec hl
|
||||
adc a, a
|
||||
ret
|
||||
|
||||
drcs inc hl
|
||||
ld b, $40 ; filtro RCS inverso
|
||||
start4 ld a, b
|
||||
xor c
|
||||
and $f8
|
||||
xor c
|
||||
ld d, a
|
||||
xor b
|
||||
xor c
|
||||
rlca
|
||||
rlca
|
||||
ld e, a
|
||||
inc bc
|
||||
ldi
|
||||
inc bc
|
||||
IF vertical=0
|
||||
bit 3, b
|
||||
jr z, start4
|
||||
ELSE
|
||||
ld a, b
|
||||
sub $58
|
||||
jr nz, start4
|
||||
dec a
|
||||
ENDIF
|
||||
ld b, $13
|
||||
ldir
|
||||
ret
|
||||
|
||||
|
||||
IF vertical=1
|
||||
incbin bezel.rcs.zx7b
|
||||
finbez
|
||||
ENDIF
|
||||
|
||||
|
||||
; ------------------------
|
||||
; Load flash structures from $06000 to $9000
|
||||
; ------------------------
|
||||
loadch wreg flash_cs, 1
|
||||
ld de, config
|
||||
ld hl, $0060 ;old $0aa0
|
||||
ld a, $17
|
||||
|
||||
; ------------------------
|
||||
; Read from SPI flash
|
||||
; Parameters:
|
||||
; DE: destination address
|
||||
; HL: source address without last byte
|
||||
; A: number of pages (256 bytes) to read
|
||||
; ------------------------
|
||||
rdflsh ex af, af'
|
||||
xor a
|
||||
push hl
|
||||
wreg flash_cs, 0 ; activamos spi, enviando un 0
|
||||
wreg flash_spi, 3 ; envio flash_spi un 3, orden de lectura
|
||||
pop hl
|
||||
push hl
|
||||
out (c), h
|
||||
out (c), l
|
||||
out (c), a
|
||||
ex af, af'
|
||||
ex de, hl
|
||||
in f, (c)
|
||||
rdfls1 ld e, $20
|
||||
rdfls2 ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
ini
|
||||
inc b
|
||||
dec e
|
||||
jr nz, rdfls2
|
||||
dec a
|
||||
jr nz, rdfls1
|
||||
wreg flash_cs, 1
|
||||
pop hl
|
||||
ret
|
||||
|
||||
; -----------------------------------------------------------------------------
|
||||
; Print string routine
|
||||
; Parameters:
|
||||
; BC: X coord (B) and Y coord (C)
|
||||
; IX: null terminated string
|
||||
; -----------------------------------------------------------------------------
|
||||
IF vertical=0
|
||||
prnstr push bc
|
||||
call prnstr1
|
||||
pop bc
|
||||
inc c
|
||||
ret
|
||||
prnstr1 ld a, b
|
||||
and %11111100
|
||||
ld d, a
|
||||
xor b
|
||||
ld b, a
|
||||
ld e, a
|
||||
jr z, prnch1
|
||||
dec e
|
||||
prnch1 ld a, d
|
||||
rrca
|
||||
ld d, a
|
||||
rrca
|
||||
add a, d
|
||||
add a, e
|
||||
ld e, a
|
||||
ld a, c
|
||||
and %00011000
|
||||
or %01000000
|
||||
ld d, a
|
||||
ld a, c
|
||||
and %00000111
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
add a, e
|
||||
ld e, a
|
||||
rr b
|
||||
jr c, pos26
|
||||
jr nz, pos4
|
||||
pos0 ld a, (ix)
|
||||
inc ix
|
||||
add a, a
|
||||
ret z
|
||||
ld h, $b0 >> 2
|
||||
ld b, 8
|
||||
ld l, a
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
pos01 ld a, (hl)
|
||||
ld (de), a
|
||||
inc d
|
||||
inc l
|
||||
djnz pos01
|
||||
ld hl, $f800
|
||||
add hl, de
|
||||
ex de, hl
|
||||
pos2 ld a, (ix)
|
||||
inc ix
|
||||
add a, a
|
||||
ret z
|
||||
ld h, $bc >> 2
|
||||
ld bc, $04fc
|
||||
call doble
|
||||
pos4 ld a, (ix)
|
||||
inc ix
|
||||
add a, a
|
||||
ret z
|
||||
ld h, $b8 >> 2
|
||||
ld bc, $04f0
|
||||
call doble
|
||||
pos6 ld a, (ix)
|
||||
inc ix
|
||||
add a, a
|
||||
ret z
|
||||
ld h, $b4 >> 2
|
||||
ld b, 8
|
||||
ld l, a
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
pos61 ld a, (de)
|
||||
xor (hl)
|
||||
ld (de), a
|
||||
inc d
|
||||
inc l
|
||||
djnz pos61
|
||||
ld hl, $f801
|
||||
add hl, de
|
||||
ex de, hl
|
||||
jr pos0
|
||||
pos26 rr b
|
||||
jr c, pos6
|
||||
jr pos2
|
||||
|
||||
doble ld l, a
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
doble2 ld a, (de)
|
||||
xor (hl)
|
||||
and c
|
||||
xor (hl)
|
||||
ld (de), a
|
||||
inc e
|
||||
ld a, (hl)
|
||||
and c
|
||||
ld (de), a
|
||||
inc d
|
||||
inc l
|
||||
ld a, (hl)
|
||||
and c
|
||||
ld (de), a
|
||||
dec e
|
||||
ld a, (de)
|
||||
xor (hl)
|
||||
and c
|
||||
xor (hl)
|
||||
ld (de), a
|
||||
inc d
|
||||
inc l
|
||||
djnz doble2
|
||||
ld hl, $f801
|
||||
add hl, de
|
||||
ex de, hl
|
||||
ret
|
||||
ELSE
|
||||
prnstr push bc
|
||||
call prnstr1
|
||||
pop bc
|
||||
inc c
|
||||
ret
|
||||
prnstr1 ld a, b
|
||||
add a, b
|
||||
add a, b
|
||||
add a, a
|
||||
cpl
|
||||
add a, 192
|
||||
ld e, a
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
and %00011000
|
||||
xor e
|
||||
and %11111000
|
||||
xor e
|
||||
or %01000000
|
||||
ld d, a
|
||||
ld a, e
|
||||
rlca
|
||||
rlca
|
||||
and %11100000
|
||||
add a, c
|
||||
ld e, a
|
||||
prnstr2 ld a, (ix)
|
||||
inc ix
|
||||
add a, a
|
||||
ret z
|
||||
ld h, $b0 >> 2
|
||||
ld b, 6
|
||||
ld l, a
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
prnstr3 ld a, (hl)
|
||||
ld (de), a
|
||||
ld a, d
|
||||
and $07
|
||||
jr nz, prnstr4
|
||||
ld a, e
|
||||
sub $20
|
||||
ld e, a
|
||||
jr c, prnstr4
|
||||
ld a, d
|
||||
add a, $08
|
||||
ld d, a
|
||||
prnstr4 dec d
|
||||
inc l
|
||||
djnz prnstr3
|
||||
jr prnstr2
|
||||
ENDIF
|
||||
|
||||
|
||||
; -----------------------------------------------------------------------------
|
||||
; 6x8 character set (128 characters x 1 rotation)
|
||||
; -----------------------------------------------------------------------------
|
||||
chrstr
|
||||
IF vertical=0
|
||||
incbin fuente6x8.bin
|
||||
ELSE
|
||||
incbin fuente8x6.bin
|
||||
ENDIF
|
||||
chrend
|
||||
|
||||
cad62 defb 'ZX Spectrum', 0
|
||||
|
||||
IF 0
|
||||
block $3000-$
|
||||
bnames defb 'Sam Coupe '
|
||||
defb 'Jupiter ACE '
|
||||
defb 'Master System '
|
||||
defb 'Atari 800 XL '
|
||||
defb 'BBC Micro '
|
||||
defb 'VIC-20 '
|
||||
defb 'Acorn Electron '
|
||||
defb 'Oric Atmos '
|
||||
defb 'Apple 2 (VGA) '
|
||||
ENDIF
|
||||
block $4000-$
|
||||
Binary file not shown.
Loading…
Reference in New Issue