📄 eeunzip.asm
字号:
JMP ?UNZIP_EN_ALPHABET_00X ;
?UNZIP_EN_ALPHABET_001: ;
STA <_EE_ZIP_CODE_NUM ; _EE_ZIP_CODE_NUM = A;
LDA UNZIPEE_b_TO_B,Y ;
STA <_EE_CODE_SIZE ;
LDA <_EE_BIT_SIZE ;
ASL A ;
TAY ;
LDA en_entab,Y ;
STA <_EE_CODE_PTR_L ;
LDA en_entab+1,Y ; _CODE_PTR = en_entab[_EE_BIT_SIZE];
STA <_EE_CODE_PTR_H ;
LDA <_EE_CODE_SIZE ;
SEC ;
SBC #2 ;
ASL A ;
TAX ;
JMP (?UNZIP_EN_ALPHABET_CMP_PROC,X)
?UNZIP_EN_ALPHABET_CMP_PROC:
DW ?UNZIP_EN_ALPHABET_CMP_1B
DW ?UNZIP_EN_ALPHABET_CMP_2B
DW ?UNZIP_EN_ALPHABET_CMP_3B
?UNZIP_EN_ALPHABET_CMP_1B:
LDA <_EE_ZIPPED_CODE_L
CMP (_EE_CODE_PTR_L)
BEQ ?UNZIP_EN_ALPHABET_CMP_1BY
WORD_ADD_BYTE <_EE_CODE_PTR_L,<_EE_CODE_SIZE
DEC <_EE_ZIP_CODE_NUM
BNE ?UNZIP_EN_ALPHABET_CMP_1B
JMP ?UNZIP_EN_ALPHABET_00X
?UNZIP_EN_ALPHABET_CMP_1BY:
LDY #1
LDA (_EE_CODE_PTR_L),Y
RTS
?UNZIP_EN_ALPHABET_CMP_2B:
LDA <_EE_ZIPPED_CODE_M
CMP (_EE_CODE_PTR_L)
BNE ?UNZIP_EN_ALPHABET_CMP_2B1
LDY #1
LDA <_EE_ZIPPED_CODE_L
CMP (_EE_CODE_PTR_L),Y
BEQ ?UNZIP_EN_ALPHABET_CMP_2BY
?UNZIP_EN_ALPHABET_CMP_2B1:
WORD_ADD_BYTE <_EE_CODE_PTR_L,<_EE_CODE_SIZE
DEC <_EE_ZIP_CODE_NUM
BNE ?UNZIP_EN_ALPHABET_CMP_2B
JMP ?UNZIP_EN_ALPHABET_00X
?UNZIP_EN_ALPHABET_CMP_2BY:
LDY #2
LDA (_EE_CODE_PTR_L),Y
RTS
?UNZIP_EN_ALPHABET_CMP_3B:
LDA <_EE_ZIPPED_CODE_H
CMP (_EE_CODE_PTR_L)
BNE ?UNZIP_EN_ALPHABET_CMP_3B1
LDY #1
LDA <_EE_ZIPPED_CODE_M
CMP (_EE_CODE_PTR_L),Y
BNE ?UNZIP_EN_ALPHABET_CMP_3B1
INY
LDA <_EE_ZIPPED_CODE_L
CMP (_EE_CODE_PTR_L),Y
BEQ ?UNZIP_EN_ALPHABET_CMP_3BY
?UNZIP_EN_ALPHABET_CMP_3B1:
WORD_ADD_BYTE <_EE_CODE_PTR_L,<_EE_CODE_SIZE
DEC <_EE_ZIP_CODE_NUM
BNE ?UNZIP_EN_ALPHABET_CMP_3B
JMP ?UNZIP_EN_ALPHABET_00X
?UNZIP_EN_ALPHABET_CMP_3BY:
LDY #3
LDA (_EE_CODE_PTR_L),Y
RTS
?UNZIP_EN_ALPHABET_00X:
DEC <_EE_UNZIP_LOOP
LDA <_EE_UNZIP_LOOP
BEQ ?UNZIP_EN_ALPHABET_00Y
JMP ?UNZIP_EN_ALPHABET_000
?UNZIP_EN_ALPHABET_00Y:
DEC_WORD <_EE_LINK_SIZE_0
LDA <_EE_LINK_SIZE_0
ORA <_EE_LINK_SIZE_1
BEQ ?UNZIP_EN_ALPHABET_0X
JMP ?UNZIP_EN_ALPHABET_0
?UNZIP_EN_ALPHABET_0X:
LDA #0
RTS
; ***************************************************************************
JMP ?UNZIP_EN_ALPHABET_00X
UNZIP_N_EN_ALPHABET:
STZ <_EE_BIT_SIZE
STZ <_EE_ZIPPED_CODE_L
STZ <_EE_ZIPPED_CODE_M
STZ <_EE_ZIPPED_CODE_H
BRA UNZIP_N_EN_ALPHABET-3
; ***************************************************************************
UNZIP_EN_LEMMA:
JSR UNZIP_A_EN_ALPHABET
STA EE_LEMMA_BUFFER
LDX #1
CMP #$09
BEQ ?UNZIP_EN_LEMMAX
?UNZIP_EN_LEMMA0:
PHX
JSR UNZIP_N_EN_ALPHABET
PLX
STA EE_LEMMA_BUFFER,X
CMP #$09
BEQ ?UNZIP_EN_LEMMAX
INX
BRA ?UNZIP_EN_LEMMA0
?UNZIP_EN_LEMMAX:
STZ EE_LEMMA_BUFFER,X
RTS
; ***************************************************************************
EE_LEMMA_STRCMP: ;EE_LEMMA_STRCMP:
LDX #0 ; X=0;
?EE_LEMMA_STRCMP0: ;?EE_LEMMA_STRCMP0:
LDA EE_IN_BUFFER,X ; A = EE_IN_BUFFER[X];
TAY ; Y = A;
JSR EE_UPPER_CASE ;
STA EE_IN_BUFFER,X ; EE_IN_BUFFER[X] = UPPER_CASE(A);
LDA EE_LEMMA_BUFFER,X ; A = EE_LEMMA_BUFFER[X];
JSR EE_UPPER_CASE ; A = UPPER_CASE(A);
CMP EE_IN_BUFFER,X ;
BNE ?EE_LEMMA_STRCMP1 ; if (A!=EE_IN_BUFFER[X]) return;
CMP #0 ;
BEQ ?EE_LEMMA_STRCMPX ; if (A==0) return 0;
TYA ; A = Y;
STA EE_IN_BUFFER,X ; EE_IN_BUFFER[X] = A;
INX ; X++;
BRA ?EE_LEMMA_STRCMP0 ; goto ?EE_LEMMA_STRCMP0;
?EE_LEMMA_STRCMP1: ;
?EE_LEMMA_STRCMPX: ;
PHP ;
TYA ;
STA EE_IN_BUFFER,X ;
PLP ;
RTS ;
; ***************************************************************************
EE_FIRST_PAGE: ;
JSR CLR_TEXTBUFFER ;
STZ EE_COL_IDX ;
STZ EE_ROW_IDX ;
STZ EE_PAGE_END ;
STZ EE_LAST_BYTE ;
JSR UNZIP_A_EN_ALPHABET ;
STA EE_LAST_WORD ;
LDA #1
STA EE_WORD_IDX ;
?EE_FIRST_PAGE0: ;
JSR UNZIP_N_EN_ALPHABET ;
BEQ ?EE_FIRST_PAGE00 ;
LDX EE_WORD_IDX ;
INC EE_WORD_IDX ;
STA EE_LAST_WORD,X ;
JSR EE_CHECK_CHAR ;
CPY #1 ;
BEQ ?EE_FIRST_PAGE0 ;
BRA ?EE_FIRST_PAGE01 ;
?EE_FIRST_PAGE00: ;
LDA #1 ;
STA EE_PAGE_END ;
?EE_FIRST_PAGE01: ;
LDA EE_LAST_BYTE ;
CMP #$09 ;
BNE ?EE_NEXT_PAGE_IN ;
LDA EE_COL_IDX ;
CMP #2 ;
BCS ?EE_FIRST_PAGE02 ;
STZ EE_COL_IDX ;
?EE_NEXT_PAGE_IN: ;
LDA EE_WORD_IDX
BNE ?EE_NEXT_PAGE_IN0
JMP ?EE_FIRST_PAGEX
?EE_NEXT_PAGE_IN0:
CLC ;
LDA EE_WORD_IDX ;
ADC EE_COL_IDX ;
CMP #21 ;
BCC ?EE_FIRST_PAGE1 ;
BNE ?EE_FIRST_PAGE02 ;
LDA EE_LAST_WORD,X ;
CMP #' ' ;
BNE ?EE_FIRST_PAGE02 ;
DEX EE_WORD_IDX ;
BNE ?EE_FIRST_PAGE1 ;
JMP ?EE_FIRST_PAGEX ;
?EE_FIRST_PAGE02: ;
CLC ;
LDA EE_ROW_IDX ;
ADC #20 ;
CMP #100 ;
BCC ?EE_FIRST_PAGE03 ;
STZ EE_PAGE_END ;
JMP ?EE_FIRST_PAGEX ;
?EE_FIRST_PAGE03: ;
STA EE_ROW_IDX ;
STZ EE_COL_IDX ;
?EE_FIRST_PAGE1: ;
CLC ;
LDA EE_ROW_IDX ;
ADC EE_COL_IDX ;
TAX ;
LDY #0 ;
?EE_FIRST_PAGE10: ;
LDA EE_LAST_WORD,Y ;
STA TEXTBUFFOR,X ;
INX ;
INY ;
DEC EE_WORD_IDX ;
BNE ?EE_FIRST_PAGE10 ;
STA EE_LAST_BYTE ;
TXA ;
SEC ;
SBC EE_ROW_IDX ;
STA EE_COL_IDX ;
LDA EE_PAGE_END ;
BNE ?EE_FIRST_PAGEX ;
STZ EE_WORD_IDX ;
; LUPDATESCREEN
; WAIT_ANY_KEY
JMP ?EE_FIRST_PAGE0 ;
?EE_FIRST_PAGEX: ;
RTS
; ***************************************************************************
JMP ?EE_NEXT_PAGE_IN
EE_NEXT_PAGE:
LDA <_EE_FAR_PTRB_2
STA <_DRRL
LDA <_EE_FAR_PTRB_3
STA <_DRRH
JSR CLR_TEXTBUFFER ;
STZ EE_COL_IDX ;
STZ EE_ROW_IDX ;
BRA EE_NEXT_PAGE-3 ;
; ***************************************************************************
PUBLIC EE_NEXT_WORD0
EE_NEXT_WORD:
STZ EE_LEMMA_BUFFER ; J.A. 2003-5-12
;PUTSIO #0FFH
;PUTSIO <_EE_FAR_PTRB_3
;PUTSIO <_EE_FAR_PTRB_2
;PUTSIO <_EE_FAR_PTRB_1
;PUTSIO <_EE_FAR_PTRB_0
LDA <_EE_FAR_PTRB_3
CMP #(END_WORD_ADDR_B>>24)
BNE EE_NEXT_WORD0
LDA <_EE_FAR_PTRB_2
CMP #(END_WORD_ADDR_B>>16)
BNE EE_NEXT_WORD0
LDA <_EE_FAR_PTRB_1
CMP #(END_WORD_ADDR_B>>8)
BNE EE_NEXT_WORD0
LDA <_EE_FAR_PTRB_0
CMP #END_WORD_ADDR_B
BNE EE_NEXT_WORD0
LDA #0
RTS
EE_NEXT_WORD0:
JSR EE_INIT_N_ADDR
JSR UNZIP_EN_LEMMA
JSR EE_INIT_R_ADDR
LDA #1
RTS
; ***************************************************************************
EE_PGUP_WORD:
LDA BK_FAR_PTRB_0
CMP #<EELib
BNE ?EE_PGUP_WORD0
LDA BK_FAR_PTRB_1
CMP #>EELib
BNE ?EE_PGUP_WORD0
LDA BK_FAR_PTRB_2
CMP #<(EELib/10000H)
BNE ?EE_PGUP_WORD0
LDA BK_FAR_PTRB_3
CMP #<(EELib/1000000H)
BNE ?EE_PGUP_WORD0
LDA #0
RTS
?EE_PGUP_WORD0:
JSR LOAD_PTRA
JSR EE_INIT_0_ADDR
LDA <_EE_FAR_PTRB_0
CMP BK_FAR_PTRB_0
BNE ?EE_PGUP_WORD00
LDA <_EE_FAR_PTRB_1
CMP BK_FAR_PTRB_1
BNE ?EE_PGUP_WORD00
LDA <_EE_FAR_PTRB_2
CMP BK_FAR_PTRB_2
BNE ?EE_PGUP_WORD00
LDA <_EE_FAR_PTRB_3
CMP BK_FAR_PTRB_3
BNE ?EE_PGUP_WORD00 ;
JMP ?EE_PGUP_WORD50 ;
?EE_PGUP_WORD00:
LDA <_EE_FAR_PTRB_0
CMP BK_FAR_PTRB_0
BNE ?EE_PGUP_WORD20
LDA <_EE_FAR_PTRB_1
CMP BK_FAR_PTRB_1
BNE ?EE_PGUP_WORD20
LDA <_EE_FAR_PTRB_2
CMP BK_FAR_PTRB_2
BNE ?EE_PGUP_WORD20
LDA <_EE_FAR_PTRB_3
CMP BK_FAR_PTRB_3
BEQ ?EE_PGUP_WORD30
?EE_PGUP_WORD20:
JSR SAVE_PTRB0
LONG_2_DDR_REG <_EE_FAR_PTRB_0
LDA <_EE_FAR_PTRB_2
STA <_DRRL
LDA <_EE_FAR_PTRB_3
STA <_DRRH
JSR GET_F_PTRB_BYTE
STA <_EE_LINK_SIZE_0
JSR GET_F_PTRB_BYTE
STA <_EE_LINK_SIZE_1
JSR LOAD_PTRB0
LONG_ADD_WORD <_EE_FAR_PTRB_0,<_EE_LINK_SIZE_0
LONG_ADD_CONST <_EE_FAR_PTRB_0,2
JMP ?EE_PGUP_WORD00
?EE_PGUP_WORD30:
JSR LOAD_PTRB0
JSR EE_INIT__ADDR
JSR UNZIP_EN_LEMMA
JSR EE_INIT_R_ADDR
LDA #1
RTS
?EE_PGUP_WORD50:
JSR LOAD_PTRA
LONG_SUB_CONST <_EE_FAR_PTRA_0,3
JSR SAVE_PTRA
JSR EE_INIT_0_ADDR
LDA #63
STA EE_TEMP0
?EE_PGUP_WORD51:
JSR SAVE_PTRB0
LONG_2_DDR_REG <_EE_FAR_PTRB_0
LDA <_EE_FAR_PTRB_2
STA <_DRRL
LDA <_EE_FAR_PTRB_3
STA <_DRRH
JSR GET_F_PTRB_BYTE
STA <_EE_LINK_SIZE_0
JSR GET_F_PTRB_BYTE
STA <_EE_LINK_SIZE_1
JSR LOAD_PTRB0
LONG_ADD_WORD <_EE_FAR_PTRB_0,<_EE_LINK_SIZE_0
LONG_ADD_CONST <_EE_FAR_PTRB_0,2
DEC EE_TEMP0
BNE ?EE_PGUP_WORD51
JSR LOAD_PTRB0
JSR EE_INIT__ADDR
JSR UNZIP_EN_LEMMA
JSR EE_INIT_R_ADDR
LDA #1
RTS
; ***************************************************************************
; .IFDEF DEBUGGING
PUTSIOX:
macro
jsr LJSR
dw BiosBank
dw SendByte-1
endm
DUMP_LEMMA_BUF:
LDX #0
?DUMP_LEMMA_BUF0:
LDA EE_LEMMA_BUFFER,X
BEQ ?DUMP_LEMMA_BUFX
PHX
TAX
PUTSIOX
PLX
INX
BRA ?DUMP_LEMMA_BUF0
?DUMP_LEMMA_BUFX:
;PUTSIO #$0D
;PUTSIO #$0A
RTS
; .ENDIF
; ***************************************************************************
ENDS
; ***************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -