mirror of
https://github.com/Tolik-Trek/FORMAT.git
synced 2026-06-15 09:21:40 +03:00
...
This commit is contained in:
parent
d997a4374f
commit
bb0a225030
27
Messages.z80
27
Messages.z80
@ -48,6 +48,7 @@ Error_Msg: DZ "\r\n\r\nError!!!\r\n\r\n"
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;!FIXIT Color settings
|
;!FIXIT Color settings
|
||||||
|
/*
|
||||||
col_magenta EQU 5
|
col_magenta EQU 5
|
||||||
col_white EQU 7
|
col_white EQU 7
|
||||||
col_cmd EQU 16
|
col_cmd EQU 16
|
||||||
@ -79,4 +80,30 @@ PARAMS_MSG: BYTE "\r\nDrive "
|
|||||||
.LabelTxt: DZ 'NO LABEL '
|
.LabelTxt: DZ 'NO LABEL '
|
||||||
.fullSize: BYTE ' ',0
|
.fullSize: BYTE ' ',0
|
||||||
.dataSize: BYTE ' ',0
|
.dataSize: BYTE ' ',0
|
||||||
|
*/
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
PARAMS_MSG: BYTE "\r\nDrive "
|
||||||
|
.disk: BYTE "A: "
|
||||||
|
BYTE "will be formatted using the current settings:\r\n\r\n"
|
||||||
|
BYTE "Partition size:\t"
|
||||||
|
.fullSize: BYTE " bytes\r\n"
|
||||||
|
BYTE "Available size:\t"
|
||||||
|
.dataSize: BYTE " bytes\r\n"
|
||||||
|
BYTE "Unused space:\t"
|
||||||
|
.unused: BYTE " bytes\r\n"
|
||||||
|
BYTE "Clusters:\t"
|
||||||
|
.Clusters: BYTE " \r\n"
|
||||||
|
BYTE "Cluster size:\t"
|
||||||
|
.Clu_size: BYTE " bytes\r\n"
|
||||||
|
BYTE "File system:\t"
|
||||||
|
.FATtxt: BYTE "FAT \r\n"
|
||||||
|
BYTE "Serial:\t\t"
|
||||||
|
.Serial: BYTE "0000-0000\r\n"
|
||||||
|
BYTE "Label:\t\t"
|
||||||
|
.LabelTxt: BYTE "NO LABEL \r\n\r\n"
|
||||||
|
BYTE 'Press "Y" for format or any other key to exit', "\r\n"
|
||||||
|
BYTE 0
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
300
Strings.asm
Normal file
300
Strings.asm
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; Enin Anton, Anatoliy Belyanskiy
|
||||||
|
; A:HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤
|
||||||
|
; A:HL:DE - ç¨á«® ¤«ï ¯¥à¥¢®¤
|
||||||
|
; BC - ¡ãä¥à ¤«ï ⥪á⮢®© áâப¨
|
||||||
|
PRINT_5BYTES: PUSH BC
|
||||||
|
;
|
||||||
|
PUSH HL
|
||||||
|
EXX
|
||||||
|
POP HL
|
||||||
|
EXX
|
||||||
|
EX DE,HL
|
||||||
|
;
|
||||||
|
LD IX,L40BIT.Str ; "00"
|
||||||
|
LD C,#17
|
||||||
|
EXX
|
||||||
|
LD DE,#4876
|
||||||
|
EXX
|
||||||
|
LD DE,#E800
|
||||||
|
; C:DE':DE = 100,000,000,000
|
||||||
|
CALL GET_BIG_DIG
|
||||||
|
LD C,#02
|
||||||
|
EXX
|
||||||
|
LD DE,#540B
|
||||||
|
EXX
|
||||||
|
LD DE,#E400
|
||||||
|
; C:DE':DE = 10,000,000,000
|
||||||
|
CALL GET_BIG_DIG
|
||||||
|
LD C,#00
|
||||||
|
EXX
|
||||||
|
LD DE,#3B9A
|
||||||
|
EXX
|
||||||
|
LD DE,#CA00
|
||||||
|
; C:DE':DE = 1,000,000,000
|
||||||
|
CALL GET_BIG_DIG
|
||||||
|
; DE':DE = 100,000,000
|
||||||
|
CALL .skip_1
|
||||||
|
POP DE ; "000 000 000 000"
|
||||||
|
LD HL,L40BIT.Str ; "0000000000"
|
||||||
|
LDI
|
||||||
|
LDI
|
||||||
|
LD A,(HL)
|
||||||
|
LDI
|
||||||
|
CP " "
|
||||||
|
JR Z,1F
|
||||||
|
;
|
||||||
|
LD A,"," ; à §¤. à §à冷¢
|
||||||
|
1: LD (DE),A
|
||||||
|
INC DE
|
||||||
|
LDI
|
||||||
|
LDI
|
||||||
|
LD A,(HL)
|
||||||
|
LDI
|
||||||
|
CP " "
|
||||||
|
JR Z,1F
|
||||||
|
;
|
||||||
|
LD A,"," ; à §¤. à §à冷¢
|
||||||
|
1: LD (DE),A
|
||||||
|
INC DE
|
||||||
|
LDI
|
||||||
|
LDI
|
||||||
|
LD A,(HL)
|
||||||
|
LDI
|
||||||
|
CP " "
|
||||||
|
JR Z,1F
|
||||||
|
;
|
||||||
|
LD A,"," ; à §¤. à §à冷¢
|
||||||
|
1: LD (DE),A
|
||||||
|
INC DE
|
||||||
|
LDI
|
||||||
|
LDI
|
||||||
|
LDI
|
||||||
|
;SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.skip_1: EXX
|
||||||
|
LD DE,#05F5
|
||||||
|
EXX
|
||||||
|
LD DE,#E100
|
||||||
|
; DE':DE = 100,000,000
|
||||||
|
CALL GET_DIG ; 100,000,000...999,999,999
|
||||||
|
EXX
|
||||||
|
LD DE,#98
|
||||||
|
EXX
|
||||||
|
LD DE,#9680
|
||||||
|
; DE':DE = 10,000,000
|
||||||
|
CALL GET_DIG ; 10,000,000...99,999,999
|
||||||
|
EXX
|
||||||
|
LD DE,#0F
|
||||||
|
EXX
|
||||||
|
LD DE,#4240
|
||||||
|
; DE':DE = 1,000,000
|
||||||
|
CALL GET_DIG ; 1,000,000...9,999,999
|
||||||
|
EXX
|
||||||
|
LD DE,#01
|
||||||
|
EXX
|
||||||
|
LD DE,#86A0
|
||||||
|
; DE':DE = 100,000
|
||||||
|
CALL GET_DIG ; 100,000...999,999
|
||||||
|
EXX
|
||||||
|
LD DE,#00
|
||||||
|
EXX
|
||||||
|
LD DE,#2710
|
||||||
|
; DE':DE = 10,000
|
||||||
|
CALL GET_DIG ; 10,000...99,999
|
||||||
|
EXX
|
||||||
|
LD DE,#00
|
||||||
|
EXX
|
||||||
|
LD DE,#03E8
|
||||||
|
; DE':DE = 1,000
|
||||||
|
CALL GET_DIG ; 1,000...9,999
|
||||||
|
EXX
|
||||||
|
LD DE,#00
|
||||||
|
EXX
|
||||||
|
LD DE,#64
|
||||||
|
; DE':DE = 100
|
||||||
|
CALL GET_DIG ; 100..999
|
||||||
|
EXX
|
||||||
|
LD DE,#00
|
||||||
|
EXX
|
||||||
|
LD DE,#0A
|
||||||
|
; DE':DE = 10
|
||||||
|
CALL GET_DIG ; 10..99
|
||||||
|
LD A,L
|
||||||
|
ADD A,"0"
|
||||||
|
LD (ix+0),A
|
||||||
|
INC IX
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
GET_DIG: LD A,"0"-1
|
||||||
|
AND A
|
||||||
|
.loop: INC A
|
||||||
|
SBC HL,DE
|
||||||
|
EXX
|
||||||
|
SBC HL,DE
|
||||||
|
EXX
|
||||||
|
JR NC,.loop
|
||||||
|
;
|
||||||
|
ADD HL,DE
|
||||||
|
EXX
|
||||||
|
ADC HL,DE
|
||||||
|
EXX
|
||||||
|
CP "0"
|
||||||
|
JR NZ,.putChar
|
||||||
|
;
|
||||||
|
LD B,A
|
||||||
|
LD A,(ix-1)
|
||||||
|
CP " "
|
||||||
|
JR Z,.putChar
|
||||||
|
;
|
||||||
|
LD A,B
|
||||||
|
.putChar: LD (ix+0),A
|
||||||
|
INC IX
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
GET_BIG_DIG: LD B,"0"-1
|
||||||
|
AND A
|
||||||
|
.loop: INC B
|
||||||
|
SBC HL,DE
|
||||||
|
EXX
|
||||||
|
SBC HL,DE
|
||||||
|
EXX
|
||||||
|
SBC A,C
|
||||||
|
JR NC,.loop
|
||||||
|
;
|
||||||
|
ADD HL,DE
|
||||||
|
EXX
|
||||||
|
ADC HL,DE
|
||||||
|
EXX
|
||||||
|
ADC A,C
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,B
|
||||||
|
CP "0"
|
||||||
|
JR NZ,.putChar
|
||||||
|
;
|
||||||
|
LD A,(ix-1)
|
||||||
|
CP " "
|
||||||
|
JR Z,.putChar
|
||||||
|
;
|
||||||
|
LD A,B
|
||||||
|
.putChar: LD (ix+0),A
|
||||||
|
EX AF,AF'
|
||||||
|
INC IX
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
L40BIT: DB " " ; ¬ àª¥à ¤«ï ix-1
|
||||||
|
.Str: DB " " ; 00
|
||||||
|
L32BIT_: DB " " ; 000000000
|
||||||
|
.end: DB "0"
|
||||||
|
;
|
||||||
|
; SIZE_BUFFER: db " " ; ¬ àª¥à ¤«ï ix-1
|
||||||
|
; .high db " " ; "00"
|
||||||
|
; .low: db " ",0,0 ; "0 000 000 000",0,0
|
||||||
|
; .bytes equ SIZE_BUFFER - $
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; Enin Anton
|
||||||
|
;<3B>à®æ¥¤ãà ¯à¥®¡à §®¢ ¨ï 8¡¨â®¢ëå ç¨á¥« ¢ è¥áâ ¤æ. ⥪áâ
|
||||||
|
;<3B> ¢å®¤:
|
||||||
|
; HL - ¤à¥á ¡ãä¥à
|
||||||
|
; € - ¡ ©â
|
||||||
|
;<3B> ¢ë室:
|
||||||
|
; ¡ãä¥à á ⥪áâ.ç¨á«®¬
|
||||||
|
IFUSED PutHexNumb
|
||||||
|
PutHexNumb: PUSH AF
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
AND #0F
|
||||||
|
ADD A,#90
|
||||||
|
DAA
|
||||||
|
ADC A,#40
|
||||||
|
DAA
|
||||||
|
LD (HL),A
|
||||||
|
INC L
|
||||||
|
POP AF
|
||||||
|
AND #0F
|
||||||
|
ADD A,#90
|
||||||
|
DAA
|
||||||
|
ADC A,#40
|
||||||
|
DAA
|
||||||
|
LD (HL),A
|
||||||
|
INC L
|
||||||
|
RET
|
||||||
|
ENDIF
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; HL - ‘âப á «¨è¨¬¨ ¯à®¡¥« ¬¨
|
||||||
|
; DE - <20>ãä¥à ®¢®© áâப¨
|
||||||
|
SKIP_DUBLESPACES:
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
RET Z
|
||||||
|
;
|
||||||
|
SUB ' '
|
||||||
|
JR NZ,.loop
|
||||||
|
;
|
||||||
|
INC HL
|
||||||
|
JR SKIP_DUBLESPACES
|
||||||
|
;
|
||||||
|
.loop LDI
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
RET Z
|
||||||
|
;
|
||||||
|
SUB ' '
|
||||||
|
JR NZ,.loop
|
||||||
|
LDI
|
||||||
|
JR SKIP_DUBLESPACES
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||||
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; IN: DE - (string decimal)
|
||||||
|
; OUT: HL - string to word
|
||||||
|
; DE - addr next after string decimal
|
||||||
|
;!FIXIT ¯à®¢¥àª ¯ãáâãî áâபã
|
||||||
|
STR_TO_WORD: LD HL,0
|
||||||
|
.loop: LD B,H
|
||||||
|
LD C,L
|
||||||
|
;
|
||||||
|
ADD HL,HL ;x2
|
||||||
|
RET C
|
||||||
|
ADD HL,HL ;x4
|
||||||
|
RET C
|
||||||
|
ADD HL,BC ;x5
|
||||||
|
RET C
|
||||||
|
ADD HL,HL ;x10
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
LD B,0
|
||||||
|
LD C,A
|
||||||
|
ADD HL,BC
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
LD A,(DE)
|
||||||
|
OR A
|
||||||
|
RET Z
|
||||||
|
CP ' '
|
||||||
|
RET Z
|
||||||
|
;
|
||||||
|
CP '9'+1
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
SUB '0'
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
INC DE
|
||||||
|
JR .loop
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
@ -1 +1 @@
|
|||||||
64
|
69
|
||||||
368
format.asm
368
format.asm
@ -1147,50 +1147,60 @@ SHOW_FORMAT_PARAMETERS:
|
|||||||
LD DE,(VARIABLES.NotUsedSpace)
|
LD DE,(VARIABLES.NotUsedSpace)
|
||||||
LD HL,0
|
LD HL,0
|
||||||
CALL MUL32_POWER2
|
CALL MUL32_POWER2
|
||||||
LD (PARAMS_MSG.unused),DE
|
XOR A
|
||||||
LD (PARAMS_MSG.unused + 2),HL
|
LD BC,PARAMS_MSG.unused
|
||||||
|
CALL PRINT_5BYTES
|
||||||
;.fullSize
|
;.fullSize
|
||||||
|
LD DE,(VARIABLES.VOLUME_SIZE_BYTES)
|
||||||
LD HL,(VARIABLES.VOLUME_SIZE_BYTES + 2)
|
LD HL,(VARIABLES.VOLUME_SIZE_BYTES + 2)
|
||||||
EXX
|
|
||||||
LD HL,(VARIABLES.VOLUME_SIZE_BYTES)
|
|
||||||
LD A,(VARIABLES.VOLUME_SIZE_BYTES + 4)
|
LD A,(VARIABLES.VOLUME_SIZE_BYTES + 4)
|
||||||
LD DE,PARAMS_MSG.fullSize
|
LD BC,PARAMS_MSG.fullSize
|
||||||
CALL PRINT_5BYTES
|
CALL PRINT_5BYTES
|
||||||
;.dataSize
|
;.dataSize
|
||||||
LD HL,(VARIABLES.DataSectors_H)
|
LD HL,(VARIABLES.total_clusters_H)
|
||||||
LD DE,(VARIABLES.DataSectors_L)
|
LD DE,(VARIABLES.total_clusters_L)
|
||||||
LD BC,(FAT_PARAMETERS.BytesPerSector)
|
LD BC,(VARIABLES.ClusterSize)
|
||||||
CALL MUL32_POWER2
|
CALL MUL32_POWER2
|
||||||
PUSH DE
|
LD BC,PARAMS_MSG.dataSize
|
||||||
EXX
|
|
||||||
POP HL
|
|
||||||
LD DE,PARAMS_MSG.dataSize
|
|
||||||
CALL PRINT_5BYTES
|
CALL PRINT_5BYTES
|
||||||
;.Clusters
|
;.Clusters
|
||||||
LD HL,(VARIABLES.total_clusters_L)
|
LD DE,(VARIABLES.total_clusters_L)
|
||||||
LD (PARAMS_MSG.Clusters),HL
|
|
||||||
LD HL,(VARIABLES.total_clusters_H)
|
LD HL,(VARIABLES.total_clusters_H)
|
||||||
LD (PARAMS_MSG.Clusters + 2),HL
|
XOR A
|
||||||
|
LD BC,PARAMS_MSG.Clusters
|
||||||
|
CALL PRINT_5BYTES
|
||||||
;.Clu_size
|
;.Clu_size
|
||||||
LD HL,(VARIABLES.ClusterSize)
|
LD DE,(VARIABLES.ClusterSize)
|
||||||
LD (PARAMS_MSG.Clu_size),HL
|
XOR A
|
||||||
|
LD H,A
|
||||||
|
LD L,A
|
||||||
|
LD BC,PARAMS_MSG.Clu_size
|
||||||
|
CALL PRINT_5BYTES
|
||||||
;.FATtxt
|
;.FATtxt
|
||||||
LD HL,(FAT_PARAMETERS.ID_FAT+3)
|
LD HL,(FAT_PARAMETERS.ID_FAT+3)
|
||||||
LD (PARAMS_MSG.FATtxt + 3),HL
|
LD (PARAMS_MSG.FATtxt + 3),HL
|
||||||
;.Serial
|
;.Serial
|
||||||
LD HL,(FAT_PARAMETERS.SERIAL_NUMBER_1)
|
LD HL,FAT_PARAMETERS.SERIAL_NUMBER_2
|
||||||
LD (PARAMS_MSG.Serial + 2),HL
|
LD DE,PARAMS_MSG.Serial
|
||||||
LD HL,(FAT_PARAMETERS.SERIAL_NUMBER_2)
|
CALL .make_Serial
|
||||||
LD (PARAMS_MSG.Serial),HL
|
INC DE
|
||||||
|
CALL .make_Serial
|
||||||
;.LabelTxt
|
;.LabelTxt
|
||||||
LD HL,FAT_PARAMETERS.LABEL
|
LD HL,FAT_PARAMETERS.LABEL
|
||||||
LD DE,PARAMS_MSG.LabelTxt
|
LD DE,PARAMS_MSG.LabelTxt
|
||||||
LD BC,FAT_PARAMETERS.LABEL.Size
|
LD BC,FAT_PARAMETERS.LABEL.Size
|
||||||
LDIR
|
LDIR
|
||||||
;
|
;
|
||||||
LD IY,PARAMS_MSG.ptr
|
LD HL,PARAMS_MSG
|
||||||
CALL printf#.str
|
LD DE,SECTOR_BUFFER
|
||||||
|
PUSH DE
|
||||||
|
CALL SKIP_DUBLESPACES
|
||||||
|
EX DE,HL
|
||||||
|
LD (HL),0
|
||||||
|
POP HL
|
||||||
|
LD C,Dss.PChars
|
||||||
|
RST ToDSS
|
||||||
|
;
|
||||||
.loop: LD C,Dss.EchoKey
|
.loop: LD C,Dss.EchoKey
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
; ¯®§¨æ¨®ë© ª®¤ Y/y//<2F> - #95/#15
|
; ¯®§¨æ¨®ë© ª®¤ Y/y//<2F> - #95/#15
|
||||||
@ -1200,6 +1210,23 @@ SHOW_FORMAT_PARAMETERS:
|
|||||||
RET Z
|
RET Z
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
.make_Serial: LD B,2
|
||||||
|
.serialLoop: LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
EX DE,HL
|
||||||
|
; HL - ¤à¥á ¡ãä¥à
|
||||||
|
; € - ¡ ©â
|
||||||
|
CALL PutHexNumb
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
INC DE
|
||||||
|
INC DE
|
||||||
|
DJNZ .serialLoop
|
||||||
|
RET
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@ -1214,21 +1241,6 @@ SHOW_VERSION: LD SP,(STOP_ERROR.Save_SP)
|
|||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
;!FIXIT
|
|
||||||
SHOW_HELP: LD SP,(STOP_ERROR.Save_SP)
|
|
||||||
DI
|
|
||||||
HALT
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
;!FIXIT
|
|
||||||
GET_KEY_FAT: DI
|
|
||||||
HALT
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
SET_LABEL: LD HL,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
SET_LABEL: LD HL,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -1337,272 +1349,17 @@ STRING_TO_WORD: CALL STR_TO_WORD
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
; DEBUG_START: LD HL,.data
|
;!FIXIT
|
||||||
; CALL STRING_TO_WORD
|
SHOW_HELP: LD SP,(STOP_ERROR.Save_SP)
|
||||||
; DI
|
DI
|
||||||
; HALT
|
HALT
|
||||||
; ;
|
|
||||||
; .data: DZ "327670"
|
|
||||||
|
|
||||||
; IN: DE - (string decimal)
|
|
||||||
; OUT: HL - string to word
|
|
||||||
; DE - addr next after string decimal
|
|
||||||
;!FIXIT ¯à®¢¥àª ¯ãáâãî áâபã
|
|
||||||
STR_TO_WORD: LD HL,0
|
|
||||||
.loop: LD B,H
|
|
||||||
LD C,L
|
|
||||||
;
|
|
||||||
ADD HL,HL ;x2
|
|
||||||
RET C
|
|
||||||
ADD HL,HL ;x4
|
|
||||||
RET C
|
|
||||||
ADD HL,BC ;x5
|
|
||||||
RET C
|
|
||||||
ADD HL,HL ;x10
|
|
||||||
RET C
|
|
||||||
;
|
|
||||||
LD B,0
|
|
||||||
LD C,A
|
|
||||||
ADD HL,BC
|
|
||||||
RET C
|
|
||||||
;
|
|
||||||
LD A,(DE)
|
|
||||||
OR A
|
|
||||||
RET Z
|
|
||||||
CP ' '
|
|
||||||
RET Z
|
|
||||||
;
|
|
||||||
CP '9'+1
|
|
||||||
CCF
|
|
||||||
RET C
|
|
||||||
SUB '0'
|
|
||||||
RET C
|
|
||||||
;
|
|
||||||
INC DE
|
|
||||||
JR .loop
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
; Enin Anton
|
;!FIXIT
|
||||||
;<3B>à®æ¥¤ãà ¯à¥®¡à §®¢ ¨ï 8¡¨â®¢ëå ç¨á¥« ¢ è¥áâ ¤æ. ⥪áâ
|
GET_KEY_FAT: DI
|
||||||
;<3B> ¢å®¤:
|
HALT
|
||||||
; HL - ¤à¥á ¡ãä¥à
|
|
||||||
; € - ¡ ©â
|
|
||||||
;<3B> ¢ë室:
|
|
||||||
; ¡ãä¥à á ⥪áâ.ç¨á«®¬
|
|
||||||
IFUSED PutHexNumb
|
|
||||||
PutHexNumb: PUSH AF
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
RRCA
|
|
||||||
AND #0F
|
|
||||||
ADD A,#90
|
|
||||||
DAA
|
|
||||||
ADC A,#40
|
|
||||||
DAA
|
|
||||||
LD (HL),A
|
|
||||||
INC L
|
|
||||||
POP AF
|
|
||||||
AND #0F
|
|
||||||
ADD A,#90
|
|
||||||
DAA
|
|
||||||
ADC A,#40
|
|
||||||
DAA
|
|
||||||
LD (HL),A
|
|
||||||
INC L
|
|
||||||
RET
|
|
||||||
ENDIF
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
|
||||||
; A:HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤
|
|
||||||
; DE - ¡ãä¥à ¤«ï ⥪á⮢®© áâப¨
|
|
||||||
PRINT_5BYTES: PUSH DE
|
|
||||||
LD IX,L40BIT.Str ; "00"
|
|
||||||
LD C,#17
|
|
||||||
EXX
|
|
||||||
LD DE,#4876
|
|
||||||
EXX
|
|
||||||
LD DE,#E800
|
|
||||||
; C:DE':DE = 100,000,000,000
|
|
||||||
CALL GET_BIG_DIG
|
|
||||||
LD C,#02
|
|
||||||
EXX
|
|
||||||
LD DE,#540B
|
|
||||||
EXX
|
|
||||||
LD DE,#E400
|
|
||||||
; C:DE':DE = 10,000,000,000
|
|
||||||
CALL GET_BIG_DIG
|
|
||||||
LD C,#00
|
|
||||||
EXX
|
|
||||||
LD DE,#3B9A
|
|
||||||
EXX
|
|
||||||
LD DE,#CA00
|
|
||||||
; C:DE':DE = 1,000,000,000
|
|
||||||
CALL GET_BIG_DIG
|
|
||||||
; DE':DE = 100,000,000
|
|
||||||
CALL .skip_1
|
|
||||||
POP DE
|
|
||||||
;LD DE,SIZE_BUFFER.high ; "0 000 000 000"
|
|
||||||
LD HL,L40BIT.Str ; "0000000000"
|
|
||||||
LDI
|
|
||||||
LDI
|
|
||||||
LD A,(HL)
|
|
||||||
LDI
|
|
||||||
CP " "
|
|
||||||
JR Z,1F
|
|
||||||
;
|
|
||||||
LD A,"," ; à §¤. à §à冷¢
|
|
||||||
1: LD (DE),A
|
|
||||||
INC DE
|
|
||||||
LDI
|
|
||||||
LDI
|
|
||||||
LD A,(HL)
|
|
||||||
LDI
|
|
||||||
CP " "
|
|
||||||
JR Z,1F
|
|
||||||
;
|
|
||||||
LD A,"," ; à §¤. à §à冷¢
|
|
||||||
1: LD (DE),A
|
|
||||||
INC DE
|
|
||||||
LDI
|
|
||||||
LDI
|
|
||||||
LD A,(HL)
|
|
||||||
LDI
|
|
||||||
CP " "
|
|
||||||
JR Z,1F
|
|
||||||
;
|
|
||||||
LD A,"," ; à §¤. à §à冷¢
|
|
||||||
1: LD (DE),A
|
|
||||||
INC DE
|
|
||||||
LDI
|
|
||||||
LDI
|
|
||||||
LDI
|
|
||||||
;SCF
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
.skip_1: EXX
|
|
||||||
LD DE,#05F5
|
|
||||||
EXX
|
|
||||||
LD DE,#E100
|
|
||||||
; DE':DE = 100,000,000
|
|
||||||
CALL GET_DIG ; 100,000,000...999,999,999
|
|
||||||
EXX
|
|
||||||
LD DE,#98
|
|
||||||
EXX
|
|
||||||
LD DE,#9680
|
|
||||||
; DE':DE = 10,000,000
|
|
||||||
CALL GET_DIG ; 10,000,000...99,999,999
|
|
||||||
EXX
|
|
||||||
LD DE,#0F
|
|
||||||
EXX
|
|
||||||
LD DE,#4240
|
|
||||||
; DE':DE = 1,000,000
|
|
||||||
CALL GET_DIG ; 1,000,000...9,999,999
|
|
||||||
EXX
|
|
||||||
LD DE,#01
|
|
||||||
EXX
|
|
||||||
LD DE,#86A0
|
|
||||||
; DE':DE = 100,000
|
|
||||||
CALL GET_DIG ; 100,000...999,999
|
|
||||||
EXX
|
|
||||||
LD DE,#00
|
|
||||||
EXX
|
|
||||||
LD DE,#2710
|
|
||||||
; DE':DE = 10,000
|
|
||||||
CALL GET_DIG ; 10,000...99,999
|
|
||||||
EXX
|
|
||||||
LD DE,#00
|
|
||||||
EXX
|
|
||||||
LD DE,#03E8
|
|
||||||
; DE':DE = 1,000
|
|
||||||
CALL GET_DIG ; 1,000...9,999
|
|
||||||
EXX
|
|
||||||
LD DE,#00
|
|
||||||
EXX
|
|
||||||
LD DE,#64
|
|
||||||
; DE':DE = 100
|
|
||||||
CALL GET_DIG ; 100..999
|
|
||||||
EXX
|
|
||||||
LD DE,#00
|
|
||||||
EXX
|
|
||||||
LD DE,#0A
|
|
||||||
; DE':DE = 10
|
|
||||||
CALL GET_DIG ; 10..99
|
|
||||||
LD A,L
|
|
||||||
ADD A,"0"
|
|
||||||
LD (ix+0),A
|
|
||||||
INC IX
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
GET_DIG: LD A,"0"-1
|
|
||||||
AND A
|
|
||||||
.loop: INC A
|
|
||||||
SBC HL,DE
|
|
||||||
EXX
|
|
||||||
SBC HL,DE
|
|
||||||
EXX
|
|
||||||
JR NC,.loop
|
|
||||||
;
|
|
||||||
ADD HL,DE
|
|
||||||
EXX
|
|
||||||
ADC HL,DE
|
|
||||||
EXX
|
|
||||||
CP "0"
|
|
||||||
JR NZ,.putChar
|
|
||||||
;
|
|
||||||
LD B,A
|
|
||||||
LD A,(ix-1)
|
|
||||||
CP " "
|
|
||||||
JR Z,.putChar
|
|
||||||
;
|
|
||||||
LD A,B
|
|
||||||
.putChar: LD (ix+0),A
|
|
||||||
INC IX
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
GET_BIG_DIG: LD B,"0"-1
|
|
||||||
AND A
|
|
||||||
.loop: INC B
|
|
||||||
SBC HL,DE
|
|
||||||
EXX
|
|
||||||
SBC HL,DE
|
|
||||||
EXX
|
|
||||||
SBC A,C
|
|
||||||
JR NC,.loop
|
|
||||||
;
|
|
||||||
ADD HL,DE
|
|
||||||
EXX
|
|
||||||
ADC HL,DE
|
|
||||||
EXX
|
|
||||||
ADC A,C
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,B
|
|
||||||
CP "0"
|
|
||||||
JR NZ,.putChar
|
|
||||||
;
|
|
||||||
LD A,(ix-1)
|
|
||||||
CP " "
|
|
||||||
JR Z,.putChar
|
|
||||||
;
|
|
||||||
LD A,B
|
|
||||||
.putChar: LD (ix+0),A
|
|
||||||
EX AF,AF'
|
|
||||||
INC IX
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
L40BIT: DB " " ; ¬ àª¥à ¤«ï ix-1
|
|
||||||
.Str: DB " " ; 00
|
|
||||||
L32BIT_: DB " " ; 000000000
|
|
||||||
.end: DB "0"
|
|
||||||
;
|
|
||||||
; SIZE_BUFFER: db " " ; ¬ àª¥à ¤«ï ix-1
|
|
||||||
; .high db " " ; "00"
|
|
||||||
; .low: db " ",0,0 ; "0 000 000 000",0,0
|
|
||||||
; .bytes equ SIZE_BUFFER - $
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@ -1611,6 +1368,11 @@ L32BIT_: DB " " ; 000000000
|
|||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
include 'Strings.asm'
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
include 'data.z80'
|
include 'data.z80'
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
@ -1623,7 +1385,7 @@ L32BIT_: DB " " ; 000000000
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
;!FIXIT
|
;!FIXIT
|
||||||
include 'shared_includes/printf.asm'
|
; include 'shared_includes/printf.asm'
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Exit_Path: DB 'A:\'
|
Exit_Path: DB 'A:\'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user