flex_nav/fnprint.a80

621 lines
9.7 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; LAST UPDATE: 20.02.2025 savelij
;[]----------------------------------------------------------[]
; <20>à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­ 640x256
; á ®¡à¥§ ­¨¥¬ «¥¢®£® ªà ï ⥪áâ 
; <20>  ¢å®¤:
; IX - Š®«-¢® ¯¨ªá¥«¥© ¯®¤ ¢ë¢®¤ áâப¨
; HL -  ¤à¥á ⥪á⮢®© áâப¨
; DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
; BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
; A - 梥⠯¥ç â¨ (7-4¡¨â PAPER, 3-0¡¨â INK)
; (ª®­¥æ áâப¨ - 0)
PrnRangPathL PUSH DE
PUSH BC
PUSH AF
DI
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
LD BC,0x0000
LD D,HIGH (FONT_RAW)-0xC0
PUSH HL
LD A,(HL)
PrRangL INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
OR A
JR NZ,PrRangL
PUSH IX
POP HL
SBC HL,BC
LD C,L
LD B,H
POP HL
JR NC,PrRngLE
LD A,C
SUB 0x1A
LD IXL,A
LD A,B
SBC A,0x00
LD IXH,A
LD A,(HL)
EX AF,AF'
INC HL
INC HL
PrRngL0 LD BC,0x0000
INC HL
LD A,(HL)
PrRngL1 INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
CP 0x5C
JR NZ,PrRngL1
ADD IX,BC
JR NC,PrRngL0
DEC HL
LD (HL),'.'
DEC HL
LD (HL),'.'
DEC HL
LD (HL),'\\'
DEC HL
LD (HL),':'
DEC HL
EX AF,AF'
LD (HL),A
PrRngLE POP AF
SETPORT WINSP.CPU0,,0
EI
POP AF
POP BC
POP DE
JP PrnTxtLnIFF
;[]----------------------------------------------------------[]
; <20>à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­ 640x256
; á ®¡à¥§ ­¨¥¬ «¥¢®£® ªà ï ⥪áâ 
; <20>  ¢å®¤:
; IX - Š®«-¢® ¯¨ªá¥«¥© ¯®¤ ¢ë¢®¤ áâப¨
; HL -  ¤à¥á ⥪á⮢®© áâப¨
; DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
; BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
; A - 梥⠯¥ç â¨ (7-4¡¨â PAPER, 3-0¡¨â INK)
; (ª®­¥æ áâப¨ - 0)
PrnRangPathR PUSH AF
PUSH BC
PUSH DE
DI
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
LD BC,0x0000
LD D,HIGH (FONT_RAW)-0xC0
PUSH HL
LD A,(HL)
PrRangR INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
OR A
JR NZ,PrRangR
PUSH IX
POP HL
SBC HL,BC
EX DE,HL
POP HL
JR NC,PrRngRE
LD A,E
SUB 0x1A
LD IXL,A
LD A,D
SBC A,0x00
LD IXH,A
LD D,HIGH (FONT_RAW)-0xC0
LD A,(HL)
EX AF,AF'
INC HL
INC HL
PrRngR0 LD BC,0x0000
INC HL
LD A,(HL)
PrRngR1 INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
CP 0x5C
JR NZ,PrRngR1
ADD IX,BC
JR NC,PrRngR0
DEC HL
LD (HL),'.'
DEC HL
LD (HL),'.'
DEC HL
LD (HL),'\\'
DEC HL
LD (HL),':'
DEC HL
EX AF,AF'
LD (HL),A
LD BC,0x0000
PUSH HL
LD A,(HL)
PrRngR2 INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
OR A
JR NZ,PrRngR2
POP HL
PrRngRE POP AF
SETPORT WINSP.CPU0,,0
EI
POP DE
EX DE,HL
OR A
SBC HL,BC
EX DE,HL
POP BC
POP AF
JP PrnTxtLnIFF
;[]----------------------------------------------------------[]
; <20>à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­ 640x256
; á ®¡à¥§ ­¨¥¬ «¥¢®£® ªà ï ⥪áâ 
; <20>  ¢å®¤:
; IX - Š®«-¢® ¯¨ªá¥«¥© ¯®¤ ¢ë¢®¤ áâப¨
; HL -  ¤à¥á ⥪á⮢®© áâப¨
; DE - 業âà ¢ë¢®¤  ¯® X
; BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
; A - 梥⠯¥ç â¨ (7-4¡¨â PAPER, 3-0¡¨â INK)
; (ª®­¥æ áâப¨ - 0)
PrnRangPathC PUSH BC
PUSH AF
PUSH DE
DI
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
PrnRangC LD BC,0x0000
LD D,HIGH (FONT_RAW)-0xC0
PUSH HL
LD A,(HL)
PrRangC INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
OR A
JR NZ,PrRangC
PUSH IX
POP HL
SBC HL,BC
EX DE,HL
POP HL
JR NC,PrRngCE
PUSH IX
LD A,E
SUB 0x1A
LD IXL,A
LD A,D
SBC A,0x00
LD IXH,A
LD A,(HL)
EX AF,AF'
INC HL
INC HL
LD D,HIGH (FONT_RAW)-0xC0
PrRngC0 LD BC,0x0000
INC HL
LD A,(HL)
PrRngC1 INC HL
LD E,A
LD A,(DE)
ADD A,A
ADD A,C
LD C,A
LD A,B
ADC A,0x00
LD B,A
LD A,(HL)
CP 0x5C
JR NZ,PrRngC1
ADD IX,BC
JR NC,PrRngC0
DEC HL
LD (HL),'.'
DEC HL
LD (HL),'.'
DEC HL
LD (HL),'\\'
DEC HL
LD (HL),':'
DEC HL
EX AF,AF'
LD (HL),A
POP IX
JR PrnRangC
PrRngCE POP AF
SETPORT WINSP.CPU0,,0
EI
POP DE
EX DE,HL
SRL B
RR C
OR A
SBC HL,BC
EX DE,HL
POP AF
POP BC
JP PrnTxtLnIFF
;[]----------------------------------------------------------[]
; <20>à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­ 640x256;
; ¢ ०¨¬¥ IFF èà¨äâ 
; <20>  ¢å®¤:
; HL -  ¤à¥á ⥪á⮢®© áâப¨
; DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
; BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
; A - 梥⠯¥ç â¨ (7-4¡¨â PAPER, 3-0¡¨â INK)
; (ª®­¥æ áâப¨ - 0)
PrnTxtLnIFF PUSH IY
LD IYL,C ; Y ª®®à¤¨­ â 
LD B,A
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
PUSH AF
GETPORT WINSP.CPU1
LD IYH,A
DI
EXX
SPMOUSE MOUSEF.REFRESH
EXX
CALL InsPrintColor
PUSH DE ; X ª®®à¤¨­ â 
EXX
POP BC
SRL B
RR C
SET 6,B
LD HL,PrnPAPp ; PAPER ¡ãä¥à
LD DE,PrnINKp ; INK ¡ãä¥à
EXX
LD C,L ; €¤à¥á áâப¨
LD B,H
; ˆâ ª:
; BC - A¤à¥á áâப¨
; 'HL - ¡ãä¥à PAPER
; 'DE - ¡ãä¥à INK
; 'BC - X ª®®à¤¨­ â  ¯¥ç â¨ ¢ ¢¨¤¥® އ“
; LY - Y ª®®à¤¨­ â  ¯¥ç â¨
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
ACCEL ACCELCMD.SET_BUFFER
LD A,0x08
ACCEL ACCELCMD.OFF
LD A,(BC)
INC BC
OR A
JR Z,PrnIFFe
PrnIFFloop LD L,A
LD H,HIGH (FONT_RAW)-0xC0
PUSH BC
LD B,(HL) ; ¤«¨­  ᨬ¢®« 
INC H
LD E,(HL)
INC H
LD D,(HL)
LD HL,0x0008
EX DE,HL
SETPORT WINSP.CPU1,0x50
PrnIFFlp1
ACCEL ACCELCMD.COPY
LD A,(HL)
ACCEL ACCELCMD.OFF
EXX
LD A,IYL
SETPORT WINSP.Y_PORT,,0
ACCEL ACCELCMD.COPY
OR (HL)
EX DE,HL
XOR (HL)
ACCEL ACCELCMD.COPY_VERT
LD (BC),A
ACCEL ACCELCMD.OFF
EX DE,HL
INC BC
EXX
ADD HL,DE
DJNZ PrnIFFlp1
POP BC
LD A,IYH
SETPORT WINSP.CPU1,,0
LD A,(BC)
INC BC
OR A
JR NZ,PrnIFFloop
PrnIFFe LD L,C ; €¤à¥á áâப¨
LD H,B
POP AF
SETPORT WINSP.CPU0,,0
EI
POP AF
SETPORT WINSP.Y_PORT,,0
POP IY
RET
;[]----------------------------------------------------------[]
; <20>à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­ 640x256;
; <20>  ¢å®¤:
; HL -  ¤à¥á ⥪á⮢®© áâப¨
; DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
; BC - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
; A - 梥⠯¥ç â¨ (7-4¡¨â PAPER, 3-0¡¨â INK)
; (ª®­¥æ áâப¨ - 0)
PrnTxtLnNorm PUSH IY
LD IYL,C ; Y ª®®à¤¨­ â 
LD B,A
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
PUSH AF
GETPORT WINSP.CPU1
LD IYH,A
DI
EXX
SPMOUSE MOUSEF.REFRESH
EXX
CALL InsPrintColor
PUSH DE ; X ª®®à¤¨­ â 
EXX
POP BC
SRL B
RR C
SET 6,B
LD HL,PrnPAPp ; PAPER ¡ãä¥à
LD DE,PrnINKp ; INK ¡ãä¥à
EXX
LD C,L ; €¤à¥á áâப¨
LD B,H
; ˆâ ª:
; BC - A¤à¥á áâப¨
; 'HL - ¡ãä¥à PAPER
; 'DE - ¡ãä¥à INK
; 'BC - X ª®®à¤¨­ â  ¯¥ç â¨ ¢ ¢¨¤¥® އ“
; LY - Y ª®®à¤¨­ â  ¯¥ç â¨
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
ACCEL ACCELCMD.SET_BUFFER
LD A,0x08
ACCEL ACCELCMD.OFF
LD A,(BC)
INC BC
OR A
JR Z,PrnNORe
PrnNORloop LD L,A
LD H,HIGH (IFFFONT_RAW)-0xC0
PUSH BC
LD E,(HL)
INC H
LD A,(HL)
ADD A,HIGH (IFFFONT_RAW)-0xC0
LD D,A
LD HL,0x0008
EX DE,HL
SETPORT WINSP.CPU1,0x50
LD B,0x04
PrnNORlp1
ACCEL ACCELCMD.COPY
LD A,(HL)
ACCEL ACCELCMD.OFF
EXX
LD A,IYL
SETPORT WINSP.Y_PORT,,0
ACCEL ACCELCMD.COPY
OR (HL)
EX DE,HL
XOR (HL)
ACCEL ACCELCMD.COPY_VERT
LD (BC),A
ACCEL ACCELCMD.OFF
EX DE,HL
INC BC
EXX
ADD HL,DE
DJNZ PrnNORlp1
POP BC
LD A,IYH
SETPORT WINSP.CPU1,,0
LD A,(BC)
INC BC
OR A
JR NZ,PrnNORloop
PrnNORe LD L,C ; €¤à¥á áâப¨
LD H,B
POP AF
SETPORT WINSP.CPU0,,0
EI
POP AF
SETPORT WINSP.Y_PORT,,0
POP IY
RET
;[]----------------------------------------------------------[]
; <20>à®æ¥¤ãà  ¢ë¢®¤  ⥪á⮢ëå áâப ­  £à ä¨ç¥áª¨© íªà ­ 640x256;
; <20>  ¢å®¤:
; HL -  ¤à¥á ⥪á⮢®© áâப¨
; DE - ¯®§¨æ¨ï ¢ë¢®¤  ¯® X
; C - ¯®§¨æ¨ï ¢ë¢®¤  ¯® Y
; B - ª®«-¢® ¯¥ç â ¥¬ëå ᨬ¢®«®¢
; A - 梥⠯¥ç â¨ (7-4¡¨â PAPER, 3-0¡¨â INK)
; (ª®­¥æ áâப¨ - 0)
PrnTxtLnNormC PUSH IY
LD IYL,C ; Y ª®®à¤¨­ â 
LD IYH,B ; ª®«-¢® ᨬ¢
LD B,A
GETPORT WINSP.Y_PORT ; ‘®å࠭塞 Y ¯®àâ
PUSH AF
GETPORT WINSP.CPU1
PUSH AF
SETPORT WINSP.CPU1,0x50
DI
EXX
SPMOUSE MOUSEF.REFRESH
EXX
CALL InsPrintColor
PUSH DE ; X ª®®à¤¨­ â 
EXX
POP BC
SRL B
RR C
SET 6,B
LD HL,PrnPAPp ; PAPER ¡ãä¥à
LD DE,PrnINKp ; INK ¡ãä¥à
EXX
LD C,L ; €¤à¥á áâப¨
LD B,H
; ˆâ ª:
; BC - A¤à¥á áâப¨
; 'HL - ¡ãä¥à PAPER
; 'DE - ¡ãä¥à INK
; 'BC - X ª®®à¤¨­ â  ¯¥ç â¨ ¢ ¢¨¤¥® އ“
; LY - Y ª®®à¤¨­ â  ¯¥ç â¨
; IN A,(PAGE0)
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
ACCEL ACCELCMD.SET_BUFFER
LD A,0x08
ACCEL ACCELCMD.OFF
PrnNORloopC LD A,(BC)
INC BC
LD L,A
LD H,HIGH (IFFFONT_RAW)-0xC0
PUSH BC
LD E,(HL)
INC H
LD A,(HL)
ADD A,HIGH (IFFFONT_RAW)-0xC0
LD D,A
LD HL,0x0008
EX DE,HL
LD B,0x04
PrnNORlp1c
ACCEL ACCELCMD.COPY
LD A,(HL)
ACCEL ACCELCMD.OFF
EXX
LD A,IYL
SETPORT WINSP.Y_PORT,,0
ACCEL ACCELCMD.COPY
OR (HL)
EX DE,HL
XOR (HL)
ACCEL ACCELCMD.COPY_VERT
LD (BC),A
ACCEL ACCELCMD.OFF
EX DE,HL
INC BC
EXX
ADD HL,DE
DJNZ PrnNORlp1c
POP BC
DEC IYH
JR NZ,PrnNORloopC
POP AF
SETPORT WINSP.CPU0,,0
EI
POP AF
SETPORT WINSP.CPU1,,0
POP AF
SETPORT WINSP.Y_PORT,,0
POP IY
RET
InsPrintColor LD A,B
CP 0x00
.PrvCOLp EQU $-1
RET Z
LD (.PrvCOLp),A
AND 0x0F ; INK
LD C,A
RLCA
RLCA
RLCA
RLCA
OR C
EXX
LD HL,PrnINKp ; INK ¡ãä¥à
CPL
REPT 7
LD (HL),A
INC HL
ENDM
LD (HL),A
EXX
LD A,B
AND 0xF0 ; PAPER
LD B,A
RRCA
RRCA
RRCA
RRCA
OR B
EXX
LD DE,PrnPAPp ; PAPER ¡ãä¥à
XOR (HL) ; XOR á INK
REPT 7
LD (DE),A
INC DE
ENDM
LD (DE),A
EXX
RET
PrnINKp DB 8 DUP 0
PrnPAPp DB 8 DUP 0