diff --git a/src/raspberrypi/Makefile b/src/raspberrypi/Makefile index 96ea2bc0..4b59e0ff 100644 --- a/src/raspberrypi/Makefile +++ b/src/raspberrypi/Makefile @@ -3,8 +3,12 @@ CC = gcc CXX = g++ -CFLAGS = -DDISK_LOG -O0 -g -Wall -CXXFLAGS = -DDISK_LOG -O0 -g -Wall +# Debug CFLAGS +#CFLAGS = -DDISK_LOG -O0 -g -Wall +#CFLAGS = -DDISK_LOG -O0 -g -Wall +# Release CFLAGS +CXXFLAGS = -O3 -Wall +CXXFLAGS = -O3 -Wall @@ -22,10 +26,14 @@ RASDUMP = rasdump SASIDUMP = sasidump SCSIMON = scsimon +USR_LOCAL_BIN = /usr/local/bin +MAN_PAGE_DIR = /usr/share/man/man1 +DOC_DIR = ../../doc + #BIN_ALL = $(RASCSI) $(RASCTL) $(RASDUMP) $(SASIDUMP) $(SCSIMON) # Temporarily remove the RASDUMP and RASDUMP tools, since they're not needed # for my specific use case. If you need them - add them back in! -BIN_ALL = $(RASCSI) $(RASCTL) $(SCSIMON) +BIN_ALL = $(RASCSI) $(RASCTL) SRC_RASCSI = \ @@ -71,13 +79,16 @@ OBJ_RASCTL := $(SRC_RASCTL:%.cpp=%.o) OBJ_RASDUMP := $(SRC_RASDUMP:%.cpp=%.o) OBJ_SASIDUMP := $(SRC_SASIDUMP:%.cpp=%.o) OBJ_SCSIMON := $(SRC_SCSIMON:%.cpp=%.o) -OBJ_ALL := $(OBJ_RASCSI) $(OBJ_RASCTL) $(OBJ_RASDUMP) $(OBJ_SASIDUMP) $(OBJ_SCSIMON) +#OBJ_ALL := $(OBJ_RASCSI) $(OBJ_RASCTL) $(OBJ_RASDUMP) $(OBJ_SASIDUMP) $(OBJ_SCSIMON) +OBJ_ALL := $(OBJ_RASCSI) $(OBJ_RASCTL) $(OBJ_RASDUMP) $(OBJ_SASIDUMP) %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ -ALL: $(BIN_ALL) -all: $(BIN_ALL) +docs: $(DOC_DIR)/rascsi_man_page.txt $(DOC_DIR)/rasctl_man_page.txt + +ALL: $(BIN_ALL) docs +all: $(BIN_ALL) docs $(RASCSI): $(OBJ_RASCSI) $(CXX) -o $@ $(OBJ_RASCSI) -lpthread @@ -98,7 +109,17 @@ clean: rm -f $(OBJ_ALL) $(BIN_ALL) run: - sudo ./$(RASCSI) -ID1 /home/pi/HARDDISK.HDA -ID6 /home/pi/marathon.iso + sudo ./$(RASCSI) -ID1 /home/pi/HARDDISK2.hda -ID6 /home/pi/marathon.iso + +install: $(MAN_PAGE_DIR)/rascsi.1 $(MAN_PAGE_DIR)/rasctl.1 + sudo cp $(RASCTL) $(USR_LOCAL_BIN) + sudo cp $(RASCSI) $(USR_LOCAL_BIN) + +$(MAN_PAGE_DIR)/%.1 : $(DOC_DIR)/%.1 + sudo cp $< $@ + +$(DOC_DIR)/%_man_page.txt : $(DOC_DIR)/%.1 + man -l $< | col -bx > $@ .PHONY: Debug Debug: scsimon diff --git a/src/raspberrypi/rascsi.1 b/src/raspberrypi/rascsi.1 deleted file mode 100644 index 32933a62..00000000 --- a/src/raspberrypi/rascsi.1 +++ /dev/null @@ -1,62 +0,0 @@ -.TH rascsi 1 -.SH NAME -rascsi \- Emulates SCSI devices using the Raspberry Pi GPIO pins -.SH SYNOPSIS -.B rascsi -[\fB\-IDn\fR \fIfile\fR] -[\fB\-HDn\fR \fIfile\fR]... -.SH DESCRIPTION -.B rascsi -Emulates SCSI devices using the Raspberry Pi GPIO pins. -.PP -In the arguments to RaSCSI, one or more SCSI (-IDn) or SASI (-HDn) devices can be specified. -The number (n) after the ID or HD idnetifier specifies the ID number for that device. -For SCSI: The ID is limited from 0-7. However, typically SCSI ID 7 is reserved for the "initiator" (the host computer).Note that SASI is considered rare and only used on very early Sharp X68000 computers. -.PP -RaSCSI will determin the type of device based upon the file extension of the FILE argument. - hdf: SASI Hard Disk image (XM6 SASI HD image - typically only used with X68000) - hds: SCSI Hard Disk image (XM6 SCSI HD image - typically only used with X68000) - hdn: SCSI Hard Disk image (NEC GENUINE) - hdi: SCSI Hard Disk image (Anex86 HD image) - nhd: SCSI Hard Disk image (T98Next HD image) - hda: SCSI Hard Disk image (APPLE GENUINE - typically used with Mac SCSI emulation) - mos: SCSI Magneto-optical image (XM6 SCSI MO image - typically only used with X68000) - iso: SCSI CD-ROM image (ISO 9660 image) - -For example, if you want to specify an Apple-compatible HD image on ID 0, you can use the following command: - sudo rascsi -ID0 /path/to/drive/hdimage.hda - -Once RaSCSI starts, it will open a socket (port 6868) to allow external management commands. -If another process is using port 6868, RaSCSI will terminate, since it is likely another instance of RaSCSI. -Once RaSCSI has initialized, the rasctl utility can be used to send commands. - -To quit RaSCSI, press Control + C. If it is running in the background, you can kill it using an INT signal. - -.SH OPTIONS -.TP -.BR\-\-ID\fIn " " \fIFILE -n is the SCSI ID number (0-7)\n -.IP -FILE is the name of the image file to attach to that ID. -.TP -.BR\-\-HD\fIn " " \fIFILE -n is the SASI ID number (0-15)\n -.IP -FILE is the name of the image file to attach to that ID. -.IP -Note: SASI usage is rare, and is typically limited to early Sharp X68000 systems. - -.SH EXAMPLES -Launch RaSCSI with no emulated drives attached: - rascsi - -Launch RaSCSI with an Apple hard drive image as ID0 and a CD-ROM as ID 2 - rascsi -ID0 /path/to/harddrive.hda -ID2 /path/to/cdimage.iso - -To create an empty, 100MB HD image, use the following command: - dd if=/dev/zero of=/path/to/newimage.hda bs=512 count=204800 - -.SH SEE ALSO -rasctl(1), scsidump(1) - -Full documentation is available at: diff --git a/src/raspberrypi/rasctl.1 b/src/raspberrypi/rasctl.1 deleted file mode 100644 index 6364d582..00000000 --- a/src/raspberrypi/rasctl.1 +++ /dev/null @@ -1,71 +0,0 @@ -.TH rascsi 1 -.SH NAME -rasctl \- Sends management commands to the rascsi process -.SH SYNOPSIS -.B rasctl -\fB\-l\fR | -\fB\-i\fR \fIID\fR -[\fB\-u\fR \fIUNIT\fR] -[\fB\-c\fR \fICMD\fR] -[\fB\-t\fR \fITYPE\fR] -[\fB\-f\fR \fIFILE\fR] -.SH DESCRIPTION -.B rasctl -Sends commands to the rascsi process to make configuration adjustments at runtime or to check the status of the devices. - -Either the -i or -l option should be specified at one time. Not both. - -You do NOT need root privileges to use rasctl. - -Note: The command and type arguments are case insensitive. Only the first letter of the command/type are evaluated by the tool. - -.SH OPTIONS -.TP -.BR\-\-l\fI -List all of the devices that are currently being emulated by RaSCSI, as well as their current status. \n -.TP -.BR\-\-i\fI " " \fIID -ID is the SCSI ID that you want to control. (0-7)\n -.TP -.BR\-\-u\fI " " \fIUNIT -Unit number (0 or 1). This will default to 0. This option is only used when there are multiple SCSI devices on a shared SCSI controller. (This is not common)\n -.TP -.BR\-\-c\fI " " \fICMD -Command is the operation being requested. options are: - attach: attach disk - detach: detach disk - insert: insert media (Magneto-Optical and CD only) - eject: eject media (Magneto-Optical and CD only) - protect: Write protect the media (Magneto-Optical only) -.IP -When the command is omited, rasctl will default to the 'attach' command -.TP -.BR\-\-t\fI " " \fITYPE -Specifies the type of disk. If this disagrees with the file extension of the specified image, the TYPE argument is ignored. Available drive types are: - hd: Hard disk (SCSI or SASI) - mo: Magneto-Optical disk) - cd: CD-ROM - bridge: Bridge device (This is only applicable to the Sharp X68000) -.TP -.BR\-\-f\fI " " \fIFILE -Path to the disk image file. See the rascsi(1) man page for allowable file types. - -.SH EXAMPLES -Show a listing of all of the SCSI devices and their current status - rasctl -l - - -Example output: - +----+----+------+------------------------------------- - | ID | UN | TYPE | DEVICE STATUS - +----+----+------+------------------------------------- - | 0 | 1 | SCHD | /home/pi/harddisk.hda - +----+----+------+------------------------------------- - -Request the RaSCSI process to attach a disk (assumed) to SCSI ID 0 with the contents of the file system image "HDIIMAGE0.HDS". - rasctl -i 0 -f HDIIMAGE0.HDS - -.SH SEE ALSO -rascsi(1) - -Full documentation is available at: