|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6528 (0x1980)
Types: TextFile
Names: »COPIFIL.ASM«
└─⟦72577d508⟧ Bits:30003297 Diverse BIOS typer til RC703
└─⟦this⟧ »COPIFIL.ASM«
;
;
;
.Z80
;
;======================================================
; PROGRAMMET 'COPIFIL' KOPIER EN NAVNGIVEN FIL PÅ EN I
; NAVNGIVEN DISC TIL EN NY NAVNGIVEN FIL PÅ EN NAVN- I
; GIVEN DISC. I
; I
;======================================================
;
;
;
; PROGRAMMØR : PETER HEINRICH
; TASTEOPERØR: LEIF BERTELSEN
; DATO : 19.03.85
;
;
ASEG
ORG 103H
;
START: CALL INIT ; SÆT DMA TIL BUFFER FLYT FIL-
; NAVNE TIL FCB'ER OG FEJLUDSKRIFT.
CALL OPENIND ; OPEN SKRIVFIL.
JP Z,FEJL1 ; OPEN OK ? NEJ : FEJL1
;
CALL OPENUD ; OPEN SKRIVEFIL.
JP Z,OPRETFIL ; OPEN OK ? NEJ OPRET DEN.
;
CALL SVAR ; JA MÅ DEN SLETTES ?
JP NZ,SLUT ; NEJ : SLUT.
CALL SLETFIL ; JA : SLET FILEN.
;
OPRETFIL:CALL OPRET ; MAKE SKRIVEFIL.
JP Z,FEJL2 ; MAKE OK ? NEJ : FEJL2.
;
IGEN: CALL LAES ; LÆS EN SECTOR (128 BYTES).
JP NZ,EOF ; EOF MØDT ? JA EOF.
;
;=======================================================
; BEHANDLING AF DET LÆSTE OG DANNELSEN AF EN POST I
; TIL UDDATAFILEN I
; I
;=======================================================
;
CALL SKRIV ; SKRIV EN SECTOR (128 BYTES).
JP NZ,FEJL3 ; GIK DET GODT ? NEJ FEJL3.
JP IGEN ; NY SECTOR.
;
EOF: LD C,CLOSE ; CLOSE LÆSEFILEN.
LD DE,FCBIND ;
CALL 5 ;
LD C,CLOSE ; CLOSE SKRIVEFILEN.
LD DE,FCBUD ;
CALL 5 ;
;
SLUT: JP 0 ; AFSLUT PROGRAMMET.
;
INIT: LD C,DMA ;
LD DE,BUFFER ; DMA:= BUFFER.
CALL 5 ;
;
LD BC,16 ; FLYT FILNAVNET FRA
LD HL,5CH ; KOMANDOLINIEN TIL
LD DE,FCBUD ; FCB.
LDIR ;
;
LD BC,16 ; FLYT FILNAVNET FRA
LD DE,FCBIND ; KOMANDOLINIEN TIL
LDIR ; FCB.
;
LD BC,11 ; FLYT FILNAVN FRA
LD HL,5CH+1 ; KOMADOLINIEN TIL
LD DE,TXT+10 ; FEJLUDSKRIVFT.
LDIR ;
RET ;
;
OPENIND: LD C,OPEN ;
LD DE,FCBIND ; OPEN INDPUT FILEN.
CALL 5 ;
CP -1 ;
RET ; GIK OPEN GODT? SÆT S-BITTEN.
;
OPENUD: LD C,OPEN ;
LD DE,FCBUD ; OPEN UDDATAFIL
CALL 5 ;
CP -1 ; GIK OPEN GODT? SÆT S-BITTEN.
RET ;
;
SVAR: LD C,CONOUT ; SKRIV LEDETEKST PÅ SKÆRMEN.
LD DE,TXT ;
CALL 5 ; FILEN FINDES. MÅ DEN SLETTES.
LD C,CONIN ;
LD DE,SVARBUF ; SVAR J/N.
CALL 5 ;
;
LD A,(SVARBUF+2) ; LD A MED J/N.
CP 'J' ;
RET ;
;
SLETFIL: LD C,DELETE ;
LD DE,FCBUD ; SLET UDDATAFILEN.
CALL 5 ;
RET ;
;
OPRET: LD C,MAKE ;
LD DE,FCBUD ; OPRET UDDATAFILEN.
CALL 5 ;
CP -1 ; GIK MAKE GODT? SÆT Z-BITTEN.
RET
;
LAES: LD C,READ ; INDLÆS EN SEKTOR.
LD DE,FCBIND ;
CALL 5 ;
CP 0 ; MØDTE VI EOF? SÆT Z-BITTEN.
RET ;
;
SKRIV: LD C,WRITE ; UDSKRIV EN SEKTOR.
LD DE,FCBUD ;
CALL 5 ;
CP 0 ; DISKETTE FULD? SÆT Z-BITTEN.
RET ;
;
FEJL1: LD C,CONOUT ;
LD DE,FEJL11 ; FILEN FINDES IKKE.
CALL 5 ;
JP -0 ;
;
FEJL2: LD C,CONOUT ;
LD DE,FEJL22 ; FILEN KAN IKKE OPRETTES.
CALL 5 ;
JP EOF ;
;
FEJL3: LD C,CONOUT ;
LD DE,FEJL33 ; DISKETTEN ER FULD.
CALL 5 ;
JP EOF ;
;
;****************************************************************
;* *
;* D A T A D E L E N ! *
;* *
;****************************************************************
;
;
FCBIND: DS 33,0 ; INDDATAFILEN.
;
FCBUD: DS 33,0 ; UDDATAFILEN.
;
SVARBUF: DB 1 ;
DS 1 ; SVAR PÅ SLETNING AF FILEN.
DS 1 ;
;
TXT: DB 12,6,2+32,2+32,'FILEN '
DS 14,0
DB ' FINDES. MÅ DEN SLETTES : (J/N) ? $'
;
FEJL11: DB 6,2+32,2+32,'FILEN FINDES IKKE ! $'
;
FEJL22: DB 6,2+32,2+32,'FILEN KAN IKKE OPRETTES ! $'
;
FEJL33: DB 6,2+32,2+32,'IKKE PLADS PÅ DISKETTEN ! $'
;
BUFFER: DS 128,' ' ; BUFFER AREAL TIL FILER.
;
CONOUT EQU 9 ;
CONIN EQU 10 ;
OPEN EQU 15 ;
CLOSE EQU 16 ;
DELETE EQU 19 ;
READ EQU 20 ;
WRITE EQU 21 ;
MAKE EQU 22 ;
DMA EQU 26 ;
;
;
END START
«eof»