refactoring

This commit is contained in:
Anatoliy Belyanskiy 2023-06-21 02:26:06 +10:00
parent c830097baf
commit f0ab2100a7
3 changed files with 184 additions and 228 deletions

View File

@ -346,155 +346,103 @@ L0090: SCF ; set the carry flag
; the word. The first is an inverted step-over byte. ; the word. The first is an inverted step-over byte.
;; TKN-TABLE ;; TKN-TABLE
L0095: DC '?' L0095:
DC "RND" DC "?"
DC "INKEY$" DC 'RND'
DC 'INKEY$'
DC 'PI' DC 'PI'
DC 'FN' DC 'FN'
DC "POINT" DC 'POINT'
DC "SCREEN$" DC 'SCREEN$'
DC "ATTR" DC 'ATTR'
DC 'AT' DC 'AT'
DC "TAB" DC 'TAB'
DC "VAL$" DC 'VAL$'
DC "CODE" DC 'CODE'
DC "VAL" DC 'VAL'
DC "LEN" DC 'LEN'
DC "SIN" DC 'SIN'
DC "COS" DC 'COS'
DC "TAN" DC 'TAN'
DC "ASN" DC 'ASN'
DC "ACS" DC 'ACS'
DC "ATN" DC 'ATN'
DC 'LN' DC 'LN'
DC "EXP" DC 'EXP'
DC "INT" DC 'INT'
DC "SQR" DC 'SQR'
DC "SGN" DC 'SGN'
DC "ABS" DC 'ABS'
DC "PEEK" DC 'PEEK'
DC 'IN' DC 'IN'
DC "USR" DC 'USR'
DC "STR$" DC 'STR$'
DC "CHR$" DC 'CHR$'
DC "NOT" DC 'NOT'
DC "BIN" DC 'BIN'
; The previous 32 function-type words are printed without a leading space ; The previous 32 function-type words are printed without a leading space
; The following have a leading space if they begin with a letter ; The following have a leading space if they begin with a letter
DEFB 'O','R'+$80 DC "OR"
DEFM "AN" DC "AND"
DEFB 'D'+$80 DC "<="
DEFB $3C,'='+$80 ; <= DC ">="
DEFB $3E,'='+$80 ; >= DC "<>"
DEFB $3C,$3E+$80 ; <> DC "LINE"
DEFM "LIN" DC "THEN"
DEFB 'E'+$80 DC "TO"
DEFM "THE" DC "STEP"
DEFB 'N'+$80 DC "DEF FN"
DEFB 'T','O'+$80 DC "CAT"
DEFM "STE" DC "FORMAT"
DEFB 'P'+$80 DC "MOVE"
DEFM "DEF F" DC "ERASE"
DEFB 'N'+$80 DC "OPEN #"
DEFM "CA" DC "CLOSE #"
DEFB 'T'+$80 DC "MERGE"
DEFM "FORMA" DC "VERIFY"
DEFB 'T'+$80 DC "BEEP"
DEFM "MOV" DC "CIRCLE"
DEFB 'E'+$80 DC "INK"
DEFM "ERAS" DC "PAPER"
DEFB 'E'+$80 DC "FLASH"
DEFM "OPEN " DC "BRIGHT"
DEFB '#'+$80 DC "INVERSE"
DEFM "CLOSE " DC "OVER"
DEFB '#'+$80 DC "OUT"
DEFM "MERG" DC "LPRINT"
DEFB 'E'+$80 DC "LLIST"
DEFM "VERIF" DC "STOP"
DEFB 'Y'+$80 DC "READ"
DEFM "BEE" DC "DATA"
DEFB 'P'+$80 DC "RESTORE"
DEFM "CIRCL" DC "NEW"
DEFB 'E'+$80 DC "BORDER"
DEFM "IN" DC "CONTINUE"
DEFB 'K'+$80 DC "DIM"
DEFM "PAPE" DC "REM"
DEFB 'R'+$80 DC "FOR"
DEFM "FLAS" DC "GO TO"
DEFB 'H'+$80 DC "GO SUB"
DEFM "BRIGH" DC "INPUT"
DEFB 'T'+$80 DC "LOAD"
DEFM "INVERS" DC "LIST"
DEFB 'E'+$80 DC "LET"
DEFM "OVE" DC "PAUSE"
DEFB 'R'+$80 DC "NEXT"
DEFM "OU" DC "POKE"
DEFB 'T'+$80 DC "PRINT"
DEFM "LPRIN" DC "PLOT"
DEFB 'T'+$80 DC "RUN"
DEFM "LLIS" DC "SAVE"
DEFB 'T'+$80 DC "RANDOMIZE"
DEFM "STO" DC "IF"
DEFB 'P'+$80 DC "CLS"
DEFM "REA" DC "DRAW"
DEFB 'D'+$80 DC "CLEAR"
DEFM "DAT" DC "RETURN"
DEFB 'A'+$80 DC "COPY"
DEFM "RESTOR"
DEFB 'E'+$80
DEFM "NE"
DEFB 'W'+$80
DEFM "BORDE"
DEFB 'R'+$80
DEFM "CONTINU"
DEFB 'E'+$80
DEFM "DI"
DEFB 'M'+$80
DEFM "RE"
DEFB 'M'+$80
DEFM "FO"
DEFB 'R'+$80
DEFM "GO T"
DEFB 'O'+$80
DEFM "GO SU"
DEFB 'B'+$80
DEFM "INPU"
DEFB 'T'+$80
DEFM "LOA"
DEFB 'D'+$80
DEFM "LIS"
DEFB 'T'+$80
DEFM "LE"
DEFB 'T'+$80
DEFM "PAUS"
DEFB 'E'+$80
DEFM "NEX"
DEFB 'T'+$80
DEFM "POK"
DEFB 'E'+$80
DEFM "PRIN"
DEFB 'T'+$80
DEFM "PLO"
DEFB 'T'+$80
DEFM "RU"
DEFB 'N'+$80
DEFM "SAV"
DEFB 'E'+$80
DEFM "RANDOMIZ"
DEFB 'E'+$80
DEFB 'I','F'+$80
DEFM "CL"
DEFB 'S'+$80
DEFM "DRA"
DEFB 'W'+$80
DEFM "CLEA"
DEFB 'R'+$80
DEFM "RETUR"
DEFB 'N'+$80
DEFM "COP"
DEFB 'Y'+$80
; ---------------- ; ----------------
; THE 'KEY' TABLES ; THE 'KEY' TABLES
@ -511,45 +459,45 @@ L0095: DC '?'
; the values obtained from this table. ; the values obtained from this table.
;; MAIN-KEYS ;; MAIN-KEYS
L0205: DEFB $42 ; B L0205: DEFB "B"
DEFB $48 ; H DEFB "H"
DEFB $59 ; Y DEFB "Y"
DEFB $36 ; 6 DEFB "6"
DEFB $35 ; 5 DEFB "5"
DEFB $54 ; T DEFB "T"
DEFB $47 ; G DEFB "G"
DEFB $56 ; V DEFB "V"
DEFB $4E ; N DEFB "N"
DEFB $4A ; J DEFB "J"
DEFB $55 ; U DEFB "U"
DEFB $37 ; 7 DEFB "7"
DEFB $34 ; 4 DEFB "4"
DEFB $52 ; R DEFB "R"
DEFB $46 ; F DEFB "F"
DEFB $43 ; C DEFB "C"
DEFB $4D ; M DEFB "M"
DEFB $4B ; K DEFB "K"
DEFB $49 ; I DEFB "I"
DEFB $38 ; 8 DEFB "8"
DEFB $33 ; 3 DEFB "3"
DEFB $45 ; E DEFB "E"
DEFB $44 ; D DEFB "D"
DEFB $58 ; X DEFB "X"
DEFB $0E ; SYMBOL SHIFT DEFB $0E ; SYMBOL SHIFT
DEFB $4C ; L DEFB "L"
DEFB $4F ; O DEFB "O"
DEFB $39 ; 9 DEFB "9"
DEFB $32 ; 2 DEFB "2"
DEFB $57 ; W DEFB "W"
DEFB $53 ; S DEFB "S"
DEFB $5A ; Z DEFB "Z"
DEFB $20 ; SPACE DEFB " "
DEFB $0D ; ENTER DEFB $0D ; ENTER
DEFB $50 ; P DEFB "P"
DEFB $30 ; 0 DEFB "0"
DEFB $31 ; 1 DEFB "1"
DEFB $51 ; Q DEFB "Q"
DEFB $41 ; A DEFB "A"
;; E-UNSHIFT ;; E-UNSHIFT
@ -586,13 +534,13 @@ L022C: DEFB $E3 ; READ
;; EXT-SHIFT ;; EXT-SHIFT
; The 26 shifted extended mode keys for the alphabetic characters. ; The 26 shifted extended mode keys for the alphabetic characters.
; The red keywords below keys on the original keyboard. ; The red keywords below keys on the original keyboard.
L0246: DEFB $7E ; ~ L0246: DEFB '~'
DEFB $DC ; BRIGHT DEFB $DC ; BRIGHT
DEFB $DA ; PAPER DEFB $DA ; PAPER
DEFB $5C ; \ DEFB '\' ;
DEFB $B7 ; ATN DEFB $B7 ; ATN
DEFB $7B ; { DEFB '{'
DEFB $7D ; } DEFB '}'
DEFB $D8 ; CIRCLE DEFB $D8 ; CIRCLE
DEFB $BF ; IN DEFB $BF ; IN
DEFB $AE ; VAL$ DEFB $AE ; VAL$
@ -604,13 +552,13 @@ L0246: DEFB $7E ; ~
DEFB $7F ; (Copyright character) DEFB $7F ; (Copyright character)
DEFB $B5 ; ASN DEFB $B5 ; ASN
DEFB $D6 ; VERIFY DEFB $D6 ; VERIFY
DEFB $7C ; | DEFB '|'
DEFB $D5 ; MERGE DEFB $D5 ; MERGE
DEFB $5D ; ] DEFB ']'
DEFB $DB ; FLASH DEFB $DB ; FLASH
DEFB $B6 ; ACS DEFB $B6 ; ACS
DEFB $D9 ; INK DEFB $D9 ; INK
DEFB $5B ; [ DEFB '['
DEFB $D7 ; BEEP DEFB $D7 ; BEEP
@ -634,31 +582,31 @@ L0260: DEFB $0C ; DELETE
; The ten single-character digit symbols are converted without the aid of ; The ten single-character digit symbols are converted without the aid of
; a table using subtraction and minor manipulation. ; a table using subtraction and minor manipulation.
L026A: DEFB $E2 ; STOP L026A: DEFB $E2 ; STOP
DEFB $2A ; * DEFB '*'
DEFB $3F ; ? DEFB '?'
DEFB $CD ; STEP DEFB $CD ; STEP
DEFB $C8 ; >= DEFB $C8 ; >=
DEFB $CC ; TO DEFB $CC ; TO
DEFB $CB ; THEN DEFB $CB ; THEN
DEFB $5E ; ^ DEFB '^'
DEFB $AC ; AT DEFB $AC ; AT
DEFB $2D ; - DEFB '-'
DEFB $2B ; + DEFB '+'
DEFB $3D ; = DEFB '='
DEFB $2E ; . DEFB '.'
DEFB $2C ; , DEFB ','
DEFB $3B ; ; DEFB ';'
DEFB $22 ; " DEFB '"'
DEFB $C7 ; <= DEFB $C7 ; <=
DEFB $3C ; < DEFB '<'
DEFB $C3 ; NOT DEFB $C3 ; NOT
DEFB $3E ; > DEFB '>'
DEFB $C5 ; OR DEFB $C5 ; OR
DEFB $2F ; / DEFB '/'
DEFB $C9 ; <> DEFB $C9 ; <>
DEFB $60 ; pound DEFB $60 ; pound
DEFB $C6 ; AND DEFB $C6 ; AND
DEFB $3A ; : DEFB ':' ; :
;; E-DIGITS ;; E-DIGITS
; The ten keywords assigned to the digits in extended mode. ; The ten keywords assigned to the digits in extended mode.
@ -19330,18 +19278,27 @@ L3C97:
; º ¤®¯®«­¥­¨ï ¤«ï SP48 !! º ; º ¤®¯®«­¥­¨ï ¤«ï SP48 !! º
; º ¤«ï ¯¥à¥å®¤  EXP-BAS48 º ; º ¤«ï ¯¥à¥å®¤  EXP-BAS48 º
; º 16 ¡ ©â + 22 ¡ ©â  º ; º 16 ¡ ©â + 22 ¡ ©â  º
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
// LD HL,#C0 ; POINT - ¢å®¤ ¢ MENU ¨§ BASIC 48. for ZX_MODE.ASM - RET_FROM_BIOS_TO_BASIC48 ; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
LD HL,#3CF0 ; POINT - ¢å®¤ ¢ MENU ¨§ BASIC 48. for ZX_MODE.ASM - RET_FROM_BIOS_TO_BASIC48 ;!FIXIT ᤥ« âì ¢ë¡®à áâà ­¨æë ¬ ªà®á®¬ á ãá«®¢¨ï¬¨ ª®¬¯¨«ï樨,
;ç⮡ ¬®¦­® ¡ë«® ª®¬¯¨«¨âì vROM ª ª ¤«ï à ¡®âë á <20>‡“, â ª ¨ ¯®«­®áâìî ¡¥§ ­¥£®
//LD HL,#C0 ; POINT - ¢å®¤ ¢ MENU ¨§ BASIC 48. for ZX_MODE.ASM - RET_FROM_BIOS_TO_BASIC48
LD HL,#3CF0 ; POINT - ¢å®¤ ¢ MENU ¨§ BASIC 48. for ZX_MODE.ASM - RET_FROM_BIOS_TO_BASIC48
;
JR JMP_EX JR JMP_EX
BLOCK #3CF8-$,0 BLOCK #3CF8-$,0
JMP_EX: PUSH HL JMP_EX: PUSH HL
PUSH AF PUSH AF
// LD A,ROM.BIOS ; ¯¥à¥å®¤ ¢ BIOS
LD A,ROM.EXPANSION ; ¯¥à¥å®¤ ¢ EXPANSION //LD A,ROM.BIOS ; ¯¥à¥å®¤ ¢ BIOS
OUT (CNF_PORT.ON),A //LD A,ROM.EXPANSION ; ¯¥à¥å®¤ ¢ EXPANSION
;!FIXIT ᤥ« âì ¢ë¡®à áâà ­¨æë ¬ ªà®á®¬ á ãá«®¢¨ï¬¨ ª®¬¯¨«ï樨,
;ç⮡ ¬®¦­® ¡ë«® ª®¬¯¨«¨âì vROM ª ª ¤«ï à ¡®âë á <20>‡“, â ª ¨ ¯®«­®áâìî ¡¥§ ­¥£®
LD A,0
OUT (CNF_PORT.ON),A
;
POP AF POP AF
RET ; ¢®§¢à â RET ; ¢®§¢à â
;< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <; ;< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <;

View File

@ -30,7 +30,7 @@ SR_MENU:
DC 'TURBO ON ' DC 'TURBO ON '
DC 'Clear RAM' DC 'Clear RAM'
DC 'RETURN' DC 'RETURN'
DC ' ' ; ¬ àª¥à ª®­æ  DC " " ; ¬ àª¥à ª®­æ 
SR_LEN EQU $-SR_MENU SR_LEN EQU $-SR_MENU
@ -177,7 +177,7 @@ IS_MENU:
DC 'Pentagon 512' DC 'Pentagon 512'
DC 'Restart ' DC 'Restart '
DC 'RETURN' DC 'RETURN'
DC ' ' ; ¬ àª¥à ª®­æ  DC " " ; ¬ àª¥à ª®­æ 
.Size EQU $-IS_MENU .Size EQU $-IS_MENU
;****************************** ;******************************

View File

@ -277,9 +277,9 @@ ERR_TST_M:
;************************************** ;**************************************
CALL_DOS_MOVE: CALL_DOS_MOVE:
LD DE,5C00H-DOS_PROG_LEN LD DE,DOS_PROG.Exec
LD HL,DOS_PROG LD HL,DOS_PROG
LD BC,DOS_PROG_LEN LD BC,DOS_PROG.Size
LDIR LDIR
RET RET
; ;
@ -295,34 +295,36 @@ CALL_DOS1:
LD (5C63H),DE LD (5C63H),DE
LD (5C65H),DE LD (5C65H),DE
CALL CALL_DOS_MOVE CALL CALL_DOS_MOVE
JP 5C00H-DOS_PROG_LEN JP DOS_PROG.Exec
CALL_DOS: CALL_DOS:
PUSH HL PUSH HL
PUSH DE PUSH DE
PUSH BC PUSH BC
PUSH AF PUSH AF
CALL CALL_DOS_MOVE CALL CALL_DOS_MOVE
LD A,13H LD A,#13 ; #13 ¨§ AUTO_1303
LD (5C00H-DOS_PROG_LEN+DOS_PROG_A),A LD (DOS_PROG.Patch),A
POP AF POP AF
POP BC POP BC
POP DE POP DE
POP HL POP HL
JP 5C00H-DOS_PROG_LEN JP DOS_PROG.Exec
DOS_PROG: DOS_PROG:
PUSH AF DISP #5C00 - DOS_PROG.Size ;!HARDCODE
XOR A .Exec: PUSH AF
OUT (SYS_PORT_OFF),A XOR A
POP AF OUT (SYS_PORT_OFF),A
CALL 3D03H POP AF
DOS_PROG_A EQU $-DOS_PROG-1 .Patch+2: CALL #3D03
PUSH AF PUSH AF
LD A,0 LD A,0
OUT (CNF_PORT),A OUT (CNF_PORT),A
POP AF POP AF
RET RET
DOS_PROG_LEN EQU $-DOS_PROG .Size EQU $ - .Exec
ENT
CONT_PROG: CONT_PROG:
LD HL,1AFDH LD HL,1AFDH
@ -334,7 +336,4 @@ CONT_PROG:
LD A,0E8H LD A,0E8H
LD (DE),A LD (DE),A
JP SW_ROM JP SW_ROM
;