diff --git a/COMMAND.ASM b/COMMAND.ASM index 25c0816..a380723 100644 --- a/COMMAND.ASM +++ b/COMMAND.ASM @@ -1,484 +1,472 @@ -COMMAND LD HL,BUF1 - LD A,(HL) - OR A - RET Z - DEC HL -SKIPSP INC HL - LD A,(HL) - CP 9 - JR Z,SKIPSP - CP " " - JR Z,SKIPSP -COMP01 LD D,H - LD E,L - XOR A - LD BC,255 - CPIR - LD A,254 - SUB C - LD C,A - LD HL,CMDLIST -COMP004 PUSH BC - PUSH DE -COMP000 LD A,(DE) - CP #61 - JP C,COMP001 - CP #7B - JP NC,COMP001 - SUB #20 -COMP001 CP (HL) - JP NZ,COMP002 - INC HL - INC DE - DEC C - JP NZ,COMP000 - XOR A - CP (HL) - JP NZ,COMP002 - POP BC - POP BC - LD A,(DE) - CP " " - JR NZ,NOSPC - INC DE -NOSPC INC HL - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - JP (HL) +COMMAND: LD HL,BUF1 + LD A,(HL) + OR A + RET Z + DEC HL +SKIPSP: INC HL + LD A,(HL) + CP 9 + JR Z,SKIPSP + CP " " + JR Z,SKIPSP +COMP01: LD D,H + LD E,L + XOR A + LD BC,255 + CPIR + LD A,254 + SUB C + LD C,A + LD HL,CMDLIST +COMP004: PUSH BC + PUSH DE +COMP000: LD A,(DE) + CP #61 + JP C,COMP001 + CP #7B + JP NC,COMP001 + SUB #20 +COMP001: CP (HL) + JP NZ,COMP002 + INC HL + INC DE + DEC C + JP NZ,COMP000 + XOR A + CP (HL) + JP NZ,COMP002 + POP BC + POP BC + LD A,(DE) + CP " " + JR NZ,NOSPC + INC DE +NOSPC: INC HL + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + JP (HL) -COMP002 XOR A - LD C,#FF - CPI - JP NZ,$-2 - INC HL - INC HL - POP DE - POP BC - LD A,(HL) - OR A - JP NZ,COMP004 - LD HL,BUF1 - CALL PUTVAR - LD A,MSG_UNK_COMMAND - CALL MESSAGE - SCF - RET +COMP002: XOR A + LD C,#FF + CPI + JP NZ,$-2 + INC HL + INC HL + POP DE + POP BC + LD A,(HL) + OR A + JP NZ,COMP004 + LD HL,BUF1 + CALL PUTVAR + LD A,MSG_UNK_COMMAND + CALL MESSAGE + SCF + RET -CMDLIST DB "CLOSE",0 - DW CCLOSE - DB "COPY",0 - DW CCOPY - DB "DUMP",0 - DW CDUMP - DB "EJECT",0 - DW COPEN - DB "HELP",0 - DW CHELP - DB "LIST",0 - DW CDIR - DB "OPEN",0 - DW COPEN - DB "SECTORDUMP",0 - DW CDUMP - DB 0 +CMDLIST: DB "CLOSE",0 + DW CCLOSE + DB "COPY",0 + DW CCOPY + DB "DUMP",0 + DW CDUMP + DB "EJECT",0 + DW COPEN + DB "HELP",0 + DW CHELP + DB "LIST",0 + DW CDIR + DB "OPEN",0 + DW COPEN + DB "SECTORDUMP",0 + DW CDUMP + DB 0 -CHELP: LD A,MSG_USAGE - JP MESSAGE +CHELP: LD A,MSG_USAGE + JP MESSAGE -CCLOSE: LD A,MSG_TRAY_CLOSE - CALL MESSAGE - LD A,(CDDRIVE) - LD BC,BIOS.DRV_EXTENDED.ATAPI_Close - RST ToBIOS - LD A,MSG_DONE - JP MESSAGE - -COPEN: LD A,MSG_TRAY_OPEN - CALL MESSAGE - LD A,(CDDRIVE) - LD BC,BIOS.DRV_EXTENDED.ATAPI_Eject - RST ToBIOS - LD A,MSG_DONE - JP MESSAGE +CCLOSE: LD A,MSG_TRAY_CLOSE + CALL MESSAGE + LD A,(CDDRIVE) + LD BC,BIOS.DRV_EXTENDED.ATAPI_Close + JR COPEN.cmd + ; +COPEN: LD A,MSG_TRAY_OPEN + CALL MESSAGE + LD A,(CDDRIVE) + LD BC,BIOS.DRV_EXTENDED.ATAPI_Eject +.cmd: RST ToBIOS + LD A,MSG_DONE + JP MESSAGE -CCOPY: CALL CHANGEDISK - JR NC,.CH2OK - JP ERROR -.CH2OK: CALL EX_COPY_PARAM - LD HL,BUF2 - LD DE,FF_STRUCT - LD A,FAT_ATTR.NoDIRnoVolID - LD B,1 - CALL F_FIRST - JP C,ERROR +CCOPY: CALL CHANGEDISK + JR NC,.CH2OK + JP ERROR +.CH2OK: CALL EX_COPY_PARAM + LD HL,BUF2 + LD DE,FF_STRUCT + LD A,FAT_ATTR.NoDIRnoVolID + LD B,1 + CALL F_FIRST + JP C,ERROR .COPIER: - CALL MAKECOPY - RET C - LD A,(COPYMODE) - BIT DSTFILE,A - RET NZ + CALL MAKECOPY + RET C + LD A,(COPYMODE) + BIT DSTFILE,A + RET NZ ; - LD C,Dss.ScanKey - RST ToDSS - JR Z,.NONSTOP - LD HL,#011B ;ESC - AND A - SBC HL,DE - JR NZ,.NONSTOP - LD A,MSG_COPYABORTED - CALL MESSAGE - SCF - RET -.NONSTOP: - LD DE,FF_STRUCT - CALL F_NEXT - JR NC,.COPIER - XOR A - RET + LD C,Dss.ScanKey + RST ToDSS + JR Z,.NONSTOP + LD HL,#011B ;ESC + AND A + SBC HL,DE + JR NZ,.NONSTOP + LD A,MSG_COPYABORTED + CALL MESSAGE + SCF + RET +; +.NONSTOP: LD DE,FF_STRUCT + CALL F_NEXT + JR NC,.COPIER + XOR A + RET ; IFNOTFOUND ; CALL ERROR ; RET ;IFOK -MAKECOPY: - LD A,(COPYMODE) - BIT SRCPATT,A - JR NZ,.WITH_SRC_PATT - BIT DSTFILE,A - JR NZ,.WITH_DST_FILE -.WITH_SRC_PATT: - LD HL,CDFNAME -.YCR1: LD A,(HL) - CP "A" - JR C,.NCR1 - CP "Z"+1 - JR NC,.NCR1 - ADD A,#20 - LD (HL),A -.NCR1: OR A - INC HL - JR NZ,.YCR1 +MAKECOPY: LD A,(COPYMODE) + BIT SRCPATT,A + JR NZ,.WITH_SRC_PATT + BIT DSTFILE,A + JR NZ,.WITH_DST_FILE + ; +.WITH_SRC_PATT: LD HL,CDFNAME +.YCR1: LD A,(HL) + CP "A" + JR C,.NCR1 + CP "Z"+1 + JR NC,.NCR1 + ADD A,#20 + LD (HL),A +.NCR1: OR A + INC HL + JR NZ,.YCR1 ; - LD HL,CDFNAME - LD DE,(SRC_PUT_ADR) -.CZSL2: LD A,(HL) - LDI - OR A - JR NZ,.CZSL2 + LD HL,CDFNAME + LD DE,(SRC_PUT_ADR) +.CZSL2: LD A,(HL) + LDI + OR A + JR NZ,.CZSL2 ; - LD A,(COPYMODE) - BIT DSTFILE,A - JR NZ,.WITH_DST_FILE + LD A,(COPYMODE) + BIT DSTFILE,A + JR NZ,.WITH_DST_FILE ; - LD HL,CDFNAME - LD DE,(DST_PUT_ADR) -.CZSL1: LD A,(HL) - LDI - OR A - JR NZ,.CZSL1 + LD HL,CDFNAME + LD DE,(DST_PUT_ADR) +.CZSL1: LD A,(HL) + LDI + OR A + JR NZ,.CZSL1 + ; +.WITH_DST_FILE: LD HL,BUF3 + LD A,(CDFATTR) + LD C,Dss.Create + RST ToDSS + JR NC,.OFOK + LD A,MSG_ERR_DEST + CALL MESSAGE + SCF + RET + ; +.OFOK: LD (FHND),A + LD A,MSG_COPYFILE + CALL MESSAGE + LD HL,BUF2 + LD C,Dss.PChars + RST ToDSS + LD A,MSG_COPYTO + CALL MESSAGE + LD HL,BUF3 + LD C,Dss.PChars + RST ToDSS + LD A," " + LD C,Dss.PutChar + RST ToDSS + LD IX,FF_STRUCT + + LD E,(IX+LEN1) + LD D,(IX+LEN2) + LD (CL_SIZE),DE + LD E,(IX+LEN3) + LD D,(IX+LEN4) + LD (CH_SIZE),DE + + LD E,(IX+CLU1) + LD D,(IX+CLU2) + LD (CL_OFFSET),DE + LD E,(IX+CLU3) + LD D,(IX+CLU4) + LD (CH_OFFSET),DE +.CDCOPY_LOOP: CALL RCDFSB ;!!!!! + JR C,.COPY_FAULT + CALL WDATAB + JR C,.COPY_FAULT + JR NZ,.CDCOPY_LOOP ; -.WITH_DST_FILE: - LD HL,BUF3 - LD A,(CDFATTR) - LD C,Dss.Create - RST ToDSS - JR NC,.OFOK - LD A,MSG_ERR_DEST - CALL MESSAGE - SCF - RET - ; -.OFOK: LD (FHND),A - LD A,MSG_COPYFILE - CALL MESSAGE - LD HL,BUF2 - LD C,Dss.PChars - RST ToDSS - LD A,MSG_COPYTO - CALL MESSAGE - LD HL,BUF3 - LD C,Dss.PChars - RST ToDSS - LD A," " - LD C,Dss.PutChar - RST ToDSS - LD IX,FF_STRUCT - - LD E,(IX+LEN1) - LD D,(IX+LEN2) - LD (CL_SIZE),DE - LD E,(IX+LEN3) - LD D,(IX+LEN4) - LD (CH_SIZE),DE - - LD E,(IX+CLU1) - LD D,(IX+CLU2) - LD (CL_OFFSET),DE - LD E,(IX+CLU3) - LD D,(IX+CLU4) - LD (CH_OFFSET),DE -.CDCOPY_LOOP: - CALL RCDFSB ;!!!!! - JR C,.COPY_FAULT - CALL WDATAB - JR C,.COPY_FAULT - JR NZ,.CDCOPY_LOOP + LD DE,(CDFTIME) + LD BC,(CDFDATE) + CALL RMKTIME + LD A,(FHND) + LD C,Dss.Put_D_T ;COPY DATE AND TIME + RST ToDSS ; - LD DE,(CDFTIME) - LD BC,(CDFDATE) - CALL RMKTIME - LD A,(FHND) - LD C,Dss.Put_D_T ;COPY DATE AND TIME - RST ToDSS + LD A,(FHND) + LD C,Dss.Close + RST ToDSS + LD A,MSG_DONE + CALL MESSAGE + AND A + RET + ; +.COPY_FAULT: LD A,(FHND) + LD C,Dss.Close + RST ToDSS + SCF + RET + +EX_COPY_PARAM: LD HL,BUF2 ;SOURCE + LD BC,255 + XOR A + CPIR + DEC HL + EX DE,HL + LD HL,256 + AND A + SBC HL,BC + LD B,H + LD C,L + EX DE,HL + LD A,'\' ; + CPDR + INC HL + INC HL + LD (SRC_PUT_ADR),HL ; - LD A,(FHND) - LD C,Dss.Close - RST ToDSS - LD A,MSG_DONE - CALL MESSAGE - AND A - RET -.COPY_FAULT: - LD A,(FHND) - LD C,Dss.Close - RST ToDSS - SCF - RET + LD HL,BUF2 + LD BC,Dss.EX_Path.GET_ALL + RST ToDSS + AND #80 + LD A,(COPYMODE) + SET SRCPATT,A + JR NZ,.NOPATSR + RES SRCPATT,A +.NOPATSR: LD (COPYMODE),A + LD HL,BUF3 ;DESTINATION + LD BC,Dss.EX_Path.GET_ALL + RST ToDSS + AND #81 ;PATTERN & FILENAME + CP #01 ;IF FILENAME=1 AND PATTERN=0 + LD A,(COPYMODE) + SET DSTFILE,A + JR Z,.SINGC1 + RES DSTFILE,A +.SINGC1: LD (COPYMODE),A + RET Z + LD HL,BUF3 + LD BC,255 + XOR A + CPIR ;MOVE TO END OF STRING + DEC HL ;MOVE TO ZERO-CHAR + DEC HL ;MOVE TO LAST CHAR + LD A,(HL) ;GET LAST CHAR + INC HL ;MOVE TO ZERO-CHAR + CP '\' ;IS IT BACKSLASH? + LD (DST_PUT_ADR),HL ;SAVE END ADDRESS + RET Z + LD A,'\' ; + LD (HL),A ;PUT BACKSLASH TO THE END OF STRING + INC HL ;MOVE TO THE NEW END OF STRING + LD (DST_PUT_ADR),HL ;SAVE END ADDRESS + LD (HL),0 ;PUT ZERO CHAR + RET -EX_COPY_PARAM - LD HL,BUF2 ;SOURCE - LD BC,255 - XOR A - CPIR - DEC HL - EX DE,HL - LD HL,256 - AND A - SBC HL,BC - LD B,H - LD C,L - EX DE,HL - LD A,'\' ; - CPDR - INC HL - INC HL - LD (SRC_PUT_ADR),HL -; - LD HL,BUF2 - LD BC,Dss.EX_Path.GET_ALL - RST ToDSS - AND #80 - LD A,(COPYMODE) - SET SRCPATT,A - JR NZ,.NOPATSR - RES SRCPATT,A -.NOPATSR: - LD (COPYMODE),A - LD HL,BUF3 ;DESTINATION - LD BC,Dss.EX_Path.GET_ALL - RST ToDSS - AND #81 ;PATTERN & FILENAME - CP #01 ;IF FILENAME=1 AND PATTERN=0 - LD A,(COPYMODE) - SET DSTFILE,A - JR Z,.SINGC1 - RES DSTFILE,A -.SINGC1: - LD (COPYMODE),A - RET Z - LD HL,BUF3 - LD BC,255 - XOR A - CPIR ;MOVE TO END OF STRING - DEC HL ;MOVE TO ZERO-CHAR - DEC HL ;MOVE TO LAST CHAR - LD A,(HL) ;GET LAST CHAR - INC HL ;MOVE TO ZERO-CHAR - CP '\' ;IS IT BACKSLASH? - LD (DST_PUT_ADR),HL ;SAVE END ADDRESS - RET Z - LD A,'\' ; - LD (HL),A ;PUT BACKSLASH TO THE END OF STRING - INC HL ;MOVE TO THE NEW END OF STRING - LD (DST_PUT_ADR),HL ;SAVE END ADDRESS - LD (HL),0 ;PUT ZERO CHAR - RET +DSTFILE: EQU 0 ;SPECIFIED DESTINATION FILENAME +SRCPATT: EQU 3 ;SPECIFIED SOURCE PATTERN A??.* -DSTFILE EQU 0 ;SPECIFIED DESTINATION FILENAME -SRCPATT EQU 3 ;SPECIFIED SOURCE PATTERN A??.* +COPYMODE: DB 0 -COPYMODE DB 0 +SRC_PUT_ADR: DW BUF2 +DST_PUT_ADR: DW BUF3 -SRC_PUT_ADR DW BUF2 -DST_PUT_ADR DW BUF3 +CL_OFFSET: DW 0 +CH_OFFSET: DW 0 +CL_SIZE: DW 0 +CH_SIZE: DW 0 +BYTECOUNTER: DW 0 -CL_OFFSET DW 0 -CH_OFFSET DW 0 -CL_SIZE DW 0 -CH_SIZE DW 0 -BYTECOUNTER DW 0 +WDATAB: LD DE,(BYTECOUNTER) + LD A,D + OR E + RET Z + LD HL,#C000 + LD A,(FHND) + LD C,Dss.Write + RST ToDSS + JR C,.WRDERR + XOR A + INC A + RET + ; +.WRDERR: LD A,MSG_FAILURE + CALL MESSAGE + CALL CRLF + LD A,MSG_F_WRITE_ERR + CALL MESSAGE + XOR A + SCF + RET -WDATAB: LD DE,(BYTECOUNTER) - LD A,D - OR E - RET Z - LD HL,#C000 - LD A,(FHND) - LD C,Dss.Write - RST ToDSS - JR C,.WRDERR - XOR A - INC A - RET -.WRDERR: - LD A,MSG_FAILURE - CALL MESSAGE - CALL CRLF - LD A,MSG_F_WRITE_ERR - CALL MESSAGE - XOR A - SCF - RET - -RCDFSB: LD HL,(CL_SIZE) - LD DE,(CH_SIZE) - LD A,H - OR L - OR D - OR E - LD BC,0 - LD (BYTECOUNTER),BC - RET Z ;SIZE = 0 - AND A - LD BC,#4000 ;BLOCKSIZE - SBC HL,BC - LD B,C - EX DE,HL - SBC HL,BC - EX DE,HL - LD BC,#4000 - JR NC,.RC_NOCAR +RCDFSB: LD HL,(CL_SIZE) + LD DE,(CH_SIZE) + LD A,H + OR L + OR D + OR E + LD BC,0 + LD (BYTECOUNTER),BC + RET Z ;SIZE = 0 + AND A + LD BC,#4000 ;BLOCKSIZE + SBC HL,BC + LD B,C + EX DE,HL + SBC HL,BC + EX DE,HL + LD BC,#4000 + JR NC,.RC_NOCAR ;CORRECT RESULT - ADD HL,BC - LD B,C - EX DE,HL - ADC HL,BC - EX DE,HL - LD B,H - LD C,L - LD HL,0 - LD DE,0 -.RC_NOCAR: - LD (CL_SIZE),HL - LD (CH_SIZE),DE - LD (BYTECOUNTER),BC - ; - LD A,B - SRL B - SRL B - SRL B - AND #07 - OR C - JR Z,.RC_EVEN_NUM - INC B -.RC_EVEN_NUM: - LD A,B - LD C,B - LD B,0 - ; - LD IX,(CL_OFFSET) - LD HL,(CH_OFFSET) - PUSH IX - PUSH HL - ADD IX,BC - LD C,B - ADC HL,BC - LD (CL_OFFSET),IX - LD (CH_OFFSET),HL - POP HL - POP IX - LD B,A - LD A,(CDDRIVE) - LD DE,#C000 - LD C,BIOS.DRV_READ - RST ToBIOS - LD BC,(BYTECOUNTER) - RET NC - LD A,MSG_FAILURE - CALL MESSAGE - CALL CRLF - LD A,MSG_CD_READ_ERR - CALL MESSAGE - SCF - RET + ADD HL,BC + LD B,C + EX DE,HL + ADC HL,BC + EX DE,HL + LD B,H + LD C,L + LD HL,0 + LD DE,0 + ; +.RC_NOCAR: LD (CL_SIZE),HL + LD (CH_SIZE),DE + LD (BYTECOUNTER),BC + ; + LD A,B + SRL B + SRL B + SRL B + AND #07 + OR C + JR Z,.RC_EVEN_NUM + INC B +.RC_EVEN_NUM: LD A,B + LD C,B + LD B,0 + ; + LD IX,(CL_OFFSET) + LD HL,(CH_OFFSET) + PUSH IX + PUSH HL + ADD IX,BC + LD C,B + ADC HL,BC + LD (CL_OFFSET),IX + LD (CH_OFFSET),HL + POP HL + POP IX + LD B,A + LD A,(CDDRIVE) + LD DE,#C000 + LD C,BIOS.DRV_READ + RST ToBIOS + LD BC,(BYTECOUNTER) + RET NC + LD A,MSG_FAILURE + CALL MESSAGE + CALL CRLF + LD A,MSG_CD_READ_ERR + CALL MESSAGE + SCF + RET -FHND DB #FF +FHND: DB #FF ;---------------------- -CDIR: CALL CHANGEDISK - JP C,ERROR - LD HL,BUF2 - LD A,(HL) - OR A - JR NZ,.NODEFD - LD HL,DEFDIR - JR .PATPRESNT -.NODEFD: - LD BC,Dss.EX_Path.GET_ALL - RST ToDSS - BIT 7,A ;PATTERN - LD HL,BUF2 - JR NZ,.PATPRESNT - ; - LD BC,255 - XOR A - CPIR ;MOVE TO END OF STRING - DEC HL ;MOVE TO ZERO-CHAR - DEC HL ;MOVE TO LAST CHAR - LD A,(HL) ;GET LAST CHAR - INC HL ;MOVE TO ZERO-CHAR - CP '\' ;IS IT BACKSLASH? - JR Z,.WITHSL9 - LD A,'\' ; - LD (HL),A ;PUT BACKSLASH TO THE END OF STRING - INC HL ;MOVE TO THE NEW END OF STRING -.WITHSL9: - LD A,"*" - LD (HL),A - INC HL - LD (HL),"." - INC HL - LD (HL),A - INC HL - LD (HL),0 - LD HL,BUF2 -.PATPRESNT - LD DE,FF_STRUCT - LD A,FAT_ATTR.NoVolID - LD B,0 - CALL F_FIRST - JP C,ERROR -.CDIR_HEAD: - LD A,MSG_DIRHEAD - CALL MESSAGE - LD HL,DIRSPEC - LD C,Dss.PChars - RST ToDSS - CALL CRLF - CALL CRLF -.CDIR_LOOP: - LD HL,CDFNAME - CALL PNAME - LD DE,FF_STRUCT - CALL F_NEXT - JR NC,.CDIR_LOOP - RET +CDIR: CALL CHANGEDISK + JP C,ERROR + LD HL,BUF2 + LD A,(HL) + OR A + JR NZ,.NODEFD + LD HL,DEFDIR + JR .PATPRESNT + ; +.NODEFD: LD BC,Dss.EX_Path.GET_ALL + RST ToDSS + BIT 7,A ;PATTERN + LD HL,BUF2 + JR NZ,.PATPRESNT + ; + LD BC,255 + XOR A + CPIR ;MOVE TO END OF STRING + DEC HL ;MOVE TO ZERO-CHAR + DEC HL ;MOVE TO LAST CHAR + LD A,(HL) ;GET LAST CHAR + INC HL ;MOVE TO ZERO-CHAR + CP '\' ;IS IT BACKSLASH? + JR Z,.WITHSL9 + LD A,'\' ; + LD (HL),A ;PUT BACKSLASH TO THE END OF STRING + INC HL ;MOVE TO THE NEW END OF STRING +.WITHSL9: LD A,"*" + LD (HL),A + INC HL + LD (HL),"." + INC HL + LD (HL),A + INC HL + LD (HL),0 + LD HL,BUF2 +.PATPRESNT: LD DE,FF_STRUCT + LD A,FAT_ATTR.NoVolID + LD B,0 + CALL F_FIRST + JP C,ERROR + ; +.CDIR_HEAD: LD A,MSG_DIRHEAD + CALL MESSAGE + LD HL,DIRSPEC + LD C,Dss.PChars + RST ToDSS + CALL CRLF + CALL CRLF +.CDIR_LOOP: LD HL,CDFNAME + CALL PNAME + LD DE,FF_STRUCT + CALL F_NEXT + JR NC,.CDIR_LOOP + RET ; FF_STRUCT ; DB "12345678" @@ -495,323 +483,317 @@ CDIR: CALL CHANGEDISK ; ; DS 44 ; DS 256-($-FF_STRUCT) -PNAME LD BC,8 - LD DE,PRM1 - LDIR - XOR A - LD (DE),A - LD DE,PRM2 - LDI - LDI - LDI - LD (DE),A - LD IX,FF_STRUCT - CALL PRNSIZE - CALL PRNDATE - CALL PRNTIME - LD A,MSG_DIRENTRY - JP MESSAGE +PNAME: LD BC,8 + LD DE,PRM1 + LDIR + XOR A + LD (DE),A + LD DE,PRM2 + LDI + LDI + LDI + LD (DE),A + LD IX,FF_STRUCT + CALL PRNSIZE + CALL PRNDATE + CALL PRNTIME + LD A,MSG_DIRENTRY + JP MESSAGE -PRNDATE LD B,(IX+25) - LD C,(IX+24) - LD HL,SIZEBFF - CALL DATE - LD (HL),0 - LD HL,SIZEBFF - LD DE,PRM4 - LD A,(HL) - CP "0" - JP NZ,PUTPRM - LD (HL),#20 - JP PUTPRM +PRNDATE: LD B,(IX+25) + LD C,(IX+24) + LD HL,SIZEBFF + CALL DATE + LD (HL),0 + LD HL,SIZEBFF + LD DE,PRM4 + LD A,(HL) + CP "0" + JP NZ,PUTPRM + LD (HL),#20 + JP PUTPRM -PRNTIME LD B,(IX+22) - LD C,(IX+23) - LD HL,SIZEBFF - CALL TIME - LD (HL),0 - LD HL,SIZEBFF - LD DE,PRM5 - LD A,(HL) - CP "0" - JP NZ,PUTPRM - LD (HL),#20 - JP PUTPRM +PRNTIME: LD B,(IX+22) + LD C,(IX+23) + LD HL,SIZEBFF + CALL TIME + LD (HL),0 + LD HL,SIZEBFF + LD DE,PRM5 + LD A,(HL) + CP "0" + JP NZ,PUTPRM + LD (HL),#20 + JP PUTPRM -TIME: SRL C - RR B - SRL C - RR B - SRL C - RR B - SRL B - SRL B - LD A,C - CALL NUMB - LD (HL),":" - INC HL - LD A,B - JP NUMB +TIME: SRL C + RR B + SRL C + RR B + SRL C + RR B + SRL B + SRL B + LD A,C + CALL NUMB + LD (HL),":" + INC HL + LD A,B + JP NUMB -DATE: LD A,C - AND #1F - PUSH BC - CALL NUMB - LD (HL),"." - INC HL - POP BC - LD A,C - SRL B - RLA - RLA - RLA - RLA - AND #0F - CALL NUMB - LD (HL),"." - INC HL - LD A,B - ADD A,#50 - CP 100 - JP C,NUMB +DATE: LD A,C + AND #1F + PUSH BC + CALL NUMB + LD (HL),"." + INC HL + POP BC + LD A,C + SRL B + RLA + RLA + RLA + RLA + AND #0F + CALL NUMB + LD (HL),"." + INC HL + LD A,B + ADD A,#50 + CP 100 + JP C,NUMB .SUB100: - SUB 100 - CP 100 - JP C,NUMB - JR .SUB100 + SUB 100 + CP 100 + JP C,NUMB + JR .SUB100 -NUMB: LD C,#2F -.NUMB1: INC C - SUB 10 - JP NC,.NUMB1 - ADD A,10 - ADD A,#30 - LD (HL),C - INC HL - LD (HL),A - INC HL - RET +NUMB: LD C,#2F +.NUMB1: INC C + SUB 10 + JP NC,.NUMB1 + ADD A,10 + ADD A,#30 + LD (HL),C + INC HL + LD (HL),A + INC HL + RET -PRNSIZE LD A,(IX+32) - LD HL,DIRIDD - AND #10 - JP NZ,.PRZ - LD L,(IX+28) - LD H,(IX+29) - EXX - LD L,(IX+30) - LD H,(IX+31) - EXX - PUSH IX - CALL MAKE_LN - LD HL,L32BIT_+9 - LD A,(HL) - CP #20 - JR NZ,.ALR - LD A,#30 - LD (HL),A -.ALR: LD DE,SIZEBFF - LD HL,L32BIT_;; +1 - LDI - LD A," " - LD (DE),A - INC DE - LDI - LDI - LDI - LD (DE),A - INC DE - LDI - LDI - LDI - LD (DE),A - INC DE - LDI - LDI - LDI - LD HL,SIZEBFF - POP IX -.PRZ: LD DE,PRM3 - JP PUTPRM +PRNSIZE: LD A,(IX+32) + LD HL,DIRIDD + AND #10 + JP NZ,.PRZ + LD L,(IX+28) + LD H,(IX+29) + EXX + LD L,(IX+30) + LD H,(IX+31) + EXX + PUSH IX + CALL MAKE_LN + LD HL,L32BIT_+9 + LD A,(HL) + CP #20 + JR NZ,.ALR + LD A,#30 + LD (HL),A +.ALR: LD DE,SIZEBFF + LD HL,L32BIT_;; +1 + LDI + LD A," " + LD (DE),A + INC DE + LDI + LDI + LDI + LD (DE),A + INC DE + LDI + LDI + LDI + LD (DE),A + INC DE + LDI + LDI + LDI + LD HL,SIZEBFF + POP IX +.PRZ: LD DE,PRM3 + JP PUTPRM -MAKE_LN: - LD IX,L32BIT_ - EXX - LD DE,#3B9A ; 1000000000 - EXX - LD DE,#CA00 - CALL GET_DIG - EXX - LD DE,#05F5 ; 100000000 - EXX - LD DE,#E100 - CALL GET_DIG - EXX - LD DE,#0098 ; 10000000 - EXX - LD DE,#9680 - CALL GET_DIG - EXX - LD DE,#000F ; 1000000 - EXX - LD DE,#4240 - CALL GET_DIG - EXX - LD DE,#0001 ; 100000 - EXX - LD DE,#86A0 - CALL GET_DIG - EXX - LD DE,#0000 ; 10000 - EXX - LD DE,#2710 - CALL GET_DIG - EXX - LD DE,#0000 ; 1000 - EXX - LD DE,#03E8 - CALL GET_DIG - EXX - LD DE,#0000 ; 100 - EXX - LD DE,#0064 - CALL GET_DIG - EXX - LD DE,#0000 ; 10 - EXX - LD DE,#000A - CALL GET_DIG - LD A,L ; 1 - ADD A,#30 - LD (IX+0),A - INC IX - LD HL,L32BIT_ - LD DE,#2030 +MAKE_LN: LD IX,L32BIT_ + EXX + LD DE,#3B9A ; 1000000000 + EXX + LD DE,#CA00 + CALL GET_DIG + EXX + LD DE,#05F5 ; 100000000 + EXX + LD DE,#E100 + CALL GET_DIG + EXX + LD DE,#0098 ; 10000000 + EXX + LD DE,#9680 + CALL GET_DIG + EXX + LD DE,#000F ; 1000000 + EXX + LD DE,#4240 + CALL GET_DIG + EXX + LD DE,#0001 ; 100000 + EXX + LD DE,#86A0 + CALL GET_DIG + EXX + LD DE,#0000 ; 10000 + EXX + LD DE,#2710 + CALL GET_DIG + EXX + LD DE,#0000 ; 1000 + EXX + LD DE,#03E8 + CALL GET_DIG + EXX + LD DE,#0000 ; 100 + EXX + LD DE,#0064 + CALL GET_DIG + EXX + LD DE,#0000 ; 10 + EXX + LD DE,#000A + CALL GET_DIG + LD A,L ; 1 + ADD A,#30 + LD (IX+0),A + INC IX + LD HL,L32BIT_ + LD DE,#2030 ; -.KILLZ: LD A,(HL) - CP E - JR NZ,.KILLZ2 - LD (HL),D - INC HL - JP .KILLZ +.KILLZ: LD A,(HL) + CP E + JR NZ,.KILLZ2 + LD (HL),D + INC HL + JP .KILLZ .KILLZ2: - LD HL,L32BIT_+9 - LD A,(HL) - CP D - RET NZ - LD (HL),E - RET + LD HL,L32BIT_+9 + LD A,(HL) + CP D + RET NZ + LD (HL),E + RET ; HL:HL - DE:DE -GET_DIG: - XOR A -.INC_DG: - INC A - SBC HL,DE - EXX - SBC HL,DE - EXX - JP NC,.INC_DG - ADD HL,DE - EXX - ADC HL,DE - EXX - DEC A - ADD A,#30 - LD (IX+0),A - INC IX - RET +GET_DIG: XOR A +.INC_DG: INC A + SBC HL,DE + EXX + SBC HL,DE + EXX + JP NC,.INC_DG + ADD HL,DE + EXX + ADC HL,DE + EXX + DEC A + ADD A,#30 + LD (IX+0),A + INC IX + RET -L32BIT_ DB "0000000000" +L32BIT_: DB "0000000000" -DIRIDD DB "