mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
783 lines
16 KiB
NASM
783 lines
16 KiB
NASM
|
||
;[BEGIN]
|
||
;//MODULE: VIDEO
|
||
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
|
||
;//UPDATE: 24-10-1999 DNS Restore module
|
||
;---------------------------------------------------------------
|
||
;Rev Date Name Description
|
||
;---------------------------------------------------------------
|
||
;R02 07-11-2002 DNS CORRECT FN. WINCOPY & WINREST, ADD "DI+EI"
|
||
;R01 07-11-2002 DNS FIX BUG WITH SCROLLUP FN. (A=0)
|
||
;---------------------------------------------------------------
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #56. Žç¨áâ¨âì ®ª®.
|
||
;
|
||
; ¢å®¤: D - áâப «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; E - á⮫¡¥æ «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; A - ᨬ¢®« § ¯®«¨â¥«ì
|
||
; B - âਡãâ § ¯®«¨â¥«ì
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
CLEAR: LD C,BIOS.LP_CLS_WIN2
|
||
JP ToBIOS
|
||
;AND A
|
||
;RET
|
||
;
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5C. ‚뢮¤ áâப¨ íªà .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ ⥫ì áâபã ᨬ¢®«®¢
|
||
; ¢ë室: HL - 㪠§ ⥫ì á«¥¤ãîéãî áâபã ᨬ¢®«®¢
|
||
; PRINT NULL-TERMINATED CHARS STRING
|
||
;/////////////////////////////////////////////////////////////////////
|
||
PCHARS: LD A,(HL)
|
||
INC HL
|
||
OR A
|
||
RET Z
|
||
CALL PUTCHAR
|
||
JP PCHARS
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5B. ‚뢮¤ ᨬ¢®« íªà ¢ ⥪. ¯®§¨æ¨¨.
|
||
;
|
||
; ¢å®¤: A - ᨬ¢®«
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
PUTCHAR:
|
||
;CALL .NO_SCROLL
|
||
CP #0E
|
||
JR C,.control_characters
|
||
;
|
||
LD BC,1*256 + BIOS.LP_PRINT_SYM
|
||
;[x] CR+LF+SCROLL
|
||
RST ToBIOS
|
||
;
|
||
; ¯à®¢¥àª ¯¥à¥å®¤ ªãàá®à ¢ á ¬®¥ ç «® (X:Y == 0:0)
|
||
CALL CURSOR
|
||
LD A,D
|
||
OR E
|
||
RET NZ
|
||
;
|
||
.LFF: PUSH HL
|
||
LD BC,1*256 + BIOS.LP_SCROLL_UD
|
||
LD DE,#0020
|
||
RST ToBIOS
|
||
LD DE,#1F00
|
||
CALL LOCATE
|
||
LD A,' '
|
||
LD BC,#50*256 + BIOS.LP_PRINT_SYM
|
||
RST ToBIOS
|
||
LD DE,#1F00
|
||
CALL LOCATE
|
||
POP HL
|
||
RET
|
||
.TB_: CALL CURSOR
|
||
IF TABisSPACES
|
||
LD B,E
|
||
LD A,E
|
||
AND #F8
|
||
ADD A,8
|
||
SUB B
|
||
LD B,A
|
||
LD A,' '
|
||
LD C,BIOS.LP_PRINT_SYM
|
||
JP ToBIOS
|
||
ELSE
|
||
LD A,E
|
||
ADD A,8
|
||
AND #78 ;????? £«ïãâì, çâ® ¡ã¤¥â ¥á«¨ ª®®à¤¨ âë ªãàá®à ¢ ª®æ¥ áâப¨ ¯®çâ¨
|
||
LD E,A
|
||
JP LOCATE
|
||
ENDIF
|
||
.BK_: CALL CURSOR
|
||
XOR A
|
||
CP E
|
||
RET Z
|
||
DEC E
|
||
JP LOCATE
|
||
;
|
||
.LF_: CALL CURSOR
|
||
LD A,D
|
||
CP #1F
|
||
JR NC,.LFF
|
||
INC D
|
||
IFN EnoughtOnly_LF
|
||
JP LOCATE
|
||
ELSE
|
||
CALL LOCATE
|
||
; !!!! <20>… à §àë¢ âì LF_ ¨ CR_ !!!!
|
||
ENDIF
|
||
.CR_: CALL CURSOR
|
||
LD E,0
|
||
JP LOCATE
|
||
;
|
||
.control_characters:
|
||
CP #0D
|
||
JR Z,.CR_
|
||
CP #0A
|
||
JR Z,.LF_
|
||
CP #09
|
||
JR Z,.TB_
|
||
CP #08
|
||
JR Z,.BK_
|
||
CP #07 ; [x] Beep in PChars/PUTCHAR
|
||
RET NZ
|
||
; [x] Beep in PChars/PUTCHAR
|
||
.BELL: LD DE,1200
|
||
PUSH HL
|
||
LD HL,4
|
||
CALL BEEP
|
||
POP HL
|
||
RET
|
||
;
|
||
; [x] -bug with Vasil's version of cursor
|
||
.NO_SCROLL:
|
||
CP #0E
|
||
JR C,.control_characters
|
||
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
|
||
JP ToBIOS
|
||
;
|
||
|
||
;-----[]
|
||
;
|
||
;
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #52. “áâ ®¢¨âì ¯®«®¦¥¨¥ ªãàá®à .
|
||
;
|
||
; ¢å®¤: D - áâப ªãàá®à
|
||
; E - ª®«®ª ªãàá®à
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
LOCATE: LD C,BIOS.LP_SET_PLACE
|
||
JP ToBIOS
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #53. “§ âì ¯®«®¦¥¨¥ ªãàá®à .
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: D - áâப ªãàá®à
|
||
; E - ª®«®ª ªãàá®à
|
||
;/////////////////////////////////////////////////////////////////////
|
||
CURSOR: LD C,BIOS.LP_GET_PLACE
|
||
JP ToBIOS
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #57. <20>à®ç¨â âì ᨬ¢®« á íªà .
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª
|
||
; ¢ë室: A - ᨬ¢®«
|
||
; B - âਡãâ
|
||
;/////////////////////////////////////////////////////////////////////
|
||
RDCHAR: XOR A
|
||
LD C,BIOS.WIN_GET_SYM
|
||
RST ToBIOS
|
||
LD A,L
|
||
LD B,H
|
||
;AND A
|
||
RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #58. ‚뢥á⨠ᨬ¢®« íªà .
|
||
; “¯à ¢«ïî騥 ᨬ¢®«ë ¢ë¢®¤ïâáï ª ª ®¡ëçë¥ á¨¬¢®«ë.
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª
|
||
; A - ᨬ¢®«
|
||
; B - âਡãâ
|
||
; ¢ë室: ¥â
|
||
;!FIXIT slow ª ª ¡¥§ WIN_GET_SYM âãâ ®¡®©â¨áì?
|
||
;/////////////////////////////////////////////////////////////////////
|
||
WRCHAR: LD C,A
|
||
PUSH BC
|
||
PUSH DE
|
||
XOR A
|
||
LD C,BIOS.WIN_GET_SYM
|
||
RST ToBIOS
|
||
POP DE
|
||
POP HL
|
||
XOR A
|
||
LD C,BIOS.WIN_PUT_SYM
|
||
JP ToBIOS
|
||
;AND A
|
||
;RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #59. ‘®åà ¨âì ®ª® íªà .
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; B - áâà ¨æ ¡ãä¥à , ¥á«¨ IX >= #C000
|
||
; IX - ¤à¥á ¡ãä¥à
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
WINCOPY: AND A
|
||
LD A,R ;R02
|
||
PUSH AF ;R02
|
||
XOR A
|
||
LD C,BIOS.WIN_COPY
|
||
DI ;R02
|
||
RST ToBIOS
|
||
POP AF ;R02
|
||
RET PO ;R02
|
||
EI ;R02
|
||
RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5A. ‚®ááâ ®¢¨âì ®ª® íªà .
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; B - áâà ¨æ ¡ãä¥à , ¥á«¨ IX >= #C000
|
||
; IX - ¤à¥á ¡ãä¥à
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
WINREST: AND A
|
||
LD A,R ;R02
|
||
PUSH AF ;R02
|
||
XOR A
|
||
DI ;R02
|
||
LD C,BIOS.WIN_RESTORE
|
||
RST ToBIOS
|
||
POP AF ;R02
|
||
RET PO ;R02
|
||
EI ;R02
|
||
RET
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #55. ‘ªà®««¨£ íªà .
|
||
;
|
||
; ¢å®¤: D - áâப «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; E - ª®«®ª «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; B = 1 - ¯à®ªàã⪠¢¢¥àå
|
||
; B = 2 - ¯à®ªàã⪠¢¨§
|
||
; A = 0 - ®ç¨é âì áâபã
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
SCROLL: DJNZ .SCR_DW ;!TODO § ¬¥¨âì BIOS.LP_SCROLL_UD ¨ ¯®á¬®âà¥âì, çâ® èãáâ॥
|
||
;[x] 04/04/23
|
||
;LD B,A
|
||
;LD C,H
|
||
;PUSH BC
|
||
PUSH AF
|
||
;
|
||
PUSH DE
|
||
PUSH HL
|
||
LD XH,D
|
||
LD XL,E
|
||
INC D
|
||
DEC H
|
||
LD C,BIOS.WIN_MOVE
|
||
;[x] 29/9/23
|
||
LD A,R
|
||
PUSH AF
|
||
;
|
||
XOR A
|
||
DI ;[x] 29/9/23
|
||
RST ToBIOS
|
||
;[x] 29/9/23
|
||
POP AF
|
||
JP PO,.skip_EI
|
||
EI
|
||
.skip_EI:
|
||
POP HL
|
||
POP DE
|
||
;[x] 04/04/23
|
||
;POP BC
|
||
POP AF
|
||
;XOR A
|
||
;CP B
|
||
AND A
|
||
;
|
||
RET NZ
|
||
LD A,D
|
||
ADD A,H
|
||
DEC A ;R01
|
||
LD D,A
|
||
.print: PUSH DE ;R01
|
||
CALL LOCATE
|
||
LD A,' '
|
||
LD B,L
|
||
LD C,BIOS.LP_PRINT_SYM
|
||
RST ToBIOS
|
||
POP DE ;R01
|
||
JP LOCATE ;R01
|
||
;AND A
|
||
;RET
|
||
.SCR_DW:
|
||
DJNZ .SCR_ERR
|
||
;[x] 04/04/23
|
||
;LD B,A
|
||
;LD C,H
|
||
;PUSH BC
|
||
PUSH AF
|
||
;
|
||
PUSH DE
|
||
PUSH HL
|
||
LD XH,D
|
||
LD XL,E
|
||
INC XH
|
||
DEC H
|
||
LD C,BIOS.WIN_MOVE
|
||
;[x] 29/9/23
|
||
LD A,R
|
||
PUSH AF
|
||
;
|
||
XOR A
|
||
DI ;[x] 29/9/23
|
||
RST ToBIOS
|
||
; [x] 29/9/23
|
||
POP AF
|
||
JP PO,.skip2_EI:
|
||
EI
|
||
.skip2_EI:
|
||
POP HL
|
||
POP DE
|
||
;[x] 29/9/23
|
||
;POP BC
|
||
POP AF
|
||
;XOR A
|
||
;CP B
|
||
AND A
|
||
;
|
||
RET NZ
|
||
JP SCROLL.print
|
||
.SCR_ERR:
|
||
LD A,DSS_Error.sys.INVALID_FUNCTION
|
||
SCF
|
||
RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #54. ‚ë¡à âì ªâ¨¢ãî áâà ¨æã íªà .
|
||
;
|
||
; ¢å®¤: B - áâà ¨æ íªà 0/1
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
SELPAGE:
|
||
LD A,(VMODE)
|
||
;BIT 7,A
|
||
CP %1000'0000
|
||
JR NC,.SEL2
|
||
PUSH BC
|
||
LD C,A
|
||
CALL SETVMOD.TEXT_M
|
||
POP BC
|
||
.SEL2: LD A,B
|
||
AND #01
|
||
OUT (SCREEN_SWITCH),A
|
||
RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #51. <20>®«ãç¨âì ⥪ã騩 ०¨¬ íªà .
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A - ⥪ã騩 ०¨¬ íªà
|
||
; B - áâà ¨æ íªà 0/1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
GETVMOD:
|
||
IN A,(SCREEN_SWITCH)
|
||
LD B,A
|
||
LD A,(VMODE)
|
||
AND A
|
||
RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #50. ‚ë¡®à ०¨¬ íªà .
|
||
;
|
||
; ¢å®¤: A - ०¨¬ íªà
|
||
; #02 - ⥪áâ®¢ë© 40x32x16 梥⮢
|
||
; #03 - ⥪áâ®¢ë© 80x32x16 梥⮢
|
||
; #81 - £à ä¨ç¥áª¨© 320x256x256 梥⮢
|
||
; #82 - £à ä¨ç¥áª¨© 640x256x16 梥⮢
|
||
; B - áâà ¨æ íªà 0/1
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
SETVMOD:;
|
||
CP %1000'0000
|
||
LD C,A
|
||
JR NC,GRAPH
|
||
.TEXT_M: LD IX,BACKTXT
|
||
PUSH IX
|
||
EX AF,AF'
|
||
LD A,(VMODE)
|
||
LD (BACKTXT.VMODE),A
|
||
EX AF,AF'
|
||
OR A
|
||
JR Z,.NOMODE
|
||
DEC A
|
||
JR Z,.NOMODE
|
||
DEC A
|
||
LD HL,TAB_40x32
|
||
JR Z,T_40_32
|
||
DEC A
|
||
LD HL,TAB_80x32
|
||
JR Z,T_80_32
|
||
.NOMODE: POP IX
|
||
LD A,DSS_Error.sys.INVALID_VIDEO_MODE
|
||
SCF
|
||
RET
|
||
|
||
; “áâ ®¢ª £à ä. ०¨¬®¢
|
||
GRAPH: CALL SAVETXT
|
||
AND #7F
|
||
JR Z,G320_16 ; !TODO ? - ¯®ª ®âà ¡ âë¢ ¥â ª ª ®è¨¡ª
|
||
DEC A
|
||
JR Z,G320_56
|
||
DEC A
|
||
JR Z,G640_16
|
||
; DEC A
|
||
; JP Z,G640_56 ; !TODO ? - ¯®ª ®âà ¡ âë¢ ¥â ª ª ®è¨¡ª
|
||
G320_16: LD A,DSS_Error.sys.INVALID_VIDEO_MODE
|
||
SCF
|
||
RET
|
||
|
||
T_80_32:
|
||
T_40_32: PUSH BC
|
||
; LD HL,TAB2
|
||
LD A,B
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
OR B
|
||
AND #11
|
||
XOR #10
|
||
LD E,A
|
||
GRAPH_NEXT:
|
||
CALL SETMODE
|
||
POP BC
|
||
LD A,C
|
||
LD (VMODE),A
|
||
LD A,B
|
||
AND #01
|
||
OUT (SCREEN_SWITCH),A
|
||
LD A,(VMODE)
|
||
LD C,Dss.Mouse.SetVideoMode
|
||
RST ToDSS.Mouse
|
||
SAFE_PORTY
|
||
XOR A
|
||
RET
|
||
|
||
; T_80_32 PUSH BC
|
||
; LD HL,TAB1
|
||
; LD A,B
|
||
; RLCA
|
||
; RLCA
|
||
; RLCA
|
||
; RLCA
|
||
; OR B
|
||
; AND #11
|
||
; XOR #10
|
||
; LD E,A
|
||
; CALL SETMODE
|
||
; POP BC
|
||
; LD A,C
|
||
; LD (VMODE),A
|
||
; LD A,B
|
||
; AND #01
|
||
; OUT (SCREEN_SWITCH),A
|
||
; LD A,(VMODE)
|
||
; LD C,#81
|
||
; RST #30
|
||
; SAFE_PORTY
|
||
; XOR A
|
||
; RET
|
||
|
||
G320_56 PUSH BC
|
||
LD HL,TAB_320x256_0
|
||
LD E,#11
|
||
CALL SETMODE
|
||
LD HL,TAB_320x256_1
|
||
LD E,#00
|
||
JP GRAPH_NEXT
|
||
; CALL SETMODE
|
||
; POP BC
|
||
; LD A,C
|
||
; LD (VMODE),A
|
||
; LD A,B
|
||
; AND #01
|
||
; OUT (SCREEN_SWITCH),A
|
||
; LD A,(VMODE)
|
||
; LD C,#81
|
||
; RST #30
|
||
; SAFE_PORTY
|
||
; XOR A
|
||
; RET
|
||
|
||
G640_16 PUSH BC
|
||
LD HL,TAB_640x256_0
|
||
LD E,#11
|
||
CALL SETMODE
|
||
LD HL,TAB_640x256_1
|
||
LD E,#00
|
||
JP GRAPH_NEXT
|
||
|
||
; CALL SETMODE
|
||
; POP BC
|
||
; LD A,C
|
||
; LD (VMODE),A
|
||
; LD A,B
|
||
; AND #01
|
||
; OUT (SCREEN_SWITCH),A
|
||
; LD A,(VMODE)
|
||
; LD C,#81
|
||
; RST #30
|
||
; SAFE_PORTY
|
||
; XOR A
|
||
; RET
|
||
VMODE: DB #03
|
||
|
||
;-----------------------------------------------------------------------
|
||
; Žâªàëâì ®ª®
|
||
; ¢å®¤: hl=®¯¨á â¥«ì ®ª
|
||
; e=ä« £¨ ®ª
|
||
;
|
||
;02h - TEXT 40 x 32 (16 colors)
|
||
;03h - TEXT 80 x 32 (16 colors)
|
||
;80h - GRAF 320 x 256 (16 colors)
|
||
;81h - GRAF 320 x 256 (256 colors)
|
||
;82h - GRAF 640 x 256 (16 colors)
|
||
;83h - GRAF 640 x 256 (256 colors) UNUSED
|
||
;-----------------------------------------------------------------------
|
||
SETMODE: PUSH DE
|
||
LD DE,SYS_PAGE.SHARED_BUFFER_32b ; £àï§ë© å ª. ª¨¤ ¥â ¤ ë¥ ¢ ¡ãä¥à á«ã¦¥¡®© áâà ¨æë ¡¨®á .
|
||
LD BC,ScreenDescriptorTable.Size ; <20>ˆŽ‘ ¯à¨ ¨á¯®«ì§®¢ ¨¨ IX ¯à¥¤¯®« £ ¥â, çâ® ® 㪠§ë¢ ¥â
|
||
IN A,(SLOT3) ; ¤à¥á ¨¦¥ #C000 ¨ ¢áâ ¢«ï¥â ¢ âà¥âìî ¡ ªã áâà ¨æã #FE
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
LDIR
|
||
EX AF,AF'
|
||
OUT (SLOT3),A
|
||
.skip_EI: POP DE
|
||
LD IX,SYS_PAGE.SHARED_BUFFER_32b ; £àï§ë© å ª.
|
||
LD C,BIOS.WIN_OPEN
|
||
RST ToBIOS
|
||
SAFE_PORTY
|
||
XOR A
|
||
RET
|
||
|
||
;IX+0 ;HORIZONTAL
|
||
;IX+1 ;VERTICAL
|
||
;IX+2 ;X - COORD
|
||
;IX+3 ;Y - COORD
|
||
;IX+4 ;MODE
|
||
;IX+5 ;EXT MODE
|
||
;IX+6 ;VIDEO RAM X OFFSET (SIGNPLACES)
|
||
;IX+7 ;VIDEO RAM Y OFFSET (SIGNPLACES)
|
||
|
||
;
|
||
;.......................................................................
|
||
;+0 X à §¬¥à ®ª ¢ § ª®¬¥áâ å
|
||
;+1 Y à §¬¥à ®ª ¢ § ª®¬¥áâ å
|
||
;+2 X ¯®«®¦. ®ª íªà ¥
|
||
;+3 Y ¯®«®¦. ®ª íªà ¥
|
||
;+4 ०¨¬ § ª®¬¥áâ
|
||
;+5 ¤®¯. ०¨¬ § ª®¬¥áâ (bit0=1 ᯥª. ¤à¥á æ¨ï íªà )
|
||
;+6 X ¯®«®¦. ¢ ¯®«¥ £à 䨪¨ (¢ § ª®¬¥áâ å)
|
||
;+7 Y ¯®«®¦. ¢ ¯®«¥ £à 䨪¨ (¢ § ª®¬¥áâ å)
|
||
ScreenDescriptorTable EQU $
|
||
; 80x32. ⥪á⮢®¥, § ª®¬¥áâ® 16x8, #0B - ®¬¥à § ª®£¥.
|
||
TAB_80x32 DB #28,#20,#00,#00,#1B,#00,#00,#00 ;1
|
||
; 40x32. ⥪á⮢®¥, § ª®¬¥áâ® 8x8, #0B - ®¬¥à § ª®£¥.
|
||
TAB_40x32 DB #28,#20,#00,#00,#3B,#00,#00,#00 ;2
|
||
; 640x256. £à ä¨ç¥áª®¥, 0-© íªà
|
||
TAB_640x256_0 DB #28,#20,#00,#00,#00,#00,#00,#00 ;3
|
||
; 320x256. £à ä¨ç¥áª®¥, 0-© íªà
|
||
TAB_320x256_0 DB #28,#20,#00,#00,#20,#00,#00,#00 ;4
|
||
; 640x256. £à ä¨ç¥áª®¥, 1-© íªà
|
||
TAB_640x256_1 DB #28,#20,#00,#00,#40,#00,#28,#00 ;5
|
||
; 320x256. £à ä¨ç¥áª®¥, 1-© íªà
|
||
TAB_320x256_1 DB #28,#20,#00,#00,#60,#00,#28,#00 ;6
|
||
ScreenDescriptorTable.Size EQU ($ - ScreenDescriptorTable)/6
|
||
;.......................................................................
|
||
;
|
||
|
||
;----------------------------------------------------------------------
|
||
; ‘®åà ¨âì íªà ⥪áâ. ०¨¬ .
|
||
; „«ï ¡ãä¥à íªà ¨á¯. 2-ï ¡ ª à áè¨à¥¨ï „Ž‘.
|
||
SAVETXT: PUSH AF
|
||
LD A,(VMODE)
|
||
;BIT 7,A
|
||
CP %1000'0000
|
||
JR NC,.NOSAVET
|
||
SUB #02
|
||
JR C,.NOSAVET
|
||
;
|
||
PUSH BC
|
||
PUSH DE
|
||
PUSH HL
|
||
PUSH IX
|
||
;
|
||
PUSH AF
|
||
LD C,BIOS.LP_GET_PLACE
|
||
RST ToBIOS
|
||
LD (BACKTXT.CURS),DE
|
||
POP AF
|
||
LD IX,#C000
|
||
LD HL,#2050
|
||
OR A
|
||
JR NZ,.SVTEXT1
|
||
LD L,#28
|
||
.SVTEXT1: LD (BACKTXT.WinMax),HL
|
||
LD DE,#0000
|
||
LD A,(BANKTBL+TXTPAGE)
|
||
LD B,A
|
||
|
||
LD C,BIOS.WIN_COPY
|
||
;[x] 29/9/23
|
||
LD A,R
|
||
PUSH AF
|
||
;
|
||
XOR A
|
||
DI
|
||
RST ToBIOS
|
||
;[x] 29/9/23
|
||
POP AF
|
||
JP PO,.skip_EI
|
||
EI
|
||
.skip_EI: ;
|
||
POP IX
|
||
POP HL
|
||
POP DE
|
||
POP BC
|
||
.NOSAVET: POP AF
|
||
RET
|
||
;----------------------------------------------------------------------
|
||
|
||
BACKTXT: PUSH AF
|
||
.VMODE+1: LD A,#00
|
||
;BIT 7,A
|
||
CP %1000'0000
|
||
JR C,NOBACKT
|
||
;
|
||
PUSH BC
|
||
PUSH DE
|
||
PUSH HL
|
||
PUSH IX
|
||
LD IX,#C000
|
||
.WinMax+1: LD HL,#2050
|
||
LD DE,#0000
|
||
LD A,(BANKTBL+TXTPAGE)
|
||
LD B,A
|
||
LD C,BIOS.WIN_RESTORE
|
||
;[x] 29/9/23
|
||
LD A,R
|
||
PUSH AF
|
||
;
|
||
XOR A
|
||
DI
|
||
RST ToBIOS
|
||
;[x] 29/9/23
|
||
POP AF
|
||
JP PO,.no_ei
|
||
EI
|
||
.no_ei: ;
|
||
.CURS+1: LD DE,#0000
|
||
CALL LOCATE
|
||
POP IX
|
||
POP HL
|
||
POP DE
|
||
POP BC
|
||
NOBACKT: POP AF
|
||
RET
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5F. ‚뢮¤ ᨬ¢®« ¯à¨â¥à ¡¥§ ®¦¨¤ ¨ï.
|
||
;
|
||
; ˆâ¥à¯à¥â æ¨ï ¡ ©â á®áâ®ï¨ï ¯à¨â¥à :
|
||
; 0..2 - ¥ ¨á¯®«ì§ãîâáï, ®¡ëç® ãáâ. ¢ "1"
|
||
; 3 - ®è¨¡ª ¯à¨â¥à - ¥áâì/¥â (1/0)
|
||
; 4 - ¯à¨â¥à ¯®¤ª«îç¥/¥ ¯®¤ª«îç¥ (1/0)
|
||
; 5 - ¡ã¬ £¨ ¥â/¥áâì (1/0)
|
||
; 6 - ¯à¨â¥à £®â®¢/¢ë¢®¤¨â ®ç¥à¥¤®© ᨬ¢®« (1/0)
|
||
; 7 - ¯à¨â¥à ᢮¡®¤¥/§ ïâ (1/0)
|
||
;
|
||
; ¢å®¤: A - ᨬ¢®«
|
||
; ¢ë室: B - ᨬ¢®«
|
||
; CF - ®è¨¡ª , A=¡ ©â á®áâ®ï¨ï (¡¨âë 7..3)
|
||
;/////////////////////////////////////////////////////////////////////
|
||
;!FIXIT § ¬¥¨âì sp2000.inc
|
||
LPT_A EQU #1B
|
||
LPT_B EQU #1C
|
||
|
||
PRINT: AND A
|
||
LD B,A ; á®åà 塞 ᨬ¢®«
|
||
;
|
||
LD A,R
|
||
DI
|
||
PUSH AF
|
||
;
|
||
XOR A
|
||
OUT (LPT_A),A
|
||
LD A,#10
|
||
OUT (LPT_A),A
|
||
XOR A
|
||
OUT (LPT_A),A
|
||
IN A,(LPT_A) ; IN (1Bh): bit 5 - busy, Bit 3 - Ack
|
||
LD C,A
|
||
BIT 5,A ; IN (19h): bit 5 - Paper Enable, Bit 3 - Select
|
||
JR NZ,LPTBUSY
|
||
AND %11011000
|
||
JR Z,LPTBUSY
|
||
LD A,B ; ¢®ááâ ¢«¨¢ ¥¬ ᨬ¢®«
|
||
OUT (LPT_B),A
|
||
POP AF
|
||
RET PO
|
||
EI
|
||
RET
|
||
LPTBUSY:
|
||
POP AF
|
||
LD A,C
|
||
SCF
|
||
RET PO
|
||
EI
|
||
RET
|
||
|
||
; B - SYMBOL
|
||
; CF = 1 - PRINTER BUSY
|
||
;!FIXIT § ¬¥¨âì sp2000.inc
|
||
LPT1_C EQU #1D
|
||
LPT2_D EQU #1E
|
||
LPT2_C EQU #1F
|
||
PRINT_INIT:
|
||
DI
|
||
LD A,#CF ; port #1F ⮫쪮 ç¥p¥§ LD BC,1F : Out (BC),reg (¢ «ìâ¥à¥ ¨¤ñâ ¯¥à¥å¢ â í⮣® ¯®àâ ¯à®æ , ¥á«¨ ® ¢ ª®¬ ¤¥  㪠§ )
|
||
LD BC,LPT2_C
|
||
OUT (C),A
|
||
;[x] 29/9/23
|
||
;LD A,#63
|
||
LD A,63
|
||
;
|
||
OUT (C),A
|
||
LD A,#C0 ; Bit 7 - Select (1), Bit 6 - Auto_Line_Feed (1)
|
||
OUT (LPT2_D),A
|
||
LD A,#0F ; Init printer port for Out
|
||
OUT (LPT1_C),A
|
||
|
||
; ª« ¢
|
||
XOR A ;LD A,0
|
||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||
;[x] 29/9/23
|
||
INC A
|
||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||
DEC A
|
||
;
|
||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||
|
||
LD A,5
|
||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||
LD A,#62 ; bit 7 - Direction for Bufer (0), Bit 1 - Bufer Enable (1)
|
||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||
RET
|
||
;//MODULE: VIDEO
|
||
;[END] |