Listing of file='UDOS.SRC;01' on disk='vmedia/ncc_12-sector.ccvf'
;UPDATE MODE DISK OS FOR PRGZAP UTILITY ORG 0AD00H DSKBUF: DS 256 ;DISK UPDATE BUFFER DSNAME: DS 32 ;PARAMETER BUFFER FOR FILENAME RWSTATUS: DS 1 ;PSW STATUS AFTER R/WBLK ;FILE PARAMETER BLOCK FPB: DS 1 ;OPEN TYPE CODE FATR: DS 1 ;ATTRIBUTE BYTE FNAM: DS 6 ;FILE NAME FTYP: DS 3 ;FILE TYPE FVER: DS 1 ;FILE VERSION NUMBER FSBK: DS 2 ;STARTING BLOCK NUMBER FSIZ: DS 2 ;NUMBER OF BLOCKS FLBC: DS 1 ;BYTE COUNT OF LAST BLOCK FLAD: DS 2 ;LOAD ADR. OF "IMAGE" FILE FSAD: DS 2 ;START ADR. FOR "IMAGE" FILE DS 1 ;SPARE FDBK: DS 1 ;DIRECTORY BLOCK NUMBER FDEN: DS 1 ;DIRECTORY ENTRY NUMBER FAUX: DS 2 ;NEW FILE CLOSING SIZE, OR... ;...AUX. BYTE COUNT FOR SEQ ROUT FHAN: DS 2 ;HANDLER ADDRESS FFCN: DS 1 ;HANDLER FUNCTION CODE FDRV: DS 1 ;DRIVE NUMBER FBLK: DS 2 ;BLOCK NO. FOR TRANSFER FBUF: DW DSKBUF ;BUFFER POINTER FOR TRANSFER FXBC: DS 2 ;BYTE COUNT FOR TRANSFER FPTR: DS 2 ;BBUF PNTR FOR SEQ ROUTINES FPBE: ;END OF FPB EMESS EQU 262DH ;ERROR MESSAGE ROUTINE OPEN EQU 2DABH ;OPEN SUBROUTINE PFSPC EQU 3077H ;PARSE FILE NAME RBLK EQU 3182H ;READ BLOCK ROUTINE WBLK EQU 317FH ;WRITE BLOCK ROUTINE EFRD EQU 30H ;FILE READ ERR CODE EFWR EQU 33H ;FILE WRITE ERROR CODE EIVC EQU 3 ;INVALID COMMAND CODE PTYP: DB 'PRG' ;PRG TYPE ZDOS: ;ENTRY POINT PUSH H ;SAVE HL MVI A,1 ;REQ TO OPEN FILE? CMP E JC NOPEN ;NO. MOV A,E ;OPEN TYPE CODE LXI H,DSNAME;POINT TO INPUT DSNAME LXI D,FPB ;POINT TO FPB STAX D ;STORE OPEN TYPE CODE LXI B,PTYP ;SET DEFAULT TYPE "PRG" CALL PFSPC ;CALL PARSE FILE NAME JC ERRET ;ERROR! LXI H,FPB ;POINT TO FPB CALL OPEN ;OPEN FILE JC ERRET ;ERROR! JMP NRET ;NORMAL RETURN NOPEN: MVI A,3 ;REQ TO READ BLOCK? CMP E JNZ NREAD ;NO LXI H,FPB ;POINT TO FPB CALL RBLK ;CALL READ BLOCK MVI B,EFRD ;ERROR MSG CODE FRD RWST: PUSH PSW ;SAVE STATUS POP D ;STATUS TO E MOV A,E ;STATUS TO A STA RWSTATUS ;SAVE FLAGS FOR CALLER JNZ ERRET ;ERROR JC ERRET ;ERROR JMP NRET ;NORMAL RETURN NREAD: MVI A,4 ;REQ TO WRITE BLOCK? CMP E JNZ NWRITE ;NO LXI H,FPB ;POINT TO FPB CALL WBLK ;CALL WRITE BLOCK MVI B,EFWR ;ERROR MSG CODE FWR JMP RWST ;TO COMMON STATUS PROC NWRITE: MVI B,EIVC ;INVALID COMMAND CODE ERRET: ;ERROR RETURN CALL EMESS ;CALL SYSTEM ERR MSG LXI D,-1 ;SET ERROR RETURN CODE POP H ;RESTORE HL RET ;RETURN NRET: ;NORMAL RETURN LXI D,0 ;ZERO RETURN CODE POP H ;RESTORE HL RET ;RETURN END