Doing interrupt sheme
This commit is contained in:
parent
e8e15b65cb
commit
36e3be6eb0
@ -1 +1 @@
|
||||
Subproject commit 38c3f62f6d7fa9f4c977eb23e3ff9ea7bf3638f0
|
||||
Subproject commit 520455dbdc4c10f1850fd697aa5be4703d6cfd27
|
||||
@ -71,6 +71,35 @@ RST_30:
|
||||
BLOCK #38-$,0
|
||||
; INTERUPT Point
|
||||
RST38:
|
||||
IF TEST_INT
|
||||
;INT:
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
|
||||
LD A,(SYS_PAGE.INT_ID)
|
||||
CP #AA
|
||||
JR Z,YESINT
|
||||
OUT (C),B
|
||||
JR NOINT
|
||||
YESINT: PUSH HL
|
||||
LD HL,(SYS_PAGE.INT_ADRESS)
|
||||
LD A,H
|
||||
OR L
|
||||
LD A,(SYS_PAGE.INT_PAGE)
|
||||
OUT (C),B
|
||||
PUSH DE
|
||||
CALL NZ,EXTINT
|
||||
POP DE
|
||||
POP HL
|
||||
NOINT: POP AF
|
||||
POP BC
|
||||
ENDIF
|
||||
|
||||
EI
|
||||
RETI
|
||||
|
||||
@ -81,10 +110,11 @@ RST38:
|
||||
|
||||
|
||||
;=======================================
|
||||
IFN TEST_INT
|
||||
_mInfoALIGN #10,0
|
||||
;TABLE_X EQU #A0 ; any adress < #C0 with mask %xxxx0000
|
||||
; BLOCK TABLE_X-$
|
||||
TABLE_X: ; â ¡«¨æ ¤«ï Sprinter POST-Tester-a
|
||||
; any adress < #C0 with mask %xxxx0000
|
||||
; â ¡«¨æ ¤«ï Sprinter POST-Tester-a
|
||||
TABLE_X:
|
||||
.v0: DB 00101000b ; "0"
|
||||
.v1: DB 10111101b ; "1"
|
||||
.v2: DB 00110010b ; "2"
|
||||
@ -101,7 +131,13 @@ TABLE_X: ; ⠡
|
||||
.vD: DB 10110000b ; "D"
|
||||
.vE: DB 01100010b ; "E"
|
||||
.vF: DB 01100011b ; "F"
|
||||
ENDIF
|
||||
;=======================================
|
||||
;
|
||||
|
||||
;
|
||||
;=======================================
|
||||
IFN TEST_INT
|
||||
RESTARTS EQU #FFE0 ; !FIXIT ¢ë¥á⨠¢ SP2000.inc
|
||||
GLOBAL_RESET:
|
||||
DI
|
||||
@ -117,16 +153,15 @@ GLOBAL_RESET:
|
||||
INC DE
|
||||
DJNZ .compare
|
||||
JP RESTARTS
|
||||
ENDIF
|
||||
;=======================================
|
||||
_mInfoBLOCK #66-$,0
|
||||
|
||||
NMI_Point:
|
||||
; १¥à¢ 3 ¡ ©â ¤«ï ª®¬ ¤ë JP
|
||||
;NOP
|
||||
;NOP
|
||||
;NOP
|
||||
RETN
|
||||
|
||||
;=======================================
|
||||
|
||||
;SET_BIOS_TO_RAM: ; ¯à®£à ¬¬ à ¡®â ¥â ¤à¥á¥ 0C000h
|
||||
@ -196,24 +231,56 @@ BoardID:
|
||||
; BLOCK #100-$,0
|
||||
|
||||
|
||||
; RESTARTS EQU #FFE0 ; !FIXIT ¢ë¥á⨠¢ SP2000.inc
|
||||
; GLOBAL_RESET:
|
||||
; DI
|
||||
; IM 1
|
||||
; LD HL,RESTARTS
|
||||
; LD DE,RESTARTS_PROG
|
||||
; LD B,RESTARTS_PROG.Size
|
||||
; .compare:
|
||||
; LD A,(DE)
|
||||
; CP (HL)
|
||||
; JR NZ,NO_RESTART
|
||||
; INC HL
|
||||
; INC DE
|
||||
; DJNZ .compare
|
||||
; JP RESTARTS
|
||||
|
||||
;-----[¯¥à¥å¢ â RESET ¥ á®áâ®ï«áï]-----
|
||||
;=======================================
|
||||
IF TEST_INT
|
||||
_mInfoALIGN #10,0
|
||||
; any adress < #C0 with mask %xxxx0000
|
||||
; â ¡«¨æ ¤«ï Sprinter POST-Tester-a
|
||||
TABLE_X: ; â ¡«¨æ ¤«ï Sprinter POST-Tester-a
|
||||
.v0: DB 00101000b ; "0"
|
||||
.v1: DB 10111101b ; "1"
|
||||
.v2: DB 00110010b ; "2"
|
||||
.v3: DB 00110100b ; "3"
|
||||
.v4: DB 10100101b ; "4"
|
||||
.v5: DB 01100100b ; "5"
|
||||
.v6: DB 01100000b ; "6"
|
||||
.v7: DB 00111101b ; "7"
|
||||
.v8: DB 00100000b ; "8"
|
||||
.v9: DB 00100100b ; "9"
|
||||
.vA: DB 00100001b ; "A"
|
||||
.vB: DB 11100000b ; "B"
|
||||
.vC: DB 01101010b ; "C"
|
||||
.vD: DB 10110000b ; "D"
|
||||
.vE: DB 01100010b ; "E"
|
||||
.vF: DB 01100011b ; "F"
|
||||
ENDIF
|
||||
;=======================================
|
||||
;
|
||||
|
||||
;
|
||||
;=======================================
|
||||
IF TEST_INT
|
||||
RESTARTS EQU #FFE0 ; !FIXIT ¢ë¥á⨠¢ SP2000.inc
|
||||
GLOBAL_RESET:
|
||||
DI
|
||||
IM 1
|
||||
LD HL,RESTARTS
|
||||
LD DE,RESTARTS_PROG
|
||||
LD B,RESTARTS_PROG.Size
|
||||
.compare:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
JR NZ,NO_RESTART
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .compare
|
||||
JP RESTARTS
|
||||
ENDIF
|
||||
;=======================================
|
||||
;
|
||||
|
||||
;
|
||||
;-----[¯¥à¥å¢ â RESET ¥ á®áâ®ï«áï]-----
|
||||
NO_RESTART:
|
||||
; á⥪ ¥éñ ¥ ¨á¯®«ì§ã¥¬!!!
|
||||
LD SP,IX ; á®åà ¨âì § 票¥ ¯¥à¥¤ ®¥ § £àã§ç¨ª®¬ ª®äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
|
||||
@ -249,6 +316,87 @@ NO_RESTART:
|
||||
; no boundary set!
|
||||
;
|
||||
|
||||
;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
|
||||
IF TEST_INT
|
||||
;!FIXIT ¯¥à¥¥á⨠¢ ROM.BIOS ¨ ᤥ« âì
|
||||
; â ª, ç⮡ ¬®£« ¯à ¢¨«ì® ¯àë£ âì ¢
|
||||
; «î¡ë¥ á«®âë ¨ à ¡®â âì á DSS
|
||||
;----------------[int]------------------
|
||||
EXTINT: OR A
|
||||
RET Z
|
||||
|
||||
;LD C,SLOT1
|
||||
BIT 7,H
|
||||
JR Z,.L2
|
||||
LD C,SLOT2
|
||||
BIT 6,H
|
||||
JR Z,.L1
|
||||
LD C,SLOT3
|
||||
|
||||
.L1: IN B,(C)
|
||||
PUSH BC
|
||||
OUT (C),A
|
||||
CALL .JPHL
|
||||
POP BC
|
||||
OUT (C),B
|
||||
RET
|
||||
; ¯à®¢¥àª ã«¥¢®© á«®â
|
||||
.L2: BIT 6,H
|
||||
LD C,SLOT1
|
||||
JR NZ,.L1 ; ¯à®¤®«¦ ¥¬ ¥á«¨ ¥ã«¥¢®© á«®â
|
||||
|
||||
PUSH HL
|
||||
|
||||
LD HL,-.stackDepth - .switchProcedure.size + .patch-2
|
||||
ADD HL,SP
|
||||
PUSH HL
|
||||
|
||||
LD HL,-.stackDepth - .switchProcedure.size ; memory stack use!
|
||||
ADD HL,SP ; stack
|
||||
PUSH HL ; ¤à¥á ¯à®£à ¬¬ë .readProcedure
|
||||
|
||||
LD DE,.switchProcedure ; ¯¥à¥¥á⨠¯à®£à ¬¬ã á⥪
|
||||
EX DE,HL
|
||||
LD BC,.switchProcedure.size
|
||||
LDIR
|
||||
RET
|
||||
|
||||
; ¯à®æ¥¤ãà , ¯¥à¥®á¨¬ ï á⥪ ¤«ï ¢ë§®¢ ¯à¥àë¢ ¨ï ¯®«ì§®¢ â¥«ï ¨§ SLOT0
|
||||
; ®áâ®à®¦¥¥ á PUSH, ¥á«¨ ¤® ¬®£®, ⮠㢥«¨ç¨¢ © .stackDepth
|
||||
.switchProcedure:
|
||||
DEC DE
|
||||
POP HL
|
||||
LD (HL),E
|
||||
INC HL
|
||||
LD (HL),D
|
||||
|
||||
LD C,SLOT0
|
||||
IN B,(C)
|
||||
POP HL
|
||||
PUSH BC
|
||||
OUT (C),A
|
||||
|
||||
XOR A
|
||||
OUT (SYS_PORT.RAM),A
|
||||
|
||||
.patch EQU $+1-.switchProcedure
|
||||
CALL .JPHL
|
||||
|
||||
DI
|
||||
|
||||
XOR A
|
||||
OUT (SYS_PORT.ROM),A
|
||||
|
||||
POP BC
|
||||
OUT (C),B
|
||||
|
||||
RET
|
||||
.JPHL: JP (HL)
|
||||
.stackDepth EQU 32 ; à ááâ®ï¨¥ ®â ª®æ ¯à®æ¥¤ãàë ¤® ¢¥àè¨ë á⥪ .
|
||||
.switchProcedure.size EQU $-.switchProcedure
|
||||
ENDIF
|
||||
;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
|
||||
|
||||
|
||||
; ==== POST PROCs =================
|
||||
MODULE POST_TEST
|
||||
@ -938,7 +1086,7 @@ DCP_DATA: INCLUDE 'DCP.ASM'
|
||||
; #::::::::::::::::::::::::::::::::::#\
|
||||
; ####################################\
|
||||
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||
ZG_ADRESS: INCLUDE 'FONT.ASM'
|
||||
ZG_ADDRESS: INCLUDE 'FONT.ASM'
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ CMOS_EMU_RD:
|
||||
LD E,SYS_PAGE
|
||||
OUT (C),E
|
||||
LD E,D
|
||||
LD D,#FF
|
||||
LD D, high SYS_PAGE.CMOS_EMULATOR
|
||||
LD A,(DE)
|
||||
OUT (C),B
|
||||
|
||||
|
||||
@ -860,7 +860,7 @@ LP_BEG_P:
|
||||
; program init registers
|
||||
; for low printer & save
|
||||
WIN_GET_ZG: ; DE - ¤à¥á ªã¤ ¯¥à¥á« âì ä®â
|
||||
LD HL,ZG_ADRESS
|
||||
LD HL,ZG_ADDRESS
|
||||
LD BC,#0800
|
||||
LDIR
|
||||
AND A
|
||||
|
||||
@ -159,7 +159,7 @@ INIT_SYS_ALL:
|
||||
LD (HL),0
|
||||
LDIR
|
||||
|
||||
LD DE,ZG_ADRESS ; ¤à¥á § ª®£¥¥à â®à
|
||||
LD DE,ZG_ADDRESS ; ¤à¥á § ª®£¥¥à â®à
|
||||
LD (SYS_PAGE.WIN_ZG-#4000),DE
|
||||
;
|
||||
;-----------[new code start]------------ ; !!!!! ¯®á¬®âà¥âì-¯à¨ç¥á âì
|
||||
|
||||
@ -16,29 +16,29 @@ Check_Sum:
|
||||
;!TODO ¯à¨ªàãâ¨âì ª ROM.BIOS
|
||||
;----------------[int]------------------
|
||||
BLOCK #38-$,#FF
|
||||
INT: PUSH BC
|
||||
PUSH AF
|
||||
; INT: PUSH BC
|
||||
; PUSH AF
|
||||
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
; LD C,SLOT3
|
||||
; IN B,(C)
|
||||
; LD A,SYS_PAGE
|
||||
; OUT (C),A
|
||||
|
||||
LD A,(SYS_PAGE.INT_ID)
|
||||
CP #AA
|
||||
JR Z,YESINT
|
||||
OUT (C),B
|
||||
JR NOINT
|
||||
YESINT: PUSH HL
|
||||
LD HL,(SYS_PAGE.INT_ADRESS)
|
||||
LD A,H
|
||||
OR L
|
||||
LD A,(SYS_PAGE.INT_PAGE)
|
||||
OUT (C),B
|
||||
CALL NZ,EXTINT
|
||||
POP HL
|
||||
NOINT: POP AF
|
||||
POP BC
|
||||
; LD A,(SYS_PAGE.INT_ID)
|
||||
; CP #AA
|
||||
; JR Z,YESINT
|
||||
; OUT (C),B
|
||||
; JR NOINT
|
||||
; YESINT: PUSH HL
|
||||
; LD HL,(SYS_PAGE.INT_ADRESS)
|
||||
; LD A,H
|
||||
; OR L
|
||||
; LD A,(SYS_PAGE.INT_PAGE)
|
||||
; OUT (C),B
|
||||
; CALL NZ,EXTINT
|
||||
; POP HL
|
||||
; NOINT: POP AF
|
||||
; POP BC
|
||||
EI
|
||||
RETI
|
||||
;---------------------------------------
|
||||
@ -48,41 +48,97 @@ NOINT: POP AF
|
||||
NMI: RETN
|
||||
;---------------------------------------
|
||||
|
||||
;!FIXIT ¯¥à¥¥á⨠¢ ROM.BIOS ¨ ᤥ« âì
|
||||
; â ª, ç⮡ ¬®£« ¯à ¢¨«ì® ¯àë£ âì ¢
|
||||
; «î¡ë¥ á«®âë ¨ à ¡®â âì á DSS
|
||||
;----------------[int]------------------
|
||||
EXTINT: OR A
|
||||
RET Z
|
||||
; ;!FIXIT ¯¥à¥¥á⨠¢ ROM.BIOS ¨ ᤥ« âì
|
||||
; ; â ª, ç⮡ ¬®£« ¯à ¢¨«ì® ¯àë£ âì ¢
|
||||
; ; «î¡ë¥ á«®âë ¨ à ¡®â âì á DSS
|
||||
; ;----------------[int]------------------
|
||||
; EXTINT: OR A
|
||||
; RET Z
|
||||
|
||||
; ;LD C,SLOT1
|
||||
; BIT 7,H
|
||||
; JR Z,.L2
|
||||
; LD C,SLOT2
|
||||
; BIT 6,H
|
||||
; JR Z,.L1
|
||||
; LD C,SLOT3
|
||||
|
||||
; .L1: IN B,(C)
|
||||
; PUSH BC
|
||||
; OUT (C),A
|
||||
; CALL .JPHL
|
||||
; POP BC
|
||||
; OUT (C),B
|
||||
; RET
|
||||
; ; ¯à®¢¥àª ã«¥¢®© á«®â
|
||||
; .L2: BIT 6,H
|
||||
; LD C,SLOT1
|
||||
BIT 7,H
|
||||
JR Z,.L2
|
||||
LD C,SLOT2
|
||||
BIT 6,H
|
||||
JR Z,.L1
|
||||
LD C,SLOT3
|
||||
; JR NZ,.L1 ; ¯à®¤®«¦ ¥¬ ¥á«¨ ¥ã«¥¢®© á«®â
|
||||
; ; ‚Ž’ ’“’ ŒŽ†<C5BD>Ž ‚‹“<E280B9>ˆ’œ <20><>Ž–…„“<E2809E>“ „‹Ÿ <20>Ž„‘’€<E28099>Ž‚Šˆ ‘’<E28098>€<EFBFBD>ˆ–› ‚ SLOT0 ˆ
|
||||
; ; <20>…<EFBFBD>…•Ž„ <20>Ž <20><>…<EFBFBD>›‚€<E2809A>ˆž ‚ Ž<><C5BD>€<EFBFBD>Ž’—ˆŠ <20>Ž‹œ‡Ž‚€’…‹Ÿ —…<E28094>…‡ ¯à®æ¥¤ãàã áâíª, ¯à¨¬¥à
|
||||
|
||||
.L1: IN B,(C)
|
||||
PUSH BC
|
||||
OUT (C),A
|
||||
CALL JPHL
|
||||
POP BC
|
||||
OUT (C),B
|
||||
RET
|
||||
; ¯à®¢¥àª ã«¥¢®© á«®â
|
||||
.L2: BIT 6,H
|
||||
LD C,SLOT1
|
||||
JR NZ,.L1 ; ¯à®¤®«¦ ¥¬ ¥á«¨ ¥ã«¥¢®© á«®â
|
||||
; ‚Ž’ ’“’ ŒŽ†<C5BD>Ž ‚‹“<E280B9>ˆ’œ <20><>Ž–…„“<E2809E>“ „‹Ÿ <20>Ž„‘’€<E28099>Ž‚Šˆ ‘’<E28098>€<EFBFBD>ˆ–› ‚ SLOT0 ˆ
|
||||
; <20>…<EFBFBD>…•Ž„ <20>Ž <20><>…<EFBFBD>›‚€<E2809A>ˆž ‚ Ž<><C5BD>€<EFBFBD>Ž’—ˆŠ <20>Ž‹œ‡Ž‚€’…‹Ÿ —…<E28094>…‡ ¯à®æ¥¤ãàã áâíª, ¯à¨¬¥à
|
||||
SCF
|
||||
RET
|
||||
JPHL: JP (HL)
|
||||
|
||||
; IF TEST_INT
|
||||
; LD HL,-.stackDepth - .switchProcedure.size + .patch+2
|
||||
; ADD HL,SP
|
||||
; PUSH HL
|
||||
|
||||
; LD HL,-.stackDepth - .switchProcedure.size ; memory stack use!
|
||||
; ADD HL,SP ; stack
|
||||
; PUSH HL ; ¤à¥á ¯à®£à ¬¬ë .readProcedure
|
||||
|
||||
; LD DE,.switchProcedure ; ¯¥à¥¥á⨠¯à®£à ¬¬ã á⥪
|
||||
; EX DE,HL
|
||||
; LD BC,.switchProcedure.size
|
||||
; LDIR
|
||||
; RET
|
||||
|
||||
; ; ¯à®æ¥¤ãà , ¯¥à¥®á¨¬ ï á⥪ ¤«ï ¢ë§®¢ ¯à¥àë¢ ¨ï ¯®«ì§®¢ â¥«ï ¨§ SLOT0
|
||||
; ; ®áâ®à®¦¥¥ á PUSH, ¥á«¨ ¤® ¬®£®, ⮠㢥«¨ç¨¢ © .stackDepth
|
||||
; .switchProcedure:
|
||||
; DEC DE
|
||||
; POP HL
|
||||
; LD (HL),E
|
||||
; INC HL
|
||||
; LD (HL),D
|
||||
|
||||
|
||||
; LD C,SLOT0
|
||||
; IN B,(C)
|
||||
; PUSH BC
|
||||
; OUT (C),A
|
||||
|
||||
; XOR A
|
||||
; OUT (SYS_PORT.RAM),A
|
||||
; .patch EQU $+1-.switchProcedure
|
||||
; CALL .JPHL
|
||||
|
||||
; DI
|
||||
|
||||
; XOR A
|
||||
; OUT (SYS_PORT.ROM),A
|
||||
|
||||
; POP BC
|
||||
; OUT (C),B
|
||||
|
||||
; RET
|
||||
; .JPHL: JP (HL)
|
||||
; .stackDepth EQU 32 ; à ááâ®ï¨¥ ®â ª®æ ¯à®æ¥¤ãàë ¤® ¢¥àè¨ë á⥪ .
|
||||
; .switchProcedure.size EQU $-.switchProcedure
|
||||
; ELSE
|
||||
|
||||
; SCF
|
||||
; RET
|
||||
; .JPHL: JP (HL)
|
||||
; ENDIF
|
||||
;---------------------------------------
|
||||
|
||||
/*
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
;
|
||||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
;---------[All shared defines]----------\/ \/
|
||||
DEFINE DEBUG 1;| ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||
DEFINE NEW_FEATURE 0;| /\ ; !TODO ¯ãªâë ¢ á¥â ¯
|
||||
DEFINE SET_NEWdcp 1;| \/ \/ ; !FIXIT â¥áâ ®¢®£® dcp_init, ¯®ª ¥ £®â®¢ â ¡«¨æ ¯®à⮢
|
||||
DEFINE TEST_INT 1;| \/ \/ ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
||||
DEFINE PACKED_MAIN 0;| | ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
||||
DEFINE SP2000_ConfID #FEFF;| ;
|
||||
DEFINE IDE_Optimization 1;| ; á«¥£ª ®¯â¨¬¨§¨àã¥â ¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD
|
||||
|
||||
Loading…
Reference in New Issue
Block a user