* LINK PROGRAM * FOR SK*DOS 68K * COPYRIGHT (C) 1986 BY PETER A. STARK * FOR STAR-KITS SOFTWARE SYSTEMS CORP. * EQUATES LIB SKEQUATE DRUSED EQU $13C OFFSET TO DRIVE USED TABLE ORG $0000 START BRA.S START1 DC.W $0100 VERSION START1 DC VPOINT POINT TO VARIABLE AREA LEA USRFCB(A6),A4 POINT TO USER FCB DC GETNAM GET NAME OF FILE TO LINK BCS.S FNMERR IF ILLEGAL FILE NAME DC FOPENR OPEN THE FILE FOR READING BNE.S NEERR FILE DOES NOT EXIST MOVE.B FCBFTR(A4),D2 GET FIRST TR-SEC ADDRESS MOVE.B FCBFTR+1(A4),D3 DC FCSCLS NOW CLOSE THE OPEN FILE CLR.L D1 MOVE.B FCBDRV(A4),D1 LOGICAL DRIVE NUMBER MOVE.L DOSORG(A6),A5 POINT TO BEGINNING OF MEMORY LEA DRUSED(A5),A5 POINT TO DRIVE USED TABLE MOVE.B (A5,D1.W),D1 PICK UP PHYSICAL DRIVE NUM AND.B #$F0,D1 KEEP ONLY DRIVE TYPE CODE CMP.B #$10,D1 IS IT FLOPPY? BEQ.S ISOK YES, OK TO USE CMP.B #$80,D1 RAMDISK IS OK TOO BNE.S NOTFLO NO; ERROR ISOK MOVE.W #$0001,FCBCTR(A4) READY FOR BOOT SECTOR DC SREAD READ BOOT SECTOR INTO FCB BNE.S TR0ERR ERROR READING TRACK 0 MOVE.B D2,FCBDAT+5(A4) SAVE STARTING TR-SEC OF FILE MOVE.B D3,FCBDAT+6(A4) DC SWRITE WRITE BOOT SECTOR BACK TO DISK BNE.S TR0ERR IF ERROR WRITING BOOT DC WARMST ELSE QUIT * ERROR HANDLING FNMERR LEA HLPMSG(PC),A4 DC PSTRNG PRINT 'FILE NAME ERROR' DC WARMST AND QUIT NEERR LEA NEMSG(PC),A4 DC PSTRNG PRINT "FILE DOES NOT EXIST" DC WARMST TR0ERR LEA TR0MSG(PC),A4 DC PSTRNG PRINT "ERROR ON TRACK 0" DC WARMST NOTFLO LEA FLOMSG(PC),A4 DC PSTRNG PRINT "DRIVE NOT FLOPPY OR RAMDISK" DC WARMST * TEXT STRINGS HLPMSG DC.B 'LINK is used to link SK*DOS.SYS to the boot routine to' DC.B $0D,$0A DC.B 'make a bootable floppy disk. The correct syntax is' DC.B $0D,$0A DC.B ' LINK SK*DOS.SYS',4 NEMSG FCC 'FILE DOES NOT EXIST OR CANNOT BE READ',4 TR0MSG FCC 'ERROR IN READING OR WRITING BOOT SECTOR',4 FLOMSG FCC 'REQUESTED DISK IS NOT A FLOPPY DISK OR RAMDISK.',4 END START