mirror of
https://github.com/romychs/Orion-PRO.git
synced 2025-04-22 13:21:35 +03:00
968 lines
25 KiB
NASM
968 lines
25 KiB
NASM
; =======================================
|
||
; Модуль тестирования компьютера
|
||
; TST02.AS 21.05.96
|
||
; TST03.AS 05.06.96
|
||
; TST.AS 01.06.97
|
||
; V2.10 17.04.00
|
||
; =======================================
|
||
|
||
TSTST EQU TSTR2>=0x8000 ; Признак отладки
|
||
|
||
; Ожидание нажатия клавиш
|
||
WAIT_KEY CALL STTS
|
||
JR NZ,WAIT_KEY
|
||
|
||
WT1 CALL INKEY
|
||
JR C,WT1
|
||
PUSH AF
|
||
CALL BEEP
|
||
|
||
WT2 CALL STTS
|
||
JR NZ,WT2
|
||
POP AF
|
||
CP 0x3
|
||
SCF
|
||
RET Z
|
||
CP 0x1b
|
||
SCF
|
||
RET Z
|
||
OR A
|
||
RET
|
||
|
||
; ---------------------------------------------
|
||
; Вывод большой рамки
|
||
; ---------------------------------------------
|
||
BIGFRM
|
||
LD C,0x1f
|
||
CALL TVSYM
|
||
LD BC,0x0
|
||
LD E,C
|
||
LD D,C
|
||
CALL UGOL
|
||
LD A,0xd
|
||
LD C,0xff
|
||
LD DE,0x17f
|
||
CALL TVGRF
|
||
LD C,0x2
|
||
LD DE,0x3
|
||
PUSH DE
|
||
CALL UGOL
|
||
LD A,0xd
|
||
LD BC,0xfd
|
||
LD DE,0x17c
|
||
CALL TVGRF
|
||
POP DE
|
||
LD BC,27
|
||
CALL UGOL
|
||
LD DE,380
|
||
LINEX
|
||
LD A,7
|
||
LD L,R2SEG
|
||
JP TVGRF
|
||
UGOL
|
||
LD A,0x5
|
||
JP TVGRF
|
||
|
||
; ---------------------------------------------
|
||
; Очистка средней части экрана
|
||
; ---------------------------------------------
|
||
WINCLR
|
||
LD BC,0xb432
|
||
LD DE,0x14
|
||
LD HL,0x154
|
||
CALL SETWIN ;undefined SETWIN()
|
||
LD A,0x12
|
||
CALL TVSCR
|
||
FULSCR
|
||
LD BC,0x0
|
||
LD E,C
|
||
LD D,C
|
||
LD HL,0x180
|
||
|
||
SETWIN
|
||
LD A,0x10
|
||
JP TVSCR
|
||
INVON DB -1BH,-'6',0
|
||
INVOF DB -1BH,-'7',0
|
||
CUROH DB -1BH,-'<',0
|
||
CUROF DB -1BH,-';',0
|
||
|
||
;Вывод пункта меню
|
||
PUNKT
|
||
PUSH BC
|
||
PUSH HL
|
||
LD L,(IX+R2SEG)
|
||
LD H,(IX+0x2)
|
||
LD E,(IX+0x3)
|
||
LD D,(IX+0x4)
|
||
INC C
|
||
PNKT1
|
||
DEC C
|
||
JR Z,PNKT3
|
||
EX DE,HL
|
||
PNKT2
|
||
LD B,(HL)
|
||
INC HL
|
||
INC B
|
||
DJNZ PNKT2
|
||
EX DE,HL
|
||
INC H
|
||
JR PNKT1
|
||
PNKT3
|
||
PUSH AF
|
||
CALL SCUR
|
||
POP AF
|
||
OR A
|
||
LD HL,INVON
|
||
CALL NZ,MSGXX
|
||
EX DE,HL
|
||
CALL MSGXX
|
||
LD HL,INVOF
|
||
CALL MSGXX
|
||
POP HL
|
||
POP BC
|
||
RET
|
||
MENU
|
||
LD B,(IX+0x0)
|
||
LD C,0x0
|
||
MNU1 XOR A
|
||
CALL PUNKT
|
||
INC C
|
||
DJNZ MNU1
|
||
;
|
||
MNU2 LD C,(HL)
|
||
LD A,0xff
|
||
CALL PUNKT
|
||
PUSH HL
|
||
LD HL,CUROF
|
||
CALL MSGXX
|
||
CALL KBRD
|
||
PUSH AF
|
||
LD HL,CUROH
|
||
CALL MSGXX
|
||
XOR A
|
||
CALL PUNKT
|
||
POP AF
|
||
POP HL
|
||
CP 0x1B
|
||
SCF
|
||
RET Z
|
||
;
|
||
CP 0x3
|
||
SCF
|
||
RET Z
|
||
;
|
||
CP 0xd
|
||
JR NZ,MNU3
|
||
LD A,(HL)
|
||
ADD A,A
|
||
LD E,A
|
||
LD D,0x0
|
||
LD L,(IX+0x5)
|
||
LD H,(IX+0x6)
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
INC HL
|
||
LD H,(HL)
|
||
LD L,A
|
||
CALL PCHL
|
||
OR A
|
||
RET
|
||
|
||
PCHL JP (HL)
|
||
;
|
||
MNU3 LD DE,MNU2
|
||
PUSH DE
|
||
;
|
||
CP 0x19
|
||
JR NZ,MNU4
|
||
;
|
||
DEC (HL)
|
||
RET P
|
||
LD A,(IX+0)
|
||
DEC A
|
||
LD (HL),A
|
||
RET
|
||
;
|
||
MNU4 CP 0x1A
|
||
RET NZ
|
||
INC (HL)
|
||
LD A,(IX+0)
|
||
CP (HL)
|
||
RET NZ
|
||
LD (HL),0x00
|
||
RET
|
||
|
||
TEST CALL BIGFRM
|
||
LD HL,TIT2
|
||
CALL MSGXX
|
||
LD BC,99
|
||
LD DE,126
|
||
CALL UGOL
|
||
LD A,0xd
|
||
LD BC,0xa9
|
||
LD DE,0x107
|
||
CALL TVGRF
|
||
LD IX,MENU2
|
||
LD HL,POS2
|
||
CALL MENU
|
||
JR NC,TEST
|
||
RET
|
||
|
||
CONF CALL WINCLR
|
||
LD C,0x4f
|
||
LD B,0x6e
|
||
LD DE,0x72
|
||
LD HL,0x9e
|
||
CALL SETWIN
|
||
DRWFRAM LD BC,0x0
|
||
LD E,C
|
||
LD D,C
|
||
CALL UGOL
|
||
LD A,0xd
|
||
LD BC,0x6d
|
||
LD DE,0x9d
|
||
PUSH DE
|
||
CALL TVGRF
|
||
LD BC,0x14
|
||
LD E,B
|
||
LD D,B
|
||
CALL UGOL
|
||
POP DE
|
||
CALL LINEX
|
||
LD BC,0x6854
|
||
LD DE,0x85
|
||
LD HL,0x80
|
||
CALL SETWIN
|
||
LD HL,CFGMSG
|
||
CALL MSGXX
|
||
CALL OUTCFG
|
||
CALL WAIT_KEY
|
||
JP FULSCR
|
||
OUTCFG IN A,(PORT_00_DIPSW)
|
||
LD C,0xff
|
||
CALL OUTDIP
|
||
BIT 0x0,A
|
||
LD B,0x0
|
||
JR Z,CNF1
|
||
INC B
|
||
CNF1 CALL OUTPOS
|
||
CALL OUTDIP
|
||
BIT 0x1,A
|
||
LD B,0x0
|
||
JR Z,CNF2
|
||
INC B
|
||
CNF2 CALL OUTPOS
|
||
CALL OUTDIP
|
||
BIT 0x2,A
|
||
LD B,0x3
|
||
JR Z,CNF3
|
||
DEC B
|
||
CNF3 CALL OUTPOS
|
||
CALL OUTDIP
|
||
BIT 0x3,A
|
||
PUSH BC
|
||
LD C,0x32
|
||
JR Z,CNF4
|
||
DEC C
|
||
CNF4 PUSH AF
|
||
CALL SPC
|
||
POP AF
|
||
CALL TVSYM
|
||
POP BC
|
||
CALL OUTDIP
|
||
BIT 0x4,A
|
||
LD B,0x0
|
||
JR Z,CNF5
|
||
INC B
|
||
CNF5 CALL OUTPOS
|
||
CALL OUTDIP
|
||
BIT 0x5,A
|
||
LD B,0x0
|
||
JR Z,CNF6
|
||
INC B
|
||
CNF6 CALL OUTPOS
|
||
CALL OUTDIP
|
||
BIT 0x6,A
|
||
LD B,0x4
|
||
JR Z,CNF7
|
||
INC B
|
||
CNF7 CALL OUTPOS
|
||
CALL OUTDIP
|
||
BIT 0x7,A
|
||
LD B,0x7
|
||
JR Z,OUTPOS
|
||
DEC B
|
||
OUTPOS PUSH AF
|
||
CALL SPC
|
||
POP AF
|
||
PUSH BC
|
||
PUSH AF
|
||
LD HL,SELMSG
|
||
LD A,B
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,B
|
||
LD B,0x5
|
||
JR RSL0
|
||
OUTDIP PUSH AF
|
||
CALL HDLN
|
||
POP AF
|
||
INC C
|
||
PUSH BC
|
||
PUSH AF
|
||
LD B,0xe
|
||
LD HL,DIPMSG
|
||
LD A,C
|
||
LD E,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
RSL0 LD E,A
|
||
LD D,0x0
|
||
ADD HL,DE
|
||
RSL1 LD A,(HL)
|
||
NEG
|
||
LD C,A
|
||
CALL TVSYM
|
||
INC HL
|
||
DJNZ RSL1
|
||
POP AF
|
||
POP BC
|
||
RET
|
||
|
||
CFGMSG DB -' ',-' ',-' ',-'C',-'O',-'N'
|
||
DB -'F',-'I',-'G',-'U',-'R',-'A',-'T',-'I',-'O'
|
||
DB -'N',-0DH,-0AH,0
|
||
;
|
||
SELMSG DB -'Y',-'e',-'s',-' ',-' '
|
||
DB -'N',-'o',-' ',-' ',-' '
|
||
DB -'P',-'K',-'-',-'8',-'6'
|
||
DB -'M',-'7',-'0',-'0',-'7'
|
||
DB -'R',-'O',-'M',-'-',-'2'
|
||
DB -'R',-'O',-'M',-'-',-'D'
|
||
DB -'O',-'R',-'D',-'O',-'S'
|
||
DB -'C',-'P',-'M',-'8',-'0'
|
||
;
|
||
DIPMSG DB -'1',-' ',-'F',-'l',-'o',-'p',-'p',-'y',-' '
|
||
DB -'d',-'r',-'i',-'v',-'e',-' ',-'-' ;14
|
||
DB -'2',-' ',-'H',-'a',-'r',-'d',-' ',-'d',-'r'
|
||
DB -'i',-'v',-'e',-' ',-' ',-' ',-'-'
|
||
DB -'3',-' ',-'K',-'e',-'y',-'b',-'o',-'a',-'r'
|
||
DB -'d',-' ',-' ',-' ',-' ',-' ',-'-'
|
||
DB -'4',-' ',-'P',-'a',-'g',-'e',-' ',-'C',-'P',-'/'
|
||
DB -'M',-'-',-'8',-'0',-' ',-'-'
|
||
DB -'5',-' ',-'E',-'x',-'t',-'.',-'d',-'i',-'s'
|
||
DB -'p',-'l',-'a',-'y',-' ',-' ',-'-'
|
||
DB -'6',-' ',-'S',-'t',-'a',-'r',-'t',-'-',-'M'
|
||
DB -'e',-'n',-'u',-' ',-' ',-' ',-'-'
|
||
DB -'7',-' ',-'L',-'o',-'a',-'d',-' ',-'O',-'R'
|
||
DB -'D',-'O',-'S',-' ',-' ',-' ',-'-'
|
||
DB -'8',-' ',-'S',-'y',-'s',-'t',-'e',-'m',-' '
|
||
DB -' ',-' ',-' ',-' ',-' ',-' ',-'-'
|
||
|
||
; ---------------------------------------------
|
||
; Тест ОЗУ
|
||
; ---------------------------------------------
|
||
TSTRAM CALL WINCLR
|
||
LD BC,0x37
|
||
LD DE,0x46
|
||
PUSH DE
|
||
CALL UGOL
|
||
LD BC,0xd7
|
||
LD DE,0x13e
|
||
LD A,0xd
|
||
CALL TVGRF
|
||
LD BC,0x4b
|
||
CALL UGOL
|
||
POP DE
|
||
CALL LINEX
|
||
LD BC,0xc3
|
||
CALL UGOL
|
||
LAB_ram_09c4
|
||
|
||
LD DE,0x13e
|
||
CALL LINEX
|
||
LD HL,RAMMSG
|
||
CALL MSGXX
|
||
; отображение на экране DD-номеров ИМС
|
||
LD BC,0x1000
|
||
LD DE,IMSCOD
|
||
RAMT1
|
||
LD H,8
|
||
LD A,C
|
||
CP 8
|
||
JR C,RAMT2
|
||
LD H,14
|
||
SUB 8
|
||
RAMT2
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,0x11
|
||
LD L,A
|
||
CALL SCUR
|
||
LD A,'D'
|
||
CALL TVA
|
||
LD A,(DE)
|
||
CALL HEX_OUT
|
||
INC DE
|
||
INC C
|
||
DJNZ RAMT1
|
||
LD IX,IMSADR
|
||
RAMT3
|
||
LD L,(IX+0x0)
|
||
LD H,(IX+0x1)
|
||
INC IX
|
||
INC IX
|
||
LD A,L
|
||
OR H
|
||
JR Z,RAMT7
|
||
LD DE,GODIMS
|
||
LD C,0x20
|
||
RAMT4
|
||
LD A,(DE)
|
||
OR A
|
||
JR Z,RAMT3
|
||
LD B,A
|
||
INC DE
|
||
LD A,(DE)
|
||
RAMT5
|
||
LD (HL),A
|
||
INC L
|
||
DEC C
|
||
JR NZ,RAMT6
|
||
LD C,0x20
|
||
INC H
|
||
LD A,L
|
||
SUB C
|
||
LD L,A
|
||
LD A,(DE)
|
||
RAMT6
|
||
DJNZ RAMT5
|
||
INC DE
|
||
JR RAMT4
|
||
RAMT7
|
||
LD HL,SCLADR
|
||
LD C,17
|
||
RAZM1
|
||
LD B,0x8
|
||
RAZM2
|
||
LD (HL),0x0
|
||
LD A,B
|
||
CP 0x4
|
||
JR NZ,RAZM3
|
||
LD (HL),0xAA
|
||
RAZM3
|
||
INC L
|
||
DJNZ RAZM2
|
||
LD L,0xC9
|
||
INC H
|
||
DEC C
|
||
JR NZ,RAZM1
|
||
|
||
; Начало теста ОЗУ
|
||
IN A,(PORT_0A_MEM_CFG)
|
||
SET RAM1_WND,A ; Окно открыть
|
||
OUT (PORT_0A_MEM_CFG),A
|
||
db 0FDh
|
||
LD H,0 ; HY = константа заполнения
|
||
RAMT8
|
||
db 0FDh
|
||
LD L,0 ; LY = номер сегмента
|
||
RAMT9
|
||
db 0FDh
|
||
LD A,L ; A=LY
|
||
CP 0x20
|
||
JR NC,RAMT11
|
||
OUT (PORT_05_RAM1P),A
|
||
CP 0x3
|
||
JR Z,RAMT10
|
||
CP 0x1f
|
||
JR Z,RAMT10
|
||
;
|
||
IF TSTST
|
||
CP 12
|
||
JR C,RAMT10
|
||
ENDIF
|
||
;
|
||
LD HL,0x4000
|
||
LD DE,0x4001
|
||
db 0FDh
|
||
LD A,H ; A=HY
|
||
LD (HL),A
|
||
;
|
||
IF TSTST
|
||
IN A,(PORT_05_RAM1P)
|
||
CP 13; 20
|
||
JR NZ,XXX
|
||
LD A,(HL)
|
||
OR 12H
|
||
LD (HL),A
|
||
XXX
|
||
ENDIF
|
||
LD BC,0x3fff
|
||
LDIR
|
||
|
||
; Отображение факта заполнения сегмента
|
||
RAMT10
|
||
LD HL,SCLADR
|
||
SCAL1
|
||
LD A,(HL)
|
||
AND 0x1
|
||
JR Z,SCAL2
|
||
INC H
|
||
JR SCAL1
|
||
SCAL2 LD A,IYL ; db 0FDh, LD A,L
|
||
AND 0x7
|
||
INC A
|
||
LD B,A
|
||
LD A,0x1
|
||
SCAL3 RRCA
|
||
DJNZ SCAL3
|
||
LD C,A
|
||
LD B,0x8
|
||
SCAL4 LD A,(HL)
|
||
OR C
|
||
LD (HL),A
|
||
INC L
|
||
DJNZ SCAL4
|
||
IN A,(0x0)
|
||
AND 0x4
|
||
JR Z,KSTAT2
|
||
XOR A
|
||
OUT (PORT_18_KBD),A
|
||
IN A,(PORT_19_KBD)
|
||
XOR 0xff
|
||
JR Z,KSTAT3
|
||
KSTAT1 CALL BEEP
|
||
CALL WAIT_KEY
|
||
JR NC,KSTAT3
|
||
RET
|
||
KSTAT2 XOR A
|
||
OUT (PORT_1A_KBD),A
|
||
OUT (PORT_19_KBD),A
|
||
IN A,(PORT_18_KBD)
|
||
INC A
|
||
JR NZ,KSTAT1
|
||
KSTAT3 INC IYL ; db 0FDh, INC L
|
||
JR RAMT9
|
||
RAMT11 LD IYL,0 ; db 0FDh, LD L,0
|
||
|
||
; Проверка очередного сегмента
|
||
RAMT12 LD A,IYL ; db 0FDh, LD A,L
|
||
CP 0x20
|
||
JP NC,RAMT22
|
||
OUT (PORT_05_RAM1P),A
|
||
CP 0x3
|
||
JP Z,RAMT21
|
||
CP 0x1f
|
||
JP Z,RAMT21
|
||
;
|
||
IF TSTST
|
||
CP 12
|
||
JP C,RAMT21
|
||
ENDIF
|
||
;
|
||
LD HL,0x4000
|
||
LD B,H
|
||
LD C,L
|
||
LD E,IYH ; db 0FDh, LD E,H
|
||
RAMT13 LD A,(HL)
|
||
XOR E
|
||
JP Z,RAMT20
|
||
EXX
|
||
LD C,A
|
||
LD E,0x0
|
||
LD B,0x8
|
||
IN A,(PORT_05_RAM1P)
|
||
BIT 0x2,A
|
||
JR Z,RAMT14
|
||
LD E,0x10
|
||
RAMT14 RRC C
|
||
JR NC,RAMT19
|
||
LD HL,IMSADR
|
||
LD D,0x0
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
INC HL
|
||
LD H,(HL)
|
||
LD L,A
|
||
INC L
|
||
LD A,(HL)
|
||
DEC L
|
||
AND 0x7f
|
||
JR NZ,RAMT19
|
||
LD IYL,E ; db 0FDh, LD L,E
|
||
LD IXL,C ; db 0DDh, LD L,C
|
||
LD IXH,B ; db 0DDh, LD H,B
|
||
LD DE,BADIMS
|
||
LD C,0x20
|
||
RAMT15 LD A,(DE)
|
||
OR A
|
||
JR Z,RAMT18
|
||
LD B,A
|
||
INC DE
|
||
LD A,(DE)
|
||
RAMT16 LD (HL),A
|
||
INC L
|
||
DEC C
|
||
JR NZ,RAMT17
|
||
LD C,0x20
|
||
INC H
|
||
LD A,L
|
||
SUB C
|
||
LD L,A
|
||
LD A,(DE)
|
||
RAMT17 DJNZ RAMT16
|
||
INC DE
|
||
JR RAMT15
|
||
RAMT18 LD E,IYL ; db 0FDh, LD E,L
|
||
LD C,IXL ; db 0DDh, LD C,L
|
||
LD B,IXH ; db 0DDh, LD B,H
|
||
IN A,(PORT_05_RAM1P)
|
||
LD IYL,A ; db 0FDh, LD L,A
|
||
RAMT19 INC E
|
||
INC E
|
||
DEC B
|
||
JP NZ,RAMT14
|
||
EXX
|
||
RAMT20 INC HL
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JP NZ,RAMT13
|
||
RAMT21 LD HL,SCLADR
|
||
SCAL5 LD A,(HL)
|
||
AND 0x1
|
||
JR Z,SCAL6
|
||
INC H
|
||
JR SCAL5
|
||
SCAL6 LD A,IYL ; db 0FDh, LD A,L
|
||
AND 0x7
|
||
INC A
|
||
LD B,A
|
||
LD A,0x1
|
||
SCAL7 RRCA
|
||
DJNZ SCAL7
|
||
LD C,A
|
||
LD B,0x8
|
||
SCAL8 LD A,(HL)
|
||
OR C
|
||
LD (HL),A
|
||
INC L
|
||
DJNZ SCAL8
|
||
IN A,(0x0)
|
||
AND 0x4
|
||
JR Z,KSTAT4
|
||
XOR A
|
||
OUT (PORT_18_KBD),A
|
||
IN A,(PORT_19_KBD)
|
||
XOR 0xff
|
||
JR Z,KSTAT5
|
||
KSTAT6 CALL BEEP
|
||
CALL WAIT_KEY
|
||
JR NC,KSTAT5
|
||
RET
|
||
KSTAT4 XOR A
|
||
OUT (PORT_1A_KBD),A
|
||
OUT (PORT_19_KBD),A
|
||
IN A,(PORT_18_KBD)
|
||
INC A
|
||
JR NZ,KSTAT6
|
||
KSTAT5 INC IYL ; db 0FDh, INC L
|
||
JP RAMT12
|
||
RAMT22 LD A,IYH ; db 0FDh, LD A,H
|
||
CPL
|
||
LD IYH,A ; db 0FDh, LD H,A
|
||
OR A
|
||
JP NZ,RAMT8
|
||
LD HL,SCLADR+16*256
|
||
LD B,0x8
|
||
LD A,0xFC
|
||
RAMT23
|
||
LD (HL),A
|
||
INC L
|
||
DJNZ RAMT23
|
||
LD HL,0xF000
|
||
RAMT24
|
||
DEC HL
|
||
LD A,H
|
||
OR L
|
||
JR NZ,RAMT24
|
||
XOR A
|
||
OUT (PORT_05_RAM1P),A
|
||
IN A,(PORT_0A_MEM_CFG)
|
||
RES 0x1,A
|
||
OUT (PORT_0A_MEM_CFG),A
|
||
JP RAMT7 ; продолжить тестирование
|
||
|
||
;
|
||
; Таблица кодов ИМС (DD..) в экранном порядке
|
||
IMSCOD DB 70H,60H,61H,59H,73H,65H,62H,64H
|
||
DB 52H,71H,54H,57H,63H,74H,72H,53H
|
||
;
|
||
ANI EQU 0xCD5E ; Адрес начала изображений ИМС на экране
|
||
SCLADR EQU ANI + 0x036B ; Адрес шкалы на экране
|
||
|
||
|
||
; Таблица адресов ИМС на экране по номеру разряда
|
||
IMSADR DW ANI + 0x063C, ANI + 0x0600, ANI + 0x033C, ANI + 0x0300 ; Банк 1
|
||
DW ANI + 0x093C, ANI + 0x0900, ANI + 0x0000, ANI + 0x003C
|
||
DW ANI + 0x153C, ANI + 0x1500, ANI + 0x0F00, ANI + 0x0F3C ; Банк 2
|
||
DW ANI + 0x0C3C, ANI + 0x0C00, ANI + 0x1200, ANI + 0x123C
|
||
DW 0
|
||
;
|
||
; Изображение хорошей ИМС
|
||
GODIMS DB 1,0FFH,26,80H,1,83H,3,84H,2,0FFH
|
||
DB 26,01H,1,0C1H,3,21H,1,0FFH,0
|
||
;
|
||
; Изображение неисправной ИМС
|
||
BADIMS DB 27,0FFH,1,0FCH,2,0FBH,1,0F8H
|
||
DB 28,0FFH,1,3FH,2,0DFH,1,1FH,1,0FFH,0
|
||
;
|
||
RAMMSG DB -1BH,-'Y',-26H,-3CH
|
||
DB -'R',-'A',-'M',-' ',-'T',-'E',-'S',-'T',0
|
||
|
||
; ---------------------------------------------
|
||
; Тест ROM
|
||
; ---------------------------------------------
|
||
TSTROM
|
||
CALL WINCLR
|
||
; рисуем окно
|
||
LD BC,0x73
|
||
LD DE,0x74
|
||
PUSH DE
|
||
CALL UGOL
|
||
LD A,0xd
|
||
LD BC,0xa2
|
||
LD DE,0x0111
|
||
CALL TVGRF
|
||
LD BC,0x87
|
||
CALL UGOL
|
||
POP DE
|
||
CALL LINEX
|
||
TROM1
|
||
LD HL,ROMMSG
|
||
CALL MSGXX
|
||
CALL CSROM2
|
||
PUSH HL ; Контрольная сумма ROM2
|
||
CALL HEX_OUT ; Объем ROM2 TODO: это дб вызов HEX
|
||
CALL CSROM1 ; BC = Контрольная сумма
|
||
POP DE
|
||
LD HL,0x0E21
|
||
PUSH HL
|
||
CALL SCUR
|
||
LD A,B
|
||
CALL HEX_OUT
|
||
LD A,C
|
||
CALL HEX_OUT
|
||
POP HL
|
||
INC H
|
||
CALL SCUR
|
||
LD A,D
|
||
CALL HEX_OUT
|
||
LD A,E
|
||
CALL HEX_OUT
|
||
LD BC,0x1000
|
||
TROM2
|
||
CALL KB_STTS ; Получение статуса клавиатуры
|
||
JR Z,TROM3
|
||
CALL BEEP
|
||
JP WAIT_KEY
|
||
TROM3
|
||
DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR NZ,TROM2
|
||
JR TROM1
|
||
|
||
ROMMSG DB -1BH,-'Y',-2CH,-3DH,-'R',-'O',-'M',-' '
|
||
DB -'T',-'E',-'S',-'T'
|
||
DB -1BH,-'Y',-2EH,-37H,-'R',-'O',-'M',-'1',-' '
|
||
DB -'C',-'S',-':',-' ',-' ',-' ',-' ',-' ',-' '
|
||
DB -' ',-'(',-' ',-'8',-'K',-')'
|
||
DB -1BH,-'Y',-2FH,-37H,-'R',-'O',-'M',-'2',-' '
|
||
DB -'C',-'S',-':',-' ',-' ',-' ',-' ',-' ',-' '
|
||
DB -' ',-'(',-' ',-' ',-'K',-')',-8,-8,-8,-8,0
|
||
|
||
; ---------------------------------------------
|
||
; TV-Тест
|
||
; ---------------------------------------------
|
||
TVTEST
|
||
LD A,0x2
|
||
OUT (PORT_F8_VMODE),A
|
||
LD DE,COLTAB
|
||
LD HL,SCR_C000
|
||
TVT1 LD B,3
|
||
TVT2 LD (HL),0xff
|
||
LD A,(DE)
|
||
LD C,A
|
||
LD A,1
|
||
CALL WRAM ; Запись байта в расширенную страницу
|
||
INC L
|
||
JR NZ,TVT2
|
||
INC H
|
||
LD A,H
|
||
CP 0xF0
|
||
JR Z,TVT3
|
||
DJNZ TVT2
|
||
INC DE
|
||
JR TVT1
|
||
; Монохромная палитра
|
||
TVT3 LD BC,0x1000
|
||
TVT4 LD A,C
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR C
|
||
OUT (PORT_E0_PAL_R),A
|
||
OUT (PORT_E1_PAL_G),A
|
||
OUT (PORT_E2_PAL_B),A
|
||
INC C
|
||
DJNZ TVT4
|
||
LD A,6
|
||
OUT (PORT_F8_VMODE),A
|
||
CALL WAIT_KEY
|
||
JR C,TVT5
|
||
; цветная палитра
|
||
CALL INITPAL
|
||
CALL WAIT_KEY
|
||
;
|
||
TVT5 LD A,0x0F
|
||
OUT (PORT_F8_VMODE),A
|
||
RET
|
||
|
||
COLTAB DB 0,8,1,9,4,12,5,13,2,10,3,11,6,14,7,15
|
||
|
||
; ---------------------------------------------
|
||
; Контрольная сумма ROM
|
||
; ---------------------------------------------
|
||
CSROM1
|
||
LD HL,0x0
|
||
LD DE,0x1fff
|
||
CSM
|
||
EX DE,HL
|
||
PUSH HL
|
||
LD A,L
|
||
LD HL,0x0
|
||
JR CSM2
|
||
CSM1
|
||
EX DE,HL
|
||
LD B,(HL)
|
||
LD C,B
|
||
INC HL
|
||
EX DE,HL
|
||
ADD HL,BC
|
||
CSM2
|
||
CP E
|
||
JR NZ,CSM1
|
||
POP BC
|
||
PUSH BC
|
||
LD A,B
|
||
CP D
|
||
LD A,C
|
||
JR NZ,CSM1
|
||
LD A,(DE)
|
||
ADD A,L
|
||
LD C,A
|
||
LD B,H
|
||
POP HL
|
||
RET
|
||
|
||
; ---------------------------------------------
|
||
; Контрольная сумма ROM2
|
||
; ---------------------------------------------
|
||
CSROM2
|
||
LD HL,0x2008
|
||
LD C,0x4
|
||
CALL TSTR2
|
||
LD B,0x8
|
||
LD A,0x64
|
||
JR NZ,CSR21
|
||
LD B,0x4
|
||
LD A,0x32
|
||
CSR21
|
||
PUSH AF
|
||
LD DE,0x4000
|
||
XOR A
|
||
LD (DE),A
|
||
LD C,A
|
||
LD L,A
|
||
LD H,A
|
||
IN A,(PORT_0A_MEM_CFG)
|
||
PUSH AF
|
||
SET 0x3,A
|
||
OUT (PORT_0A_MEM_CFG),A
|
||
CSR22
|
||
LD A,B
|
||
DEC A
|
||
JR NZ,CSR23
|
||
DEC DE
|
||
CSR23
|
||
LD A,C
|
||
OUT (PORT_09_ROM2_SEG),A
|
||
PUSH BC
|
||
PUSH DE
|
||
PUSH HL
|
||
LD HL,0x2000
|
||
CALL CSM
|
||
POP HL
|
||
ADD HL,BC
|
||
POP DE
|
||
POP BC
|
||
INC C
|
||
DJNZ CSR22
|
||
POP AF
|
||
OUT (PORT_0A_MEM_CFG),A
|
||
POP AF
|
||
RET
|
||
MENU1
|
||
DB 4h ; Число режимов меню
|
||
DB 1Bh ; X пунктов меню
|
||
DB 0Bh ; Y первого пнкта
|
||
DW MMSG1 ; Адрес сообщения с названием пунктов
|
||
DW MADR1 ; Таблица адресов обработки
|
||
;
|
||
; Названия пунктов главного меню
|
||
MMSG1 DB -' ',-' ',-'M',-'o',-'n',-'i',-'t',-'o',-'r',-' ',-' ',0
|
||
DB -' ',-'O',-'r',-'i',-'o',-'n',-'-',-'P',-'R',-'O',-' ',0
|
||
DB -' ',-'O',-'r',-'i',-'o',-'n',-'-',-'1',-'2',-'8',-' ',0
|
||
DB -' ',-' ',-'T',-' ',-'E',-' ',-'S',-' ',-'T',-' ',-' ',0
|
||
;
|
||
; адреса обработчиков пунктов главного меню
|
||
MADR1 DW MON_UR,MNT3,MON128,TEST
|
||
|
||
;
|
||
;Описание меню тестов
|
||
MENU2 DB 5 ; Число режимов меню
|
||
DB 25 ; X пунктов меню
|
||
DB 11 ; Y первого пунка
|
||
DW MMSG2 ; адрес сообщения с названиями пунктов
|
||
DW MADR2 ; таблица адресов обработки
|
||
;
|
||
MMSG2 DB -' ',-'C',-'o',-'n',-'f',-'i',-'g',-'u',-'r',-'a',-'t',-'i',-'o',-'n',-' ',0
|
||
DB -' ',-'R',-'A',-'M',-' ',-'-',-' ',-'T',-' ',-'e',-' ',-'s',-' ',-'t',-' ',0
|
||
DB -' ',-'R',-'O',-'M',-' ',-'-',-' ',-'T',-' ',-'e',-' ',-'s',-' ',-'t',-' ',0
|
||
DB -' ',-'T',-'V',-' ',-' ',-'-',-' ',-'T',-' ',-'e',-' ',-'s',-' ',-'t',-' ',0
|
||
DB -' ',-' ',-' ',-'M',-'a',-'i',-'n',-' ',-'M',-'e',-'n',-'u',-' ',-' ',-' ',0
|
||
;
|
||
; Адреса обработчиков пунктов меню тестов
|
||
MADR2 DW CONF,TSTRAM,TSTROM,TVTEST,MAIN
|
||
|
||
;
|
||
TIT1 DB -1BH,-59H,-21H,-22H
|
||
DB -'(',-'C',-')',-' ',-'1',-'9',-'9',-'3',-'-',-'2'
|
||
DB -'0',-'0',-'0',-' ',-'O',-'r',-'i',-'o',-'n'
|
||
DB -'s',-'o',-'f',-'t',-' ',-'C',-'o',-'.',-','
|
||
DB -'L',-'t',-'d',-1BH,-59H,-21H,-4FH
|
||
DB -'O',-'r',-'i',-'o',-'n',-'-',-'P',-'r',-'o'
|
||
DB -' ',-'V',-'3',-'.',-'1',-'0',0
|
||
;
|
||
TIT2 DB -1BH,-59H,-21H,-35H,-'*',-' ',-'T'
|
||
DB -'E',-'S',-'T',-' ',-'O',-'R',-'I',-'O',-'N',-'-'
|
||
DB -'P',-'R',-'O',-' ',-'*',0
|
||
;
|
||
|