mirror of
https://github.com/Tolik-Trek/Crazy-Blaster.git
synced 2026-06-15 01:21:36 +03:00
...
This commit is contained in:
parent
ace6b0904b
commit
9f19a04da6
115
Crazy BIOS/Info.txt
Normal file
115
Crazy BIOS/Info.txt
Normal file
@ -0,0 +1,115 @@
|
||||
; § ¬ ¯«¥ ç¥à¥§ ª àâã ¯®à⮢ #7C/#3C ¨ #74/#24
|
||||
CNF_PORT:
|
||||
.ON EQU #74
|
||||
.OFF EQU #24
|
||||
; Data:
|
||||
.TURBO.ON EQU 3 ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||||
.TURBO.OFF EQU 2 ; ¤ ë¥ ¤«ï ¢ëª«î票ï TURBO
|
||||
.CNF_0 EQU #04 ; ª àâ ¯®à⮢ 0
|
||||
.CNF_1 EQU #0C ; ª àâ ¯®à⮢ 1 (¤«ï ०¨¬ ¯®ç⨠ç¨á⮣® zx spectrum)
|
||||
.CNF_2 EQU #14 ; ª àâ ¯®à⮢ 2
|
||||
.CNF_3 EQU #1C ; ª àâ ¯®à⮢ 3 (०¨¬ ¤®áâ㯠ª ¯®àâ ¬ ‚ƒ93 ¡¥§ ᨣ « TR-DOS)
|
||||
.PENT_RESET EQU #20
|
||||
.SCORP_RESET EQU #40
|
||||
.CNF_512 EQU #80 ; ¢ª«î票¥ Pentagon 128
|
||||
.ZX_BIOS EQU #00
|
||||
.ZX_EXTENSION EQU #01
|
||||
; ¯à¨¡¨â ¢ ª®ä¥ £¢®§¤ï¬¨ #7C/#3C
|
||||
SYS_PORT:
|
||||
.ON EQU #7C
|
||||
.OFF EQU #3C
|
||||
.RAM EQU .OFF
|
||||
.ROM EQU .ON
|
||||
; Data:
|
||||
.PAGE0 EQU 1
|
||||
.PAGE8 EQU 0
|
||||
.EXTENSION EQU .PAGE0
|
||||
.BIOS EQU .PAGE8
|
||||
.TURBO.ON EQU CNF_PORT.TURBO.ON
|
||||
.TURBO.OFF EQU CNF_PORT.TURBO.OFF
|
||||
.CNF_0 EQU CNF_PORT.CNF_0
|
||||
.CNF_1 EQU CNF_PORT.CNF_1
|
||||
.CNF_2 EQU CNF_PORT.CNF_2
|
||||
.CNF_3 EQU CNF_PORT.CNF_3
|
||||
.PENT_RESET EQU CNF_PORT.PENT_RESET
|
||||
.SCORP_RESET EQU CNF_PORT.SCORP_RESET
|
||||
.CNF_512 EQU CNF_PORT.CNF_512
|
||||
/*
|
||||
---------------------------------------------------
|
||||
CNF_PORT ¢¨á¨â 4 ¢¥è¨å ¯®àâ å (#7C/#3C ¨ #74/#24) ç¥à¥§ ª àâã ¯®à⮢.
|
||||
SYS_PORT £¢®§¤ï¬¨ ¢ ª®ä¥ #7C/#C
|
||||
|
||||
SYS_PORT ⮫쪮 ¯¥à¥ª«îç ¥â RAM/ROM
|
||||
CNF_PORT ¬¥ï¥â ¢áñ ®á⠫쮥, ¯à¨ ¡¨â1=0 ¬¥ïîâáï áâà ¨æë í¬ã«ïâ®à <20>‡“ ç¥à¥§ ¡¨â0
|
||||
|
||||
CNF_PORT
|
||||
bit0 - TURBO: off/on ¨«¨ vROM:
|
||||
; #24 - áâà ¨æ ¨§ ¢.¯®àâ (#E0..#E3)/(#E4..#E7)
|
||||
; #74 - áâà ¨æ ¨§ ¢.¯®àâ #EB/#EF
|
||||
bit1 - 1 - TURBO ena, 0 - ¯¥à¥ª«î票¥ vROM page
|
||||
bit2 - 1 - CNF ena
|
||||
bit3 - \_ cnf0..cnf3 -\
|
||||
bit4 - / - \
|
||||
bit5 - CNF_PN[5..0]_RESET by 1 - á¡à®á <20>¥â. ¯®àâ - -|---> ¤¥©áâ¢ãîâ ⮫쪮 ¯à¨ bit2=1
|
||||
bit6 - CNF_SC_RESET by 1 - á¡à®á ‘ª®à¯. ¯®àâ - /
|
||||
bit7 - CNF_PN[7..6]_RESET by 0 - á¡à®á <20>¥â-512 -/
|
||||
|
||||
<20>¥à¥ª«î票¥ áâà ¨æ vROM:
|
||||
____________________________________________________
|
||||
| ‡ 票¥ | ‡ ¯¨áì ¢® ¢¥è¨© ¯®àâ: |
|
||||
| ¨§ ¢ãâà. |____________________________________|
|
||||
| ¯®àâ | #24 ---- | | | |
|
||||
| €«ìâ¥àë | #3C (-rom) | | | |
|
||||
| ||| | #7C (+rom) | #74 | 1FFD | 7FFD |
|
||||
| \|/ | bit1..0 | bit1..0 | bit1 | bit4 |
|
||||
|_____________|____________|_________|______|______|
|
||||
|E0 | 00 | | 1 | ... |
|
||||
|E1 (+dos_on) | 00 | | 0 | ... |
|
||||
|E2 | 00 | | 0 | 0 |
|
||||
|E3 | 00 | | 0 | 1 |
|
||||
|E4 | 01 | | 1 | ... |
|
||||
|E5 (+dos_on) | 01 | | 0 | ... |
|
||||
|E6 | 01 | | 0 | 0 |
|
||||
|E7 | 01 | | 0 | 1 |
|
||||
|EB | | 00 | ... | ... | BIOS
|
||||
|EF | | 01 | ... | ... | EXTENSION
|
||||
|_____________|____________|_________|______|______|
|
||||
... - § 票¥ ஫¨ ¥ ¨£à ¥â
|
||||
|
||||
‘â ¤ àâë¥ áâà ¨æë އ“ ¤«ï ®¡à §®¢ <20>‡“ ᯥªâà㬠:
|
||||
Page Name Int.Port Page Name Int.Port
|
||||
#42 BASIC 128 #E2 | ??? ??? ??? ??? #E6
|
||||
#43 BASIC 48 #E3 | ??? ??? ??? ??? #E7
|
||||
#44 TR-DOS #E1 | ??? ??? ??? ??? #E5
|
||||
#45 BIOS (ZX_EXP) #E0 | ??? ??? ??? ??? #E4
|
||||
#46 BIOS (ZX_EXP) #EB
|
||||
#47 BIOS (ZX_EXP2) #EF
|
||||
|
||||
SYS_PORT:
|
||||
bit0 - TURBO: on/off ¨«¨ BIOS: Part1/Part0
|
||||
bit1 - 1 - TURBO ena, 0 - ¯¥à¥ª«î票¥ BIOS-PAGE
|
||||
bit2 - 1 - CNF ena
|
||||
bit3 - \_ cnf0..cnf3 -\
|
||||
bit4 - / - \
|
||||
bit5 - CNF_PN[5..0]_RESET by 1 - á¡à®á <20>¥â. ¯®àâ - -|---> ¤¥©áâ¢ãîâ ⮫쪮 ¯à¨ bit2=1
|
||||
bit6 - CNF_SC_RESET by 1 - á¡à®á ‘ª®à¯. ¯®àâ - /
|
||||
bit7 - CNF_PN[7..6]_RESET by 0 - á¡à®á <20>¥â-512 -/
|
||||
|
||||
”ãªæ¨ï bit0 ®¯à¥¤¥«ï¥âáï ç¥à¥§ bit1
|
||||
bit7..bit3 áà ¡ âë¢ î⠯ਠbit2 = 1
|
||||
|
||||
‡ ¯¨áì ¢ ¯®àâ #7C ¯®¤ª«îç ¥â <20>‡“ ¢ ®ª® 0, § ¯¨áì ¢ ¯®àâ #3C ®âª«îç ¥â
|
||||
<EFBFBD>‡“ ®â ®ª 0, ¯®í⮬㠯®àâ 7‘/3C §ë¢ ¥âáï System/User.
|
||||
<EFBFBD>¥à¥ª«î票¥ áâà ¨æ <20>‡“ à ¡®â ¥â ¢ í⮬ ¢ ਠ⥠⠪:
|
||||
¢ <20>‡“ 16 áâà ¨æ ®â 0 ¤® 15, ¯®àâ #5C ¨å ¯¥à¥ª«îç ¥â á bit3 xor /SYS (SYS_PORT bit[1..0] = b"0X" (BIOS: Part1/Part0))
|
||||
¥á«¨ ᤥ« âì ld a,1 : out (sys_port_on),a - â® ã¬¥à æ¨ï áâà ¨æ <20>‡“ ¡ã¤¥â ¯à ¢¨«ì ï ®â 0 ¤® 15,
|
||||
¥á«¨ ᤥ« âì ld a,0 : out (sys_port_on),a - â® ã¬¥à æ¨ï áâà ¨æ <20>‡“ ¡ã¤¥â á ¨¢¥àâ¨à®¢ ë¬ bit3:
|
||||
áâà ¨æë <20>‡“ 0-7 ¡ã¤ãâ 㬥஢ âìáï ª ª 8-15
|
||||
áâà ¨æë <20>‡“ 8-15 ¡ã¤ãâ 㬥஢ âìáï ª ª 0-7
|
||||
¯¥à¥ª«î票¥ áâà ¨æ <20>‡“ ¯®à⮬ #5C ¯à®¨á室¨â ⮫쪮 ¯à¨ ¢®âªã⮩ <20>‡“ ç¥à¥§ sys_port.
|
||||
Œ®¦® ¯¥à¥ª«îç âì áâà ¨æë ç¥à¥§ ¢ãâ२© ¯®àâ #8F, ⮣¤ bit4 í⮣® ¯®àâ ¢ª«îç ¥â ᨣ « § ¯¨á¨ ¤«ï <20>‡“.
|
||||
’ ª ¦¥ íâ®â ¯®àâ ¤ ñâ ¯àï¬ãî ã¬¥à æ¨î áâà ¨æ ¯à¨ ãáâ ®¢«¥®¬ bit4.
|
||||
----------------------------------------------------
|
||||
|
||||
|
||||
ROM.SLOT0
|
||||
@ -625,7 +625,7 @@ SET_PORTS:
|
||||
OUT (C),A
|
||||
LD A,(SYS_PAGE.CONFIG_DE-#4000)
|
||||
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (CNF_PORT.ROM),A
|
||||
;
|
||||
CALL DOS_OFF
|
||||
;
|
||||
@ -648,7 +648,7 @@ SET_PORTS:
|
||||
CALL DOS_ON
|
||||
;
|
||||
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (CNF_PORT.ROM),A
|
||||
;
|
||||
LD C,SLOT2 ; ¯®«ãç¨âì áâà ¨æã
|
||||
IN D,(C)
|
||||
|
||||
@ -35,7 +35,7 @@ BOARD_INFO:
|
||||
EXP_FNS_2_RET:
|
||||
PUSH AF
|
||||
LD A,ROM.BIOS
|
||||
OUT (SYS_PORT.RAM),A
|
||||
OUT (CNF_PORT.ON),A
|
||||
POP AF
|
||||
JR RST_18_1
|
||||
;=======================================
|
||||
@ -979,7 +979,7 @@ PrepareToZX: ; Setup HDD drives for ZX Spectrum mode
|
||||
PORTS_INIT:
|
||||
; ¢ª«îç¨âì TURBO
|
||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (CNF_PORT.ON),A
|
||||
; ; RESET to ISA
|
||||
; LD BC,PORT_ISA
|
||||
; LD A,#FF
|
||||
@ -1081,7 +1081,7 @@ PORTS_INIT:
|
||||
; ‘¡à®á ª®â஫«¥à ¤¨áª®¢®¤
|
||||
; ‚ª«îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª (âà¥âìï ª®ä )
|
||||
LD A,CNF_PORT.CNF_3 + ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (CNF_PORT.ON),A
|
||||
OUT (FDC_93.DrvCTRL),A
|
||||
push hl
|
||||
pop hl
|
||||
|
||||
@ -594,14 +594,14 @@ WR_SEC: LD D,5 ;RETRY COUNT
|
||||
SET_DOS_ON:
|
||||
EX AF,AF'
|
||||
LD A,CNF_PORT.CNF_3 + ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A ; - OPEN
|
||||
OUT (CNF_PORT.ROM),A ; - OPEN
|
||||
EX AF,AF'
|
||||
RET
|
||||
; ‚àã¡ ¥â ã«¥¢ãî ª àâã ¯®à⮢
|
||||
SET_DOS_OFF:
|
||||
EX AF,AF'
|
||||
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A ; - CLOSE
|
||||
OUT (CNF_PORT.ROM),A ; - CLOSE
|
||||
EX AF,AF'
|
||||
RET
|
||||
|
||||
|
||||
@ -802,7 +802,7 @@ ROM_DISK:
|
||||
LD B,A
|
||||
XOR A
|
||||
OUT (ROM.SLOT0),A
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (CNF_PORT.ON),A
|
||||
LD A,B
|
||||
JP .readNext
|
||||
.stackDepth EQU 8 ; à ááâ®ï¨¥ ®â ª®æ ¯à®æ¥¤ãàë ¤® ¢¥àè¨ë á⥪ .
|
||||
|
||||
@ -141,7 +141,7 @@ RST_CONF:
|
||||
DI
|
||||
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||
LD A,CNF_PORT.CNF_0
|
||||
OUT (SYS_PORT.ON),A
|
||||
OUT (CNF_PORT.ON),A
|
||||
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
||||
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||
PUSH AF
|
||||
@ -223,7 +223,7 @@ RST_CONF:
|
||||
DI
|
||||
; ãáâ ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢
|
||||
LD A,CNF_PORT.CNF_0
|
||||
OUT (SYS_PORT.ON),A
|
||||
OUT (CNF_PORT.ON),A
|
||||
; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â
|
||||
IN A,(SLOT3) ; á®åà 塞 ®¬¥à ¢®âªã⮩ áâà ¨æë
|
||||
PUSH AF
|
||||
|
||||
@ -349,7 +349,7 @@ FN_TURBO:
|
||||
LD (SYS_PAGE.CONFIG_DE),A
|
||||
AND 3
|
||||
;
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (CNF_PORT.ROM),A
|
||||
LD A,B
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,41 +0,0 @@
|
||||
Sprites:
|
||||
; <20> ¢å®¤¥ ¢ IX ¤à¥á â ¡«¨æë á ¢ë¢®¤¨¬ë¬¨ á¯à ©â ¬¨
|
||||
IN A,(SLOT1)
|
||||
LD H,A
|
||||
IN A,(PORT_Y)
|
||||
LD L,A
|
||||
PUSH HL
|
||||
|
||||
LD A,#58
|
||||
OUT (SLOT1),A
|
||||
|
||||
; ld ix,SP_Table
|
||||
ld b,(ix+0)
|
||||
inc ix
|
||||
.loop:
|
||||
push bc
|
||||
LD A,(ix+str_EasterSprites.SpHeight) ; !!!!! ª®®à¤¨ â ª à⨪¨ ¯® Y + ¢ëá®â ª à⨪¨
|
||||
ld l,(ix+str_EasterSprites.SpAddress)
|
||||
ld h,(ix+str_EasterSprites.SpAddress+1)
|
||||
.putSprite:
|
||||
DEC A
|
||||
OUT (PORT_Y),A
|
||||
LD E,(ix+str_EasterSprites.SpXCoord) ; !HARDCODE ª®®à¤¨ â ª à⨪¨ ¯® •
|
||||
LD D,(ix+str_EasterSprites.SpXCoord+1)
|
||||
LD C,(ix+str_EasterSprites.SpWidth) ; !HARDCODE ¤«¨ £®à¨§®â «ì®© «¨¨¨ ª à⨪¨
|
||||
LD B,(ix+str_EasterSprites.SpWidth+1)
|
||||
LDIR
|
||||
CP (IX+str_EasterSprites.SpYCoord)
|
||||
JP NZ,.putSprite
|
||||
ld c,str_EasterSprites
|
||||
add ix,bc
|
||||
pop bc
|
||||
djnz .loop
|
||||
|
||||
POP BC
|
||||
LD A,B
|
||||
OUT (SLOT1),A
|
||||
LD A,C
|
||||
OUT (PORT_Y),A
|
||||
XOR A
|
||||
RET
|
||||
@ -1,157 +0,0 @@
|
||||
;------------------------------------------------------------------------------
|
||||
;hl=src de=dst
|
||||
lz4decrunch:
|
||||
ld bc,7
|
||||
add hl,bc
|
||||
ld c,(hl)
|
||||
inc hl
|
||||
ld b,(hl) ;„q„u„‚„v„} „t„r„p „q„p„z„„„p „y„x „x„p„s„€„|„€„r„{„p - „‚„p„x„}„u„‚
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl ;„~„p„‰„p„|„€ „ƒ„w„p„„„<E2809E>„‡ „t„p„~„~„<>„‡ „ƒ„€ „ƒ„}„u„‹„u„~„y„‘ #0B
|
||||
|
||||
ld a,l
|
||||
add a,c
|
||||
ld (.endL+1),a
|
||||
ld a,h
|
||||
adc a,b
|
||||
ld (.endH+1),a ;„K„€„~„u„‰„~„<>„z „p„t„‚„u„ƒ „ƒ„w„p„„„<E2809E>„‡ „t„p„~„~„<>„‡
|
||||
|
||||
.loop:
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld (.litteral+1),a
|
||||
and #F0
|
||||
jr z,.copy ;„E„ƒ„|„y „t„|„y„~„p „‚„p„r„~„p 0, „ƒ„{„€„<E282AC>„y„‚„€„r„p„„„Ž „…„w„u „<>„u„‚„u„t„p„~„~„<>„u „t„p„~„~„<>„u
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
ld b,0
|
||||
ld c,a
|
||||
cp #0F
|
||||
call z,.getlength ;„E„ƒ„|„y „t„|„y„~„p #0F, „„„€ „<>„€„|„…„‰„y„„„Ž „t„€„<E282AC>„€„|„~„y„„„u„|„Ž„~„…„<E280A6> „t„|„y„~„…
|
||||
|
||||
ldir ;„P„u„‚„u„t„p„‰„p „~„p„‰„y„~„p„u„„„ƒ„‘ „ƒ„€ „ƒ„|„u„t„…„<E280A6>„‹„u„z „y„~„†„€„‚„}„p„ˆ„y„y „€ „t„|„y„~„u
|
||||
|
||||
.copy:
|
||||
ld a,l ;„t„€„ƒ„„„y„s„|„y „|„y „ƒ„w„p„„„<E2809E>„u „t„p„~„~„<>„u „{„€„~„u„‰„~„€„s„€ „p„t„‚„u„ƒ„p
|
||||
.endL:
|
||||
sub #FF
|
||||
ld a,h
|
||||
.endH:
|
||||
sbc a,#FF
|
||||
ret nc ;„^„†„†„u„{„„„y„r„~„p„‘ „<>„‚„€„r„u„‚„{„p zf=1
|
||||
|
||||
ld c,(hl)
|
||||
inc hl
|
||||
ld b,(hl) ;bc=2byte „X„„„u„~„y„u „x„~„p„‰„u„~„y„‘ „ƒ„}„u„‹„u„~„y„‘
|
||||
inc hl
|
||||
|
||||
.litteral:
|
||||
ld a,0 ;litteral „<>„u„‚„u„<75>„y„ƒ„p„„„Ž „x„t„u„ƒ„Ž
|
||||
and #0F
|
||||
add a,#04 ;cf=0
|
||||
|
||||
push hl
|
||||
ld h,d
|
||||
ld l,e
|
||||
sbc hl,bc ;hl=de-bc „I„ƒ„<C692>„€„|„Ž„x„…„z„„„u „t„p„~„~„<>„u, „{„€„„„€„‚„<E2809A>„u „…„w„u „q„<71>„|„y „‚„p„ƒ„Š„y„‚„u„~„<>, „r „{„p„‰„u„ƒ„„„r„u „y„ƒ„„„€„‰„~„y„{„p „<>„u„‚„u„t„p„‰„y
|
||||
|
||||
ld b,0
|
||||
ld c,a
|
||||
cp #0F+#04
|
||||
ex (sp),hl
|
||||
call z,.getlength
|
||||
ex (sp),hl
|
||||
|
||||
ldir ;„K„€„<E282AC>„y„‚„€„r„p„„„Ž „<>„u„‚„u„~„€„ƒ „…„w„u „‚„p„x„r„u„‚„~„…„„„<E2809E>„‡ „t„p„~„~„<>„‡
|
||||
pop hl
|
||||
jp .loop
|
||||
|
||||
.getlength: ;„P„€„|„…„‰„y„„„Ž „t„|„y„~„… „q„p„z„„„p „<>„u„‚„u„r„€„t„p („q„€„|„ބЄu) bc=„„„u„{„…„‹„p„‘ „ƒ„…„}„}„p „<>„u„‚„u„r„€„t„p
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
cp #FF ;#FF „…„t„r„p„y„r„p„u„„„ƒ„‘ „{„p„{ „x„~„p„{, „x„p „{„€„„„€„‚„<E2809A>„} „ƒ„|„u„t„…„u„„ „y„~„†„€„‚„}„p„ˆ„y„‘ „€ „t„|„y„~„u
|
||||
jr nz,.addlen
|
||||
inc b
|
||||
dec bc ;bc += 255
|
||||
jr .getlength
|
||||
.addlen:
|
||||
add a,c
|
||||
ld c,a
|
||||
adc a,b
|
||||
sub c
|
||||
ld b,a ;bc=„t„|„y„~„p „<>„u„‚„u„t„p„r„p„u„}„€„s„€ „q„p„z„„„p
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
;in: hl=„~„p„‰„p„|„Ž„~„<>„z „p„t„‚„u„ƒ bc=„t„|„y„~„p
|
||||
;out: bcde=„‚„u„x„…„|„Ž„„„p„„
|
||||
crc32:
|
||||
push hl
|
||||
push bc
|
||||
|
||||
ld de,#FFFF ; 0xFFFFFFFF ? „~„p„‰„p„|„Ž„~„€„u „x„~„p„‰„u„~„y„u CRC32, „y„ƒ„<C692>„€„|„Ž„x„…„u„}„€„s„€ „r ZIP
|
||||
ld h,d
|
||||
ld l,e
|
||||
ld c,#20 ;„ƒ„€„{„‚„p„‹„u„~„y„u
|
||||
|
||||
exx
|
||||
pop hl
|
||||
dec hl
|
||||
inc h
|
||||
inc l
|
||||
ld b,l
|
||||
ld c,h
|
||||
pop hl
|
||||
.loop1:
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
exx
|
||||
|
||||
xor e
|
||||
ld b,8
|
||||
.loop2:
|
||||
srl h
|
||||
rr l
|
||||
rr d
|
||||
rra
|
||||
jp nc,.skip
|
||||
ld e,a
|
||||
ld a,h
|
||||
xor #ED
|
||||
ld h,a
|
||||
ld a,l
|
||||
xor #B8
|
||||
ld l,a
|
||||
ld a,d
|
||||
xor #83
|
||||
ld d,a
|
||||
ld a,e
|
||||
; xor #20
|
||||
xor c
|
||||
.skip:
|
||||
djnz .loop2
|
||||
ld e,a
|
||||
|
||||
exx
|
||||
djnz .loop1
|
||||
dec c
|
||||
jp nz,.loop1
|
||||
exx
|
||||
|
||||
ld a,h ;CRC32, „y„ƒ„<C692>„€„|„Ž„x„…„u„}„<>„z „r ZIP, „<>„‚„y„~„y„}„p„u„„ xor „ƒ 0xFFFFFFFF „r „{„€„~„ˆ„u
|
||||
cpl
|
||||
ld b,a
|
||||
ld a,l
|
||||
cpl
|
||||
ld c,a
|
||||
|
||||
ld a,d
|
||||
cpl
|
||||
ld d,a
|
||||
ld a,e
|
||||
cpl
|
||||
ld e,a
|
||||
ret
|
||||
@ -1,89 +0,0 @@
|
||||
CALL #E1D2
|
||||
DI
|
||||
LD (RelocatedCode.SPsave),SP
|
||||
LD HL,.START
|
||||
LD DE,#D800
|
||||
LD BC,.END-.START
|
||||
PUSH DE
|
||||
LDIR
|
||||
|
||||
LD HL,#E1D1
|
||||
LD DE,#FFFF
|
||||
LD BC,#0850
|
||||
RET
|
||||
|
||||
RelocatedCode:
|
||||
.START:
|
||||
LDDR
|
||||
LD HL,#F7B0
|
||||
LD DE,#D900
|
||||
LD B,#00
|
||||
LD A,(HL)
|
||||
BIT 7,A
|
||||
JR NZ,#D94A
|
||||
AND #0F
|
||||
LD B,A
|
||||
RLD
|
||||
ADD A,#03
|
||||
LD C,A
|
||||
INC HL
|
||||
LD A,E
|
||||
SUB (HL)
|
||||
INC HL
|
||||
LD SP,HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
LD A,D
|
||||
SBC A,B
|
||||
LD B,H
|
||||
LD H,A
|
||||
LD A,B
|
||||
LD B,#00
|
||||
LDIR
|
||||
LD H,B
|
||||
LD L,C
|
||||
ADD HL,SP
|
||||
JR #D929
|
||||
AND #7F
|
||||
JR Z,#D967
|
||||
INC HL
|
||||
BIT 6,A
|
||||
JR NZ,#D958
|
||||
LD C,A
|
||||
LDIR
|
||||
JR #D928
|
||||
AND #3F
|
||||
ADD A,#03
|
||||
LD B,A
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
LD (DE),A
|
||||
INC DE
|
||||
DJNZ #D960
|
||||
LD A,C
|
||||
JR #D929
|
||||
LD SP,#D85B
|
||||
LD B,#03
|
||||
POP HL
|
||||
DEC SP
|
||||
POP AF
|
||||
LD (HL),A
|
||||
DJNZ #D96C
|
||||
.SPsave+1: LD SP,#0000
|
||||
DI
|
||||
RET
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
.END EQU $
|
||||
; Š à⨪ áâ à⮢®¬ íªà ¥ á«¥¢ ᢥàåã
|
||||
INCBIN 'SP_LOGO.BIN'
|
||||
693
Crazy/ACEX_RAM.ASM
Normal file
693
Crazy/ACEX_RAM.ASM
Normal file
@ -0,0 +1,693 @@
|
||||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï á¨á⥬ëå ¯®à⮢ Z84C15 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
DI
|
||||
LD BC,#FF*256 + Z84.SYS.Control
|
||||
XOR A ; Z84.REG.WaitState_Ctrl
|
||||
OUT (C),A ; Z84.SYS.Control
|
||||
INC C ; Z84.REG.WaitState_MemBound
|
||||
OUT (C),A ; Z84.SYS.Data ; set 0 Waits
|
||||
;
|
||||
DEC C
|
||||
LD A,3 ; Z84.REG.Misc_Ctrl
|
||||
OUT (C),A ; Z84.SYS.Control
|
||||
INC C
|
||||
; boundary set!
|
||||
LD A,1 ; enable CS0, disable CS1
|
||||
OUT (C),A ; Z84.SYS.Data
|
||||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD HL,INIT_SLOTS
|
||||
DCP_INIT: LD C,XL
|
||||
LD B,XH
|
||||
LD E,YL
|
||||
LD D,YH
|
||||
EXX
|
||||
;
|
||||
LD HL,#C000
|
||||
LD DE,#C001
|
||||
LD BC,#3FFF
|
||||
LD (HL),L
|
||||
LDIR
|
||||
;
|
||||
LD IY,DCP_DATA
|
||||
LD IX,.ret
|
||||
;
|
||||
.loop: LD L,(IY)
|
||||
LD H,(IY+1)
|
||||
LD E,(IY+2)
|
||||
LD D,(IY+3)
|
||||
LD B,(IY+4)
|
||||
JP .PARSE_TABLE
|
||||
;
|
||||
.ret: LD BC,5
|
||||
ADD IY,BC
|
||||
LD A,(IY+2)
|
||||
OR (IY+3)
|
||||
JR NZ,.loop
|
||||
;
|
||||
EXX
|
||||
LD XL,C
|
||||
LD XH,B
|
||||
LD YL,E
|
||||
LD YH,D
|
||||
; First IN command - OPEN DCP
|
||||
IN A,(SLOT3)
|
||||
JP (HL)
|
||||
;
|
||||
.PARSE_TABLE: LD A,L
|
||||
AND E
|
||||
LD L,A
|
||||
;
|
||||
LD A,H
|
||||
AND D
|
||||
OR #C0
|
||||
LD H,A
|
||||
;
|
||||
LD A,D
|
||||
OR #C0
|
||||
LD D,A
|
||||
;
|
||||
.loop_parse: LD (HL),B
|
||||
;
|
||||
LD A,L ; § ¬ ᪨஢ âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë 1-¬¨
|
||||
OR E ; ¤«ï ¯à®å®¦¤¥¨ï ¯¥à¥®á
|
||||
INC A ; 㢥«¨ç¨âì ¤à¥á
|
||||
JR Z,.carry ; ¢®§¨ª ¯¥à¥®á
|
||||
;
|
||||
OR E
|
||||
XOR E ; ®¡ã«¨âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë
|
||||
LD C,A ; ¨§¬¥ï¥¬ ï ç áâì
|
||||
;
|
||||
LD A,L
|
||||
AND E ; ¢ë¤¥«¨âì ¥¨§¬¥ï¥¬ãî
|
||||
OR C
|
||||
LD L,A ; ¤®¡ ¢¨âì ¨§¬¥ï¥¬ãî ç áâì
|
||||
;
|
||||
JR .loop_parse ; 横«
|
||||
; A = 0
|
||||
.carry: LD A,L ; § ¡¨âì ¨§¬¥ï¥¬ë¥ ¡¨âë ã«ï¬¨
|
||||
AND E
|
||||
LD L,A
|
||||
;
|
||||
LD A,H ; § ¬ ᪨஢ âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë 1-¬¨
|
||||
OR D ; ¤«ï ¯à®å®¦¤¥¨ï ¯¥à¥®á
|
||||
INC A ; 㢥«¨ç¨âì ¤à¥á
|
||||
JR Z,.return
|
||||
;
|
||||
OR D
|
||||
XOR D
|
||||
LD C,A ; ¨§¬¥ï¥¬ ï ç áâì
|
||||
;
|
||||
LD A,H
|
||||
AND D ; ¢ë¤¥«¨âì ¥¨§¬¥ï¥¬ãî
|
||||
OR C
|
||||
LD H,A ; ¤®¡ ¢¨âì ¨§¬¥ï¥¬ãî ç áâì
|
||||
JR .loop_parse
|
||||
.return: JP (IX)
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
INIT_SLOTS: XOR A
|
||||
OUT (SLOT0),A
|
||||
OUT (SLOT1),A
|
||||
DEC A
|
||||
OUT (SLOT2),A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||
OUT (SYS_PORT.ROM),A
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï á⥪ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD SP,#4000
|
||||
;ÛÛÛÛÛÛÛ <20>¥à¥¡à®á ®á⠢襣®áï ª®¤ ¢ RAM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD HL,0
|
||||
LD DE,#4000
|
||||
LD BC,END_CB
|
||||
LDIR
|
||||
XOR A
|
||||
OUT (FastRAM.SLOT0),A
|
||||
OUT (SYS_PORT.RAM),A
|
||||
INC A
|
||||
OUT (SLOT1),A
|
||||
IN A,(FastRAM.OFF)
|
||||
; ’“’ Œ› “†… ‚ އ“ ‚ ’ŽŒ †… ŠŽ„… ˆ €„<E282AC>…‘…
|
||||
; áâà ¨æë 0,1,2,#FE
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛ <20> ¡®ç¨© ª®¤ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
; ¤à¥á ¯à®æ¥¤ãàë ®è¨¡ª¨
|
||||
LD HL,ERROR
|
||||
PUSH HL
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï HDD ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
CALL HDD_INIT
|
||||
RET C
|
||||
;ÛÛÛÛÛÛ “áâ ®¢ª áâà ¨æ ¤«ï § £à㧪¨ ¤ ëå ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
CALL Init_Mem
|
||||
;ÛÛÛÛÛÛ ‡ £à㧪 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
; ¤®¯®«¨â¥«ìë¥ äãªæ¨¨
|
||||
LOAD_FNs: LD A,(RESERVED_PAGES.SYS_FN) ; áâà ¨æ ¡ãä¥à , ¥á«¨ ¤à¥á ¢ ®ª¥ #C000 (BLOCK_ID)
|
||||
LD B,sys_fn_in_sectors ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
|
||||
LD HL,bufer_adr ; ¤à¥á ¡ãä¥à ¤ ëå
|
||||
LD IX,sec_high ; ¡á®«îâë© ®¬¥à ᥪâ®à áâ àè ï ç áâì
|
||||
LD DE,sec_low ; ¡á®«îâë© ®¬¥à ᥪâ®à ¬« ¤è ï ç áâì
|
||||
PUSH HL
|
||||
CALL FN_HDD_READ
|
||||
; Ž¡à § BIOS
|
||||
LOAD_DATA: LD B,4
|
||||
LD IY,RESERVED_PAGES.BIOS
|
||||
POP HL
|
||||
CALL .LOADER
|
||||
; Š à⨪ ¨ €¯¤¥©â¥à
|
||||
LD B,2
|
||||
CALL .LOADER
|
||||
JP BEGIN_CB_IMG
|
||||
.LOADER: ; § £à㧪 ¯® 128 ᥪâ®à®¢
|
||||
.loop: PUSH HL
|
||||
PUSH BC
|
||||
LD A,(IY)
|
||||
LD B,128
|
||||
LD DE,1
|
||||
CALL FN_HDD_READ_NEXT
|
||||
LD BC,4
|
||||
ADD IY,BC
|
||||
POP BC
|
||||
POP HL
|
||||
DJNZ .loop
|
||||
RET
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;°°°°°° <09>à®æ¥¤ãàë °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; FOR LBA ONLY - NEXT_READ
|
||||
; HL - bufer, A - page
|
||||
; B - numer of sectors
|
||||
; DE - add_par (next+DE) (d.b. 1 for NEXT)
|
||||
FN_HDD_READ_NEXT:
|
||||
AND A
|
||||
INC B
|
||||
DEC B
|
||||
RET Z ; ret if 0 sectors
|
||||
CALL HD_WAIT
|
||||
RET C
|
||||
CALL NEXT_ADD_SEC
|
||||
JR FN_HDD_READ.L1
|
||||
;
|
||||
; HL - BUFER, A - PAGE,
|
||||
FN_HDD_READ: AND A
|
||||
INC B
|
||||
DEC B
|
||||
RET Z
|
||||
CALL HD_WAIT
|
||||
CALL NC,HD_PREPARE
|
||||
RET C
|
||||
.L1: EXX
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
EXX
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
;
|
||||
LD BC,IDE.Write.Command
|
||||
LD A,IDE.ATA.ReadSectorsWithRetry
|
||||
OUT (C),A
|
||||
.L2: CALL WAIT_HDD
|
||||
AND IDE.ControlByte.DataRequest
|
||||
JR Z,.HD_RET
|
||||
;
|
||||
LD BC,IDE.Read.Data
|
||||
INIR
|
||||
INIR
|
||||
;
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,.L2
|
||||
;
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD H,high SYS_PAGE.RAMD_FAT ;!FIXIT ç¨â âì ¨§ â ¡«¨æë âãâ
|
||||
LD L,A
|
||||
LD A,(HL)
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD HL,#C000
|
||||
JR .L2
|
||||
;
|
||||
.HD_RET: EXX
|
||||
OUT (C),B
|
||||
EXX
|
||||
LD BC,IDE.Read.Error
|
||||
IN A,(C)
|
||||
AND A
|
||||
SCF
|
||||
RET NZ
|
||||
;
|
||||
EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
NEXT_ADD_SEC: PUSH AF
|
||||
;
|
||||
LD A,B
|
||||
LD BC,IDE.Write.Counter ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨
|
||||
OUT (C),A
|
||||
;
|
||||
DEC B
|
||||
INC C
|
||||
IN A,(C) ; IDE.Read.Sector
|
||||
ADC A,E
|
||||
INC B
|
||||
OUT (C),A ; IDE.Write.Sector
|
||||
;
|
||||
DEC B
|
||||
INC C
|
||||
IN A,(C) ; IDE.Read.CylinderLow
|
||||
ADC A,D
|
||||
INC B
|
||||
OUT (C),A ; IDE.Write.CylinderLow
|
||||
;
|
||||
DEC B
|
||||
INC C
|
||||
IN A,(C) ; IDE.Read.CylinderHigh
|
||||
ADC A,0
|
||||
INC B
|
||||
OUT (C),A ; IDE.Write.CylinderHigh
|
||||
;
|
||||
LD BC,IDE.Read.Control
|
||||
IN A,(C)
|
||||
LD D,A
|
||||
ADC A,0
|
||||
AND #0F
|
||||
LD E,A
|
||||
LD A,D
|
||||
AND #F0
|
||||
OR E
|
||||
INC B
|
||||
OUT (C),A ; IDE.Write.DeviceHead
|
||||
;
|
||||
POP AF
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
HD_PREPARE: PUSH AF
|
||||
PUSH HL
|
||||
; HD_CALC_SECS
|
||||
LD L,E
|
||||
LD E,D
|
||||
LD D,XL
|
||||
LD A,XH
|
||||
AND #0F ; LBA 28
|
||||
LD H,A
|
||||
;
|
||||
LD A,B
|
||||
LD BC,IDE.Write.Counter ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨
|
||||
OUT (C),A
|
||||
;
|
||||
INC C
|
||||
OUT (C),L
|
||||
INC C
|
||||
OUT (C),E
|
||||
INC C
|
||||
OUT (C),D
|
||||
;
|
||||
LD BC,IDE.Read.Control
|
||||
IN A,(C)
|
||||
AND #F0 ; !!!!! ¯®á¬®âà¥âì
|
||||
OR H
|
||||
INC B ; IDE.Write.DeviceHead
|
||||
OUT (C),A
|
||||
POP HL ; BUFER & PAGE
|
||||
POP AF
|
||||
AND A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
HDD_INIT: LD A,IDE.Chanel.Primary
|
||||
OUT (IDE.Chanel.Set),A
|
||||
CALL TEST_HDD_DRV
|
||||
SCF
|
||||
RET NZ
|
||||
;
|
||||
CALL WAIT_HDD
|
||||
LD BC,IDE.Write.Command
|
||||
LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
|
||||
OUT (C),A
|
||||
CALL WAIT_HDD
|
||||
AND IDE.ControlByte.DataRequest
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
LD BC,IDE.Read.Data
|
||||
LD HL,SYS_PAGE.HD_IDF_ADR
|
||||
INIR
|
||||
INIR
|
||||
; B = 0
|
||||
LD H,B
|
||||
LD L,B
|
||||
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||
LD C,A
|
||||
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
||||
.loop: ADD HL,BC
|
||||
DEC A
|
||||
JR NZ,.loop
|
||||
LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
|
||||
CALL WAIT_HDD
|
||||
LD BC,IDE.Read.Control
|
||||
IN A,(C)
|
||||
AND #10
|
||||
LD B,A
|
||||
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
|
||||
DEC A
|
||||
AND #0F
|
||||
OR IDE.Drive.Master
|
||||
OR B
|
||||
;
|
||||
LD H,A
|
||||
LD A,(SYS_PAGE.HD_IDF_ADR.LBA_CHS)
|
||||
AND %0000'0010
|
||||
SCF
|
||||
RET Z ; NO_LBA
|
||||
;
|
||||
SET 6,H
|
||||
LD BC,IDE.Write.DeviceHead
|
||||
OUT (C),H
|
||||
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||
.HDD_CONFIGURED:
|
||||
LD BC,IDE.Write.Counter
|
||||
OUT (C),A
|
||||
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
|
||||
HD_CMD_EXE: CALL HD_WAIT
|
||||
RET C
|
||||
LD BC,IDE.Write.Command
|
||||
OUT (C),A
|
||||
HD_WAIT: PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
LD DE,0
|
||||
.loop: LD BC,IDE.Read.Status
|
||||
IN A,(C)
|
||||
AND IDE.ControlByte.Busy
|
||||
JR Z,.EXIT
|
||||
DEC DE
|
||||
LD A,D
|
||||
OR E
|
||||
JR NZ,.loop
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
SCF
|
||||
RET ; error
|
||||
;
|
||||
.EXIT: POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
AND A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
WAIT_HDD: LD BC,IDE.Read.Status
|
||||
.loop: IN A,(C)
|
||||
BIT IDE.ControlBit.Busy,A
|
||||
JR NZ,.loop
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
Init_Mem: LD HL,SYS_PAGE.RAMD_FAT; ; €¤à¥á RAM FAT ¢ އ“.
|
||||
; ®¡ã«ï¥¬ â ¡«¨æã
|
||||
XOR A
|
||||
.loopFree: LD (HL),A
|
||||
INC L
|
||||
JR NZ,.loopFree
|
||||
; १¥à¢¨à㥬 ᯥæ.áâà ¨æë ¨ áâà ¨æë ZX
|
||||
LD B,RESERVED_PAGES.Blocks
|
||||
LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
||||
.loop: LD A,(DE)
|
||||
CP #FF
|
||||
JR Z,.exitLoop
|
||||
.loopBlk: INC DE
|
||||
LD L,A
|
||||
LD A,(DE)
|
||||
LD (HL),A
|
||||
CP #FF
|
||||
JR NZ,.loopBlk
|
||||
.exitLoop: INC DE
|
||||
DJNZ .loop
|
||||
LD L,A
|
||||
LD (HL),A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
TEST_HDD_DRV: ;LD HL,#01FE
|
||||
LD BC,IDE.Write.Counter
|
||||
OUT (C),L
|
||||
INC C
|
||||
OUT (C),H ; IDE.Write.Sector
|
||||
;
|
||||
DEC C
|
||||
DEC B
|
||||
IN A,(C) ; IDE.Read.Counter
|
||||
CP L
|
||||
RET NZ
|
||||
INC C
|
||||
IN A,(C) ; IDE.Read.Sector
|
||||
CP H
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
ERROR: ;°°°°°°° Œ¨£ ¨¥ « ¬¯®çª®© âãà¡ë °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
LD A,SYS_PORT.TURBO.OFF
|
||||
.big_loop: LD BC,0
|
||||
OUT (SYS_PORT.ROM),A
|
||||
.loop: DEC BC
|
||||
INC B
|
||||
DJNZ .loop
|
||||
XOR 1
|
||||
JR .big_loop
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
END_CB EQU $
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛ ’ ¡«¨æ DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
DCP_DATA: DW %00'000'0'0100'0000
|
||||
DW %11'000'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
DW %01'000'0'0100'0000
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
DW %10'000'0'0100'0000
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
DW %11'000'0'0100'0000
|
||||
DW %11'000'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
;
|
||||
DW %00'000'0'0100'0001
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_ERROR_1F1
|
||||
DW %00'010'0'0100'0001
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_ERROR_1F1
|
||||
DW %11'010'0'0100'0001
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_ERROR_1F1
|
||||
;
|
||||
DW %00'000'0'0100'0010
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_COUNTER_1F2
|
||||
DW %00'010'0'0100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_COUNTER_1F2
|
||||
DW %11'010'0'0100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_COUNTER_1F2
|
||||
;
|
||||
DW %00'000'0'0100'0011
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_SECTOR_1F3
|
||||
DW %00'010'0'0100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_SECTOR_1F3
|
||||
DW %11'010'0'0100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_SECTOR_1F3
|
||||
;
|
||||
DW %00'000'0'0100'0100
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_L_1F4
|
||||
DW %00'010'0'0100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_L_1F4
|
||||
DW %11'010'0'0100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_L_1F4
|
||||
;
|
||||
DW %00'000'0'0100'0101
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_H_1F5
|
||||
DW %00'010'0'0100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_H_1F5
|
||||
DW %11'010'0'0100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_H_1F5
|
||||
;
|
||||
DW %00'000'0'1100'0010
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_DEVICE_HEAD_1F6
|
||||
DW %00'010'0'1100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_DEVICE_HEAD_1F6
|
||||
DW %11'010'0'1100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_DEVICE_HEAD_1F6
|
||||
;
|
||||
DW %00'000'0'1100'0011
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_CMD_1F7
|
||||
DW %00'010'0'1100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_CMD_1F7
|
||||
DW %11'010'0'1100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_CMD_1F7
|
||||
;
|
||||
DW %00'000'0'1100'0100
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_CONTROL_3F6
|
||||
DW %00'010'0'1100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CONTROL_3F6
|
||||
DW %11'010'0'1100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CONTROL_3F6
|
||||
;
|
||||
DW %00'000'0'1100'0101
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_3F7
|
||||
DW %00'010'0'1100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_3F7
|
||||
DW %11'010'0'1100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_3F7
|
||||
;
|
||||
DW %00'000'0'0010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_1
|
||||
DW %11'000'0'0010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_1
|
||||
;
|
||||
DW %00'000'0'0011'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_2
|
||||
DW %11'000'0'0011'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_2
|
||||
;
|
||||
DW %00'000'0'1010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.RESET
|
||||
DW %11'000'0'1010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.RESET
|
||||
;
|
||||
DW %00'000'0'0110'1101
|
||||
DW %10'000'1'1111'1111
|
||||
DB ACEX.Scorp_1FFD
|
||||
DW %11'000'0'0110'1101
|
||||
DW %11'000'1'1111'1111
|
||||
DB ACEX.Scorp_1FFD
|
||||
;
|
||||
DW %00'000'0'1110'1101
|
||||
DW %00'100'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
DW %00'100'0'1110'1101
|
||||
DW %11'110'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
DW %11'100'0'1110'1101
|
||||
DW %11'100'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
DW %10'000'0'0110'1101
|
||||
DW %11'100'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
;
|
||||
DW %00'000'0'0101'0110
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.ALL_MODE
|
||||
DW %11'000'0'0101'0110
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.ALL_MODE
|
||||
;
|
||||
DW %00'000'0'0010'0100
|
||||
DW %00'000'0'0010'1111
|
||||
DB ACEX.CNF_PORT
|
||||
;
|
||||
DW %00'000'0'0000'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT0
|
||||
DW %00'010'0'0000'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT0
|
||||
DW %11'010'0'0000'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT0
|
||||
;
|
||||
DW %00'000'0'0010'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT1
|
||||
DW %00'010'0'0010'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT1
|
||||
DW %11'010'0'0010'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT1
|
||||
;
|
||||
DW %00'000'0'0100'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT2
|
||||
DW %00'010'0'0100'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT2
|
||||
DW %11'010'0'0100'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT2
|
||||
;
|
||||
DW %00'000'0'0110'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT3
|
||||
DW %00'010'0'0110'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT3
|
||||
DW %11'010'0'0110'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT3
|
||||
; DCP END MARKER
|
||||
DW 0,0,0
|
||||
;-----------------------------------------------------------------------;
|
||||
RESERVED_PAGES:; [x] Block #1 - ¬®¦® ®á¢®¡®¤¨âì ¯® ID 1
|
||||
; „®¯®«¨â¥«ìë¥ ¯à®æ¥¤ãàë
|
||||
.SYS_FN: DB SYS_FN_PAGE
|
||||
; Ž¡à § <20>ˆŽ‘ ¤«ï ¯à®è¨¢ª¨
|
||||
.BIOS: DB #10,#11,#12,#13
|
||||
DB #14,#15,#16,#17
|
||||
DB #18,#19,#1A,#1B
|
||||
DB #1C,#1D,#1E,#1F
|
||||
; Š à⨪
|
||||
.PICTURE: DB 2,3,4,5,6
|
||||
; Ž¡à § ¯ ¬ïâ¨ á ¯à®è¨¢ «ì騪®¬
|
||||
.FLASHER_RAM: DB 7,8
|
||||
DB #FF ; End of the block
|
||||
.Blocks EQU 1
|
||||
.Size EQU $-RESERVED_PAGES
|
||||
;-----------------------------------------------------------------------;
|
||||
783
Crazy/IMG_PART.ASM
Normal file
783
Crazy/IMG_PART.ASM
Normal file
@ -0,0 +1,783 @@
|
||||
LD HL,RESERVED_PAGES
|
||||
LD DE,#4000 + RESERVED_PAGES_COPY
|
||||
LD BC,RESERVED_PAGES.Size
|
||||
LDIR
|
||||
LD SP,#4000
|
||||
LD A,SYS_FN_PAGE
|
||||
OUT (SLOT0),A
|
||||
JP INIT_SCREEN - #4000
|
||||
;
|
||||
.start_code EQU $
|
||||
|
||||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï íªà ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
INIT_SCREEN: CALL FN_SYNC
|
||||
;
|
||||
LD IX,VideoModes.graf_mode320x256
|
||||
LD E,%00010001
|
||||
CALL WIN_OPEN
|
||||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï ¯ «¨âàë ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
INIT_PALETTE: ;IN A,(SLOT1)
|
||||
;PUSH AF
|
||||
LD B,#FF
|
||||
LD HL,PICTURE.bdPallete ;#8FBC ;!HARDCODE PICTURE.bdPallete
|
||||
LD DE,0
|
||||
LD A,1
|
||||
CALL SET_PALETTE
|
||||
CALL SET_PICTURE
|
||||
CALL SET_BOARD_NUMBER
|
||||
; Ž¯à¥¤¥«¥¨¥ 稯 <20>‡“
|
||||
CALL DETECT_ROM
|
||||
;
|
||||
|
||||
; ãáâ ®¢ª ॣ¨áâ஢
|
||||
|
||||
; ¯à릮ª â®çªã ¢å®¤ ¢® ä«¥è¥à¥
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
SET_BOARD_NUMBER:
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,#18 ;!HARDCODE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD HL,(BOARD_ID_DATA.Start)
|
||||
LD (BoardNumOffsets.Start),HL
|
||||
LD HL,(BOARD_ID_DATA.Number)
|
||||
LD (BoardNumOffsets.Number),HL
|
||||
LD HL,(BOARD_ID_DATA.End)
|
||||
LD (BoardNumOffsets.End),HL
|
||||
LD A,(BOARD_ID_DATA.Type)
|
||||
LD (BoardNumOffsets.Type),A
|
||||
;
|
||||
LD A,#10 ;!HARDCODE
|
||||
OUT (SLOT3),A
|
||||
LD A,(FOR_ACEX)
|
||||
LD (#C000 + expBIOS_Vars.msgStrings.str_ACEX_MODEL),A
|
||||
LD (#C000 + expBIOS_Vars.msgRusStrings.str_ACEX_MODEL),A
|
||||
;
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
DISP_WINDOW EQU $
|
||||
DISP #4000 + DISP_WINDOW
|
||||
DETECT_ROM: LD HL,0
|
||||
ADD HL,SP
|
||||
LD SP,#4000
|
||||
LD (.sp_save),HL
|
||||
;
|
||||
CALL TEST_ROM_CHIP ;!HARDCODE TEST_ROM_CHIP #8E59
|
||||
LD (TST_R.jp),BC ;!HARDCODE TST_R.jp #81D5
|
||||
;
|
||||
.sp_save+1: LD SP,0000
|
||||
XOR A
|
||||
OUT (SYS_PORT.RAM),A
|
||||
RET
|
||||
ENT
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
SET_PICTURE: LD A,#FF - MAIN_PICTURE.PIC_Y
|
||||
.loop_pic: PUSH AF
|
||||
|
||||
LD A,#50
|
||||
OUT (SLOT1),A
|
||||
|
||||
POP AF
|
||||
OUT (PORT_Y),A
|
||||
|
||||
LD HL,.pic_buffer
|
||||
LD DE,#4000 + Screen_Offset + MAIN_PICTURE.PIC_X
|
||||
;
|
||||
LD BC,MAIN_PICTURE.PIC_WIDTH
|
||||
LDIR
|
||||
;
|
||||
LD H,A
|
||||
POP AF
|
||||
OUT (SLOT1),A
|
||||
PUSH AF
|
||||
|
||||
LD A,H
|
||||
DEC A
|
||||
CP MAIN_PICTURE.PIC_Y-1
|
||||
JR NZ,.loop_pic
|
||||
|
||||
POP AF
|
||||
OUT (SLOT1),A
|
||||
IM 1
|
||||
EI
|
||||
RET
|
||||
.pic_buffer: BLOCK MAIN_PICTURE.PIC_WIDTH,0
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; “áâ ®¢ª ०¨¬ «¨¨¨
|
||||
LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S)
|
||||
JP NZ,LP_MODE_LINE2 ; ¨¤â¨ ᯥªâàã¬
|
||||
BIT 4,A
|
||||
JP Z,LP_MODE_LINE3 ; ¨¤â¨ £à 䨪ã!
|
||||
DEC D
|
||||
; ⥪áâ®¢ë© à¥¦¨¬.
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
LD A,L ; ¢¥à⨪ «ì®¥ ¯®«®¦¥¨¥
|
||||
CP #80
|
||||
JR NC,LP_EXIT_MODE
|
||||
;
|
||||
LP_MODE_RECURSE:
|
||||
LD A,D ; £®à¨§®â «ì®¥ ¯®«®¦¥¨¥
|
||||
AND 7FH
|
||||
SUB 80
|
||||
JR C,LP_MODE_LL
|
||||
SUB 48
|
||||
NEG
|
||||
;
|
||||
LD E,A ; § ¯®¬¨âì
|
||||
ADD A,D
|
||||
LD D,A ; ®¢®¥ ¯®«®¦¥¨¥
|
||||
;
|
||||
LD A,E ; ¢®ááâ ®¢¨âì
|
||||
RRA
|
||||
AND 3FH
|
||||
SUB C
|
||||
JR NC,LP_EXIT_MODE
|
||||
NEG
|
||||
LD C,A ; ®¢®¥ § 票¥ C
|
||||
JR LP_MODE_RECURSE
|
||||
;
|
||||
LP_MODE_LL: NEG
|
||||
RRA
|
||||
AND 3FH
|
||||
CP C
|
||||
JR NC,LP_MODE_LR
|
||||
LD C,A
|
||||
LP_MODE_LR: EX AF,AF'
|
||||
INC D
|
||||
LP_MD_LL1: EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),A ; ०¨¬
|
||||
INC D
|
||||
EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),A ; ०¨¬
|
||||
INC D
|
||||
DEC C
|
||||
JR NZ,LP_MD_LL1
|
||||
EX AF,AF'
|
||||
LP_EXIT_MODE: LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
RET
|
||||
;
|
||||
|
||||
; “áâ ®¢ª ०¨¬ «¨¨¨
|
||||
; Spectrum mode
|
||||
LP_MODE_LINE2: LD A,(IX+Window_Variables.WORK_2)
|
||||
LD B,(IX+Window_Variables.WORK_1)
|
||||
;
|
||||
DEC D
|
||||
;
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
LD A,L ; ¢¥à⨪ «ì®¥ ¯®«®¦¥¨¥
|
||||
CP #80
|
||||
JR NC,LP_EXIT_MODE2
|
||||
;
|
||||
LP_MODE_RECURSE2:
|
||||
LD A,D ; £®à¨§®â «ì®¥ ¯®«®¦¥¨¥
|
||||
AND #7F
|
||||
SUB 80
|
||||
JR C,LP_MODE_LL2
|
||||
SUB 48
|
||||
NEG
|
||||
;
|
||||
LD E,A ; § ¯®¬¨âì
|
||||
ADD A,D
|
||||
LD D,A ; ®¢®¥ ¯®«®¦¥¨¥
|
||||
;
|
||||
LD A,E ; ¢®ááâ ®¢¨âì
|
||||
RRA
|
||||
AND #3F
|
||||
SUB C
|
||||
JR NC,LP_EXIT_MODE2
|
||||
NEG
|
||||
LD C,A ; ®¢®¥ § 票¥ C
|
||||
JR LP_MODE_RECURSE2
|
||||
;
|
||||
LP_MODE_LL2: NEG
|
||||
RRA
|
||||
AND #3F
|
||||
CP C
|
||||
JR NC,LP_MODE_LR2
|
||||
LD C,A
|
||||
LP_MODE_LR2: EX AF,AF'
|
||||
INC D
|
||||
LP_MD_LL2: EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),A ; ०¨¬
|
||||
INC L
|
||||
LD (HL),B
|
||||
INC L
|
||||
LD (HL),B
|
||||
DEC L
|
||||
DEC L
|
||||
INC D
|
||||
BIT 4,A
|
||||
JR NZ,lp_md_ll3x
|
||||
INC B
|
||||
lp_md_ll3x: EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),A ; ०¨¬
|
||||
INC L
|
||||
LD (HL),B
|
||||
INC L
|
||||
LD (HL),B
|
||||
DEC L
|
||||
DEC L
|
||||
INC D
|
||||
INC B
|
||||
JR NZ,LP_NO_ADD_40
|
||||
ADD A,#40
|
||||
LP_NO_ADD_40: DEC C
|
||||
JR NZ,LP_MD_LL2
|
||||
EX AF,AF'
|
||||
LP_EXIT_MODE2: LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD (IX+Window_Variables.WORK_1),B
|
||||
LD (IX+Window_Variables.WORK_2),A
|
||||
RET
|
||||
;
|
||||
; “áâ ®¢ª ०¨¬ «¨¨¨
|
||||
LP_MODE_LINE3: ; Grafic Mode
|
||||
LD A,(IX+Window_Variables.WORK_1)
|
||||
LD B,(IX+Window_Variables.WORK_2)
|
||||
DEC D
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
LD A,L ; ¢¥à⨪ «ì®¥ ¯®«®¦¥¨¥
|
||||
CP #80
|
||||
JR NC,LP_EXIT_MODE3
|
||||
;
|
||||
LP_MODE_RECURSE3:
|
||||
LD A,D ; £®à¨§®â «ì®¥ ¯®«®¦¥¨¥
|
||||
AND #7F
|
||||
SUB 80
|
||||
JR C,LP_MODE_LL3
|
||||
SUB 48
|
||||
NEG
|
||||
LD E,A ; § ¯®¬¨âì
|
||||
ADD A,D
|
||||
LD D,A ; ®¢®¥ ¯®«®¦¥¨¥
|
||||
LD A,E ; ¢®ááâ ®¢¨âì
|
||||
RRA
|
||||
AND #3F
|
||||
SUB C
|
||||
JR NC,LP_EXIT_MODE3
|
||||
NEG
|
||||
LD C,A ; ®¢®¥ § 票¥ C
|
||||
JR LP_MODE_RECURSE3
|
||||
;
|
||||
LP_MODE_LL3: NEG
|
||||
RRA
|
||||
AND #3F
|
||||
CP C
|
||||
JR NC,LP_MODE_LR3
|
||||
LD C,A
|
||||
LP_MODE_LR3: EX AF,AF'
|
||||
INC D
|
||||
BIT 5,B
|
||||
JR Z,LP_GR_640
|
||||
;
|
||||
LP_MD_LL3: EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),B ; ०¨¬
|
||||
INC L
|
||||
LD (HL),A ; ०¨¬ 2
|
||||
INC L
|
||||
LD (HL),0 ; ०¨¬ 2
|
||||
DEC L
|
||||
DEC L
|
||||
INC D
|
||||
INC D
|
||||
INC A
|
||||
LD E,A
|
||||
AND 7
|
||||
JR NZ,LP_NO_INC_B
|
||||
LD A,E
|
||||
SUB 8
|
||||
LD E,A
|
||||
INC B
|
||||
LP_NO_INC_B: LD A,E
|
||||
DEC C
|
||||
JR NZ,LP_MD_LL3
|
||||
;
|
||||
LP_640_RET: EX AF,AF'
|
||||
LP_EXIT_MODE3: LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD A,(IX+Window_Variables.WORK_1)
|
||||
ADD A,8
|
||||
LD (IX+Window_Variables.WORK_1),A
|
||||
RET
|
||||
;
|
||||
LP_GR_640: EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),B ; ०¨¬ 1
|
||||
INC L
|
||||
LD (HL),A ; ०¨¬ 2
|
||||
INC L
|
||||
LD (HL),0 ; ०¨¬ 3
|
||||
INC D
|
||||
EX AF,AF'
|
||||
LD A,D
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD (HL),0 ; ०¨¬ 3
|
||||
DEC L
|
||||
LD (HL),A ; ०¨¬ 2
|
||||
DEC L
|
||||
LD (HL),B ; ०¨¬ 1
|
||||
INC D
|
||||
INC A
|
||||
LD E,A
|
||||
AND 7
|
||||
JR NZ,LP_NO_INC_B6
|
||||
LD A,E
|
||||
SUB 8
|
||||
LD E,A
|
||||
INC B
|
||||
LP_NO_INC_B6: LD A,E
|
||||
DEC C
|
||||
JR NZ,LP_GR_640
|
||||
JP LP_640_RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; ¢å®¤: HL - ¤ ë¥ ¯ «¨âàë RGB, E - ç «ìë© æ¢¥â
|
||||
; D - ç¨á«® 梥⮢, B - PAL-mask, A - page PAL
|
||||
SET_PALETTE: PUSH IX
|
||||
;
|
||||
EX AF,AF'
|
||||
IN A,(RGADR)
|
||||
PUSH AF ; á®åà ¨âì ¯®«®¦¥¨¥ RGADR
|
||||
LD A,E
|
||||
OUT (RGADR),A ; ç «ìë© æ¢¥â ¢ ¯®àâ
|
||||
LD A,D ; á®åà ¨âì ç¨á«® 梥⮢
|
||||
EX AF,AF' ; ¢¥àãâì áâà ¨æã PAL
|
||||
;
|
||||
BIT 7,H ; ¯à®¢¥à¨âì ¤à¥á ¤ ëå
|
||||
LD C,SLOT3 ; ¥á«¨ ¨¦¥ 8000h
|
||||
LD D,#C3 ; â® £à ä.íªà áâà ¨æ¥ 3
|
||||
JR Z,.NO_PAGE1
|
||||
LD D,#43 ; ¨ ç¥
|
||||
LD C,SLOT1 ; áâà ¨æ¥ 1
|
||||
.NO_PAGE1: ADD A,A
|
||||
ADD A,A
|
||||
AND #1C
|
||||
XOR #E0 ; ¬« ¤è¨© ¡ ©â ¤à¥á PAL
|
||||
LD E,A ; DE - ¤à¥á ¢ ¢¨¤¥®-އ“
|
||||
PUSH DE
|
||||
POP IX ; ¤à¥á ¯ «¨âàë
|
||||
;
|
||||
LD D,B ; ¬ ᪠PAL
|
||||
EX AF,AF' ; ¢¥àãâì ç¨á«® 梥⮢
|
||||
LD B,A ; ç¨á«® 梥⮢
|
||||
;
|
||||
IN E,(C) ; á®åà ¨âì áâà ¨æã 3
|
||||
LD A,#50 ; áâà ¨æ £à ä¨ç¥áª®£® RAM
|
||||
OUT (C),A
|
||||
.loopPal: ; 横« ãáâ ®¢ª¨ 梥⮢ ¯ «¨âàë
|
||||
LD A,(HL) ; B
|
||||
AND D
|
||||
LD (IX+2),A
|
||||
INC HL
|
||||
;
|
||||
LD A,(HL) ; G
|
||||
AND D
|
||||
LD (IX+1),A
|
||||
INC HL
|
||||
;
|
||||
LD A,(HL) ; R
|
||||
AND D
|
||||
LD (IX+0),A
|
||||
INC HL
|
||||
;
|
||||
LD A,(HL) ; Y
|
||||
AND D
|
||||
LD (IX+3),A
|
||||
INC HL
|
||||
;
|
||||
IN A,(RGADR)
|
||||
INC A
|
||||
OUT (RGADR),A
|
||||
DJNZ .loopPal ; ¢ë¯®«ïâì, ¯®ª ¥ 0
|
||||
;
|
||||
.exit: OUT (C),E ; ¢®ááâ ®¢¨âì áâà ¨æã 3
|
||||
POP AF
|
||||
OUT (RGADR),A ; ¢®ááâ ®¢¨âì Y_PORT
|
||||
POP IX
|
||||
AND A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
LP_OPEN_PG: IN A,(SLOT3)
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,C
|
||||
LD (SYS_PAGE.COPY_SLOT3),A
|
||||
IN A,(PORT_Y)
|
||||
LD (SYS_PAGE.COPY_RGADR),A
|
||||
RET
|
||||
LP_CLOSE_PG: LD A,(SYS_PAGE.COPY_RGADR)
|
||||
OUT (PORT_Y),A
|
||||
LD A,(SYS_PAGE.COPY_SLOT3)
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
WIN_OPEN: CALL LP_OPEN_PG
|
||||
LD (SYS_PAGE.WIN_MAP_SC),IX ; ª àâ ®ª
|
||||
PUSH DE
|
||||
LD HL,(SYS_PAGE.WIN_MAP_SC)
|
||||
LD DE,WIN_ID_0
|
||||
LD BC,Window_UserVars
|
||||
LDIR
|
||||
LD IX,WIN_ID_0
|
||||
POP DE
|
||||
LD L,(IX+Window_Variables.USER.PLACE_H)
|
||||
LD H,(IX+Window_Variables.USER.PLACE_V)
|
||||
LD (IX+Window_Variables.MODE_E),E
|
||||
;
|
||||
LD A,L
|
||||
ADD A,A
|
||||
INC A ; ¢ëç¨á«¥¨¥ PORT_Y
|
||||
BIT 4,E
|
||||
JR NZ,.LP_SET_NO_OR
|
||||
OR #80 ; ¥á«¨ ¢ë¢®¤ ¢â®à®© íªà
|
||||
.LP_SET_NO_OR: LD (IX+Window_Variables.H_BEG),A
|
||||
LD D,A
|
||||
LD A,(IX+Window_Variables.USER.SIZE_H)
|
||||
ADD A,A
|
||||
ADD A,D
|
||||
LD (IX+Window_Variables.H_END),A
|
||||
LD (SYS_PAGE.WIN_MODE_SC),DE ; ¬¥áâ® ¯® £®à¨§®â «¨ ¨ áâà ¨æ ¬®¤ë
|
||||
LD A,H
|
||||
AND #3F
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
LD L,A
|
||||
LD H,#C3
|
||||
LD (SYS_PAGE.WIN_MODE_SH),HL ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á ¤à¥á®¬
|
||||
LD (IX+Window_Variables.V_BEG),A
|
||||
LD A,(IX+Window_Variables.USER.SIZE_V)
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,L
|
||||
LD (IX+Window_Variables.V_END),A
|
||||
;
|
||||
LD L,(IX+Window_Variables.V_BEG)
|
||||
LD H,#C3
|
||||
LD B,(IX+Window_Variables.USER.SIZE_V) ; à §¬¥à ¯® ¢¥à⨪ «¨
|
||||
;
|
||||
LD (IX+Window_Variables.WORK_1),0
|
||||
LD A,(IX+Window_Variables.USER.MODE) ; § ª®£¥¥à â®à ¯«îá ०¨¬
|
||||
LD (IX+Window_Variables.WORK_2),A
|
||||
BIT 4,A
|
||||
JR NZ,.LOOP ; ¯¥à¥å®¤, ¥á«¨ ⥪áâ®¢ë© à¥¦¨¬
|
||||
;
|
||||
AND #F0
|
||||
LD C,A
|
||||
LD A,(IX+Window_Variables.USER.GR_X)
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
LD D,A
|
||||
AND #0F
|
||||
OR C
|
||||
LD (IX+Window_Variables.WORK_2),A
|
||||
;
|
||||
LD A,D
|
||||
AND #E0
|
||||
LD C,A
|
||||
LD A,(IX+Window_Variables.USER.GR_Y)
|
||||
AND #1F
|
||||
OR C
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
LD (IX+Window_Variables.WORK_1),A
|
||||
;
|
||||
.LOOP: LD D,(IX+Window_Variables.H_BEG) ; D - ç «® áâப¨ (PORT_Y)
|
||||
LD C,(IX+Window_Variables.USER.SIZE_H) ; à §¬¥à ¯® £®à¨§®â «¨
|
||||
LD A,(IX+Window_Variables.USER.MODE) ; § ª®£¥¥à â®à ¯«îá ०¨¬
|
||||
;
|
||||
PUSH BC
|
||||
CALL LP_MODE_LINE
|
||||
POP BC
|
||||
INC L
|
||||
INC L
|
||||
INC L
|
||||
INC L
|
||||
DJNZ .LOOP
|
||||
;
|
||||
LD A,(IX+Window_Variables.MODE_E)
|
||||
AND 1
|
||||
OUT (RGMOD),A
|
||||
CALL LP_CLOSE_PG
|
||||
CALL LP_INI_P
|
||||
CALL LP_SIZE
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
LP_INI_P: EX AF,AF'
|
||||
EXX
|
||||
CALL LP_OPEN_PG
|
||||
; ®âªàë⨥ £à ä¨ç¥áª®£® íªà
|
||||
; LP_INI_NO_ZG:
|
||||
LD A,(WIN_ID_0.H_BEG)
|
||||
LD D,A
|
||||
LD A,(WIN_ID_0.V_BEG)
|
||||
LD L,A
|
||||
INC L
|
||||
LD H,#C3
|
||||
|
||||
AND A
|
||||
LD A,(WIN_ID_0.USER.MODE)
|
||||
BIT 5,A
|
||||
LD A,(WIN_ID_0.USER.SIZE_H)
|
||||
JR NZ,LP_INI_40
|
||||
ADD A,A
|
||||
SCF
|
||||
;!TODO çâ®-â® âãâ ¯®¤¢ë¯¨«¥®
|
||||
LP_INI_40: LD B,A
|
||||
LD (WIN_ID_0.SIZE_REL),A
|
||||
EX AF,AF'
|
||||
EXX
|
||||
JP LP_END_P
|
||||
;
|
||||
; WIN_MAP_SC - ª àâ íªà
|
||||
; 0 - hor size
|
||||
; 1 - ver size
|
||||
; 2 - hor place
|
||||
; 3 - ver place
|
||||
LP_SIZE: ; ®¯à¥¤¥«¥¨¥ size
|
||||
CALL LP_OPEN_PG
|
||||
LD DE,(WIN_ID_0.USER.SIZE_H)
|
||||
LD A,(WIN_ID_0.USER.MODE)
|
||||
BIT 5,A
|
||||
CALL LP_CLOSE_PG
|
||||
RET NZ
|
||||
LD A,E
|
||||
ADD A,A
|
||||
LD E,A
|
||||
RET
|
||||
;
|
||||
LP_END_P: LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
.SYS_PAGE: EX AF,AF'
|
||||
EXX
|
||||
RLA
|
||||
LD E,A
|
||||
LD (WIN_ID_0.reg_HL),HL ; ¬¥áâ® ¯¥ç â¨
|
||||
LD (WIN_ID_0.reg_DE),DE
|
||||
LD (WIN_ID_0.reg_BC),BC
|
||||
CALL LP_CLOSE_PG
|
||||
EXX
|
||||
EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
.short: EX AF,AF'
|
||||
EXX
|
||||
CALL LP_CLOSE_PG
|
||||
EXX
|
||||
EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
FN_SYNC: LD A,Port_VSYNC.SET_320L
|
||||
OUT (Port_VSYNC),A
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
LD A,(SYS_PAGE.VSyncAndWaits)
|
||||
OR 1
|
||||
LD (SYS_PAGE.VSyncAndWaits),A
|
||||
;
|
||||
.INT_DEF: LD DE,(SYS_PAGE.CONFIG_ALL)
|
||||
OUT (C),B
|
||||
LD IX,SCREEN_TABLES.PENTAGON
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD (SYS_PAGE.COPY_SLOT3),A
|
||||
IN A,(PORT_Y)
|
||||
LD (SYS_PAGE.COPY_RGADR),A
|
||||
LD (SYS_PAGE.CONFIG_ALL),IX
|
||||
XOR A
|
||||
;----[START]-----------------------[? 1]
|
||||
.loop_1: OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
LD HL,#C300
|
||||
;----[START]------------------[v 2]-----
|
||||
.loop_2: LD C,(IX)
|
||||
;----[START]-------------[v 3]----------
|
||||
.loop_3: ; ¢§ïâì ¤à¥á ¤ ëå ¤«ï § ¯¨á¨ ¢ á«ã¦¥¡ãî ®¡« áâì íªà
|
||||
LD E,(IX+1) ; take adress of line X
|
||||
LD D,(IX+2)
|
||||
;----[START]--------[v 4]---------------
|
||||
.loop_4:
|
||||
LD A,(DE) ; take counter in table 1, line X, column Y
|
||||
INC DE
|
||||
AND A
|
||||
JR Z,.loop_4_exit ; exit if zero-counter
|
||||
LD B,A
|
||||
LD A,(DE)
|
||||
INC DE
|
||||
;----[START]---[v 5]--------------------
|
||||
.loop_5:
|
||||
LD (HL),A
|
||||
INC L
|
||||
LD (HL),0
|
||||
INC L
|
||||
LD (HL),0
|
||||
;
|
||||
EX AF,AF'
|
||||
INC A
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
;
|
||||
LD (HL),0
|
||||
DEC L
|
||||
LD (HL),0
|
||||
DEC L
|
||||
LD (HL),A
|
||||
;
|
||||
EX AF,AF'
|
||||
INC A
|
||||
OUT (PORT_Y),A
|
||||
EX AF,AF'
|
||||
DJNZ .loop_5
|
||||
;--------------[^ 5]--------------------
|
||||
JR .loop_4
|
||||
;-------------------[^ 4]---------------
|
||||
.loop_4_exit: INC HL ; next line
|
||||
INC HL
|
||||
INC HL
|
||||
INC HL
|
||||
IN A,(PORT_Y)
|
||||
AND #80
|
||||
OUT (PORT_Y),A
|
||||
DEC C
|
||||
JR NZ,.loop_3
|
||||
;------------------------[^ 3]----------
|
||||
INC IX ; next counter
|
||||
INC IX
|
||||
INC IX
|
||||
LD A,(IX)
|
||||
AND A
|
||||
JR NZ,.loop_2
|
||||
;-----------------------------[^ 2]-----
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD IX,(SYS_PAGE.CONFIG_ALL)
|
||||
|
||||
EX AF,AF'
|
||||
ADD A,#80
|
||||
JR NC,.loop_1
|
||||
;----------------------------------[^ 1]
|
||||
; Exit
|
||||
LD A,(SYS_PAGE.COPY_RGADR)
|
||||
OUT (PORT_Y),A
|
||||
LD A,(SYS_PAGE.COPY_SLOT3)
|
||||
OUT (SLOT3),A
|
||||
.exit: OR A
|
||||
RET
|
||||
;--- Screen data table 1: counter1, data1 .. counterX, dataX
|
||||
SCREEN_TABLES:; | ç¨á«® | § 票ï |
|
||||
; | áâப | ¢ |
|
||||
; | /2 | áâப å |
|
||||
.SCR: DB 41 , #F8
|
||||
DB 3 , #FC
|
||||
DB 4 , #FC
|
||||
DB 7 , #FC
|
||||
DB 9 , #F8
|
||||
DB 0
|
||||
.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0
|
||||
.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0
|
||||
.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0
|
||||
.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0
|
||||
;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX
|
||||
;
|
||||
; | ª®«-¢® | § 票ï |
|
||||
; | áâப | ¢ |
|
||||
; | | áâப¥ |
|
||||
.PENTAGON: DB 33 : DW .SCR
|
||||
DB 1 : DW .INT ; DW .BLN
|
||||
DB 3 : DW .SNC
|
||||
DB 1 : DW .BLN
|
||||
DB 1 : DW .SCR
|
||||
DB 1 : DW .RES
|
||||
DB 0 ; end
|
||||
|
||||
;---
|
||||
VideoModes:
|
||||
.text_mode80x32:
|
||||
DB 40
|
||||
DB 32
|
||||
DB 0
|
||||
DB 0
|
||||
DB %00011011
|
||||
DB 0
|
||||
DB 0
|
||||
DB 0
|
||||
.graf_mode320x256:
|
||||
DB 80
|
||||
DB 32
|
||||
DB 0
|
||||
DB 0
|
||||
DB %01100000
|
||||
DB 0
|
||||
DB 0
|
||||
DB 0
|
||||
;---------------------------------------------------------------------;
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
RESERVED_PAGES_COPY: BLOCK RESERVED_PAGES.Size,#FF
|
||||
.SYS_FN EQU RESERVED_PAGES.SYS_FN - RESERVED_PAGES
|
||||
.BIOS EQU RESERVED_PAGES.BIOS - RESERVED_PAGES
|
||||
.PICTURE EQU RESERVED_PAGES.PICTURE - RESERVED_PAGES
|
||||
.FLASHER_RAM EQU RESERVED_PAGES.FLASHER_RAM - RESERVED_PAGES
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;-----------------------------------------------------------------------;
|
||||
BYTE "ACEX 1K"
|
||||
FOR_ACEX: DB "0" + TYPE_OF_ACEX
|
||||
BYTE "0"
|
||||
|
||||
BYTE "FULL BOARD ID:"
|
||||
BOARD_ID_DATA:
|
||||
.Start: DW #5283
|
||||
.Number: DW 0 ; ¢ë¢®¤¨âáï ª ª 5 ¤¥áïâ¨çëå æ¨äà: 0..99999 ¨«¨ #0000..#270F
|
||||
.End: DW #47E8
|
||||
.Type: DB 0
|
||||
BYTE "--<=END=>--"
|
||||
;-----------------------------------------------------------------------;
|
||||
46
CrazyBlaster.asm
Normal file
46
CrazyBlaster.asm
Normal file
@ -0,0 +1,46 @@
|
||||
|
||||
|
||||
INCLUDE 'Shared_Includes/constants/SP2000.inc'
|
||||
INCLUDE 'Build/updater.inc'
|
||||
;INCLUDE 'Shared_Includes/structures/FileSystem.inc'
|
||||
;INCLUDE 'Shared_Includes/macroses/macros.z80'
|
||||
;INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc'
|
||||
|
||||
DEFINE sec_high 0
|
||||
DEFINE sec_low 1
|
||||
DEFINE SYS_FN_PAGE 1
|
||||
;DEFINE ACEX_ROM_COPY_PAGE 0
|
||||
DEFINE bufer_adr #C000
|
||||
DEFINE sys_fn_in_sectors #4000 / #200
|
||||
DEFINE bios_size_in_sectors 512
|
||||
DEFINE flasher_size_in_sectors 1
|
||||
DEFINE image_size_in_sectors flasher_size_in_sectors + bios_size_in_sectros
|
||||
DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ FIRST SECTION - CONF ROM ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
OUTPUT './Build/CrazyBlaster.raw'
|
||||
ORG #0000
|
||||
BEGIN_CB: INCLUDE 'Crazy/ACEX_RAM.ASM'
|
||||
END_FIRST_SECTION EQU $
|
||||
;
|
||||
DISPLAY "ROM size = ",/A,END_FIRST_SECTION - BEGIN_CB
|
||||
OUTEND
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
|
||||
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ SECOND SECTION - IMAGE ON DRIVE ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;OUTPUT './Build/CrazyBlasterIMG.raw'
|
||||
OUTPUT './Build/CB_BIOS_IMG.raw'
|
||||
ORG #0000
|
||||
;BEGIN_CB_IMG: INCLUDE 'Crazy/IMG_PART.ASM'
|
||||
BEGIN_CB_IMG: INCLUDE 'Crazy/IMG_PART.ASM'
|
||||
END_SECOND_SECTION EQU $
|
||||
;
|
||||
DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG
|
||||
OUTEND
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
@ -1 +1 @@
|
||||
Subproject commit 93ab93917db326a86a0ffecc02a62f6f6ef7a938
|
||||
Subproject commit 4662474034c70f4b2627ff8eca10ccdf4a7d3525
|
||||
Loading…
Reference in New Issue
Block a user