FINAL REPORT OF THE POPLOG PORT TO DARWIN
BACKGROUND
The Poplog port  to Darwin was proposed as a preliminary stage in porting poplog to OS X. The goal in this stage, was to modify the system calls and to rebuild Poplog on a system with the same features of OS X. These files will be merged with some other files modified to generate assembly code that can be recognized by Mac OS X, the source code will then be cross-compiled on a machine running Poplog and the generated assembly files   transfered  to Mac OS X to rebuild the system on it.

GENERAL OBJECTIVE OF THE DOCUMENT
To notify the results obtained in the Poplog port to Darwin stage.
PORT FEATURES
Target Machine: Open Darwin 7.2.1
Host Machine: Linux Red Hat 9.0

Files Reviewed in the Host Machine:

Note: The $popsrc directory is poplog/v15.53e/pop/src and the $popexternlib directory is poplog/v15.53e/pop/extern/lib.
			
File Name	Directory 	Modified Aspects	
sysdefs.p	$popsrc/syscomp/	Options for Darwin Os (Name, Posix version, Type, etc) were added.	
os_common.p	$popsrc/syscomp/	Library definitions and assembler command. 	
asmout.p	$popsrc/syscomp/	The right shift instruction was changed for a sum instruction, so that the  generated assembler code could be compiled on Darwin.	
genproc.p	$popsrc/syscomp/	The right character to specify comments in Darwin Assembler was added.	
external.ph	$popsrc/	Darwin dynamic libraries options.	
devio.p	$popsrc/	Darwin Termio options and getpgrp system call for Darwin 7.2.1	
pop_malloc_min_alloc.p	$popsrc/	none	
sig_stop.p	$popsrc/	none	
sys_asinc_input.p	$popsrc/	none	
syscreate.p	$popsrc/	none	
sysdate.p	$popsrc/	Recognition of the time_eval structure on Darwin	
sysdelete.p	$popsrc/	none	
sysexecute.p	$popsrc/	none	
sys_file_move.p	$popsrc/	Recognition of the rename system call like Berkeley.	
sysfileok.p	$popsrc/	MAXNAMLEN value for Darwin  7.2.1	
sys_file_stat.p	$popsrc/	none	
sysfork.p	$popsrc/	none	
sys_host_id.p	$popsrc/	The gethostid system call on Darwin 7.2.1 is now accepted.	
sys_host_name.p	$popsrc/	none	
sys_input_waiting.p	$popsrc/	Darwin 7.2.1 system calls that check if there are any devices waiting for an input were modified like the equivalent system calls in Linux.	
sys_io_control.p	$popsrc/	none	
sysio.p	$popsrc/	none	
sysisdirectory.p	$popsrc/	none	
syslink.p	$popsrc/	Accepting the syslimk system call on  Darwin 7.2.1 	
sysobey.p	$popsrc/	none	
sysopen.p	$popsrc/	Accepting the readlink system call on  Darwin 7.2.1	
syspipe.p	$popsrc/	none	
sys_real_time.p	$popsrc/	none	
systime.p	$popsrc/	none	
sysutil.p	$popsrc/	To calculate the USR_STACK macro, and to recognize system calls getrlimit, mprotect, getpwnam and  getpwid system calls on Darwin 7.2.1.	
termcap.p	$popsrc/	To accept the output speed like the value in its TMIO_OSPEED attribute on Darwin 7.2.1	
unixdefs.ph	$popsrc/	Values for the Stabs, Direct and Timezone structures on Darwin 7.2.1	
unix_dir.p	$popsrc/	To accept the opendir, closedir and readdir system calls on Darwin 7.2.1	
unixextern.p	$popsrc/	none	
unixfmatch.p	$popsrc/	none	
unix_select.ph	$popsrc/	The fd_mask definition and FD_SIZE macro value for Darwin 7.2.1 were added.	
unix_tty.ph	$popsrc/	The values for the respective macros according to the termios.h file  on Darwin 7.2.1 were added.	
amisc.s	$popsrc/	The sscab instruction was changed for the scasb instruction.	
amove.s	$popsrc/	The scmpb, scmpw, scmpl, smovl, smovb, sstob, sstol instruction were changed for the cmpsb, cmpdw, movsl, movsb, stosb and stosl  respectively.	
aprocess.s	$popsrc/	The smovl, sstol an slodl instruction were replaced for the  movsl, stosl and lodsl respectively	
aprolog.s	$popsrc/	The slodl instruction assembler was changed for the lodsl instruction.	
aarith.s	$popsrc/	The slodl and sstol instructions were changed for the lodsl and stosl instructions.	

Files Modified in the Target Machine

File Name	Directory 	Modified Aspects	
c_core.h	$popexternlib	The UNIX macro is defined if the APPLE_CC macro is defined (this  macro is defined if the Operating System is Mac OS X or Darwin).	
c_core.c	$popexternlib	If the macro APPLE_CC was defined  then the same _pop_errsig_handler procedure of Linux is used.	
mklibpop	$popexternlib	The gcc flags according to Darwin and the regconition of the getpgrp system call without parameters were added.	

CONCLUSION  
Although the preliminary stages to build the Poplog system on Darwin Operating System were achieved,  the final goal was not satisfied due to a problem in the Darwin assembler. Therefore, the Poplog Directory and its modified source code are attached to this document, but not the port itself.