home *** CD-ROM | disk | FTP | other *** search
- TITLE '8 INCH TO 5 INCH COPY PROGRAM'
- NSBOOT EQU 0E800H
- BDOS5 EQU 5H
- ORG 100H
- JMP START
- ORG 500H
- START LXI SP,STACK+50
- SIGNON1 LXI D,SIGNON
- SIGNON2 CALL PRINT
- LXI D,BOOTMSG ;BOOT NORTH STAR DOS?
- CALL PRINT
- CALL INPUT
- CPI 'Y'
- JZ BOOTNS ;BOOT NS DOS
- MESS1 LXI D,DEST ;DESTINATION SYSTEM?
- CALL PRINT
- CALL INPUT
- STA TODOS
- CPI '5' ;TO NORTH STAR
- JZ TONS
- CPI '8' ;TO CP/M
- JZ TOCPM
- JMP MESS1
- TONS LXI D,SRCCPM ;CONFIRM SOURCE ON CPM
- CALL PRINT
- JMP MESS4
- TOCPM LXI D,SRCNS ;CONFIRM SOURCE ON NS
- CALL PRINT
- MESS4 XRA A ;RESET EOF INDICATOR
- STA EOF
- MESS6 LXI D,MOUNT ;TYPE MOUNT MESSAGE
- CALL PRINT ;DONE NOW SO THAT DISKS ARE LOADED
- CALL INPUT ;WHEN FILE NAMES ARE ENTERED
- MESS7 LXI D,CPMFILE ;GET CPM FILE NAME
- CALL PRINT
- CALL INPUT
- CALL GETFCB ;CREATE FCB
- CALL OPENCPM
- LXI D,NSFILE ;GET 5 INCH CPM NAME
- CALL PRINT
- CALL INPUT
- CALL GETFCB5
- CALL OPENCPM5
- LDA TODOS
- CPI '5'
- JZ TO5INCH
- JMP TO8INCH
- NSERR LXI D,ERRM3
- CALL PRINT
- JMP FINISHED
- PRINT PUSH D
- LXI D,CRLF
- MVI C,9
- CALL BDOS8
- POP D
- PRINT2 MVI C,9
- CALL BDOS8
- RET
- INPUT LXI D,IBUF
- MVI C,0AH
- CALL BDOS8
- LDA IBUF+2
- RET
- BDOS8 JMP 05H
- BOOTNS LHLD 06H
- SHLD BDOS8+1
- JMP NSBOOT
-
- * COPY FILES FROM 5 INCH TO 8 INCH CPM
- TO8INCH EQU $
- COPY1 LXI D,CPMBUFF
- MVI C,1AH ;SET DMA ADDR
- CALL BDOS5
- LXI D,FCB5
- MVI C,14H
- CALL BDOS5 ;SEQUENTIAL READ FROM 5"
- ORA A
- JNZ EOFON8
- LXI D,CPMBUFF
- MVI C,1AH
- CALL BDOS8
- LXI D,FCB
- MVI C,15H
- CALL BDOS8
- ORA A
- JNZ EOFON8
- JMP COPY1
- EOFON8 CALL CLOSECPM
- CALL CLOSECPM5
- JMP MESS7
-
- * COPY 8 INCH TO 5 INCH NORTH STAR CPM
- TO5INCH EQU $
- COPY6 LXI D,CPMBUFF
- MVI C,1AH
- CALL BDOS8
- LXI D,FCB
- MVI C,14H
- CALL BDOS8 ;READ 8"
- ORA A
- JNZ EOFON8
- LXI D,CPMBUFF
- MVI C,1AH
- CALL BDOS5
- LXI D,FCB5
- MVI C,15H
- CALL BDOS5 ;WRITE 8"
- ORA A
- JNZ EOFON8
- JMP COPY6
-
-
- FINISHED MVI C,0 ;GO TO CPM
- JMP BDOS8
-
-
- CLOSECPM EQU $
- LXI D,FCB
- MVI C,10H
- CALL BDOS8 ;CLOSE THE FILE
- RET
-
-
- OPENCPM LXI D,FCB
- MVI C,0FH
- CALL BDOS8 ;OPEN THE FILE
- INR A
- JNZ EXISTS ;FILE ALREADY EXISTS
- LDA TODOS ;FILE DOES NOT EXIST
- CPI '8' ;THATS OK, IT IS TO CPM
- JZ MAKEIT ;CREATE A FILE
- NOTFND LXI D,NOFILE ;NO FILE ERR
- CALL PRINT
- JMP FINISHED
- MAKEIT LXI D,FCB ;CREATE A FILE
- MVI C,16H ;ON CPM
- CALL BDOS8
- INR A
- JZ CPMERR ;NO ROOM TO CREATE ONE
- RET
- EXISTS LDA TODOS ;FILE ALREADY EXISTS
- CPI '5' ;THATS OK BECAUSE COPY IT TO NS
- RZ
- LXI D,FCB ;COPYING IT TO CPM SO DELETE
- MVI C,13H ;THE EXISTING FILE AND MAKE
- CALL BDOS8 ;A NEW ONE
- JMP MAKEIT
- GETFCB LXI H,IBUF+2 ;GET ADDRESS OF INPUT LINE
- LDA IBUF+1 ;GET CHAR CNT FROM INPUT BUFFER
- ORA A
- JZ FINISHED ;QUIT IF NO NAME ENTERED
- MOV B,A
- MVI C,33
- XRA A
- LXI D,FCB ;CLEAR THE FCB
- CLEARFCB STAX D
- INX D
- DCR C
- JNZ CLEARFCB
- PUSH H ;SAVE THE POSITION OF THE DRIVE NUMBER
- INX H ;CHECK FOR A COLON
- MOV A,M
- CPI ':'
- JNZ NOCOLON
- POP H
- MOV A,M
- ANI 1FH ;CONVERT A=1...P=16
- STA FCB
- INX H
- INX H ;PASS THE COLON
- DCR B
- DCR B
- JMP GETNAME
- NOCOLON POP H
- GETNAME LXI D,FCB+1
- MVI C,11
- MVI A,20H ;BLANK OUT THE NAME
- CLEARNAME STAX D
- INX D
- DCR C
- JNZ CLEARNAME
- LXI D,FCB+1
- MVI C,8
- MOVENAME MOV A,M ;MOVE THE NAME TO THE FCB
- CPI '.' ;LOOK FOR THE PERIOD THAT SEPARATES
- JZ PERIOD ;THE NAME FROM THE TYPE
- CALL UPPERCASE
- STAX D
- INX D
- INX H
- DCR B ;DECREASE BYTE CNT IN INPUT BUFFER
- RZ
- DCR C
- JNZ MOVENAME
- MOV A,M
- CPI '.'
- JZ PERIOD
- DCR B
- RZ
- JMP CPMFILENAME
- PERIOD LXI D,TYPE
- INX H
- MVI C,3
- MOVETYPE MOV A,M
- CALL UPPERCASE
- STAX D
- INX D
- INX H
- DCR B
- RZ
- DCR C
- JNZ MOVETYPE
- RET
- CPMFILENAME LXI D,ERRM4
- CALL PRINT
- JMP FINISHED
- UPPERCASE CPI 60H ;CONVERT LOWER TO UPPER CASE
- RC
- SBI 20H
- RET
-
- CLOSECPM5 EQU $
- LXI D,FCB5
- MVI C,10H
- CALL BDOS5 ;CLOSE THE FILE
- RET
-
-
- OPENCPM5 LXI D,FCB5
- MVI C,0FH
- CALL BDOS5 ;OPEN THE FILE
- INR A
- JNZ EXISTS5 ;FILE ALREADY EXISTS5
- LDA TODOS ;FILE DOES NOT EXIST
- CPI '5' ;THATS OK, IT IS TO CPM5
- JZ MAKEIT5 ;CREATE A FILE
- NOTFND5 LXI D,NOFILE ;NO FILE ERR
- CALL PRINT
- JMP FINISHED
- MAKEIT5 LXI D,FCB5 ;CREATE A FILE
- MVI C,16H ;ON CPM5
- CALL BDOS5
- INR A
- JZ CPM5ERR ;NO ROOM TO CREATE ONE
- RET
- EXISTS5 LDA TODOS ;FILE ALREADY EXISTS
- CPI '8' ;THATS OK BECAUSE COPY IT TO NS
- RZ
- LXI D,FCB5 ;COPYING IT TO CPM5 SO DELETE
- MVI C,13H ;THE EXISTING FILE AND MAKE
- CALL BDOS5 ;A NEW ONE
- JMP MAKEIT5
- GETFCB5 LXI H,IBUF+2 ;GET ADDRESS OF INPUT LINE
- LDA IBUF+1 ;GET CHAR CNT FROM INPUT BUFFER
- ORA A
- JZ FINISHED ;QUIT IF NO NAME ENTERED
- MOV B,A
- MVI C,33
- XRA A
- LXI D,FCB5 ;CLEAR THE FCB5
- CLEARFCB5 STAX D
- INX D
- DCR C
- JNZ CLEARFCB5
- PUSH H ;SAVE THE POSITION OF THE DRIVE NUMBER
- INX H ;CHECK FOR A COLON
- MOV A,M
- CPI ':'
- JNZ NOCOLON5
- POP H
- MOV A,M
- ANI 1FH ;CONVERT A=1...P=16
- STA FCB5
- INX H
- INX H ;PASS THE COLON
- DCR B
- DCR B
- JMP GETNAME5
- NOCOLON5 POP H
- GETNAME5 LXI D,FCB5+1
- MVI C,11
- MVI A,20H ;BLANK OUT THE NAME
- CLEARNAME5 STAX D
- INX D
- DCR C
- JNZ CLEARNAME5
- LXI D,FCB5+1
- MVI C,8
- MOVENAME5 MOV A,M ;MOVE THE NAME TO THE FCB5
- CPI '.' ;LOOK FOR THE PERIOD5 THAT SEPARATES
- JZ PERIOD5 ;THE NAME FROM THE TYPE
- CALL UPPERCASE
- STAX D
- INX D
- INX H
- DCR B ;DECREASE BYTE CNT IN INPUT BUFFER
- RZ
- DCR C
- JNZ MOVENAME5
- MOV A,M
- CPI '.'
- JZ PERIOD5
- DCR B
- RZ
- JMP CPM5FILENAME
- PERIOD5 LXI D,TYPE5
- INX H
- MVI C,3
- MOVETYPE5 MOV A,M
- CALL UPPERCASE
- STAX D
- INX D
- INX H
- DCR B
- RZ
- DCR C
- JNZ MOVETYPE5
- RET
- CPM5FILENAME LXI D,ERRM5
- JMP CPMERR0
- CPMERR LXI D,ERRM38
- JMP CPMERR0
- CPM5ERR LXI D,ERRM35
- CPMERR0 CALL PRINT
- JMP FINISHED
- ERRM38 DB 'CPM ERR ON 8 INCH SYSTEM$'
- ERRM35 DB 'CPM ERR ON 5 INCH NS SYSTEM$'
-
- CRLF DB 0DH,0AH,'$'
- DEST DB 'DESTINATION SYSTEM (5/8)? $'
- SRCCPM DB 'COPY FROM 8 INCH (HD) TO 5 INCH NORTH STAR$'
- SRCNS DB 'COPY FROM 5 INCH NORTH STAR TO 8 INCH (OR HARD DISK)$'
- ERRM2 DB 'CPM IO ERROR$'
- ERRM4 DB 'CPM FILE NAME ERROR$'
- ERRM5 DB 'NORTH STAR FILE NAME ERROR$'
- ERRM3 DB 'NORTH STAR IO ERROR$'
- NOFILE DB 'FILE NOT FOUND$'
- SIGNON DB 0CH,'INTERCPM REL 1.0 5 INCH TO 8 INCH COPY$'
- BOOTMSG DB 'REBOOT 5 INCH CPM (Y/N)? $'
- CPMFILE DB '8 INCH FILE NAME? $'
- NSFILE DB '5 INCH (NS) FILE NAME? $'
- MOUNT DB 'MOUNT DISKETTES AND ENTER RETURN$'
- TODOS DS 1
- EOF DS 1
- IBUF DB 20
- DS 22
- FCB DS 9
- TYPE DS 3
- DS 25
- CPMCNT DS 1
- FCB5 DS 9
- TYPE5 DS 3
- DS 25
- TEMP5 DS 1
- CPMADDR DS 2
- TEMP DS 1
- CPMBUFF EQU 80H
- CPM5ADDR DS 2
- CPM5CNT DS 1
- STACK DS 50
- END 100H
-