From dd6dd7bf0c14d5b55e1d0085cf2bb0dc8e3631f8 Mon Sep 17 00:00:00 2001 From: Tolik Trek Date: Sat, 16 May 2026 23:46:06 +1000 Subject: [PATCH] Updated for CLP --- Shared_Includes | 2 +- attrib.asm | 977 ++++++++++++++++++++++++------------------------ 2 files changed, 494 insertions(+), 485 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 4c835d3..d2ba40c 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 4c835d305fd5d1bc296039706d5e163c1f2224ca +Subproject commit d2ba40c4620459681fdc5eb8d4cadcb50eb79aa8 diff --git a/attrib.asm b/attrib.asm index 53a39f4..b670550 100644 --- a/attrib.asm +++ b/attrib.asm @@ -2,525 +2,534 @@ ; ; ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename] [/S] ; - ORG #8100-512 - INCLUDE "dos_equ.asm" - DB "EXE" ;EXE ID - DB #00 ;EXE VERSION - DW #0200 ;CODE OFFSET LOW - DW #0000 ;CODE OFFSET HIGH - DW #0000 ;END-BEG ;PRIMARY LOADER - DW #0000 ; - DW #0000 ;RESERVED - DW #0000 ; - DW #8100 ;LOAD ADDRESS - DW #8100 ;START ADDRESS - DW #BFFF ;STACK ADDRESS - DS 490 +; +; Defines section +;---------------------------------------------------------------------[] + DEFINE DEBUG 0 + DEFINE EMULATOR 0 + DEFINE EXE_HEADER 1 + DEFINE App_EXE_Version 1 +; define NEED_LOADER 1 +; define NeedSafePort_Y 0 +;---------------------------------------------------------------------[] +; + + +; +; Included LUA section +;---------------------------------------------------------------------[] +; includelua +;---------------------------------------------------------------------[] +; + + + +; +; Included constants section +;---------------------------------------------------------------------[] +; include 'Shared_Includes/constants/sp2000.inc' + include 'Shared_Includes/constants/BIOS_equ.inc' + include 'Shared_Includes/constants/dss_equ.inc' +; include 'Shared_Includes/constants/standart_colors.inc' +; include 'Shared_Includes/constants/ATA.inc' +;---------------------------------------------------------------------[] +; + +; +; Included macroses section +;---------------------------------------------------------------------[] +; include 'Shared_Includes/macroses/macros.z80' +; include 'Shared_Includes/macroses/accelerator.z80' +;---------------------------------------------------------------------[] +; + +; +; Standart EQU section +;---------------------------------------------------------------------[] +org_addr: EQU #8000+CLP_Buffer +code_addr: EQU START +stack_point: EQU #BFFE +stack_buffer: EQU 64 +program_start: EQU START +Loader_length: EQU 0 +;---------------------------------------------------------------------[] +; + + STRUCT Variables +.STOPMODE: BYTE #00 +.RESMASK: BYTE #00 +.SETMASK: BYTE #00 +.MODIFY: BYTE #00 +.FSTRUCT: BLOCK 33,0 +.FILENAME: BLOCK 223,0 +.BUFFER: BLOCK 33,0 +.FILE_PRM: BLOCK 223,0 +;CUR_DIRECTORY EQU FILE_PRM+256 + ENDS + +; +; Code start section +;[]-------------------------------------------------------------------[] + IF EXE_HEADER + INCLUDE 'Shared_Includes/constants/EXE_Header.z80' + ORG org_addr + ELSE + ORG org_addr-CLP_Buffer + ENDIF + IF DEBUG + OUTPUT "Build/Debug.bin" + ENDIF +; +;---------------------------------------------------------------------[] + +; RST DSS +;EXIT EQU #41 +PUTCHAR: EQU #5B +PCHARS: EQU #5C ;SYSTEM ATTRIBUTES -READONLY_ATR EQU %00000001 -HIDDEN_ATR EQU %00000010 -SYSTEM_ATR EQU %00000100 -ARCHIVE_ATR EQU %00100000 +READONLY_ATR: EQU %0000'0001 +HIDDEN_ATR: EQU %0000'0010 +SYSTEM_ATR: EQU %0000'0100 +ARCHIVE_ATR: EQU %0010'0000 -USAGE_MSG EQU 1 -ERRATR_MSG EQU 2 -ERRKEY_MSG EQU 3 +USAGE_MSG: EQU 1 +ERRATR_MSG: EQU 2 +ERRKEY_MSG: EQU 3 -START PUSH IX - CALL INITDATA - POP HL - INC HL - CALL GET_KEY - LD B,1 - LD A,(STOPMODE) - OR A - JR NZ,QUIT - LD A,(MODIFY) - BIT 7,A - JR NZ,NAME_OK - SET 7,A - LD (MODIFY),A - LD HL,ANYNAME - LD DE,FILE_PRM - LD BC,EANYNAME-ANYNAME - LDIR -NAME_OK - LD HL,FILE_PRM -CHEKNM - LD A,(HL) - INC HL - CP "*" - JR Z,CHEKEN - CP "?" - JR Z,CHEKEN - OR A - JR NZ,CHEKNM +START: PUSH IX + CALL INITDATA + POP HL + INC HL + CALL GET_KEY + LD B,1 + LD A,(VARS.STOPMODE) + OR A + JR NZ,QUIT + LD A,(VARS.MODIFY) + BIT 7,A + JR NZ,NAME_OK + SET 7,A + LD (VARS.MODIFY),A + LD HL,ANYNAME + LD DE,VARS.FILE_PRM + LD BC,ANYNAME.Size + LDIR +NAME_OK: + LD HL,VARS.FILE_PRM +CHEKNM: + LD A,(HL) + INC HL + CP "*" + JR Z,CHEKEN + CP "?" + JR Z,CHEKEN + OR A + JR NZ,CHEKNM - LD A,#37 - LD (ATTR+1),A + LD A,#37 + LD (ATTR+1),A -CHEKEN - LD HL,FILE_PRM - LD DE,FSTRUCT - LD BC,#0119 ;FIND FIRST -ATTR LD A,#27 ;%00100111 - RST #10 - CALL C,DOSERROR - JR C,ENDOFDIR -LOOP_ATTR - CALL CHANGE_ATTRIB - LD DE,FSTRUCT - LD C,#1A - RST #10 - JR NC,LOOP_ATTR -ENDOFDIR - CALL CRLF - LD B,0 -QUIT LD C,EXIT - RST #10 - RET +CHEKEN: + LD HL,VARS.FILE_PRM + LD DE,VARS.FSTRUCT + LD BC,Dss.F_First.DOSname ;FIND FIRST +ATTR: LD A,#27 ;%00100111 + RST ToDSS + CALL C,DOSERROR + JR C,ENDOFDIR +LOOP_ATTR: + CALL CHANGE_ATTRIB + LD DE,VARS.FSTRUCT + LD C,Dss.F_Next + RST ToDSS + JR NC,LOOP_ATTR +ENDOFDIR: + CALL CRLF + LD B,0 +QUIT: LD C,Dss.Exit + RST ToDSS + RET -INITDATA - XOR A - LD (RESMASK),A - LD (SETMASK),A - LD (MODIFY),A - LD (STOPMODE),A +INITDATA: + LD HL,VARS + LD DE,VARS+1 + LD (HL),0 + LD BC,Variables-1 + LDIR + RET - RET +CHANGE_ATTRIB: + LD A,(VARS.MODIFY) + OR A + RET Z + CP #80 + JR Z,SHOW_ATTRIBS + LD A,(VARS.RESMASK) + CPL + LD C,A + LD A,(VARS.SETMASK) + LD B,A + PUSH BC + LD HL,VARS.FILENAME + LD BC,Dss.Attrib.Get + RST ToDSS + CALL C,DOSERROR + POP BC + RET C + AND C + OR B + LD HL,VARS.FILENAME + LD BC,Dss.Attrib.Set + RST ToDSS + CALL C,DOSERROR + RET -CHANGE_ATTRIB - LD A,(MODIFY) - OR A - RET Z - CP #80 - JR Z,SHOW_ATTRIBS - LD A,(RESMASK) - CPL - LD C,A - LD A,(SETMASK) - LD B,A - PUSH BC - LD HL,FILENAME - LD BC,#0016 - RST #10 - CALL C,DOSERROR - POP BC - RET C - AND C - OR B - LD HL,FILENAME - LD BC,#0116 - RST #10 - CALL C,DOSERROR - RET +SHOW_ATTRIBS: + LD HL,VARS.FILENAME + LD BC,Dss.Attrib.Get + RST ToDSS + CALL C,DOSERROR + RET C +PRINT_ATTR_STR: + LD C,A + LD B,8 + LD HL,ATTR_STR +ATTR_LP: RL C + LD A,(HL) + INC HL + JR C,PSGN_OK + LD A," " +PSGN_OK: PUSH BC + LD C,Dss.PutChar + RST ToDSS + POP BC + DJNZ ATTR_LP + LD A,9 + LD C,Dss.PutChar + RST ToDSS + LD HL,VARS.FILENAME + LD C,Dss.PChars + RST ToDSS + JP CRLF + ;RET -SHOW_ATTRIBS - LD HL,FILENAME - LD BC,#0016 - RST #10 - CALL C,DOSERROR - RET C -PRINT_ATTR_STR - LD C,A - LD B,8 - LD HL,ATTR_STR -ATTR_LP RL C - LD A,(HL) - INC HL - JR C,PSGN_OK - LD A," " -PSGN_OK PUSH BC - LD C,PUTCHAR - RST #10 - POP BC - DJNZ ATTR_LP - LD A,9 - LD C,PUTCHAR - RST #10 - LD HL,FILENAME - LD C,PCHARS - RST #10 - CALL CRLF - RET +ATTR_STR: + DB " A SHR" -ATTR_STR - DB " A SHR" +PRINT_USAGE: + LD A,USAGE_MSG + CALL MESSAGE + LD A,1 + LD (VARS.STOPMODE),A + POP HL + RET -PRINT_USAGE - LD A,USAGE_MSG - CALL MESSAGE - LD A,1 - LD (STOPMODE),A - POP HL - RET - -GET_KEY - LD DE,BUFFER - LD C,#43 ;GSWITCH - RST #10 - EX AF,AF' - LD A,(BUFFER) - OR A - RET Z - CP "+" - JR Z,SETATR - CP "-" - JR Z,RESATR - CP "/" - JR Z,SWITCH_KEY +GET_KEY: + LD DE,VARS.BUFFER + LD C,Dss.GSwitch + RST ToDSS + EX AF,AF' + LD A,(VARS.BUFFER) + OR A + RET Z + CP "+" + JR Z,SETATR + CP "-" + JR Z,RESATR + CP "/" + JR Z,SWITCH_KEY ;IT PARAMETER IS FILENAME - EX AF,AF' - PUSH AF - PUSH HL - LD HL,BUFFER - LD DE,FILE_PRM - LD C,#43 - RST #10 - POP HL - POP AF - EX AF,AF' - LD A,(MODIFY) - OR 80h - LD (MODIFY),A + EX AF,AF' + PUSH AF + PUSH HL + LD HL,VARS.BUFFER + LD DE,VARS.FILE_PRM + LD C,Dss.GSwitch + RST ToDSS + POP HL + POP AF + EX AF,AF' + LD A,(VARS.MODIFY) + OR 80h + LD (VARS.MODIFY),A ; -GKLOOP EX AF,AF' - JR NC,GET_KEY - XOR A - DEC A ;A=FF, ZF=0 (NO FILENAME) - RET +GKLOOP: EX AF,AF' + JR NC,GET_KEY + XOR A + DEC A ;A=FF, ZF=0 (NO FILENAME) + RET -SWITCH_KEY - PUSH HL - LD DE,(BUFFER+1) - AND A - LD HL,"?" - SBC HL,DE - JR Z,PRINT_USAGE - RES 5,E - AND A - LD HL,"H" - SBC HL,DE - JR Z,PRINT_USAGE +SWITCH_KEY: + PUSH HL + LD DE,(VARS.BUFFER+1) + AND A + LD HL,"?" + SBC HL,DE + JR Z,PRINT_USAGE + RES 5,E + AND A + LD HL,"H" + SBC HL,DE + JR Z,PRINT_USAGE ;UNKNOWN KEY - LD A,ERRKEY_MSG - CALL MESSAGE - LD A,1 - LD (STOPMODE),A - POP HL - RET + LD A,ERRKEY_MSG + CALL MESSAGE + LD A,1 + LD (VARS.STOPMODE),A + POP HL + RET -RESATR - LD B,0 - JR RES_SET_ATR -SETATR - LD B,1 -RES_SET_ATR - PUSH HL - LD DE,(BUFFER+1) - AND A - LD HL,"?" - SBC HL,DE - JR Z,PRINT_USAGE - RES 5,E ;UPPER "a..z" TO "A..Z" - AND A - LD HL,"H" - LD A,HIDDEN_ATR - SBC HL,DE - JR Z,ADD_IT - AND A - LD HL,"S" - LD A,SYSTEM_ATR - SBC HL,DE - JR Z,ADD_IT - AND A - LD HL,"A" - LD A,ARCHIVE_ATR - SBC HL,DE - JR Z,ADD_IT - AND A - LD HL,"R" - LD A,READONLY_ATR - SBC HL,DE - JR Z,ADD_IT +RESATR: + LD B,0 + JR RES_SET_ATR +SETATR: + LD B,1 +RES_SET_ATR: + PUSH HL + LD DE,(VARS.BUFFER+1) + AND A + LD HL,"?" + SBC HL,DE + JR Z,PRINT_USAGE + RES 5,E ;UPPER "a..z" TO "A..Z" + AND A + LD HL,"H" + LD A,HIDDEN_ATR + SBC HL,DE + JR Z,ADD_IT + AND A + LD HL,"S" + LD A,SYSTEM_ATR + SBC HL,DE + JR Z,ADD_IT + AND A + LD HL,"A" + LD A,ARCHIVE_ATR + SBC HL,DE + JR Z,ADD_IT + AND A + LD HL,"R" + LD A,READONLY_ATR + SBC HL,DE + JR Z,ADD_IT ;UNKNOWN ATTRIB - LD A,ERRATR_MSG - CALL MESSAGE - POP HL - RET + LD A,ERRATR_MSG + CALL MESSAGE + POP HL + RET -ADD_IT - INC B - DJNZ SET_MET - LD C,A - LD A,(RESMASK) - OR C - LD (RESMASK),A - LD A,(MODIFY) - OR #01 - LD (MODIFY),A - POP HL - JP GKLOOP - -SET_MET - LD C,A - LD A,(SETMASK) - OR C - LD (SETMASK),A - LD A,(MODIFY) - OR #02 - LD (MODIFY),A - POP HL - JP GKLOOP +ADD_IT: + INC B + DJNZ SET_MET + LD C,A + LD A,(VARS.RESMASK) + OR C + LD (VARS.RESMASK),A + LD A,(VARS.MODIFY) + OR #01 + LD (VARS.MODIFY),A + POP HL + JP GKLOOP -CR EQU 13 -LF EQU 10 +SET_MET: LD C,A + LD A,(VARS.SETMASK) + OR C + LD (VARS.SETMASK),A + LD A,(VARS.MODIFY) + OR #02 + LD (VARS.MODIFY),A + POP HL + JP GKLOOP -CRLF LD A,#0D - LD C,PUTCHAR - RST #10 - LD A,#0A - LD C,PUTCHAR - RST #10 - RET +CR: EQU 13 +LF: EQU 10 -DOSERROR - LD E,A - LD D,0 - JP ERR_MSG +CRLF: LD HL,.crlf + LD C,Dss.PChars + RST ToDSS + RET + ; +.crlf: DZ "\r\n" -ERR_MSG CALL FMESAGE - CALL PRINTZ - CALL CRLF - CALL CRLF - SCF - RET +DOSERROR: LD E,A + LD D,0 + CALL FMESAGE + CALL PRINTZ + CALL CRLF + CALL CRLF + SCF + RET -MESSAGE LD E,A - LD D,0 - CALL MESAGE - CALL PRINTZ - RET +MESSAGE: LD E,A + LD D,0 + CALL MESAGE + JR PRINTZ + ;RET -MESAGE INC DE - LD HL,MSG0 - LD BC,MSG1-MSG0 -LCPIR2 XOR A - CPIR - RET PO - RET NZ - DEC DE - LD A,D - OR E - JP NZ,LCPIR2 - RET +MESAGE: INC DE + LD HL,MSG0 + LD BC,MSG0.Size +LCPIR2: XOR A + CPIR + RET PO + RET NZ + DEC DE + LD A,D + OR E + JR NZ,LCPIR2 + RET -FMESAGE INC DE - LD HL,ERR0 - LD BC,ERR1-ERR0 -LCPIR XOR A - CPIR - RET PO - RET NZ - DEC DE - LD A,D - OR E - JP NZ,LCPIR - RET +FMESAGE: INC DE + LD HL,ERR0 + LD BC,ERR0.Size +LCPIR: XOR A + CPIR + RET PO + RET NZ + DEC DE + LD A,D + OR E + JR NZ,LCPIR + RET -PUTVAR LD DE,PRM1 -PUTPRM LD BC,15 -PUTPRMA LD A,(HL) - LDI - RET PO - OR A - JR NZ,PUTPRMA - RET -PRINTZ LD A,(HL) - INC HL - OR A - RET Z - CP "%" - JR NZ,PRINTZ2 - LD A,(HL) - INC HL - SUB "1" - PUSH HL - LD L,A - LD H,0 - ADD HL,HL - ADD HL,HL - ADD HL,HL - ADD HL,HL - LD BC,PRM1 - ADD HL,BC - LD C,PCHARS - RST #10 - POP HL - JR PRINTZ -PRINTZ2 LD C,PUTCHAR - RST #10 - JP PRINTZ +PRINTZ: ;LD A,(HL) + ;INC HL + ;OR A + ;RET Z + LD C,Dss.PChars + RST ToDSS + ;JR PRINTZ + RET -PRINT_ LD C,PUTCHAR - RST #10 - RET +MSG0: DB #00 + DZ "ATTRIB\r\n\r\n" + DB " Usage: ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename]\r\n\r\n" + DB " Displays or changes file attributes.\r\n" + DB "This command displays, sets, or removes the Read-Only, Archive, System, and\r\n" + DB "Hidden attributes assigned to files or directories.\r\n\r\n" + DB "Parameter\r\n\r\n" + DB "[drive:][path]filename\r\n" + DB " Specifies the location and name of the file(s) you want to process.\r\n\r\n" + DB "Switches\r\n\r\n" + DB "+R Sets the Read-Only file attribute.\r\n" + DB "-R Clears the Read-Only file attribute.\r\n" + DB "+A Sets the Archive file attribute.\r\n" + DB "-A Clears the Archive file attribute.\r\n" + DB "+S Sets the file as a System file.\r\n" + DB "-S Clears the System file attribute.\r\n" + DB "+H Sets the file as a Hidden file.\r\n" + DZ "-H Clears the Hidden file attribute.\r\n" + DB 0 +.Size EQU $-MSG0 -UPPER CP "a" - RET C - CP "{" - RET NC - SUB #20 - RET - -PRM1 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM2 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM3 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM4 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM5 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM6 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM7 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM8 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -PRM9 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - -MSG0 DB #00 - DB "ATTRIB",CR,LF,CR,LF,0 - DB " Usage: ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename]",CR,LF,CR,LF - DB " Displays or changes file attributes.",CR,LF - DB "This command displays, sets, or removes the Read-Only, Archive, System, and",CR,LF - DB "Hidden attributes assigned to files or directories.",CR,LF,CR,LF - DB "Parameter",CR,LF,CR,LF - DB "[drive:][path]filename",CR,LF - DB " Specifies the location and name of the file(s) you want to process.",CR,LF,CR,LF - DB "Switches",CR,LF,CR,LF - DB "+R Sets the Read-Only file attribute.",CR,LF - DB "-R Clears the Read-Only file attribute.",CR,LF - DB "+A Sets the Archive file attribute.",CR,LF - DB "-A Clears the Archive file attribute.",CR,LF - DB "+S Sets the file as a System file.",CR,LF - DB "-S Clears the System file attribute.",CR,LF - DB "+H Sets the file as a Hidden file.",CR,LF - DB "-H Clears the Hidden file attribute.",CR,LF - DB 0 - DB 0 -MSG1 - -ERR0 DB #00 - DB "Unknown error",0 - DB "Invalid function",0 - DB "Invalid drive letter",0 - DB "File not found",0 - DB "Path not found",0 - DB "Invalid handle",0 - DB "Extended error 6",0 - DB "File exist",0 - DB "File read only",0 - DB "Root overflow",0 - DB "No free space",0 - DB "Directory not empty",0 - DB "Can't delete current directory",0 - DB "Invalid media",0 - DB "Unknown operation",0 - DB "Directory exist",0 - DB "Invalid filename",0 - DB "Invalid EXE-file",0 - DB "Not supported EXE-file",0 - DB "Access denied",0 - DB "Not ready",0 - DB "Seek error",0 - DB "Sector not found",0 - DB "CRC error",0 - DB "Write protect",0 - DB "Read error",0 - DB "Write error",0 - DB "Drive failure",0 - DB "Extended error 28",0 - DB "Extended error 29",0 - DB "No free memory",0 - DB "Invalid memory block",0 - DB "Extended error 32",0 - DB "Extended error 33",0 - DB "Extended error 34",0 - DB "35",0 - DB "36",0 - DB "37",0 - DB "38",0 - DB "39",0 - DB "40",0 - DB "41",0 - DB "42",0 - DB "43",0 - DB "44",0 - DB "45",0 - DB "46",0 - DB "47",0 - DB "48",0 - DB "49",0 - DB "50" - DB 0 -ERR1 +ERR0: DB #00 + DZ "Unknown error" + DZ "Invalid function" + DZ "Invalid drive letter" + DZ "File not found" + DZ "Path not found" + DZ "Invalid handle" + DZ "Extended error 6" + DZ "File exist" + DZ "File read only" + DZ "Root overflow" + DZ "No free space" + DZ "Directory not empty" + DZ "Can't delete current directory" + DZ "Invalid media" + DZ "Unknown operation" + DZ "Directory exist" + DZ "Invalid filename" + DZ "Invalid EXE-file" + DZ "Not supported EXE-file" + DZ "Access denied" + DZ "Not ready" + DZ "Seek error" + DZ "Sector not found" + DZ "CRC error" + DZ "Write protect" + DZ "Read error" + DZ "Write error" + DZ "Drive failure" + DZ "Extended error 28" + DZ "Extended error 29" + DZ "No free memory" + DZ "Invalid memory block" + DZ "Extended error 32" + DZ "Extended error 33" + DZ "Extended error 34" + DZ "35" + DZ "36" + DZ "37" + DZ "38" + DZ "39" + DZ "40" + DZ "41" + DZ "42" + DZ "43" + DZ "44" + DZ "45" + DZ "46" + DZ "47" + DZ "48" + DZ "49" + DZ "50" +.Size EQU $-ERR0 ; PRINT MODULE -DUMP LD B,2 -DUMPLP1 PUSH BC - PUSH HL - CALL CRLF - POP HL - CALL PHEXSTR - POP BC - DJNZ DUMPLP1 - CALL CRLF - RET +DUMP: LD B,2 +DUMPLP1: PUSH BC + PUSH HL + CALL CRLF + POP HL + CALL PHEXSTR + POP BC + DJNZ DUMPLP1 + JP CRLF + ;RET -PHEX LD E,A - RRCA - RRCA - RRCA - RRCA - AND #0F - ADD A,#30 - CP #3A - JR C,PHEX2 - ADD A,7 -PHEX2 CALL PRINT_ - LD A,E - AND #0F - ADD A,#30 - CP #3A - JR C,PHEX3 - ADD A,7 -PHEX3 CALL PRINT_ - RET +PHEX: LD E,A + RRCA + RRCA + RRCA + RRCA + AND #0F + ADD A,'0' + CP '9'+1 + JR C,PHEX2 + ADD A,7 +PHEX2: LD C,Dss.PutChar + RST ToDSS + ; + LD A,E + AND #0F + ADD A,'0' + CP '9'+1 + JR C,PHEX3 + ADD A,7 +PHEX3: LD C,Dss.PutChar + RST ToDSS + RET -PHEXSTR LD B,#10 -PHS1 PUSH BC - LD A,(HL) - CALL PHEX - LD A,#20 - CALL PRINT_ - POP BC - INC HL - DJNZ PHS1 - RET +PHEXSTR: LD B,#10 +PHS1: PUSH BC + LD A,(HL) + CALL PHEX + LD A,' ' + LD C,Dss.PutChar + RST ToDSS + ; + POP BC + INC HL + DJNZ PHS1 + RET ; .DATA -STOPMODE - DB #00 -RESMASK DB #00 -SETMASK DB #00 -MODIFY DB #00 +ANYNAME: DB "*.*",0 +.Size: EQU $-ANYNAME -ANYNAME DB "*.*",0 -EANYNAME - -FSTRUCT DS 256 -FILENAME EQU FSTRUCT+33 - -BUFFER DS 256 - -FILE_PRM EQU FILENAME+256 - -CUR_DIRECTORY EQU FILE_PRM+256 +; .Clear zone +VARS: Variables = $