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
|
||||
/*
|
||||
col_magenta EQU 5
|
||||
col_white EQU 7
|
||||
col_cmd EQU 16
|
||||
@ -79,4 +80,30 @@ PARAMS_MSG: BYTE "\r\nDrive "
|
||||
.LabelTxt: DZ 'NO LABEL '
|
||||
.fullSize: 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 HL,0
|
||||
CALL MUL32_POWER2
|
||||
LD (PARAMS_MSG.unused),DE
|
||||
LD (PARAMS_MSG.unused + 2),HL
|
||||
XOR A
|
||||
LD BC,PARAMS_MSG.unused
|
||||
CALL PRINT_5BYTES
|
||||
;.fullSize
|
||||
LD DE,(VARIABLES.VOLUME_SIZE_BYTES)
|
||||
LD HL,(VARIABLES.VOLUME_SIZE_BYTES + 2)
|
||||
EXX
|
||||
LD HL,(VARIABLES.VOLUME_SIZE_BYTES)
|
||||
LD A,(VARIABLES.VOLUME_SIZE_BYTES + 4)
|
||||
LD DE,PARAMS_MSG.fullSize
|
||||
LD BC,PARAMS_MSG.fullSize
|
||||
CALL PRINT_5BYTES
|
||||
;.dataSize
|
||||
LD HL,(VARIABLES.DataSectors_H)
|
||||
LD DE,(VARIABLES.DataSectors_L)
|
||||
LD BC,(FAT_PARAMETERS.BytesPerSector)
|
||||
LD HL,(VARIABLES.total_clusters_H)
|
||||
LD DE,(VARIABLES.total_clusters_L)
|
||||
LD BC,(VARIABLES.ClusterSize)
|
||||
CALL MUL32_POWER2
|
||||
PUSH DE
|
||||
EXX
|
||||
POP HL
|
||||
LD DE,PARAMS_MSG.dataSize
|
||||
LD BC,PARAMS_MSG.dataSize
|
||||
CALL PRINT_5BYTES
|
||||
;.Clusters
|
||||
LD HL,(VARIABLES.total_clusters_L)
|
||||
LD (PARAMS_MSG.Clusters),HL
|
||||
LD DE,(VARIABLES.total_clusters_L)
|
||||
LD HL,(VARIABLES.total_clusters_H)
|
||||
LD (PARAMS_MSG.Clusters + 2),HL
|
||||
XOR A
|
||||
LD BC,PARAMS_MSG.Clusters
|
||||
CALL PRINT_5BYTES
|
||||
;.Clu_size
|
||||
LD HL,(VARIABLES.ClusterSize)
|
||||
LD (PARAMS_MSG.Clu_size),HL
|
||||
LD DE,(VARIABLES.ClusterSize)
|
||||
XOR A
|
||||
LD H,A
|
||||
LD L,A
|
||||
LD BC,PARAMS_MSG.Clu_size
|
||||
CALL PRINT_5BYTES
|
||||
;.FATtxt
|
||||
LD HL,(FAT_PARAMETERS.ID_FAT+3)
|
||||
LD (PARAMS_MSG.FATtxt + 3),HL
|
||||
;.Serial
|
||||
LD HL,(FAT_PARAMETERS.SERIAL_NUMBER_1)
|
||||
LD (PARAMS_MSG.Serial + 2),HL
|
||||
LD HL,(FAT_PARAMETERS.SERIAL_NUMBER_2)
|
||||
LD (PARAMS_MSG.Serial),HL
|
||||
LD HL,FAT_PARAMETERS.SERIAL_NUMBER_2
|
||||
LD DE,PARAMS_MSG.Serial
|
||||
CALL .make_Serial
|
||||
INC DE
|
||||
CALL .make_Serial
|
||||
;.LabelTxt
|
||||
LD HL,FAT_PARAMETERS.LABEL
|
||||
LD DE,PARAMS_MSG.LabelTxt
|
||||
LD BC,FAT_PARAMETERS.LABEL.Size
|
||||
LDIR
|
||||
;
|
||||
LD IY,PARAMS_MSG.ptr
|
||||
CALL printf#.str
|
||||
|
||||
;
|
||||
LD HL,PARAMS_MSG
|
||||
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
|
||||
RST ToDSS
|
||||
; ¯®§¨æ¨®ë© ª®¤ Y/y//<2F> - #95/#15
|
||||
@ -1200,6 +1210,23 @@ SHOW_FORMAT_PARAMETERS:
|
||||
RET Z
|
||||
SCF
|
||||
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 ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
||||
EX DE,HL
|
||||
@ -1337,272 +1349,17 @@ STRING_TO_WORD: CALL STR_TO_WORD
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; DEBUG_START: LD HL,.data
|
||||
; CALL STRING_TO_WORD
|
||||
; DI
|
||||
; 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
|
||||
;!FIXIT
|
||||
SHOW_HELP: LD SP,(STOP_ERROR.Save_SP)
|
||||
DI
|
||||
HALT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; 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
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; 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 - $
|
||||
;!FIXIT
|
||||
GET_KEY_FAT: DI
|
||||
HALT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -1611,6 +1368,11 @@ L32BIT_: DB " " ; 000000000
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
include 'Strings.asm'
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
include 'data.z80'
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -1623,7 +1385,7 @@ L32BIT_: DB " " ; 000000000
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;!FIXIT
|
||||
include 'shared_includes/printf.asm'
|
||||
; include 'shared_includes/printf.asm'
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Exit_Path: DB 'A:\'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user