...
This commit is contained in:
parent
b3de0bb07b
commit
5791d4e591
@ -1 +1 @@
|
||||
Subproject commit e73e9f8d4f4e72de4f6b54abaec159684fdcebe1
|
||||
Subproject commit b541d4221846090878c1de0138977e28139f7d14
|
||||
@ -912,7 +912,6 @@ init_rom_address EQU #8200 ;!HARDCODE
|
||||
;**************************************
|
||||
;
|
||||
MODULE Prepare_For_Setup
|
||||
|
||||
Set_ALL_Mode: LD A,#FF
|
||||
LD BC,Port_All_Mode
|
||||
OUT (C),A
|
||||
@ -929,6 +928,9 @@ Setup_to_RAM: LD HL,Setup_Starter.Start
|
||||
LDIR
|
||||
; á⥪ ª« ¤ñâáï ¤à¥á ¢®§¢à â ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥àãâìáï § ¤
|
||||
CALL Setup_Starter.Exec ; #C000
|
||||
;JP PrepareToZX
|
||||
ENDMODULE
|
||||
;
|
||||
PrepareToZX: ;CALL init_zx_roms
|
||||
; Setup HDD drives for ZX Spectrum mode
|
||||
DI
|
||||
@ -960,8 +962,7 @@ PrepareToZX: ;CALL init_zx_roms
|
||||
CP #10
|
||||
JR C,.loop
|
||||
; ¢ë室 ¢ ०¨¬ zx spectrum
|
||||
.start_zx: JP ZX_SPECTRUM_MODE
|
||||
ENDMODULE
|
||||
.start_zx: JP GOTO_SPEC.ZX_MODE
|
||||
;***********************************
|
||||
; ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢
|
||||
PORTS_INIT:
|
||||
@ -1118,15 +1119,14 @@ PORTS_INIT:
|
||||
INCLUDE 'FUNC_CMOS.ASM'
|
||||
INCLUDE 'BIOS_FUNC.ASM'
|
||||
INCLUDE 'FUNC_SERVICE.asm'
|
||||
|
||||
INCLUDE 'FLEX.asm'
|
||||
; INCLUDE 'EXP_SCR.ASZ'
|
||||
INCLUDE 'FUNC_PIC.ASM'
|
||||
; INCLUDE 'EXP_SCR.ASZ' LP_SCR_MNU
|
||||
INCLUDE 'FUNC_SCREEN.ASM'
|
||||
INCLUDE 'FUNC_RAM_ROM_DRV.ASM'
|
||||
INCLUDE 'FUNC_SYS.ASM'
|
||||
INCLUDE 'FUNC_FOR_TRDOS.ASM'
|
||||
INCLUDE 'FUNC_5x.asm'
|
||||
INCLUDE 'FUNC_LOW_PRINT.ASM'
|
||||
INCLUDE 'FUNC_ZX.ASM'
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
@ -1152,225 +1152,9 @@ ZG_ADDRESS: INCLUDE 'FONT.ASM'
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;
|
||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||
|
||||
/*
|
||||
;
|
||||
;------------------------[copy zx-roms to zx-pages]---------------------;
|
||||
; SLOT0 - ROM 8, sys_port - on.
|
||||
; RAM SLOT0 - page 0
|
||||
; ¤«ï ०¨¬ zx spectrum
|
||||
; ‚›<E2809A>Ž‹<C5BD>Ÿ…’‘Ÿ ˆ‡ އ“
|
||||
; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
||||
init_zx_roms:
|
||||
DISP Reset_Handler.init_rom_address
|
||||
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
|
||||
DI
|
||||
LD A,SYS_PORT.EXTENSION
|
||||
OUT (SYS_PORT.ROM),A
|
||||
INC A ;!HARDCODE LD A,2
|
||||
LD B,3 ; zx-rom number of pages
|
||||
;
|
||||
.loop: EXX
|
||||
;
|
||||
out (ROM.SLOT0),a
|
||||
or %0100'0000 ; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
||||
out (SLOT3),a
|
||||
and %1011'1111 ; !HARDCODE ®¬¥à áâà ¨æ ¤«ï í¬ã«ïâ®à <20>‡“
|
||||
|
||||
LD HL,0
|
||||
LD DE,#C000
|
||||
LD BC,#4000
|
||||
LDIR
|
||||
|
||||
INC A
|
||||
EXX
|
||||
DJNZ .loop
|
||||
|
||||
xor a
|
||||
out (ROM.SLOT0),a
|
||||
OUT (SYS_PORT.ROM),A
|
||||
EX AF,AF'
|
||||
out (SLOT3),a
|
||||
|
||||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||||
LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
|
||||
LD B,#42 ;!HARDCODE page
|
||||
CALL SET_PORTS
|
||||
;
|
||||
|
||||
LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
|
||||
LD B,#43 ;!HARDCODE page
|
||||
CALL SET_PORTS
|
||||
;
|
||||
|
||||
LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
|
||||
LD B,#44 ;!HARDCODE page
|
||||
CALL SET_PORTS
|
||||
;
|
||||
|
||||
; í⨠áâà ¨æë ¯®ª ¥ ¨á¯®«ì§ãîâáï
|
||||
LD A,ACEX.vROM.BIOS ; ROM-ID - BIOS
|
||||
;LD B,#45 ;!HARDCODE page
|
||||
LD B,#41
|
||||
CALL SET_PORTS
|
||||
;
|
||||
LD A,ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1
|
||||
;LD B,#46 ;!HARDCODE page
|
||||
LD B,#41
|
||||
CALL SET_PORTS
|
||||
;
|
||||
LD A,ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2
|
||||
;LD B,#47 ;!HARDCODE page
|
||||
LD B,#41
|
||||
JP SET_PORTS
|
||||
; ¬®¦® § ¤¥©á⢮¢ âì ¥éñ 4 áâà ¨æë ¯®àâë #E4..#E7
|
||||
|
||||
ENT
|
||||
.length EQU $-init_zx_roms
|
||||
;-----------------------------------------------------------------------;
|
||||
;*/
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;!TODO § ¤¥©á⢮¢ âì
|
||||
GOTO_SPEC:
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,B
|
||||
LD (SYS_PAGE.CONFIG_DE+1),A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
|
||||
;NO_SETUP_2:
|
||||
; CP #FC
|
||||
; JR Z,SPECTRUM_0 ; Ю䍣ãà æ¨ï AY
|
||||
|
||||
;NO_SETUP_1:
|
||||
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
||||
ZX_SPECTRUM_MODE:
|
||||
LD A,#FE ; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE
|
||||
LD BC,Port_All_Mode
|
||||
OUT (C),A
|
||||
|
||||
;SND_TEST_RET:
|
||||
LD SP,#BFFF
|
||||
|
||||
CALL FN_SYNC.INT_PENT
|
||||
CALL SET_PAL_ZX
|
||||
|
||||
LD E,0
|
||||
CALL LP_SET_32
|
||||
;
|
||||
LD E,0
|
||||
LD HL,#5104
|
||||
CALL LP_SET_32.X
|
||||
|
||||
; ????? ¬®¦® ¨á¯®«ì§®¢ âì ª®£¤ -¨¡ã¤ì ª ª-¨¡ã¤ì
|
||||
; LD D,#35
|
||||
; CALL CMOS_RD
|
||||
; BIT 0,A
|
||||
; PUSH AF
|
||||
; CALL Z,SPRINTER_1
|
||||
; POP AF
|
||||
; PUSH AF
|
||||
; CALL NZ,AY8910
|
||||
; POP AF
|
||||
|
||||
SPECTRUM_0:
|
||||
XOR A ; § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
||||
SPECTRUM_TASK:
|
||||
LD IX,BASIC_128
|
||||
JP INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
||||
|
||||
;start_basic:
|
||||
BASIC_128:
|
||||
LD SP,#C000
|
||||
LD HL,RES128_PROG
|
||||
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë BASIC-¥.
|
||||
LD BC,LEN_RES128
|
||||
LDIR
|
||||
DI
|
||||
JP ZX_VARS.PRINTER_BUFFER
|
||||
;-----------------------------------------------------------------------;
|
||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
;
|
||||
;>$< >$< >$< >$< >$< >$< [ <20>…<EFBFBD>…Œ…™€…Œ›… ‚ އ“ ] >$< >$< >$< >$< >$< >$< ;
|
||||
|
||||
;--------[ <20>à®£à ¬¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠Spectrum ]--------;
|
||||
RES128_PROG:
|
||||
DISP ZX_VARS.PRINTER_BUFFER ;#5B00
|
||||
LD A,ROM.BIOS
|
||||
OUT (SYS_PORT.RAM),A ; ‚®§¢à â ¢ 128k ROM
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD DE,(SYS_PAGE.CONFIG_DE)
|
||||
XOR A
|
||||
LD (SYS_PAGE.CONFIG_DE+1),A
|
||||
OUT (C),B
|
||||
|
||||
LD BC,#1FFD
|
||||
OUT (C),A ; Scorp ¯®àâ
|
||||
LD B,#7F
|
||||
OUT (C),A ; 128 ¯®àâ
|
||||
|
||||
LD A,E ; ãáâ ®¢ª ª®ä¨£ãà æ¨¨ ¨ ०¨¬ TURBO
|
||||
OUT (SYS_PORT.RAM),A ; CONFIG_SET
|
||||
|
||||
INC D
|
||||
DEC D
|
||||
; 0 ‚•Ž„ ‚ BASIC-128
|
||||
JP Z,0
|
||||
; 1 ‚•Ž„ ‚ BASIC-48
|
||||
LD A,#10
|
||||
OUT (C),A
|
||||
DEC D
|
||||
JP Z,0
|
||||
; 2 ‚•Ž„ ‚ TR-DOS
|
||||
LD HL,0
|
||||
PUSH HL
|
||||
DEC D
|
||||
JP Z,#3D29
|
||||
; 3 ‚•Ž„ ‚ EXPANSION
|
||||
;!TODO ¯®ª ¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0
|
||||
XOR A
|
||||
OUT (C),A
|
||||
LD A,#02
|
||||
LD B,#1F
|
||||
OUT (C),A
|
||||
DEC D
|
||||
JP Z,0
|
||||
;
|
||||
XOR A
|
||||
OUT (C),A
|
||||
LD A,#30
|
||||
LD B,#7F
|
||||
OUT (C),A
|
||||
;!TEST
|
||||
LD A,CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET
|
||||
OUT (CNF_PORT.OFF),A
|
||||
;
|
||||
DEC D
|
||||
; 4 ‚•Ž„ ‚ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
|
||||
JP Z,#3D29
|
||||
; 5 ‚•Ž„ ‚ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
|
||||
JP 0
|
||||
ENT
|
||||
LEN_RES128 EQU $-RES128_PROG
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;-------------------------------[ #FFE0 ]-------------------------------;
|
||||
; ¯à®£à ¬¬ , ª®â®à ï ¡ã¤ãç¨ à §¬¥é¥®© ¢ #40 áâà ¨æ¥,
|
||||
; á ¤à¥á RESTARTS, ¯¥à¥å¢ âë¢ ¥â RESET
|
||||
@ -1435,66 +1219,6 @@ Exec:
|
||||
Length EQU $-Setup_Starter.Start
|
||||
ENDMODULE
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------;
|
||||
;-------------[RST 08]
|
||||
RAM_BIOS_PROG: ; for CALL BIOS in #41 page
|
||||
DISP Spec_Page.to_bios
|
||||
PUSH AF
|
||||
LD A,ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
POP AF
|
||||
RET
|
||||
ENT
|
||||
.Length EQU $-RAM_BIOS_PROG
|
||||
;-------------------[]
|
||||
;
|
||||
;-------------[RST 38]
|
||||
PROG_NO_ROM:
|
||||
DISP Spec_Page.no_zx_rom
|
||||
DI
|
||||
;
|
||||
LD A,#FF
|
||||
OUT (SLOT3),A
|
||||
OUT (SLOT2),A
|
||||
OUT (SLOT1),A
|
||||
;
|
||||
LD SP,#BF00
|
||||
;
|
||||
LD E,0
|
||||
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
|
||||
RST ToBIOS
|
||||
;
|
||||
LD DE,0
|
||||
LD HL,#2050
|
||||
LD C,BIOS.LP_CLS_WIN
|
||||
RST ToBIOS
|
||||
; set scr-2
|
||||
LD A,1
|
||||
OUT (SCREEN_SWITCH),A
|
||||
;
|
||||
LD HL,MESSAGE_NR
|
||||
LD DE,#A000
|
||||
LD BC,MESSAGE_NR.size
|
||||
LD A,C
|
||||
LDIR
|
||||
;
|
||||
LD HL,#A000
|
||||
LD D,0 ; delimiter
|
||||
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
|
||||
LD B,A
|
||||
LD C,BIOS.LP_PRINT_LINE3
|
||||
RST ToBIOS
|
||||
;
|
||||
.loop: DI
|
||||
HALT
|
||||
JR .loop
|
||||
;
|
||||
MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET"
|
||||
.size EQU $-MESSAGE_NR
|
||||
ENT
|
||||
PROG_NO_ROM.size EQU $-PROG_NO_ROM
|
||||
;-------------------[]
|
||||
;-----------------------------------------------------------------------;
|
||||
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
|
||||
;
|
||||
|
||||
@ -1,787 +0,0 @@
|
||||
|
||||
SYCLES EQU 0
|
||||
;START EQU 1
|
||||
ST1 EQU 2
|
||||
DPAL1 EQU 3
|
||||
ST2 EQU 4
|
||||
DPAL2 EQU 5
|
||||
|
||||
MACRO NEXT_LIN_H
|
||||
EX AF,AF'
|
||||
INC A
|
||||
OUT (RGADR),A
|
||||
EX AF,AF'
|
||||
ENDM
|
||||
|
||||
MACRO NEXT_LIN_HP
|
||||
EX AF,AF'
|
||||
INC A
|
||||
OUT (RGADR),A
|
||||
JR NZ,.MD_NO_INC_H
|
||||
inc l
|
||||
.MD_NO_INC_H:
|
||||
EX AF,AF'
|
||||
ENDM
|
||||
|
||||
|
||||
;*****************************************
|
||||
;
|
||||
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ¤«ï
|
||||
; ᯥªâà㬮¢áª®£® ०¨¬ ¨
|
||||
; ¢®ááâ ®¢«¥¨¥ ᯥªâà㬮¢áª®£®
|
||||
; íªà
|
||||
;
|
||||
; ‚®§¢à â ¯® IX
|
||||
;
|
||||
; !!! NO USE STACK !!!
|
||||
;
|
||||
;*****************************************
|
||||
;!TODO
|
||||
; ¨¨æ¨ «¨§ æ¨ï áâà ¨æ zx spectrum
|
||||
INIT_PAGES:
|
||||
AND A
|
||||
LD E,A
|
||||
EX AF,AF'
|
||||
LD A,E
|
||||
|
||||
; BIT 7,A
|
||||
; JR Z,SCORPION_256_MODE
|
||||
; BIT 6,A
|
||||
; JR Z,PENTAGON_128_MODE
|
||||
;
|
||||
;PENTAGON_48_MODE:
|
||||
; AND 03CH
|
||||
; OUT (SLOT0),A
|
||||
; INC A
|
||||
; OUT (SLOT1),A
|
||||
; INC A
|
||||
; OUT (SLOT2),A
|
||||
; INC A
|
||||
; LD D,A
|
||||
; LD BC,1FFDH
|
||||
; XOR A
|
||||
; OUT (C),A
|
||||
; LD B,7FH
|
||||
; OUT (C),A
|
||||
; LD A,D
|
||||
; OUT (SLOT3),A
|
||||
; JR INIT_VIDEO_REG
|
||||
;
|
||||
;
|
||||
; PENTAGON_128_MODE:
|
||||
; LD D,8
|
||||
; AND #38
|
||||
; JR ALL_MODE
|
||||
|
||||
SCORPION_256_MODE:
|
||||
LD D,16
|
||||
AND #30 ; ¤® 4-å ᯥªâà㬮¢
|
||||
|
||||
ALL_MODE:
|
||||
OUT (SLOT0),A
|
||||
XOR 5
|
||||
OUT (SLOT1),A
|
||||
XOR 7
|
||||
OUT (SLOT2),A
|
||||
OR #0F
|
||||
LD E,A
|
||||
|
||||
.loop: DEC D
|
||||
|
||||
LD A,D
|
||||
RLCA
|
||||
AND #10
|
||||
LD BC,#1FFD
|
||||
OUT (C),A
|
||||
|
||||
LD A,D
|
||||
AND 7
|
||||
OR #40
|
||||
LD B,#7F
|
||||
OUT (C),A
|
||||
|
||||
LD A,E
|
||||
OUT (SLOT3),A
|
||||
DEC E
|
||||
|
||||
DEC D
|
||||
INC D
|
||||
JR NZ,.loop
|
||||
|
||||
INIT_VIDEO_REG:
|
||||
XOR A
|
||||
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
||||
; OUT (RGSCR),A ; ॣ¨áâà íªà
|
||||
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
||||
|
||||
;!TEST
|
||||
; Restore old Spectrum Screen
|
||||
;; LD HL,#4000
|
||||
;; LD DE,#4000
|
||||
;; LD BC,#1B00
|
||||
;; LDIR
|
||||
|
||||
; EX AF,AF'
|
||||
; BIT 6,A
|
||||
; JR NZ,NO_SCREEN_ALT
|
||||
|
||||
; EX AF,AF'
|
||||
|
||||
; LD A,7 ; á¥¤ì¬ ï íªà ï áâà ¨æ
|
||||
; LD BC,#7FFD
|
||||
; OUT (C),A
|
||||
|
||||
; Restore old Spectrum Screen 2
|
||||
;; LD HL,#C000
|
||||
;; LD DE,#C000
|
||||
;; LD BC,#1B00
|
||||
;; LDIR
|
||||
|
||||
; XOR A
|
||||
; LD BC,#7FFD
|
||||
; OUT (C),A
|
||||
;
|
||||
|
||||
EX AF,AF'
|
||||
NO_SCREEN_ALT:
|
||||
AND A
|
||||
JP (IX)
|
||||
|
||||
;****************************************
|
||||
; ‡ £à㧪 ०¨¬ íªà .
|
||||
;****************************************
|
||||
|
||||
; CALL SINC_DEF
|
||||
; CALL SET_PAL_ZX
|
||||
; RET
|
||||
|
||||
;****************************************
|
||||
|
||||
;!TODO âãâ äãªæ¨ï
|
||||
CL0 EQU 200
|
||||
CL1 EQU 240
|
||||
|
||||
SET_PAL_IBM:
|
||||
LD DE,#8000
|
||||
JR SET_PAL_TXT
|
||||
SET_PAL_ZX:
|
||||
LD DE,0
|
||||
SET_PAL_TXT:
|
||||
PUSH IX
|
||||
IN A,(RGADR)
|
||||
PUSH AF
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD IX,#C3F0 ; !HARDCODE ¤à¥á ¯ «¨âàë?
|
||||
.generate_loop:
|
||||
CALL GENERATE_PAL1
|
||||
LD A,E
|
||||
OUT (RGADR),A
|
||||
LD (IX),L ; R
|
||||
LD (IX+1),B ; G
|
||||
LD (IX+2),C ; B
|
||||
LD (IX+3),H ; i ?
|
||||
INC E
|
||||
JR NZ,.generate_loop
|
||||
;
|
||||
LD BC,4
|
||||
ADD IX,BC
|
||||
INC D
|
||||
LD A,D
|
||||
AND 3
|
||||
JR NZ,.generate_loop
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
OUT (RGADR),A
|
||||
POP IX
|
||||
RET
|
||||
|
||||
; £¥¥à æ¨ï ᯥªâà㬮¢áª®© ¯ «¨âàë.
|
||||
; ‚室: E - âਡãâ, D - ®¬¥à ¯ «¨âàë
|
||||
; ‚›•Ž„: L - red, B - green, C - blue, H - intensity
|
||||
GENERATE_PAL1: XOR A
|
||||
LD C,A
|
||||
LD B,A
|
||||
LD L,A
|
||||
BIT 7,D
|
||||
JR NZ,GENERATE_IBM
|
||||
BIT 1,D
|
||||
JR NZ,.FLH
|
||||
.NOF: BIT 0,D
|
||||
JR Z,.PAPER
|
||||
.INK: LD A,CL0
|
||||
BIT 6,E
|
||||
JR Z,.NOI1
|
||||
LD A,CL1
|
||||
.NOI1: BIT 0,E ; BLUE
|
||||
JR Z,.NO1
|
||||
LD C,A
|
||||
.NO1: BIT 1,E ; RED
|
||||
JR Z,.PP_NO2
|
||||
LD L,A
|
||||
.PP_NO2: BIT 2,E ; GREEN
|
||||
JR Z,.PP_NO3
|
||||
LD B,A
|
||||
.PP_NO3: JR .PP_NO6
|
||||
;
|
||||
.FLH: BIT 7,E
|
||||
JR Z,.NOF
|
||||
BIT 0,D
|
||||
JR Z,.INK
|
||||
.PAPER: LD A,CL0
|
||||
BIT 6,E
|
||||
JR Z,.NOI2
|
||||
LD A,CL1
|
||||
.NOI2: BIT 3,E ; BLUE
|
||||
JR Z,.PP_NO4
|
||||
LD C,A
|
||||
.PP_NO4: BIT 4,E ; RED
|
||||
JR Z,.PP_NO5
|
||||
LD L,A
|
||||
.PP_NO5: BIT 5,E ; GREEN
|
||||
JR Z,.PP_NO6
|
||||
LD B,A
|
||||
.PP_NO6: LD A,C
|
||||
AND A
|
||||
RRA
|
||||
ADD A,L
|
||||
RRA
|
||||
ADD A,B
|
||||
RRA
|
||||
LD H,A ; B/W mode
|
||||
RET
|
||||
;****************************************
|
||||
|
||||
GENERATE_IBM:
|
||||
BIT 7,E
|
||||
JR Z,.NO_FLH
|
||||
BIT 1,D
|
||||
JR Z,.PAPER
|
||||
.NO_FLH:
|
||||
BIT 0,D
|
||||
JR Z,.PAPER
|
||||
.INK:
|
||||
.NO_INTENS:
|
||||
LD A,#A8
|
||||
.INTENS:
|
||||
BIT 0,E ; BLUE
|
||||
JR Z,.PPI_NO4
|
||||
LD C,A
|
||||
.PPI_NO4:
|
||||
BIT 2,E ; RED
|
||||
JR Z,.PPI_NO5
|
||||
LD L,A
|
||||
.PPI_NO5:
|
||||
BIT 1,E ; GREEN
|
||||
JR Z,.PPI_NO6
|
||||
LD B,A
|
||||
.PPI_NO6:
|
||||
LD A,E
|
||||
AND #0F
|
||||
CP 6
|
||||
JR NZ,.no_correct
|
||||
LD B,#54
|
||||
.no_correct:
|
||||
BIT 3,E
|
||||
JR Z,GENERATE_PAL1.PP_NO6
|
||||
|
||||
LD A,#54
|
||||
ADD A,C
|
||||
LD C,A
|
||||
LD A,#54
|
||||
ADD A,B
|
||||
LD B,A
|
||||
LD A,#54
|
||||
ADD A,L
|
||||
LD L,A
|
||||
JR GENERATE_PAL1.PP_NO6
|
||||
.PAPER:
|
||||
LD A,#A8
|
||||
BIT 4,E ; BLUE
|
||||
JR Z,.PPI_NO4X
|
||||
LD C,A
|
||||
.PPI_NO4X:
|
||||
BIT 6,E ; RED
|
||||
JR Z,.PPI_NO5X
|
||||
LD L,A
|
||||
.PPI_NO5X:
|
||||
BIT 5,E ; GREEN
|
||||
JR Z,.PPI_NO6X
|
||||
LD B,A
|
||||
.PPI_NO6X:
|
||||
LD A,E
|
||||
AND #70
|
||||
CP #60
|
||||
JR NZ,GENERATE_PAL1.PP_NO6
|
||||
LD B,#54
|
||||
JR GENERATE_PAL1.PP_NO6
|
||||
;****************************************
|
||||
|
||||
;****************************************
|
||||
;****************************************
|
||||
|
||||
; D - ®¬¥à £à ä¨ç¥áª®© ¯ «¨âàë
|
||||
SET_PAL_GRAF:
|
||||
PUSH IX
|
||||
IN A,(RGADR)
|
||||
PUSH AF
|
||||
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
|
||||
|
||||
LD IX,#C3E0
|
||||
LD A,D
|
||||
AND 3
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
LD E,A
|
||||
LD D,0
|
||||
ADD IX,DE
|
||||
|
||||
LD E,0
|
||||
|
||||
XOR A
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD L,A
|
||||
LD H,A
|
||||
|
||||
SET_PAL_GR1:
|
||||
LD A,E
|
||||
OUT (RGADR),A
|
||||
|
||||
LD (IX),L
|
||||
LD (IX+1),B
|
||||
LD (IX+2),C
|
||||
LD (IX+3),H
|
||||
|
||||
CALL GENERATE_PAL3
|
||||
|
||||
INC E
|
||||
LD A,E
|
||||
CP 40
|
||||
JR NZ,SET_PAL_GR1
|
||||
|
||||
XOR A
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD L,A
|
||||
LD H,A
|
||||
|
||||
SET_PAL_GR2:
|
||||
LD A,E
|
||||
OUT (RGADR),A
|
||||
|
||||
LD (IX),L
|
||||
LD (IX+1),B
|
||||
LD (IX+2),C
|
||||
LD (IX+3),H
|
||||
|
||||
CALL GENERATE_PAL2
|
||||
|
||||
INC E
|
||||
JR NZ,SET_PAL_GR2
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
OUT (RGADR),A
|
||||
POP IX
|
||||
RET
|
||||
;
|
||||
;;*********************************
|
||||
;
|
||||
|
||||
GENERATE_PAL3: ; gray-scale
|
||||
LD A,B
|
||||
ADD A,6
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD L,A
|
||||
|
||||
LD A,C
|
||||
AND A
|
||||
RRA
|
||||
ADD A,L
|
||||
RRA
|
||||
ADD A,B
|
||||
RRA
|
||||
LD H,A
|
||||
|
||||
RET
|
||||
|
||||
GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY
|
||||
LD A,C
|
||||
ADD A,50
|
||||
LD C,A
|
||||
JR NC,GEN_PAL2_L1
|
||||
LD C,0
|
||||
LD A,L
|
||||
ADD A,50
|
||||
LD L,A
|
||||
JR NC,GEN_PAL2_L1
|
||||
LD L,0
|
||||
LD A,B
|
||||
ADD A,50
|
||||
LD B,A
|
||||
JR NC,GEN_PAL2_L1
|
||||
LD B,0
|
||||
|
||||
GEN_PAL2_L1:
|
||||
LD A,C
|
||||
AND A
|
||||
RR A
|
||||
ADD A,L
|
||||
RR A
|
||||
ADD A,B
|
||||
RR A
|
||||
LD H,A
|
||||
|
||||
RET
|
||||
;
|
||||
;;*****************************************
|
||||
|
||||
FN_SYNC:
|
||||
BIT 7,a
|
||||
JR Z,.old_mode
|
||||
|
||||
ld h,a
|
||||
and #60 ; check reserved bits
|
||||
jr nz,.error
|
||||
|
||||
bit 2,h ; Set V-Sinc?
|
||||
jr nz,.set_v_sinc
|
||||
|
||||
bit 4,h ; Set Waits?
|
||||
jr z,.error ; Error - no parameters
|
||||
|
||||
.set_waits:
|
||||
ld a,h
|
||||
and 8 ; check waits. Z - no waits, NZ - waits
|
||||
ld h,#FF
|
||||
jr z,1F
|
||||
ld h,#FB
|
||||
1:
|
||||
ld bc,(Port_All_Mode)
|
||||
in a,(C)
|
||||
and h
|
||||
out (C),a
|
||||
RET
|
||||
|
||||
.set_v_sinc:
|
||||
ld a,h
|
||||
and 3
|
||||
jr z,.SetDefLines
|
||||
dec a
|
||||
jr z,.SetCmosLines
|
||||
dec a
|
||||
jr z,.Set320Lines
|
||||
; jr Set312Lines
|
||||
|
||||
.set312lines:
|
||||
ld a,Port_VSYNC.SET_312L
|
||||
out (Port_VSYNC),a
|
||||
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
ld a,(SYS_PAGE.VSyncAndWaits)
|
||||
and 2
|
||||
ld (SYS_PAGE.VSyncAndWaits),a
|
||||
OUT (C),B
|
||||
|
||||
.end_set_v_sinc:
|
||||
bit 4,h
|
||||
ret z
|
||||
jr .set_waits
|
||||
|
||||
|
||||
.Set320Lines:
|
||||
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
|
||||
OUT (C),B
|
||||
|
||||
jr .end_set_v_sinc
|
||||
|
||||
.SetCmosLines:
|
||||
LD D,CMOS_CELL.ScreenSET
|
||||
CALL CMOS_RD
|
||||
|
||||
AND high CMOS_CELL.ScreenSET.Mask.Sinc ; ¢ ॣ¨áâॠA § 票¥ ScreenSET
|
||||
jr z,.SetDefLines
|
||||
|
||||
bit 6,a
|
||||
jr z,.set312lines
|
||||
|
||||
jr .Set320Lines
|
||||
|
||||
.old_mode:
|
||||
AND A
|
||||
JR Z,.INT_DEF
|
||||
DEC A
|
||||
JR Z,.INT_SCORP
|
||||
DEC A
|
||||
JR Z,.INT_PENT
|
||||
DEC A
|
||||
JR Z,.INT_ORIG
|
||||
DEC A
|
||||
JR Z,.INT_CMOS_SINC
|
||||
; [x] ª áâ®¬ë© íªà ¯® â ¡«¨æ¥ ¯®«ì§®¢ ⥫ï
|
||||
DEC A
|
||||
JR Z,.PROG_SCR
|
||||
;
|
||||
.error: SCF
|
||||
RET
|
||||
|
||||
.SetDefLines:
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
ld a,(SYS_PAGE.VSyncAndWaits)
|
||||
OUT (C),B
|
||||
and 1
|
||||
jr z,.set312lines
|
||||
jr .Set320Lines
|
||||
|
||||
.INT_DEF:
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
LD DE,(SYS_PAGE.CONFIG_ALL)
|
||||
OUT (C),B
|
||||
|
||||
CALL Test_CONFIG_ALL
|
||||
jr nz,.INT_CMOS_SINC
|
||||
jp (IX)
|
||||
|
||||
.INT_CMOS_SINC:
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
LD DE,(SYS_PAGE.CONFIG_ALL)
|
||||
OUT (C),B
|
||||
|
||||
LD D,CMOS_CELL.ScreenSET
|
||||
CALL CMOS_RD
|
||||
|
||||
AND high CMOS_CELL.ScreenSET.Mask.Int ; ¢ ॣ¨áâॠA § 票¥ ScreenSET
|
||||
JR NZ,.skiptest
|
||||
|
||||
CALL Test_CONFIG_ALL
|
||||
JP (IX) ; default int (non CMOS)
|
||||
|
||||
.skiptest:
|
||||
cp #10
|
||||
jr z,.INT_SCORP ; scorpion int
|
||||
|
||||
cp #20
|
||||
jr z,.INT_PENT ; pentagon int
|
||||
|
||||
; jr ORIG_SINC ; original int
|
||||
|
||||
.INT_ORIG:
|
||||
LD IX,SCREEN_TABLES.ORIGINAL
|
||||
JR .PROG_SCR
|
||||
.INT_SCORP:
|
||||
LD IX,SCREEN_TABLES.SCORPION
|
||||
JR .PROG_SCR
|
||||
.INT_PENT:
|
||||
LD IX,SCREEN_TABLES.PENTAGON
|
||||
; JR PROG_SCR
|
||||
.PROG_SCR:
|
||||
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
|
||||
|
||||
;DE - ᮤ¥à¦¨¬®¥ CONFIG_ALL
|
||||
Test_CONFIG_ALL:
|
||||
LD HL,SCREEN_TABLES.SCORPION
|
||||
AND A
|
||||
SBC HL,DE
|
||||
ld IX,FN_SYNC.INT_SCORP
|
||||
RET Z
|
||||
|
||||
LD HL,SCREEN_TABLES.ORIGINAL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
ld IX,FN_SYNC.INT_ORIG
|
||||
RET Z
|
||||
|
||||
LD HL,SCREEN_TABLES.PENTAGON
|
||||
AND A
|
||||
SBC HL,DE
|
||||
ld IX,FN_SYNC.INT_PENT
|
||||
RET Z
|
||||
and 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
|
||||
|
||||
;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0
|
||||
.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0
|
||||
.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 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
|
||||
.SCORPION: DB 31 : DW .SCR
|
||||
DB 1 : DW .INT_SC
|
||||
DB 1 : DW .SCR
|
||||
DB 1 : DW .SNC
|
||||
DB 3 : DW .SNC
|
||||
DB 1 : DW .BLN
|
||||
DB 2 : DW .RES
|
||||
DB 0 ; end
|
||||
.ORIGINAL: DB 33 : DW .SCR
|
||||
DB 1 : DW .SNC
|
||||
DB 1 : DW .INT
|
||||
DB 2 : DW .SNC
|
||||
DB 1 : DW .BLN
|
||||
DB 1 : DW .SCR
|
||||
DB 1 : DW .RES
|
||||
DB 0 ; end
|
||||
;---------------------------------------
|
||||
FLEX_END:
|
||||
@ -819,76 +819,75 @@ LP_INI_40:
|
||||
;********************************************************
|
||||
|
||||
|
||||
|
||||
;
|
||||
;------------------------------------------------------------------[#80]
|
||||
LP_OPEN_S:
|
||||
LD A,B
|
||||
ADD A,A
|
||||
CP LP_SC_TAB.SIZE
|
||||
CCF
|
||||
RET C
|
||||
PUSH HL
|
||||
LD HL,LP_SC_TAB
|
||||
LP_OPEN_S: LD A,B
|
||||
ADD A,A
|
||||
CP LP_SC_TAB.SIZE
|
||||
CCF
|
||||
RET C
|
||||
PUSH HL
|
||||
LD HL,LP_SC_TAB
|
||||
;
|
||||
ADD A,L
|
||||
LD L,A
|
||||
JR NC,.no_inc
|
||||
INC H
|
||||
; LD A,H
|
||||
; ADC A,0
|
||||
; LD H,A
|
||||
.no_inc: LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
EX (SP),HL
|
||||
RET
|
||||
;
|
||||
LP_SC_TAB: DW LP_SET_32 ; 0 - ᯥªâà㬮¢áª®¥ ®ª® 32x24
|
||||
DW LP_SET_64 ; 1 - ⥪á⮢®¥ ®ª® 64x24
|
||||
DW LP_SET_40 ; 2 - ⥪á⮢®¥ ®ª® 40x32
|
||||
DW LP_SET_80 ; 3 - ⥪á⮢®¥ ®ª® 80x32
|
||||
DW LP_SET_32.X ; 4 - ᯥªâà㬮¢áª®¥ ®ª®, HL - ¯®«®¦¥¨¥ ®ª
|
||||
DW LP_SET_64.X ; 5 - ⥪á⮢®¥ ®ª® 64x24, HL - ¯®«®¦¥¨¥ ®ª
|
||||
DW LP_SET_40.X ; 6 - ⥪á⮢®¥ ®ª® 40x32, HL - ¯®«®¦¥¨¥ ®ª
|
||||
DW LP_SET_80.X ; 7 - ⥪á⮢®¥ ®ª® 80x32, HL - ¯®«®¦¥¨¥ ®ª
|
||||
DW PIC_SET_S1 ; 8 - £à ä¨ç¥áª®¥ ®ª® 0, HL - ¯®«®¦¥¨¥ ®ª
|
||||
DW PIC_SET_S2 ; 9 - £à ä¨ç¥áª®¥ ®ª® 1, HL - ¯®«®¦¥¨¥ ®ª
|
||||
;DW LP_SET_MNU ; !TODO
|
||||
.SIZE EQU $-LP_SC_TAB
|
||||
|
||||
ADD A,L
|
||||
LD L,A
|
||||
LD A,H
|
||||
ADC A,0
|
||||
LD H,A
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
EX (SP),HL
|
||||
RET
|
||||
LP_SC_TAB:
|
||||
DW LP_SET_32
|
||||
DW LP_SET_64
|
||||
DW LP_SET_40
|
||||
DW LP_SET_80
|
||||
DW LP_SET_32.X
|
||||
DW LP_SET_64.X
|
||||
DW LP_SET_40.X
|
||||
DW LP_SET_80.X
|
||||
DW PIC_SET_S1
|
||||
DW PIC_SET_S2
|
||||
; DW LP_SET_MNU
|
||||
.SIZE EQU $-LP_SC_TAB
|
||||
|
||||
;LP_SET_MNU: ; ?????
|
||||
; SCF
|
||||
; RET
|
||||
; LD IX,LP_SCR_MNU
|
||||
; JP LP_SET_MODE
|
||||
; !TODO
|
||||
; LP_SET_MNU:
|
||||
; LD IX,LP_SCR_MNU
|
||||
; JP LP_SET_MODE
|
||||
|
||||
LP_SET_32:
|
||||
LD HL,#4104
|
||||
.X: LD IX,LP_SCR_32
|
||||
JP LP_SET_MODE
|
||||
LD HL,#4104
|
||||
.X: LD IX,LP_SCR_32
|
||||
JP LP_SET_MODE
|
||||
|
||||
LP_SET_64:
|
||||
LD HL,#4104
|
||||
.X: LD IX,LP_SCR_64
|
||||
JP LP_SET_MODE
|
||||
LD HL,#4104
|
||||
.X: LD IX,LP_SCR_64
|
||||
JP LP_SET_MODE
|
||||
|
||||
LP_SET_40:
|
||||
LD HL,#4000
|
||||
.X: LD IX,LP_SCR_40
|
||||
JP LP_SET_MODE
|
||||
LD HL,#4000
|
||||
.X: LD IX,LP_SCR_40
|
||||
JP LP_SET_MODE
|
||||
|
||||
LP_SET_80:
|
||||
LD HL,#4000
|
||||
.X: LD IX,LP_SCR_80
|
||||
JP LP_SET_MODE
|
||||
LD HL,#4000
|
||||
.X: LD IX,LP_SCR_80
|
||||
JP LP_SET_MODE
|
||||
|
||||
PIC_SET_S1:
|
||||
LD IX,PIC_320X256_1
|
||||
JP LP_SET_MODE
|
||||
LD IX,PIC_320X256_1
|
||||
JP LP_SET_MODE
|
||||
|
||||
PIC_SET_S2:
|
||||
LD IX,PIC_320X256_2
|
||||
JP LP_SET_MODE
|
||||
LD IX,PIC_320X256_2
|
||||
JP LP_SET_MODE
|
||||
;------------------------------------------------------------------[#80]
|
||||
;
|
||||
|
||||
@ -1032,7 +1031,6 @@ LP_SET_LOOP:
|
||||
CALL LP_SIZE
|
||||
XOR A
|
||||
RET
|
||||
|
||||
WIN_CLOSE:
|
||||
SCF
|
||||
RET
|
||||
|
||||
@ -5,25 +5,41 @@
|
||||
;----------------------------------------------------------------------;
|
||||
; Ž¯à¥¤¥«¥¨¥ ®¡ê¥¬ ¯ ¬ïâ¨.
|
||||
; ‚ë室: BC - FREE MEM ¢ ¡«®ª å ¯® 16k, HL - FULL MEM
|
||||
EMM.GetMemSize:
|
||||
IN A,(SLOT1)
|
||||
LD B,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD HL,SYS_PAGE.RAMD_FAT - #4000 - #4000
|
||||
LD C,0
|
||||
.loop: LD A,(HL)
|
||||
INC L
|
||||
JR Z,.exit
|
||||
AND A
|
||||
JR NZ,.loop
|
||||
INC C
|
||||
JR .loop
|
||||
.exit: LD HL,#100 ;!HARDCODE max mem pages
|
||||
LD A,B
|
||||
LD B,0
|
||||
OUT (SLOT1),A
|
||||
RET
|
||||
EMM.GetMemSize: IN A,(SLOT1)
|
||||
LD B,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
XOR A
|
||||
LD C,A
|
||||
LD HL,SYS_PAGE.RAMD_FAT-#4000-#4000
|
||||
;
|
||||
.loop: DEC L
|
||||
JR Z,.exit
|
||||
CP (HL)
|
||||
JR NZ,.loop
|
||||
INC C
|
||||
JP .loop
|
||||
;
|
||||
.exit: LD HL,#100 ;!HARDCODE max mem pages
|
||||
LD A,B
|
||||
LD B,0
|
||||
OUT (SLOT1),A
|
||||
RET
|
||||
|
||||
/*
|
||||
.loop: LD A,(HL)
|
||||
INC L
|
||||
JR Z,.exit
|
||||
AND A
|
||||
JR NZ,.loop
|
||||
INC C
|
||||
JR .loop
|
||||
.exit: LD HL,#100 ;!HARDCODE max mem pages
|
||||
LD A,B
|
||||
LD B,0
|
||||
OUT (SLOT1),A
|
||||
RET
|
||||
*/
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
@ -124,54 +140,51 @@ RESERVED_PAGES:
|
||||
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||
; CF - ¯à¨§ ª ®è¨¡ª¨
|
||||
;EMM_FN2M:
|
||||
EMM.GetMem:
|
||||
;PUSH DE
|
||||
PUSH BC
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD C,B ; á®åà ¨âì ç¨á«® ã¦ëå ¡«®ª®¢
|
||||
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
; –¨ª« ¯à®¢¥àª¨ «¨ç¨ï ã¦ëå ¡«®ª®¢.
|
||||
.loop: DEC L
|
||||
JR Z,.noRAM
|
||||
LD A,(HL)
|
||||
AND A
|
||||
JR NZ,.loop
|
||||
DJNZ .loop
|
||||
|
||||
; Œ¥áâ® ¥áâì !
|
||||
LD B,C ; ‚®ááâ ®¢¨âì ã¦ë© ®¡ê¥¬ ¤¨áª
|
||||
LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>–€ RAM-Disk
|
||||
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
|
||||
; ‡ ¯®«¨âì RAMD_FAT
|
||||
.loop2: DEC L
|
||||
LD A,(HL)
|
||||
AND A
|
||||
JR NZ,.loop2
|
||||
LD (HL),C
|
||||
LD C,L
|
||||
DJNZ .loop2
|
||||
|
||||
; L - 㪠§ â¥«ì æ¥¯®çª¨.
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
AND A
|
||||
POP BC
|
||||
;POP DE
|
||||
RET
|
||||
|
||||
.noRAM: LD L,1 ; <20>…’ <20>€ŒŸ’ˆ
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
SCF
|
||||
POP BC
|
||||
;POP DE
|
||||
RET
|
||||
EMM.GetMem: PUSH BC
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD C,B ; á®åà ¨âì ç¨á«® ã¦ëå ¡«®ª®¢
|
||||
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
; –¨ª« ¯à®¢¥àª¨ «¨ç¨ï ã¦ëå ¡«®ª®¢.
|
||||
XOR A
|
||||
.loop: DEC L
|
||||
JR Z,.noRAM
|
||||
; LD A,(HL)
|
||||
; AND A
|
||||
CP (HL)
|
||||
JR NZ,.loop
|
||||
DJNZ .loop
|
||||
; Œ¥áâ® ¥áâì !
|
||||
LD B,C ; ‚®ááâ ®¢¨âì ã¦ë© ®¡ê¥¬ ¤¨áª
|
||||
LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>–€ RAM-Disk
|
||||
LD L,A ;low SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
; ‡ ¯®«¨âì RAMD_FAT
|
||||
; A = 0
|
||||
.loop2: DEC L
|
||||
; LD A,(HL)
|
||||
; AND A
|
||||
CP (HL)
|
||||
JR NZ,.loop2
|
||||
LD (HL),C
|
||||
LD C,L
|
||||
DJNZ .loop2
|
||||
; L = 㪠§ â¥«ì æ¥¯®çª¨.
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
AND A
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
.noRAM: LD L,1 ; !HARDCODE bios errors <20>…’ <20>€ŒŸ’ˆ
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
SCF
|
||||
POP BC
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
@ -335,10 +348,12 @@ EMM.GetMemPageNext:
|
||||
AND A
|
||||
SCF
|
||||
RET Z
|
||||
|
||||
IN A,(SLOT1)
|
||||
LD H,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
|
||||
LD A,H
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD L,(HL)
|
||||
@ -347,6 +362,7 @@ EMM.GetMemPageNext:
|
||||
AND A
|
||||
SCF
|
||||
RET Z
|
||||
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
@ -432,17 +448,17 @@ EMM.GetMemBlkPages:
|
||||
;
|
||||
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR
|
||||
;RAMD_R_W:
|
||||
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
; º RD/WR SECTOR º\
|
||||
; º HL - BUFER º\
|
||||
; º DE - ABS sector ¢ 256b ¡«®ª å º\
|
||||
; º B - ç¨á«® ¤ ëå ¢ 256b ¡«®ª å º\
|
||||
; º A - block RAM º\
|
||||
; º A' - ª®¬ ¤ ç⥨¥/§ ¯¨áì/ç⥨¥ ROM Disk º\
|
||||
; º 0 - read, 255 - write, 70 - read ROM DISK º\
|
||||
; º ** NOT USED TR-DOS VARS ** º\
|
||||
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
; º RD/WR SECTOR º\
|
||||
; º HL - BUFER º\
|
||||
; º DE - ABS sector ¢ 256b ¡«®ª å º\
|
||||
; º B - ç¨á«® ¤ ëå ¢ 256b ¡«®ª å º\
|
||||
; º A - block RAM º\
|
||||
; º A' - ª®¬ ¤ ç⥨¥/§ ¯¨áì/ç⥨¥ ROM Disk º\
|
||||
; º 0 - read, 255 - write, 70 - read ROM DISKº\
|
||||
; º ** NOT USED TR-DOS VARS ** º\
|
||||
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||
BLK_RD_WR:
|
||||
AND A
|
||||
SCF
|
||||
@ -454,9 +470,9 @@ BLK_RD_WR:
|
||||
RET Z
|
||||
;
|
||||
; á®åà 塞 á®áâ®ï¨¥ ¯à¥àë¢ ¨©
|
||||
LD C,A
|
||||
LD A,R
|
||||
PUSH AF
|
||||
LD C,A
|
||||
LD A,R
|
||||
PUSH AF
|
||||
; á®åà 塞 PORT_Y
|
||||
IN A,(PORT_Y)
|
||||
PUSH AF
|
||||
@ -523,14 +539,14 @@ BLK_RD_WR:
|
||||
LD L,(HL)
|
||||
LD L,(HL)
|
||||
LD L,(HL)
|
||||
JR .RAMD_LOOP_D
|
||||
JP .RAMD_LOOP_D
|
||||
|
||||
.NOT_FOUR_BLK:
|
||||
LD A,E
|
||||
.loop: SUB #40
|
||||
JR C,.NOT_ONE_BLK
|
||||
LD L,(HL)
|
||||
JR .loop
|
||||
JP .loop
|
||||
|
||||
.NOT_ONE_BLK:
|
||||
AND #3F
|
||||
@ -552,7 +568,7 @@ BLK_RD_WR:
|
||||
OUT (SLOT3),A
|
||||
SET 7,D
|
||||
SET 6,D
|
||||
JR .BLK_CONT1
|
||||
JP .BLK_CONT1
|
||||
|
||||
.BLK_PAGE1:
|
||||
LD C,SLOT1
|
||||
@ -581,9 +597,11 @@ BLK_RD_WR:
|
||||
JR Z,.NO_EX_RW2 ; WRITE
|
||||
EX DE,HL ; for READ
|
||||
.NO_EX_RW2:
|
||||
EX AF,AF' ; DEC C ¯à®ªàã⨫áï 256 à § ¨ ¢¥àã«áï
|
||||
INC B ; B 㦥 㬥ì訫áï 1,
|
||||
DEC B
|
||||
EX AF,AF' ; DEC C ¯à®ªàã⨫áï 256 à § ¨ ¢¥àã«áï
|
||||
; A = 0
|
||||
;INC B ; B 㦥 㬥ì訫áï 1,
|
||||
;DEC B
|
||||
CP B
|
||||
JP Z,.BLK_EXIT_1
|
||||
|
||||
BIT 6,D
|
||||
|
||||
@ -133,9 +133,9 @@ PIC_FN3:
|
||||
OUT (SLOT1),A
|
||||
|
||||
BIT 0,B
|
||||
LD BC,40H+04000H
|
||||
LD BC,#40 + #4000
|
||||
JR Z,PIC_FN3_NO_2ND
|
||||
LD BC,40H+320+04000H
|
||||
LD BC,#40 + 320 + #4000
|
||||
PIC_FN3_NO_2ND:
|
||||
ADD HL,BC
|
||||
|
||||
@ -296,11 +296,11 @@ PIC_FN5: ;
|
||||
SET_PAL_INIT:
|
||||
LD D,A
|
||||
DEC B
|
||||
JP Z,SET_PAL_GRAF
|
||||
JP Z,SET_GRAPH_PALETTE
|
||||
DEC B
|
||||
JP Z,SET_PAL_ZX
|
||||
JP Z,SET_TXT_PALETTE.ZX
|
||||
DEC B
|
||||
JP Z,SET_PAL_IBM
|
||||
JP Z,SET_TXT_PALETTE.IBM
|
||||
|
||||
; LD IX,PAL_DAT1
|
||||
; JR Z,PIC_FN6_L1
|
||||
@ -471,6 +471,670 @@ PIC_FN14:
|
||||
PIC_FN15:
|
||||
SCF
|
||||
RET
|
||||
;************************************
|
||||
|
||||
|
||||
;************************************
|
||||
; SYCLES EQU 0
|
||||
; ;START EQU 1
|
||||
; ST1 EQU 2
|
||||
; DPAL1 EQU 3
|
||||
; ST2 EQU 4
|
||||
; DPAL2 EQU 5
|
||||
|
||||
; MACRO NEXT_LIN_H
|
||||
; EX AF,AF'
|
||||
; INC A
|
||||
; OUT (RGADR),A
|
||||
; EX AF,AF'
|
||||
; ENDM
|
||||
|
||||
; MACRO NEXT_LIN_HP
|
||||
; EX AF,AF'
|
||||
; INC A
|
||||
; OUT (RGADR),A
|
||||
; JR NZ,.MD_NO_INC_H
|
||||
; INC L
|
||||
; .MD_NO_INC_H:
|
||||
; EX AF,AF'
|
||||
; ENDM
|
||||
|
||||
;****************************************
|
||||
; ‡ £à㧪 ०¨¬ íªà .
|
||||
;****************************************
|
||||
|
||||
; CALL SINC_DEF
|
||||
; CALL SET_TXT_PALETTE.ZX
|
||||
; RET
|
||||
|
||||
;****************************************
|
||||
|
||||
;!TODO âãâ äãªæ¨ï
|
||||
CL0 EQU 200
|
||||
CL1 EQU 240
|
||||
|
||||
|
||||
SET_TXT_PALETTE:
|
||||
.IBM: LD DE,#8000
|
||||
JR .TXT
|
||||
;
|
||||
.ZX: LD DE,0
|
||||
.TXT: PUSH IX
|
||||
IN A,(RGADR)
|
||||
PUSH AF
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD IX,#C3F0 ; !HARDCODE ¤à¥á ¯ «¨âàë?
|
||||
.generate_loop:
|
||||
CALL GENERATE_PAL1
|
||||
LD A,E
|
||||
OUT (RGADR),A
|
||||
LD (IX),L ; R
|
||||
LD (IX+1),B ; G
|
||||
LD (IX+2),C ; B
|
||||
LD (IX+3),H ; i ?
|
||||
INC E
|
||||
JR NZ,.generate_loop
|
||||
;
|
||||
LD BC,4
|
||||
ADD IX,BC
|
||||
INC D
|
||||
LD A,D
|
||||
AND 3
|
||||
JR NZ,.generate_loop
|
||||
;
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
OUT (RGADR),A
|
||||
POP IX
|
||||
RET
|
||||
|
||||
; £¥¥à æ¨ï ᯥªâà㬮¢áª®© ¯ «¨âàë.
|
||||
; ‚室: E - âਡãâ, D - ®¬¥à ¯ «¨âàë
|
||||
; ‚›•Ž„: L - red, B - green, C - blue, H - intensity
|
||||
GENERATE_PAL1: XOR A
|
||||
LD C,A
|
||||
LD B,A
|
||||
LD L,A
|
||||
BIT 7,D
|
||||
JR NZ,GENERATE_IBM
|
||||
BIT 1,D
|
||||
JR NZ,.FLH
|
||||
.NOF: BIT 0,D
|
||||
JR Z,.PAPER
|
||||
.INK: LD A,CL0
|
||||
BIT 6,E
|
||||
JR Z,.NOI1
|
||||
LD A,CL1
|
||||
.NOI1: BIT 0,E ; BLUE
|
||||
JR Z,.NO1
|
||||
LD C,A
|
||||
.NO1: BIT 1,E ; RED
|
||||
JR Z,.PP_NO2
|
||||
LD L,A
|
||||
.PP_NO2: BIT 2,E ; GREEN
|
||||
JR Z,.PP_NO3
|
||||
LD B,A
|
||||
.PP_NO3: JR .PP_NO6
|
||||
;
|
||||
.FLH: BIT 7,E
|
||||
JR Z,.NOF
|
||||
BIT 0,D
|
||||
JR Z,.INK
|
||||
.PAPER: LD A,CL0
|
||||
BIT 6,E
|
||||
JR Z,.NOI2
|
||||
LD A,CL1
|
||||
.NOI2: BIT 3,E ; BLUE
|
||||
JR Z,.PP_NO4
|
||||
LD C,A
|
||||
.PP_NO4: BIT 4,E ; RED
|
||||
JR Z,.PP_NO5
|
||||
LD L,A
|
||||
.PP_NO5: BIT 5,E ; GREEN
|
||||
JR Z,.PP_NO6
|
||||
LD B,A
|
||||
.PP_NO6: LD A,C
|
||||
AND A
|
||||
RRA
|
||||
ADD A,L
|
||||
RRA
|
||||
ADD A,B
|
||||
RRA
|
||||
LD H,A ; B/W mode
|
||||
RET
|
||||
;****************************************
|
||||
|
||||
GENERATE_IBM:
|
||||
BIT 7,E
|
||||
JR Z,.NO_FLH
|
||||
BIT 1,D
|
||||
JR Z,.PAPER
|
||||
.NO_FLH:
|
||||
BIT 0,D
|
||||
JR Z,.PAPER
|
||||
.INK:
|
||||
.NO_INTENS:
|
||||
LD A,#A8
|
||||
.INTENS:
|
||||
BIT 0,E ; BLUE
|
||||
JR Z,.PPI_NO4
|
||||
LD C,A
|
||||
.PPI_NO4:
|
||||
BIT 2,E ; RED
|
||||
JR Z,.PPI_NO5
|
||||
LD L,A
|
||||
.PPI_NO5:
|
||||
BIT 1,E ; GREEN
|
||||
JR Z,.PPI_NO6
|
||||
LD B,A
|
||||
.PPI_NO6:
|
||||
LD A,E
|
||||
AND #0F
|
||||
CP 6
|
||||
JR NZ,.no_correct
|
||||
LD B,#54
|
||||
.no_correct:
|
||||
BIT 3,E
|
||||
JR Z,GENERATE_PAL1.PP_NO6
|
||||
|
||||
LD A,#54
|
||||
ADD A,C
|
||||
LD C,A
|
||||
LD A,#54
|
||||
ADD A,B
|
||||
LD B,A
|
||||
LD A,#54
|
||||
ADD A,L
|
||||
LD L,A
|
||||
JR GENERATE_PAL1.PP_NO6
|
||||
.PAPER:
|
||||
LD A,#A8
|
||||
BIT 4,E ; BLUE
|
||||
JR Z,.PPI_NO4X
|
||||
LD C,A
|
||||
.PPI_NO4X:
|
||||
BIT 6,E ; RED
|
||||
JR Z,.PPI_NO5X
|
||||
LD L,A
|
||||
.PPI_NO5X:
|
||||
BIT 5,E ; GREEN
|
||||
JR Z,.PPI_NO6X
|
||||
LD B,A
|
||||
.PPI_NO6X:
|
||||
LD A,E
|
||||
AND #70
|
||||
CP #60
|
||||
JR NZ,GENERATE_PAL1.PP_NO6
|
||||
LD B,#54
|
||||
JR GENERATE_PAL1.PP_NO6
|
||||
;****************************************
|
||||
|
||||
;****************************************
|
||||
;****************************************
|
||||
|
||||
; D - ®¬¥à £à ä¨ç¥áª®© ¯ «¨âàë
|
||||
SET_GRAPH_PALETTE:
|
||||
PUSH IX
|
||||
IN A,(RGADR)
|
||||
PUSH AF
|
||||
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,#50
|
||||
OUT (SLOT3),A
|
||||
|
||||
|
||||
LD IX,#C3E0
|
||||
LD A,D
|
||||
AND 3
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
LD E,A
|
||||
LD D,0
|
||||
ADD IX,DE
|
||||
|
||||
LD E,0
|
||||
|
||||
XOR A
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD L,A
|
||||
LD H,A
|
||||
|
||||
SET_PAL_GR1:
|
||||
LD A,E
|
||||
OUT (RGADR),A
|
||||
|
||||
LD (IX),L
|
||||
LD (IX+1),B
|
||||
LD (IX+2),C
|
||||
LD (IX+3),H
|
||||
|
||||
CALL GENERATE_PAL3
|
||||
|
||||
INC E
|
||||
LD A,E
|
||||
CP 40
|
||||
JR NZ,SET_PAL_GR1
|
||||
|
||||
XOR A
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD L,A
|
||||
LD H,A
|
||||
|
||||
SET_PAL_GR2:
|
||||
LD A,E
|
||||
OUT (RGADR),A
|
||||
|
||||
LD (IX),L
|
||||
LD (IX+1),B
|
||||
LD (IX+2),C
|
||||
LD (IX+3),H
|
||||
|
||||
CALL GENERATE_PAL2
|
||||
|
||||
INC E
|
||||
JR NZ,SET_PAL_GR2
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
OUT (RGADR),A
|
||||
POP IX
|
||||
RET
|
||||
;
|
||||
;;*********************************
|
||||
;
|
||||
|
||||
GENERATE_PAL3: ; gray-scale
|
||||
LD A,B
|
||||
ADD A,6
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD L,A
|
||||
|
||||
LD A,C
|
||||
AND A
|
||||
RRA
|
||||
ADD A,L
|
||||
RRA
|
||||
ADD A,B
|
||||
RRA
|
||||
LD H,A
|
||||
|
||||
RET
|
||||
|
||||
GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY
|
||||
LD A,C
|
||||
ADD A,50
|
||||
LD C,A
|
||||
JR NC,GEN_PAL2_L1
|
||||
LD C,0
|
||||
LD A,L
|
||||
ADD A,50
|
||||
LD L,A
|
||||
JR NC,GEN_PAL2_L1
|
||||
LD L,0
|
||||
LD A,B
|
||||
ADD A,50
|
||||
LD B,A
|
||||
JR NC,GEN_PAL2_L1
|
||||
LD B,0
|
||||
|
||||
GEN_PAL2_L1:
|
||||
LD A,C
|
||||
AND A
|
||||
RR A
|
||||
ADD A,L
|
||||
RR A
|
||||
ADD A,B
|
||||
RR A
|
||||
LD H,A
|
||||
|
||||
RET
|
||||
;
|
||||
;************************************
|
||||
|
||||
FN_SYNC:
|
||||
BIT 7,a
|
||||
JR Z,.old_mode
|
||||
|
||||
ld h,a
|
||||
and #60 ; check reserved bits
|
||||
jr nz,.error
|
||||
|
||||
bit 2,h ; Set V-Sinc?
|
||||
jr nz,.set_v_sinc
|
||||
|
||||
bit 4,h ; Set Waits?
|
||||
jr z,.error ; Error - no parameters
|
||||
|
||||
.set_waits:
|
||||
ld a,h
|
||||
and 8 ; check waits. Z - no waits, NZ - waits
|
||||
ld h,#FF
|
||||
jr z,1F
|
||||
ld h,#FB
|
||||
1:
|
||||
ld bc,(Port_All_Mode)
|
||||
in a,(C)
|
||||
and h
|
||||
out (C),a
|
||||
RET
|
||||
|
||||
.set_v_sinc:
|
||||
ld a,h
|
||||
and 3
|
||||
jr z,.SetDefLines
|
||||
dec a
|
||||
jr z,.SetCmosLines
|
||||
dec a
|
||||
jr z,.Set320Lines
|
||||
; jr Set312Lines
|
||||
|
||||
.set312lines:
|
||||
ld a,Port_VSYNC.SET_312L
|
||||
out (Port_VSYNC),a
|
||||
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
ld a,(SYS_PAGE.VSyncAndWaits)
|
||||
and 2
|
||||
ld (SYS_PAGE.VSyncAndWaits),a
|
||||
OUT (C),B
|
||||
|
||||
.end_set_v_sinc:
|
||||
bit 4,h
|
||||
ret z
|
||||
jr .set_waits
|
||||
|
||||
|
||||
.Set320Lines:
|
||||
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
|
||||
OUT (C),B
|
||||
|
||||
jr .end_set_v_sinc
|
||||
|
||||
.SetCmosLines:
|
||||
LD D,CMOS_CELL.ScreenSET
|
||||
CALL CMOS_RD
|
||||
|
||||
AND high CMOS_CELL.ScreenSET.Mask.Sinc ; ¢ ॣ¨áâॠA § 票¥ ScreenSET
|
||||
jr z,.SetDefLines
|
||||
|
||||
bit 6,a
|
||||
jr z,.set312lines
|
||||
|
||||
jr .Set320Lines
|
||||
|
||||
.old_mode:
|
||||
AND A
|
||||
JR Z,.INT_DEF
|
||||
DEC A
|
||||
JR Z,.INT_SCORP
|
||||
DEC A
|
||||
JR Z,.INT_PENT
|
||||
DEC A
|
||||
JR Z,.INT_ORIG
|
||||
DEC A
|
||||
JR Z,.INT_CMOS_SINC
|
||||
; [x] ª áâ®¬ë© íªà ¯® â ¡«¨æ¥ ¯®«ì§®¢ ⥫ï
|
||||
DEC A
|
||||
JR Z,.PROG_SCR
|
||||
;
|
||||
.error: SCF
|
||||
RET
|
||||
|
||||
.SetDefLines:
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
ld a,(SYS_PAGE.VSyncAndWaits)
|
||||
OUT (C),B
|
||||
and 1
|
||||
jr z,.set312lines
|
||||
jr .Set320Lines
|
||||
|
||||
.INT_DEF:
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
LD DE,(SYS_PAGE.CONFIG_ALL)
|
||||
OUT (C),B
|
||||
|
||||
CALL Test_CONFIG_ALL
|
||||
jr nz,.INT_CMOS_SINC
|
||||
jp (IX)
|
||||
|
||||
.INT_CMOS_SINC:
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
LD DE,(SYS_PAGE.CONFIG_ALL)
|
||||
OUT (C),B
|
||||
|
||||
LD D,CMOS_CELL.ScreenSET
|
||||
CALL CMOS_RD
|
||||
|
||||
AND high CMOS_CELL.ScreenSET.Mask.Int ; ¢ ॣ¨áâॠA § 票¥ ScreenSET
|
||||
JR NZ,.skiptest
|
||||
|
||||
CALL Test_CONFIG_ALL
|
||||
JP (IX) ; default int (non CMOS)
|
||||
|
||||
.skiptest:
|
||||
cp #10
|
||||
jr z,.INT_SCORP ; scorpion int
|
||||
|
||||
cp #20
|
||||
jr z,.INT_PENT ; pentagon int
|
||||
|
||||
; jr ORIG_SINC ; original int
|
||||
|
||||
.INT_ORIG:
|
||||
LD IX,SCREEN_TABLES.ORIGINAL
|
||||
JR .PROG_SCR
|
||||
.INT_SCORP:
|
||||
LD IX,SCREEN_TABLES.SCORPION
|
||||
JR .PROG_SCR
|
||||
.INT_PENT:
|
||||
LD IX,SCREEN_TABLES.PENTAGON
|
||||
; JR PROG_SCR
|
||||
.PROG_SCR:
|
||||
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
|
||||
|
||||
;DE - ᮤ¥à¦¨¬®¥ CONFIG_ALL
|
||||
Test_CONFIG_ALL:
|
||||
LD HL,SCREEN_TABLES.SCORPION
|
||||
AND A
|
||||
SBC HL,DE
|
||||
ld IX,FN_SYNC.INT_SCORP
|
||||
RET Z
|
||||
|
||||
LD HL,SCREEN_TABLES.ORIGINAL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
ld IX,FN_SYNC.INT_ORIG
|
||||
RET Z
|
||||
|
||||
LD HL,SCREEN_TABLES.PENTAGON
|
||||
AND A
|
||||
SBC HL,DE
|
||||
ld IX,FN_SYNC.INT_PENT
|
||||
RET Z
|
||||
and 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
|
||||
|
||||
;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0
|
||||
.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0
|
||||
.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 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
|
||||
.SCORPION: DB 31 : DW .SCR
|
||||
DB 1 : DW .INT_SC
|
||||
DB 1 : DW .SCR
|
||||
DB 1 : DW .SNC
|
||||
DB 3 : DW .SNC
|
||||
DB 1 : DW .BLN
|
||||
DB 2 : DW .RES
|
||||
DB 0 ; end
|
||||
.ORIGINAL: DB 33 : DW .SCR
|
||||
DB 1 : DW .SNC
|
||||
DB 1 : DW .INT
|
||||
DB 2 : DW .SNC
|
||||
DB 1 : DW .BLN
|
||||
DB 1 : DW .SCR
|
||||
DB 1 : DW .RES
|
||||
DB 0 ; end
|
||||
;---------------------------------------
|
||||
|
||||
;************************************
|
||||
;
|
||||
|
||||
380
src/bios/exp/FUNC_ZX.ASM
Normal file
380
src/bios/exp/FUNC_ZX.ASM
Normal file
@ -0,0 +1,380 @@
|
||||
;
|
||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||
|
||||
|
||||
; [ ] free zx pages!
|
||||
IF FREE_ZX_PAGES
|
||||
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
||||
;¢å®¤: ॣ B b3..0:
|
||||
; 0 - ¨¨â ¯ ¬ï⨠Pentagon 128
|
||||
; 1 - ¨¨â ¯ ¬ï⨠Pentagon 512
|
||||
; 2 - ¨¨â ¯ ¬ï⨠Scorpion 256
|
||||
; ॣ B b7:
|
||||
; ¢ë¤¥«¨âì/¢¥àãâì à ¬¡«®ª ¤«ï áâà ¨æ ZX-ROM à §¬¥à®¬ A áâà.
|
||||
;¢ë室: CF = 0: A - ®¬¥à à ¬¡«®ª ¥á«¨ âॡ®¢ «áï
|
||||
; CF = 1: A - ®¬¥à ®è¨¡ª¨
|
||||
MANAGE_ZX_PAGES:
|
||||
|
||||
|
||||
.GET_SCORP: IN A,(SLOT3)
|
||||
PUSH AF
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
LD DE,SYS_PAGE.SHARED_BUFFER_256b
|
||||
LD BC,SYS_PAGE.RAMD_FAT.Size
|
||||
LDIR
|
||||
DEC H
|
||||
XOR A
|
||||
; ‡ ¯®«¨âì RAMD_FAT
|
||||
; A = 0
|
||||
.loop2: DEC L
|
||||
CP (HL)
|
||||
JR NZ,.loop2
|
||||
;
|
||||
.check_barred_pages:
|
||||
; ¯à®¢¥àª ¥à §à¥èñë¥ áâà ¨æë
|
||||
EX AF,AF'
|
||||
LD A,L
|
||||
CP RESET_PAGE
|
||||
JR C,.good_page
|
||||
JR NZ,.check_isa_page
|
||||
DEC L
|
||||
JR .good_page
|
||||
.check_isa_page: ;
|
||||
AND #F0
|
||||
XOR #D0 ; áâà ¨æë ISA #D0..#DF
|
||||
JR NZ,.good_page
|
||||
LD L,#D0 - 1
|
||||
.good_page: EX AF,AF'
|
||||
;
|
||||
LD (HL),C
|
||||
LD C,L
|
||||
DJNZ .loop2
|
||||
; L = 㪠§ â¥«ì æ¥¯®çª¨.
|
||||
;
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,L
|
||||
AND A
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
ENDIF
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;!TODO § ¤¥©á⢮¢ âì
|
||||
GOTO_SPEC: IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,B
|
||||
LD (SYS_PAGE.CONFIG_DE+1),A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
|
||||
;NO_SETUP_2: CP #FC
|
||||
; JR Z,SPECTRUM_0 ; Ю䍣ãà æ¨ï AY
|
||||
|
||||
;NO_SETUP_1:
|
||||
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
||||
.ZX_MODE: LD A,#FE ; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE
|
||||
LD BC,Port_All_Mode
|
||||
OUT (C),A
|
||||
LD SP,#C000
|
||||
;
|
||||
CALL FN_SYNC.INT_PENT
|
||||
CALL SET_TXT_PALETTE.ZX
|
||||
;
|
||||
LD E,0
|
||||
CALL LP_SET_32
|
||||
;
|
||||
LD E,0
|
||||
LD HL,#5104
|
||||
CALL LP_SET_32.X
|
||||
|
||||
; ????? ¬®¦® ¨á¯®«ì§®¢ âì ª®£¤ -¨¡ã¤ì ª ª-¨¡ã¤ì
|
||||
; LD D,#35
|
||||
; CALL CMOS_RD
|
||||
; BIT 0,A
|
||||
; PUSH AF
|
||||
; CALL Z,SPRINTER_1
|
||||
; POP AF
|
||||
; PUSH AF
|
||||
; CALL NZ,AY8910
|
||||
; POP AF
|
||||
|
||||
.TASK_0: XOR A ; § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
||||
.START_TASK: LD IX,.BASIC_128
|
||||
JP INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
||||
;
|
||||
;start_basic:
|
||||
.BASIC_128: LD SP,#C000
|
||||
LD HL,RES128_PROG
|
||||
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë BASIC-¥.
|
||||
LD BC,RES128_PROG.Size
|
||||
LDIR
|
||||
DI
|
||||
JP ZX_VARS.PRINTER_BUFFER
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;
|
||||
;>$< >$< >$< >$< >$< >$< [ <20>…<EFBFBD>…Œ…™€…Œ€Ÿ ‚ އ“ ] >$< >$< >$< >$< >$< >$< ;
|
||||
|
||||
;--------[ <20>à®£à ¬¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠Spectrum ]--------;
|
||||
RES128_PROG:
|
||||
DISP ZX_VARS.PRINTER_BUFFER ;#5B00
|
||||
LD A,ROM.BIOS
|
||||
OUT (SYS_PORT.RAM),A ; ‚®§¢à â ¢ 128k ROM
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD DE,(SYS_PAGE.CONFIG_DE)
|
||||
XOR A
|
||||
LD (SYS_PAGE.CONFIG_DE+1),A
|
||||
OUT (C),B
|
||||
|
||||
LD BC,#1FFD
|
||||
OUT (C),A ; Scorp ¯®àâ
|
||||
LD B,#7F
|
||||
OUT (C),A ; 128 ¯®àâ
|
||||
|
||||
LD A,E ; ãáâ ®¢ª ª®ä¨£ãà æ¨¨ ¨ ०¨¬ TURBO
|
||||
OUT (SYS_PORT.RAM),A ; CONFIG_SET
|
||||
|
||||
INC D
|
||||
DEC D
|
||||
; 0 ‚•Ž„ ‚ BASIC-128
|
||||
JP Z,0
|
||||
; 1 ‚•Ž„ ‚ BASIC-48
|
||||
LD A,#10
|
||||
OUT (C),A
|
||||
DEC D
|
||||
JP Z,0
|
||||
; 2 ‚•Ž„ ‚ TR-DOS
|
||||
LD HL,0
|
||||
PUSH HL
|
||||
DEC D
|
||||
JP Z,#3D29
|
||||
; 3 ‚•Ž„ ‚ EXPANSION
|
||||
;!TODO ¯®ª ¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0
|
||||
XOR A
|
||||
OUT (C),A
|
||||
LD A,#02
|
||||
LD B,#1F
|
||||
OUT (C),A
|
||||
DEC D
|
||||
JP Z,0
|
||||
;
|
||||
XOR A
|
||||
OUT (C),A
|
||||
LD A,#30
|
||||
LD B,#7F
|
||||
OUT (C),A
|
||||
;!TEST
|
||||
LD A,CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET
|
||||
OUT (CNF_PORT.OFF),A
|
||||
;
|
||||
DEC D
|
||||
; 4 ‚•Ž„ ‚ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
|
||||
JP Z,#3D29
|
||||
; 5 ‚•Ž„ ‚ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
|
||||
JP 0
|
||||
ENT
|
||||
.Size EQU $-RES128_PROG
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;*****************************************
|
||||
;
|
||||
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ¤«ï
|
||||
; ᯥªâà㬮¢áª®£® ०¨¬ ¨
|
||||
; ¢®ááâ ®¢«¥¨¥ ᯥªâà㬮¢áª®£®
|
||||
; íªà
|
||||
;
|
||||
; ‚®§¢à â ¯® IX
|
||||
;
|
||||
; !!! NO USE STACK !!!
|
||||
;
|
||||
;*****************************************
|
||||
;!TODO
|
||||
; ¨¨æ¨ «¨§ æ¨ï áâà ¨æ zx spectrum
|
||||
INIT_PAGES:
|
||||
AND A
|
||||
LD E,A
|
||||
EX AF,AF'
|
||||
LD A,E
|
||||
|
||||
; BIT 7,A
|
||||
; JR Z,SCORPION_256_MODE
|
||||
; BIT 6,A
|
||||
; JR Z,PENTAGON_128_MODE
|
||||
;
|
||||
;PENTAGON_48_MODE:
|
||||
; AND #3C
|
||||
; OUT (SLOT0),A
|
||||
; INC A
|
||||
; OUT (SLOT1),A
|
||||
; INC A
|
||||
; OUT (SLOT2),A
|
||||
; INC A
|
||||
; LD D,A
|
||||
; LD BC,#1FFD
|
||||
; XOR A
|
||||
; OUT (C),A
|
||||
; LD B,#7F
|
||||
; OUT (C),A
|
||||
; LD A,D
|
||||
; OUT (SLOT3),A
|
||||
; JR INIT_VIDEO_REG
|
||||
;
|
||||
;
|
||||
; PENTAGON_128_MODE:
|
||||
; LD D,8
|
||||
; AND #38
|
||||
; JR ALL_MODE
|
||||
|
||||
SCORPION_256_MODE:
|
||||
LD D,16
|
||||
AND #30 ; ¤® 4-å ᯥªâà㬮¢
|
||||
|
||||
ALL_MODE:
|
||||
OUT (SLOT0),A
|
||||
XOR 5
|
||||
OUT (SLOT1),A
|
||||
XOR 7
|
||||
OUT (SLOT2),A
|
||||
OR #0F
|
||||
LD E,A
|
||||
|
||||
.loop: DEC D
|
||||
|
||||
LD A,D
|
||||
RLCA
|
||||
AND #10
|
||||
LD BC,#1FFD
|
||||
OUT (C),A
|
||||
|
||||
LD A,D
|
||||
AND 7
|
||||
OR #40
|
||||
LD B,#7F
|
||||
OUT (C),A
|
||||
|
||||
LD A,E
|
||||
OUT (SLOT3),A
|
||||
DEC E
|
||||
|
||||
DEC D
|
||||
INC D
|
||||
JR NZ,.loop
|
||||
|
||||
INIT_VIDEO_REG:
|
||||
XOR A
|
||||
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
||||
; OUT (RGSCR),A ; ॣ¨áâà íªà
|
||||
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
||||
|
||||
;!TEST
|
||||
; Restore old Spectrum Screen
|
||||
;; LD HL,#4000
|
||||
;; LD DE,#4000
|
||||
;; LD BC,#1B00
|
||||
;; LDIR
|
||||
|
||||
; EX AF,AF'
|
||||
; BIT 6,A
|
||||
; JR NZ,NO_SCREEN_ALT
|
||||
|
||||
; EX AF,AF'
|
||||
|
||||
; LD A,7 ; á¥¤ì¬ ï íªà ï áâà ¨æ
|
||||
; LD BC,#7FFD
|
||||
; OUT (C),A
|
||||
|
||||
; Restore old Spectrum Screen 2
|
||||
;; LD HL,#C000
|
||||
;; LD DE,#C000
|
||||
;; LD BC,#1B00
|
||||
;; LDIR
|
||||
|
||||
; XOR A
|
||||
; LD BC,#7FFD
|
||||
; OUT (C),A
|
||||
;
|
||||
|
||||
EX AF,AF'
|
||||
NO_SCREEN_ALT:
|
||||
AND A
|
||||
JP (IX)
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------;
|
||||
;-------------[RST 08]
|
||||
RAM_BIOS_PROG: ; for CALL BIOS in #41 page
|
||||
DISP Spec_Page.to_bios
|
||||
PUSH AF
|
||||
LD A,ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
POP AF
|
||||
RET
|
||||
ENT
|
||||
.Length EQU $-RAM_BIOS_PROG
|
||||
;-------------------[]
|
||||
;
|
||||
;-------------[RST 38]
|
||||
PROG_NO_ROM:
|
||||
DISP Spec_Page.no_zx_rom
|
||||
DI
|
||||
;
|
||||
LD A,#FF
|
||||
OUT (SLOT3),A
|
||||
OUT (SLOT2),A
|
||||
OUT (SLOT1),A
|
||||
;
|
||||
LD SP,#BF00
|
||||
;
|
||||
LD E,0
|
||||
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
|
||||
RST ToBIOS
|
||||
;
|
||||
LD DE,0
|
||||
LD HL,#2050
|
||||
LD C,BIOS.LP_CLS_WIN
|
||||
RST ToBIOS
|
||||
; set scr-2
|
||||
LD A,1
|
||||
OUT (SCREEN_SWITCH),A
|
||||
;
|
||||
LD HL,MESSAGE_NR
|
||||
LD DE,#A000
|
||||
LD BC,MESSAGE_NR.size
|
||||
LD A,C
|
||||
LDIR
|
||||
;
|
||||
LD HL,#A000
|
||||
LD D,0 ; delimiter
|
||||
LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED
|
||||
LD B,A
|
||||
LD C,BIOS.LP_PRINT_LINE3
|
||||
RST ToBIOS
|
||||
;
|
||||
.loop: DI
|
||||
HALT
|
||||
JR .loop
|
||||
;
|
||||
MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET"
|
||||
.size EQU $-MESSAGE_NR
|
||||
ENT
|
||||
PROG_NO_ROM.size EQU $-PROG_NO_ROM
|
||||
;-------------------[]
|
||||
;-----------------------------------------------------------------------;
|
||||
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
|
||||
;
|
||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||
;
|
||||
@ -52,8 +52,8 @@ Raster:
|
||||
INCBIN 'Build/Bin/LOGO_DAT.BIN'
|
||||
.length EQU $-Raster
|
||||
|
||||
/*
|
||||
IF Pashalki
|
||||
; !TODO ᤥ« вм вгв в Ў«ЁзЄг-ббл«ЄЁ г¦го в Ў«Ёжг бЇа ©в®ў Ё § ўп§ вм нв® ¤ вл
|
||||
|
||||
|
||||
MACRO _PASHALKI_CODE
|
||||
@ -106,7 +106,6 @@ NewYear: INCLUDE './src/bios/logo/use/New_Year.inc'
|
||||
|
||||
ENDIF
|
||||
|
||||
/*
|
||||
|
||||
and a
|
||||
ld b,0
|
||||
|
||||
@ -177,7 +177,7 @@ TASK_SWITCH:
|
||||
LD A,C ; § ¤ ç
|
||||
LD (IX),A ; ãáâ ®¢¨âì ®¢ãî § ¤ çã ⥪ã饩
|
||||
|
||||
JP SPECTRUM_TASK ; § Żăáâ¨âě Ž˘ăî § ¤ çă!
|
||||
JP GOTO_SPEC.START_TASK ; § ¯ãáâ¨âì ®¢ãî § ¤ çã!
|
||||
; ; ¨ ¯®ª ¯®ä¨£ à á¯à¥¤¥«¥¨¥ ¯ ¬ïâ¨!
|
||||
|
||||
TASK_SET:
|
||||
|
||||
@ -1,15 +1,17 @@
|
||||
;=======================[All shared EQUs]=======================;
|
||||
BETA_BUILD EQU 6 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||
BETA_BUILD EQU 7 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||
;======================[All shared defines]=====================;
|
||||
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
||||
DEFINE SP2000_Loader_Flag #0107 ;
|
||||
DEFINE IDE_Optimization 1 ; á«¥£ª ®¯â¨¬¨§¨àã¥â ¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD
|
||||
DEFINE NeedSafePort_Y 1 ; ¥á«¨ 0, â® ¢ ०¨¬¥ ¡¥§ ªá¥«ï ¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà
|
||||
DEFINE Pashalki 0 ;
|
||||
DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' ;
|
||||
DEFINE StandartCGApallete 1 ; <20>®¤ª«îç âì ¯ «¨âàã ¨§ standart_colors.inc
|
||||
DEFINE BitStream_SizeInPages 4 ;
|
||||
DEFINE USE_E1_SCANCODE 0 ;
|
||||
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ¥¬®£® § å प®¦¥ë© ¢ ਠâ. 2 - ¡®«¥¥ "¯à ¢¨«ìë©"
|
||||
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤ë© à ¬¤¨áª, ¥á«¨ ¥â, â® ¢ 15-ë©
|
||||
DEFINE FREE_ZX_PAGES 0 ; 1 - ®á¢®¡®¤¨âì áâà ¨æë ᯥªâà㬠;!TODO
|
||||
;----[ ‡ ¤¥à¦ª ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯ (0 = 256) ]---;
|
||||
DEFINE LOGO_DELAY_MIN 25 ;
|
||||
DEFINE LOGO_DELAY_NORM 100 ;
|
||||
@ -18,8 +20,6 @@ BETA_BUILD EQU 6 ;
|
||||
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
||||
DEFINE NEW_FEATURE 0 ; !TODO ¯ãªâë ¢ á¥â ¯
|
||||
DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª ¤«ï äãªæ¨© 5x
|
||||
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ¥¬®£® § å प®¦¥ë© ¢ ਠâ. 2 - ¡®«¥¥ "¯à ¢¨«ìë©"
|
||||
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤ë© à ¬¤¨áª, ¥á«¨ ¥â, â® ¢ 15-ë©
|
||||
DEFINE FDD_NormalCount 0 ; !TODO
|
||||
DEFINE UnusedSettingsFeatures 0 ;
|
||||
;===============================================================;
|
||||
Binary file not shown.
@ -1,9 +1,6 @@
|
||||
;
|
||||
;---------[All shared includes]---------
|
||||
INCLUDE 'src/bios/shared/DEFINES.INC' ; Shared defines
|
||||
IF Pashalki
|
||||
INCLUDE 'Shared_Includes/structures/EasterSprites.inc'
|
||||
ENDIF
|
||||
INCLUDE 'Shared_Includes/structures/FileSystem.inc'
|
||||
INCLUDE 'src/bios/Loader/Loader.asm' ; Bitstream loader as macros
|
||||
INCLUDE 'src/bios/shared/CompMacro.asm' ; ¬ ªà®áë
|
||||
|
||||
Loading…
Reference in New Issue
Block a user