From 53b6809e4a213ce6f0d5d823af434b09904028f8 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 7 Mar 2016 20:42:19 -0800 Subject: [PATCH] HP2100: Change hp_disclib filename to hp2100_disclib (from Dave Bryan) --- HP2100/hp2100_bugfixes.txt | 27 +++++++++++++++++++++- HP2100/hp2100_di_da.c | 5 ++-- HP2100/{hp_disclib.c => hp2100_disclib.c} | 7 +++--- HP2100/{hp_disclib.h => hp2100_disclib.h} | 0 HP2100/hp2100_ds.c | 5 ++-- Visual Studio Projects/HP2100.vcproj | 16 ++++++------- descrip.mms | 2 +- doc/hp2100_doc.doc | Bin 174592 -> 172032 bytes makefile | 2 +- 9 files changed, 46 insertions(+), 18 deletions(-) rename HP2100/{hp_disclib.c => hp2100_disclib.c} (97%) rename HP2100/{hp_disclib.h => hp2100_disclib.h} (100%) diff --git a/HP2100/hp2100_bugfixes.txt b/HP2100/hp2100_bugfixes.txt index e1d93753..eee129a4 100644 --- a/HP2100/hp2100_bugfixes.txt +++ b/HP2100/hp2100_bugfixes.txt @@ -1,6 +1,6 @@ HP 2100 SIMULATOR BUG FIX WRITEUPS ================================== - Last update: 2015-11-24 + Last update: 2016-03-04 1. PROBLEM: Booting from magnetic tape reports "HALT instruction, P: 77756 @@ -6911,3 +6911,28 @@ respectively. STATUS: Fixed in version 4.0-0. + + + +270. PROBLEM: The disc libraries in the HP2100 and HP3000 directories differ. + + VERSION: 4.0-0 + + OBSERVATION: The "hp_disclib.c" and "hp_disclib.h" files appear in both + the HP2100 and HP3000 subdirectories. However, the contents of the files + are different. If both source sets are compiled to a common object + subdirectory, one of the two executables will not link, due to unresolved + externals. + + CAUSE: The disc library in the HP3000 subdirectory is an extension of the + one in the HP2100 subdirectory. It is intended as an eventual replacement + for the HP2100 version, so that both simulators can share the library. + Until then, however, they are not interchangeable, as they export different + routines, leading to link errors if one is accidentally substituted for the + other. + + RESOLUTION: Rename "hp_disclib.c/h" in the HP2100 subdirectory to + "hp2100_disclib.c/h" to indicate that it is HP2100-specific. Alter + "hp2100_ds.c" and "hp2100_di_da.c" to use the new include file name. + + STATUS: Fixed in version 4.0-0. diff --git a/HP2100/hp2100_di_da.c b/HP2100/hp2100_di_da.c index 9e4278ff..17bf908f 100644 --- a/HP2100/hp2100_di_da.c +++ b/HP2100/hp2100_di_da.c @@ -1,6 +1,6 @@ /* hp2100_di_da.c: HP 12821A HP-IB Disc Interface simulator for Amigo disc drives - Copyright (c) 2011-2014, J. David Bryan + Copyright (c) 2011-2016, J. David Bryan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ DA 12821A Disc Interface with Amigo disc drives + 04-Mar-16 JDB Name changed to "hp2100_disclib" until HP 3000 integration 30-Dec-14 JDB Added S-register parameters to ibl_copy 24-Dec-14 JDB Use T_ADDR_FMT with t_addr values for 64-bit compatibility Removed redundant global declarations @@ -339,7 +340,7 @@ #include "hp2100_defs.h" #include "hp2100_di.h" -#include "hp_disclib.h" +#include "hp2100_disclib.h" diff --git a/HP2100/hp_disclib.c b/HP2100/hp2100_disclib.c similarity index 97% rename from HP2100/hp_disclib.c rename to HP2100/hp2100_disclib.c index 869363b0..6d9f4d98 100644 --- a/HP2100/hp_disclib.c +++ b/HP2100/hp2100_disclib.c @@ -1,6 +1,6 @@ -/* hp_disclib.c: HP MAC/ICD disc controller simulator library +/* hp2100_disclib.c: HP MAC/ICD disc controller simulator library - Copyright (c) 2011-2014, J. David Bryan + Copyright (c) 2011-2016, J. David Bryan Copyright (c) 2004-2011, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a @@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the authors. + 04-Mar-16 JDB Name changed to "hp2100_disclib" until HP 3000 integration 24-Dec-14 JDB Added casts for explicit downward conversions 27-Oct-14 JDB Corrected the relative movement calculation in start_seek 20-Dec-12 JDB sim_is_active() now returns t_bool @@ -254,7 +255,7 @@ #include -#include "hp_disclib.h" +#include "hp2100_disclib.h" diff --git a/HP2100/hp_disclib.h b/HP2100/hp2100_disclib.h similarity index 100% rename from HP2100/hp_disclib.h rename to HP2100/hp2100_disclib.h diff --git a/HP2100/hp2100_ds.c b/HP2100/hp2100_ds.c index dea160b6..e2b97bda 100644 --- a/HP2100/hp2100_ds.c +++ b/HP2100/hp2100_ds.c @@ -1,7 +1,7 @@ /* hp2100_ds.c: HP 13037D/13175D disc controller/interface simulator Copyright (c) 2004-2012, Robert M. Supnik - Copyright (c) 2012-2014 J. David Bryan + Copyright (c) 2012-2016 J. David Bryan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,7 @@ DS 13037D/13175D disc controller/interface + 04-Mar-16 JDB Name changed to "hp2100_disclib" until HP 3000 integration 30-Dec-14 JDB Added S-register parameters to ibl_copy 24-Dec-14 JDB Use T_ADDR_FMT with t_addr values for 64-bit compatibility 18-Mar-13 JDB Fixed poll_drives definition to match declaration @@ -120,7 +121,7 @@ #include "hp2100_defs.h" -#include "hp_disclib.h" +#include "hp2100_disclib.h" diff --git a/Visual Studio Projects/HP2100.vcproj b/Visual Studio Projects/HP2100.vcproj index e5d9a93a..a21e1cf6 100644 --- a/Visual Studio Projects/HP2100.vcproj +++ b/Visual Studio Projects/HP2100.vcproj @@ -236,6 +236,10 @@ RelativePath="..\HP2100\hp2100_di_da.c" > + + @@ -300,10 +304,6 @@ RelativePath="..\HP2100\hp2100_sys.c" > - - @@ -369,6 +369,10 @@ RelativePath="..\HP2100\hp2100_di.h" > + + @@ -377,10 +381,6 @@ RelativePath="..\HP2100\hp2100_fp1.h" > - - diff --git a/descrip.mms b/descrip.mms index 003bc8d5..85ec87a2 100644 --- a/descrip.mms +++ b/descrip.mms @@ -415,7 +415,7 @@ HP2100_LIB2 = $(LIB_DIR)HP2100L2-$(ARCH).OLB HP2100_SOURCE2 = $(HP2100_DIR)HP2100_FP1.C,$(HP2100_DIR)HP2100_BACI.C,\ $(HP2100_DIR)HP2100_MPX.C,$(HP2100_DIR)HP2100_PIF.C,\ $(HP2100_DIR)HP2100_DI.C,$(HP2100_DIR)HP2100_DI_DA.C,\ - $(HP2100_DIR)HP_DISCLIB.C + $(HP2100_DIR)HP2100_DISCLIB.C .IFDEF ALPHA_OR_IA64 HP2100_OPTIONS = /INCL=($(SIMH_DIR),$(HP2100_DIR))\ /DEF=($(CC_DEFS),"HAVE_INT64=1") diff --git a/doc/hp2100_doc.doc b/doc/hp2100_doc.doc index 5a1ee52276d8995f04bf7deedda07d6caef6ebec..8d58d115ff8473e1816ce4959f0d360800374c21 100644 GIT binary patch delta 25016 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 delta 24388 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