*** empty log message ***
authorhachti <hachti>
Mon, 25 Aug 2008 21:02:23 +0000 (21:02 +0000)
committerhachti <hachti>
Mon, 25 Aug 2008 21:02:23 +0000 (21:02 +0000)
16 files changed:
Makefile
config/libs.config
lib/fortran/recipe/flib3.recipe
lib/hachti/Makefile
lib/hachti/font.config [new file with mode: 0644]
lib/hachti/recipe/hachti.recipe
lib/hachti/src/matrix.asm
lib/hachti/src/pl$mv.asm
lib/hachti/src/pl$txt.asm
lib/hachti/src/pl$u.asm
lib/hachti/src/stack.asm
pc-tools/ldc2/src/config.cpp
pc-tools/ldc2/src/configuration_manager.cpp
pc-tools/ldc2/src/main.cpp
programs/libtest/src/plotter-matrix.f
programs/plotter/src/nikolaussiedlung.f

index 62e8d98b5f388ab9c771017037fdb0c2bc020570..c092b95f9e9a3e3a76ae78e73ba5f36541562d77 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -35,6 +35,7 @@ default:
 clean:
        @mklink.sh
        @$(foreach subdir, $(SUBDIRS), $(MAKE) -C $(subdir) $@&&) true
 clean:
        @mklink.sh
        @$(foreach subdir, $(SUBDIRS), $(MAKE) -C $(subdir) $@&&) true
+       @rm -f h316rc
        @rmlink.sh
 
 %:
        @rmlink.sh
 
 %:
index ce5f3c53bbb26bb99e52f18ee8d5a05d3b7e3a50..9c4acdf4489164e5a3f1557a682bdf9206a67d48 100644 (file)
@@ -2,14 +2,12 @@
 # Libraries used by fload, frun and fboot:
 LOAD_LIBS="\
  $H316/lib/hachti/lib/hachti.lib\
 # Libraries used by fload, frun and fboot:
 LOAD_LIBS="\
  $H316/lib/hachti/lib/hachti.lib\
- $H316/lib/fortran/lib/math.lib\
- $H316/lib/fortran/lib/math.lib\
-  $H316/lib/fortran/lib/math.lib\
-   $H316/lib/fortran/lib/math.lib\
  $H316/lib/fortran/lib/flib1.lib\
  $H316/lib/fortran/lib/flib2.lib\
  $H316/lib/fortran/lib/flib3.lib\
  $H316/lib/fortran/lib/flib1.lib\
  $H316/lib/fortran/lib/flib2.lib\
  $H316/lib/fortran/lib/flib3.lib\
+ $H316/lib/fortran/lib/math.lib\
  $H316/lib/iolib/lib/io.lib\
  $H316/lib/iolib/lib/io.lib\
+ $H316/lib/hachti/lib/stack.lib\
 "
 
 #LOAD_LIBS="\
 "
 
 #LOAD_LIBS="\
index 3cfe653d465553ba5d6126e23285afa9f99409e5..2849d0394cb9a8180f4f2f8078dab7b5dc95fa5f 100644 (file)
@@ -21,7 +21,7 @@ org/F$B5
 org/F$F5
 org/F$IO
 org/F$HT
 org/F$F5
 org/F$IO
 org/F$HT
-    obj/PCHAR
-    obj/LPCHAR
-    obj/UCHAR
+#    obj/PCHAR
+#    obj/LPCHAR
+#    obj/UCHAR
    obj/REBOOT
    obj/REBOOT
index c24f3be7fe55b91cee3f8ad2ef7cf3973be887f9..24a97d40d4775750c0584df37c222035e3093275 100644 (file)
@@ -12,12 +12,15 @@ export ORG_OBJDIR=org
 
 export MAKE
 
 
 export MAKE
 
-MODULES = font pl$$mv  pl$$txt  pl$$u stack matrix
+MODULES = font pl$$mv  pl$$txt  pl$$u stack matrix endlib oct
+F4_MODULES=pmat graphics
 
 
-FRTN_COMMAND = frtn_original
+FRTN_COMMAND = frtn
 ASM_COMMAND  = asm_original
 LDC_COMMAND  = ldc -saq
 
 ASM_COMMAND  = asm_original
 LDC_COMMAND  = ldc -saq
 
+include font.config
+
 #############
 
 RECIPES=$(foreach recipe,$(shell ls $(RECIPE_DIR) | egrep "recipe$$" | grep -v CVS),\
 #############
 
 RECIPES=$(foreach recipe,$(shell ls $(RECIPE_DIR) | egrep "recipe$$" | grep -v CVS),\
@@ -30,8 +33,9 @@ OBJECTS=$(shell cat $(RECIPES)|egrep -v '^[[:space:]]*(\#.*)*$$'|\
 #|sort -u                 
 
 OBJECT_FILES=$(foreach obj, $(MODULES), $(OBJ_DIR)/$(obj).obj)
 #|sort -u                 
 
 OBJECT_FILES=$(foreach obj, $(MODULES), $(OBJ_DIR)/$(obj).obj)
-SOURCE_FILES=$(foreach obj, $(MODULES), $(SRC_DIR)/$(obj).asm)
-
+F4_OBJECT_FILES=$(foreach obj, $(F4_MODULES), $(OBJ_DIR)/$(obj).obj)
+#ASM_FILES=$(foreach obj, $(MODULES), $(SRC_DIR)/$(obj).asm)
+#FORTRAN_FILES=$(foreach obj, $(MODULES), $(SRC_DIR)/$(obj).f)
 #************
 #tmp: 
 #      @echo $(subst $$,\$$, $(OBJECTS))
 #************
 #tmp: 
 #      @echo $(subst $$,\$$, $(OBJECTS))
@@ -42,23 +46,32 @@ $(ORG_OBJDIR)/lastrun: $(ORG_LIBDIR)/*
        @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
        @./buildlib.sh makeorg
 
        @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
        @./buildlib.sh makeorg
 
-$(OBJECTS): $(OBJECT_FILES)
+$(OBJECTS): $(OBJECT_FILES) $(F4_OBJECT_FILES)
        @#$(MAKE) $(subst $$,\$$,$?)
 
        @#$(MAKE) $(subst $$,\$$,$?)
 
-$(OBJECT_FILES) : $(OBJ_DIR)/%.obj : $(SRC_DIR)/%.asm
+$(OBJECT_FILES):$(OBJ_DIR)/%.obj : $(SRC_DIR)/%.asm
 #      @echo Building: $(subst         $$,\$$,$@)
        @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
        @ rm -f $@
        @ cd $(OBJ_DIR) && $(ASM_COMMAND) ../$(subst $$,\$$,$^) $(LISTING)
        @ cd $(OBJ_DIR) && $(LDC_COMMAND) $(notdir $(subst $$,\$$,$@))
 
 #      @echo Building: $(subst         $$,\$$,$@)
        @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
        @ rm -f $@
        @ cd $(OBJ_DIR) && $(ASM_COMMAND) ../$(subst $$,\$$,$^) $(LISTING)
        @ cd $(OBJ_DIR) && $(LDC_COMMAND) $(notdir $(subst $$,\$$,$@))
 
+
+$(F4_OBJECT_FILES):$(OBJ_DIR)/%.obj : $(SRC_DIR)/%.f
+#      @echo Building: $(subst         $$,\$$,$@)
+       @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
+       @ rm -f $@
+       @ cd $(OBJ_DIR) && $(FRTN_COMMAND) ../$(subst $$,\$$,$^)
+       @ cd $(OBJ_DIR) && $(LDC_COMMAND) $(notdir $(subst $$,\$$,$@))
+
+
 # $(ORG_OBJDIR)/lastrun
 
 $(LIBS):$(LIB_DIR)/%.lib: $(RECIPE_DIR)/%$(RECIPE_SUFFIX)   $(OBJECTS)
        @./buildlib.sh genlib $(RECIPE_DIR)/$(basename $(notdir $@))$(RECIPE_SUFFIX)
 
 # $(ORG_OBJDIR)/lastrun
 
 $(LIBS):$(LIB_DIR)/%.lib: $(RECIPE_DIR)/%$(RECIPE_SUFFIX)   $(OBJECTS)
        @./buildlib.sh genlib $(RECIPE_DIR)/$(basename $(notdir $@))$(RECIPE_SUFFIX)
 
-src/font.asm:
-       @ln -sf $(shell pwd)/fonts/font_hp_charset0_2.asm $(shell pwd)/src/font.asm
+src/font.asm: font.config fonts/*.asm
+       @ln -sf $(shell pwd)/fonts/font_$(FONT).asm $(shell pwd)/src/font.asm
 
 clean:
        @rm -rf $(OBJ_DIR) $(LIB_DIR)  *.lst *.go src/font.asm *.obj *~ *.par \
 
 clean:
        @rm -rf $(OBJ_DIR) $(LIB_DIR)  *.lst *.go src/font.asm *.obj *~ *.par \
diff --git a/lib/hachti/font.config b/lib/hachti/font.config
new file mode 100644 (file)
index 0000000..83ae8d9
--- /dev/null
@@ -0,0 +1,82 @@
+
+#FONT=astrology
+#FONT=cursive
+#FONT=cyrilc
+#FONT=futural
+#FONT=futuram
+#FONT=gothgbt
+#FONT=gothgrt
+#FONT=gothicita
+#FONT=gothitt
+#FONT=greekc
+#FONT=greekcs
+#FONT=greekp
+#FONT=greeks
+#FONT=hp_charset0_1
+#FONT=hp_charset0_2
+#FONT=hp_charset0_3
+#FONT=hp_charset0_4
+#FONT=hp_charset1_1
+#FONT=hp_charset1_2
+#FONT=hp_charset1_3
+#FONT=hp_charset1_4
+#FONT=hp_charset173_1
+#FONT=hp_charset173_2
+#FONT=hp_charset173_3
+#FONT=hp_charset173_4
+#FONT=hp_charset205_1
+#FONT=hp_charset205_2
+#FONT=hp_charset205_3
+#FONT=hp_charset205_4
+#FONT=hp_charset2_1
+#FONT=hp_charset2_2
+#FONT=hp_charset2_3
+#FONT=hp_charset2_4
+#FONT=hp_charset3_1
+#FONT=hp_charset3_2
+#FONT=hp_charset3_3
+#FONT=hp_charset3_4
+#FONT=hp_charset4_1
+#FONT=hp_charset4_2
+#FONT=hp_charset4_3
+#FONT=hp_charset4_4
+#FONT=hp_charset5_1
+#FONT=hp_charset5_2
+#FONT=hp_charset5_3
+#FONT=hp_charset5_4
+#FONT=hp_charset6_1
+#FONT=hp_charset6_2
+#FONT=hp_charset6_3
+#FONT=hp_charset6_4
+#FONT=hp_charset7_1
+#FONT=hp_charset7_2
+#FONT=hp_charset7_3
+#FONT=hp_charset7_4
+#FONT=italicc
+#FONT=italiccs
+#FONT=italict
+#FONT=markers
+#FONT=mathlow
+#FONT=mathupp
+#FONT=meteorology
+#FONT=music
+# Problem mit dem a!
+#FONT=romant
+#FONT=romancs
+#FONT=romand
+#FONT=romanp
+#FONT=romans
+
+# Romant Macht J über o!
+#FONT=romant
+#FONT=rowmand
+#FONT=rowmans
+#FONT=rowmant
+FONT=scriptc
+#FONT=scripts
+#FONT=symbolic
+#FONT=timesg
+#FONT=timesi
+#FONT=timesib
+#FONT=timesr
+#FONT=timesrb
index 1ef6823f539f2f51b7d9be6d38054e2f31b684d2..58247cb5ed8e57fe8d1b6535e04fe334a1e5a928 100644 (file)
@@ -1,3 +1,9 @@
+
+# Graphics games
+obj/BOX
+obj/SQUARE
+
+
 # Text driver
 obj/PL$TXT
 
 # Text driver
 obj/PL$TXT
 
@@ -13,8 +19,9 @@ obj/PL$U
 # Text Font (Selected in makefile)
 obj/PL$FNT
 
 # Text Font (Selected in makefile)
 obj/PL$FNT
 
-# Stack operations
-obj/STACK
-
+# Matrix debug
+obj/PMAT
 
 
+# Integer output
+obj/OCT
 
 
index 812fd23adcc4bfa378baa701728f35ee92f9b496..79202db70cfda21765c874647f29d132b434d348 100644 (file)
@@ -91,7 +91,7 @@
 *                    M= |          |
 *                       | 0.0  1.0 |
 * 
 *                    M= |          |
 *                       | 0.0  1.0 |
 * 
-* WICH RESULTS TO THE IDENTITY TRANSFORMATION.
+* WHICH RESULTS TO THE IDENTITY TRANSFORMATION.
 * 
 *               JST     M$INIT
 *               DAC     MATRIX  POINTER TO A MATRIX
 * 
 *               JST     M$INIT
 *               DAC     MATRIX  POINTER TO A MATRIX
 * 
 * THIS ROUTINE CONVERTS THE VECTOR ELEMENTS TO FLOATING POINT VALUES,
 * APPLIES THE TRANSFORMATION TO THEM AND ROUNDS THE RESULTS BACK TO
 * 
 * THIS ROUTINE CONVERTS THE VECTOR ELEMENTS TO FLOATING POINT VALUES,
 * APPLIES THE TRANSFORMATION TO THEM AND ROUNDS THE RESULTS BACK TO
-* INTEGER VALUES. THEN IT  SAVES THE NEW VECTOR IN THE PLACE OF THE 
-* OLD VECTOR.
+* INTEGER VALUES. THEN IT  SAVES THE NEW VECTOR TO THE LOCATION 
+* DESIGNATED BY THE TARGET ADDRESS. SOURCE AND TARGET MAY BE THE SAME,
+* THE SOURCE'S CONTENTS ARE NOT ALTERED.
 *
 *               JST     M$APLI
 *               DAC     MATRIX  MATRIX TO APPLY
 *
 *               JST     M$APLI
 *               DAC     MATRIX  MATRIX TO APPLY
-*               DAC     VECTOR  VECTOR TO TRANSFORM
+*               DAC     TARGET  POINTER TO TARGET VECTOR
+*               DAC     SOURCE  VECTOR TO TRANSFORM
 *               DAC     0       FOR FORTRAN IV COMPATIBILITY
 * 
 * 
 * M$APII: APPLY MATRIX TO PAIR OF INTEGERS AS VECTOR
 * 
 *               DAC     0       FOR FORTRAN IV COMPATIBILITY
 * 
 * 
 * M$APII: APPLY MATRIX TO PAIR OF INTEGERS AS VECTOR
 * 
-* THIS ROUTINE USES TWO DISTINCT INTEGER POINTERS INSTEAD OF ONE VECTOR
-* POINTER. THE REST OF THE BEHAVIOR IS EXACTLY LIKE M$APL.
+* THIS ROUTINE USES TWO DISTINCT INTEGER POINTERS TO DESCRIBE A POINT.
+* THE REST OF THE BEHAVIOR IS EXACTLY LIKE M$APL.
 * 
 * 
-*               JST     M$APLI
+*               JST     M$APII
 *               DAC     MATRIX  MATRIX TO APPLY
 *               DAC     MATRIX  MATRIX TO APPLY
-*               DAC     X       X COORDINATE OF ARGUMENT VECTOR
-*               DAC     Y       Y COORDINATE OF ARGUMENT VECTOR
+*               DAC     XO      X COORDINATE OF RESULT VECTOR
+*               DAC     XO      Y COORDINATE OF RESULT VECTOR
+*               DAC     XI      X COORDINATE OF ARGUMENT VECTOR
+*               DAC     YI      Y COORDINATE OF ARGUMENT VECTOR
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY
 * 
 * 
 * M$ROT: ROTATE MATRIX
 * 
 * 
 * M$ROT: ROTATE MATRIX
 *               DAC     ANGLE   RADIANT ANGLE
 *               DAC     0       FOR FORTRAN IV COMPATIBILITY 
 * 
 *               DAC     ANGLE   RADIANT ANGLE
 *               DAC     0       FOR FORTRAN IV COMPATIBILITY 
 * 
+* 
+* M$ROTI: ROTATE MATRIX
+* 
+* WORKS LIKE M$ROT, BUT TAKES AN INTEGER DEGREE VALUE AS ARGUMENT.
+*  
+*               JST     M$ROTI
+*               DAC     MATRIX  MATRIX TO MODIFY
+*               DAC     ANGLE   DEGREE ANGLE
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY 
+* 
+* 
 * M$SCLE: SCALE MATRIX
 * 
 * THIS ROUTINE WORKS SIMILAR TO M$ROT BUT SCALES THE ARGUMENT MATRIX.
 * M$SCLE: SCALE MATRIX
 * 
 * THIS ROUTINE WORKS SIMILAR TO M$ROT BUT SCALES THE ARGUMENT MATRIX.
 *               DAC     SCALE   SCALE FACTOR
 *               DAC     0       FOR FORTRAN IV COMPATIBILITY 
 * 
 *               DAC     SCALE   SCALE FACTOR
 *               DAC     0       FOR FORTRAN IV COMPATIBILITY 
 * 
-*                
+* 
+*********************************************************************************
+* 
+* 
+* T$INIT: INITIALISE AFFINE TRANSFORM
+*               
+*               JST     T$INIT
+*               DAC     TRANS   POINTER TO AFFINE TRANSFORMATION (SEE ABOVE)
+* 
+* 
+* T$SCLE: SCALE AFFINE TRANSFORMATION
+*               
+* THIS SCALES THE MATRIX OF THE AFFINE TRANSFORMATION BY FACTOR SCALE.
+* CALLS M$SCLE INTERNALLY.
+* 
+*               JST     T$SCLE
+*               DAC     TRANS   TRANSFORMATION TO MODIFY
+*               DAC     SCALE   SCALE FACTOR
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY 
+* 
+*  
+* T$TRAN: ADD RELOCATION TO AFFINE TRANSFORMATION
+* 
+* THE OFFSET VECTOR IS FIRST PROCESSED BY THE TRANSFORMATION.
+* THEN IT IS ADDED TO THE TRANSFORMATION'S TRANSLATION VECTOR.
+* 
+*               JST     T$TRAN
+*               DAC     TRANS   TRANSFORMATION TO MODIFY   
+*               DAC     XOFF    X OFFSET
+*               DAC     YOFF    Y OFFSET
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY 
+* 
+* 
+* T$ROT: ADD ROTATION TO AFFINE TRANSFORMATION
+* 
+* ADDS ROTATION TO THE MATRIX OF THE AFFINE TRANSFORMATION.
+* CALLS M$$ROT INTERNALLY.
+* 
+*               JST     T$ROT
+*               DAC     TRANS   TRANSFORMATION TO MODIFY
+*               DAC     ANGLE   ANGLE LIKE FOR M$ROT
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY
+* 
+* 
+* T$ROTI: ADD ROTATION TO AFFINE TRANSFORMATION
+* USES AN INTEGER ARGUMENT INSTEAD OF FLOATING POINT RADIANT.
+* 
+* ADDS ROTATION TO THE MATRIX OF THE AFFINE TRANSFORMATION.
+* CALLS M$$ROTI INTERNALLY.
+* 
+*               JST     T$ROTI
+*               DAC     TRANS   TRANSFORMATION TO MODIFY
+*               DAC     ANGLE   ANGLE LIKE FOR M$ROTI
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY
+* 
+* 
+* T$APII: APPLY AFFINE TRANSFORM TO PAIR OF INTEGERS AS VECTOR
+* 
+* WORKS LIKE M$APII WHICH IS USED INTERNALLY.
+*       
+*               JST     T$APII
+*               DAC     TRANS  TRANSFORMATION TO USE
+*               DAC     XO      X COORDINATE OF RESULT VECTOR
+*               DAC     XO      Y COORDINATE OF RESULT VECTOR
+*               DAC     XI      X COORDINATE OF ARGUMENT VECTOR
+*               DAC     YI      Y COORDINATE OF ARGUMENT VECTOR
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY
+*
+* 
+* T$APLI: APPLY AFFINE TRANSFORM TO VECTOR
+* 
+* WORKS LIKE M$APL WHICH IS USED INTERNALLY.
+* 
+*               JST     T$APLI
+*               DAC     TRANS
+*               DAC     TARGET  POINTER TO TARGET VECTOR
+*               DAC     SOURCE  POINTER TO INPUT VECTOR
+*               DAC     0       FOR FORTRAN IV COMPATIBILITY
+* 
+* 
+*                   
 ********************************************************************************
 *
 **** EXPORTED SYMBOLS
 ********************************************************************************
 *
 **** EXPORTED SYMBOLS
        SUBR    M$APLI,APLI     APPLY MATRIX TO INTEGER VECTOR
        SUBR    M$APII,APII     APPLY MATRIX TO PAIR OF INTEGERS
        SUBR    M$ROT,ROT       ADD ROTATION TO MATRIX
        SUBR    M$APLI,APLI     APPLY MATRIX TO INTEGER VECTOR
        SUBR    M$APII,APII     APPLY MATRIX TO PAIR OF INTEGERS
        SUBR    M$ROT,ROT       ADD ROTATION TO MATRIX
+       SUBR    M$ROTI,ROTI     ADD ROTATION TO MATRIX
        SUBR    M$SCLE,SCLE     SCALE MATRIX
        SUBR    M$SCLE,SCLE     SCALE MATRIX
+       SUBR    M$SCLI,SCLI     SCALE MATRIX (INTEGER PERCENT)
 *
 *
-       SUBR    A$INIT,AFIN     INITIALISE AFFINE TRANSFORMATION
-* 
+       SUBR    T$INIT,AFIN     INITIALISE AFFINE TRANSFORMATION
+       SUBR    T$APLI,TPLI     APPLY AFFINE TRANSFORM TO INTEGER VECTOR
+       SUBR    T$APII,TPII     APPLY AFFINE TRANSFORM TO PAIR OF INTEGERS
+       SUBR    T$ROT,ROT       ADD ROTATION TO AFFINE TRANSFORMATION
+       SUBR    T$ROTI,ROTI     ADD ROTATION TO AFFINE TRANSFORMATION
+       SUBR    T$SCLE,SCLE     SCALE AFFINE TRANSFORMATION
+       SUBR    T$SCLI,SCLI     SCALE AFFINE TRANSFORMATION (INTEGER PERCENT)
+       SUBR    T$TRAN,TRAN     ADD TRANSLATION TO AFFINE TRANSFORMATION
+*  
 *  
 ********************************************************************************
 * 
 *  
 ********************************************************************************
 * 
 * 
 * 
 ********************************************************************************
 * 
 * 
 ********************************************************************************
-*
+* 
+* 
+*** T$TRAN - TRANSLATE
+* 
+* 
+*      ABS
+*      ORG     '4000
+TRAN   DAC     **      ENTRY.
+       LDA*    TRAN    TRANSFORMATION POINTER
+       STA     TPT
+       ADD     =8
+       STA     VECP
+       IRS     TRAN
+* 
+       LDA*    TRAN    X OFFSET
+       STA     XOFP
+       IRS     TRAN    
+* 
+       LDA*    TRAN    Y OFFSET
+       STA     YOFP
+       IRS     TRAN
+* 
+       IRS     TRAN    FOR FORTRAN IV
+* 
+       JST     APII    FIXME!
+TPT    DAC     **
+       DAC     TMP3    STORE NEW X VALUE IN TMP3
+       DAC     TMP4    STORE NEW Y VALUE IN TMP4
+XOFP   DAC     **
+YOFP   DAC     **
+       DAC     0       FOR FORTRAN IV COMPATIBILITY
+* 
+       LDA*    VECP
+       ADD     TMP3
+       STA*    VECP
+       IRS     VECP
+       LDA*    VECP
+       ADD     TMP4
+       STA*    VECP
+* 
+       JMP*    TRAN    RETURN.
+* 
+* 
+********************************************************************************
+* 
+* 
+**** T$APLI - APPLY AFFINE TRANSFORMATION TO INTEGER VECTOR
+* 
+* USED VARIABLES: ((TMP1) XOP,YOP,XP1,YP1,XP2,YP2),VECP
+* 
+TPLI   DAC     **      ENTRY.
+* 
+       LDA*    TPLI    LOAD POINTER TO TRANSFORMATION
+       STA     MPT     STORE TO MATRIX POINTER
+       ADD     =8      FORWARD TO VECTOR ADDRESS IN TRANSFORMATION
+       STA     VECP    VECTOR ADDRESS
+       IRS     TPLI
+*  
+       LDA*    TPLI    POINTER TO RESULT VECTOR
+       STA     IOV
+       IRS     TPLI
+* 
+       LDA*    TPLI    POINTER TO INPUT VECTOR
+       STA     IIV
+       IRS     TPLI
+* 
+       IRS     TPLI
+*  
+       JST     APLI    APPLY MATRIX
+MPT    DAC     **
+IOV    DAC     **
+IIV    DAC     **
+* 
+       LDA*    IOV     PERFORM VECTOR ADDITION
+       ADD*    VECP
+       STA*    IOV
+       IRS     VECP
+       IRS     IOV
+       LDA*    IOV
+       ADD*    VECP
+       STA*    IOV
+* 
+       JMP*    TPLI
+* 
+* 
+********************************************************************************
+* 
+* 
+**** T$APII - APPLY AFFINE TRANSFORMATION TO PAIR OF INTEGERS
+* 
+* USED VARIABLES: ((TMP1) XOP,YOP,XP1,YP1,XP2,YP2),VECP
+* 
+* 
+****************************************
+* 
+TPII   DAC     **      ENTRY.
+* 
+       LDA*    TPII    LOAD POINTER TO TRANSFORMATION
+       STA     IMPT    STORE TO MATRIX POINTER
+       ADD     =8      FORWARD TO VECTOR ADDRESS IN TRANSFORMATION
+       STA     VECP    VECTOR ADDRESS
+       IRS     TPII
+*  
+       LDA*    TPII    POINTER TO RESULT X
+       STA     RXP
+       IRS     TPII
+* 
+       LDA*    TPII    POINTER TO RESULT Y
+       STA     RYP
+       IRS     TPII
+* 
+       LDA*    TPII    POINTER TO INPUT X
+       STA     IXP
+       IRS     TPII
+* 
+       LDA*    TPII    POINTER TO INPUT Y
+       STA     IYP
+       IRS     TPII
+* 
+       IRS     TPII
+*  
+       JST     APII    APPLY MATRIX
+IMPT   DAC     **
+RXP    DAC     **      
+RYP    DAC     **
+IXP    DAC     **
+IYP    DAC     **
+       DAC     0
+* 
+       LDA*    VECP    PERFORM THE ADDITION
+       ADD*    RXP
+       STA*    RXP
+       IRS     VECP
+       LDA*    VECP
+       ADD*    RYP
+       STA*    RYP
+* 
+       JMP*    TPII    RETURN
+* 
+* 
+********************************************************************************
+* 
 * 
 **** INITIALIZE AFFINE TRANSFORMATION
 * 
 * 
 **** INITIALIZE AFFINE TRANSFORMATION
 * 
@@ -211,24 +457,20 @@ AFI1      DAC     **
 * 
 INIT   DAC     **
        LDX*    INIT    LOAD INDEX REGISTER WITH ADDRESS OF MATRIX
 * 
 INIT   DAC     **
        LDX*    INIT    LOAD INDEX REGISTER WITH ADDRESS OF MATRIX
-       LDA*    INIT    LOAD MATRIX ADDRESS
-       STA     IM11    STORE POINTER TO FIRST ELEMENT (A11)
-       ADD     =6      IM12,IM21 ARE NOT TO BE INITIALISED WITH FP DATA
-       STA     IM22    STORE POINTER TO FOURTH ELEMENT (A22)
        IRS     INIT    CORRECT RETURN ADDRESS
 *
        CRA             INITIALISE
        IRS     INIT    CORRECT RETURN ADDRESS
 *
        CRA             INITIALISE
+       STA     1,1     A11, LOWER BITS
        STA     2,1     A12
        STA     3,1               
        STA     4,1     A21
        STA     2,1     A12
        STA     3,1               
        STA     4,1     A21
-       STA     5,1     
-       CALL    FLOAT   GENERATE FLOATING POINT 1.0
-       DAC     ONE     CONSTANT INTEGER 1
-       CALL    H$22    STORE FLOATING POINT    
-IM11   DEC     0
-       CALL    H$22
-IM22   DEC     0
-*
+       STA     5,1
+       STA     7,1     A22, LOWER BITS 
+* 
+       LDA     ONEF    FLOATING POINT 1.0 CONSTANT
+       STA     0,1     A11, UPPER BITS
+       STA     6,1     A22, UPPER BITS
+* 
        JMP*    INIT    RETURN.
 * 
 * 
        JMP*    INIT    RETURN.
 * 
 * 
@@ -334,34 +576,55 @@ PC22      DEC     0
 **** SCALE MATRIX
 * 
 SCLE   DAC     **      SCALE MATRIX
 **** SCALE MATRIX
 * 
 SCLE   DAC     **      SCALE MATRIX
-       LDX*    SCLE
 *      
        LDA*    SCLE    GET MATRIX BASE ADDRESS
        STA     SM11
        STA     TM11
 *      
        LDA*    SCLE    GET MATRIX BASE ADDRESS
        STA     SM11
        STA     TM11
-       ADD     =6
+       ADD     =2
+       STA     SM12
+       STA     TM12
+       ADD     =2
+       STA     SM21
+       STA     TM21
+       ADD     =2
        STA     SM22
        STA     TM22
        IRS     SCLE
        LDA*    SCLE
        STA     SM22
        STA     TM22
        IRS     SCLE
        LDA*    SCLE
-       STA     SX
-       STA     SY
+       STA     S1
+       STA     S2
+       STA     S3
+       STA     S4
        IRS     SCLE    TALLY RETURN ADDRESS
        IRS     SCLE    AGAIN
 *
        CALL    L$22
        IRS     SCLE    TALLY RETURN ADDRESS
        IRS     SCLE    AGAIN
 *
        CALL    L$22
-SM11   DAC     0
+SM11   DAC     **
        CALL    M$22
        CALL    M$22
-SX     DAC     0
+S1     DAC     **
        CALL    H$22
        CALL    H$22
-TM11   DAC     0
+TM11   DAC     **
 *
        CALL    L$22
 *
        CALL    L$22
-SM22   DAC     0
+SM12   DAC     **
        CALL    M$22
        CALL    M$22
-SY     DAC     0
+S2     DAC     **
        CALL    H$22
        CALL    H$22
-TM22   DAC     0
+TM12   DAC     **
+*
+       CALL    L$22
+SM21   DAC     **
+       CALL    M$22
+S3     DAC     **
+       CALL    H$22
+TM21   DAC     **
+*
+       CALL    L$22
+SM22   DAC     **
+       CALL    M$22
+S4     DAC     **
+       CALL    H$22
+TM22   DAC     **
 *
        JMP*    SCLE
 *
 *
        JMP*    SCLE
 *
@@ -539,10 +802,14 @@ R412      DAC     **
 * CALL:
 *       JST     M$APII
 *       DAC     MATRIX
 * CALL:
 *       JST     M$APII
 *       DAC     MATRIX
-*       DAC     X      
-*       DAC     Y
+*       DAC     XO     
+*       DAC     YO
+*       DAC     XI     
+*       DAC     YI
 *       DAC     0       DON'T FORGET!
 * 
 *       DAC     0       DON'T FORGET!
 * 
+* USED VARIABLES: (TMP1) XOP,YOP,XP1,YP1,XP2,YP2
+* 
 ****************************************
 *
 APII   DAC     **
 ****************************************
 *
 APII   DAC     **
@@ -558,13 +825,21 @@ APII      DAC     **
        IRS     APII    JUMP TO NEXT ARGUMENT (X)
 *
        LDA*    APII    LOAD X VALUE
        IRS     APII    JUMP TO NEXT ARGUMENT (X)
 *
        LDA*    APII    LOAD X VALUE
-       STA     XP1     STORE TO X-POINTER
-       STA     XP2     STORE TO X-POINTER
+       STA     XOP     STORE TO X-POINTER
+       IRS     APII    JUMP TO NEXT ARGUMENT (Y)
+       LDA*    APII    LOAD Y VALUE
+       STA     YOP     STORE TO Y-POINTER
+       IRS     APII    CORRECT RETURN ADDRESS
+* 
+       LDA*    APII    LOAD X VALUE
+       STA     XIP1    STORE TO X-POINTER
+       STA     XIP2    STORE TO X-POINTER
        IRS     APII    JUMP TO NEXT ARGUMENT (Y)
        LDA*    APII    LOAD Y VALUE
        IRS     APII    JUMP TO NEXT ARGUMENT (Y)
        LDA*    APII    LOAD Y VALUE
-       STA     YP1     STORE TO Y-POINTER
-       STA     YP2     STORE TO Y-POINTER
+       STA     YIP1    STORE TO Y-POINTER
+       STA     YIP2    STORE TO Y-POINTER
        IRS     APII    CORRECT RETURN ADDRESS
        IRS     APII    CORRECT RETURN ADDRESS
+* 
        IRS     APII    FOR FORTRANIV COMPATIBILITY
        JST     APL     CALL REAL ROUTINE
        JMP*    APII
        IRS     APII    FOR FORTRANIV COMPATIBILITY
        JST     APL     CALL REAL ROUTINE
        JMP*    APII
@@ -580,9 +855,12 @@ APII       DAC     **
 * CALL:
 *       JST     M$APLI
 *       DAC     MATRIX
 * CALL:
 *       JST     M$APLI
 *       DAC     MATRIX
-*       DAC     VECTOR
+*       DAC    TARGET
+*       DAC     SOURCE
 *       DAC     0       DON'T FORGET!
 * 
 *       DAC     0       DON'T FORGET!
 * 
+* USED VARIABLES: (TMP1) XOP,YOP,XP1,YP1,XP2,YP2
+* 
 ****************************************
 *
 APLI   DAC     **
 ****************************************
 *
 APLI   DAC     **
@@ -598,12 +876,19 @@ APLI      DAC     **
        IRS     APLI
 *
        LDA*    APLI
        IRS     APLI
 *
        LDA*    APLI
-       STA     XP1
-       STA     XP2
+       STA     XOP
        AOA
        AOA
-       STA     YP1
-       STA     YP2
+       STA     YOP
        IRS     APLI
        IRS     APLI
+* 
+       LDA*    APLI
+       STA     XIP1
+       STA     XIP2
+       AOA
+       STA     YIP1
+       STA     YIP2
+       IRS     APLI
+* 
        IRS     APLI
        JST     APL     CALL INTERNAL ROUTINE
        JMP*    APLI    RETURN.
        IRS     APLI
        JST     APL     CALL INTERNAL ROUTINE
        JMP*    APLI    RETURN.
@@ -616,18 +901,20 @@ APLI      DAC     **
 * 
 * ALL DATA IS SET UP BY THE BOTH USER ROUTINES ABOVE.
 * 
 * 
 * ALL DATA IS SET UP BY THE BOTH USER ROUTINES ABOVE.
 * 
+* USED VARIABLES: TMP1
+* 
 ****************************************
 * 
 APL    DAC     **      
 *
        CALL    FLOAT   LOAD SINGLE PRECISION FLOAT FROM 1-WORD INTEGER
 ****************************************
 * 
 APL    DAC     **      
 *
        CALL    FLOAT   LOAD SINGLE PRECISION FLOAT FROM 1-WORD INTEGER
-XP1    DAC     0
+XIP1   DAC     0
        CALL    M$22    MULTIPLY FLOAT*FLOAT
 MP11   DAC     0
        CALL    H$22    STORE FLOAT
        DAC     TMP1
        CALL    FLOAT
        CALL    M$22    MULTIPLY FLOAT*FLOAT
 MP11   DAC     0
        CALL    H$22    STORE FLOAT
        DAC     TMP1
        CALL    FLOAT
-YP1    DAC     0
+YIP1   DAC     0
        CALL    M$22
 MP12   DAC     0
        CALL    A$22
        CALL    M$22
 MP12   DAC     0
        CALL    A$22
@@ -636,27 +923,81 @@ MP12      DAC     0
        STA     PA21    STORE NEW X VALUE INTO TEMPORARY LOCATION
 ****
        CALL    FLOAT
        STA     PA21    STORE NEW X VALUE INTO TEMPORARY LOCATION
 ****
        CALL    FLOAT
-XP2    DAC     0
+XIP2   DAC     0
        CALL    M$22
 MP21   DAC     0
        CALL    H$22
        DAC     TMP1
 *
        CALL    FLOAT
        CALL    M$22
 MP21   DAC     0
        CALL    H$22
        DAC     TMP1
 *
        CALL    FLOAT
-YP2    DAC     0
+YIP2   DAC     0
        CALL    M$22
 MP22   DAC     0
        CALL    A$22
        DAC     TMP1
        JST     RND     NOW INTEGER IN AC
        CALL    M$22
 MP22   DAC     0
        CALL    A$22
        DAC     TMP1
        JST     RND     NOW INTEGER IN AC
-       STA*    YP1     STORE NEW Y VALUE
+       STA*    YOP     STORE NEW Y VALUE
 *
        LDA     PA21
 *
        LDA     PA21
-       STA*    XP1
+       STA*    XOP
+* 
        JMP*    APL     RETURN TO CALLER.
 *
 * 
 ********************************************************************************
        JMP*    APL     RETURN TO CALLER.
 *
 * 
 ********************************************************************************
+* 
+* 
+**** M$ROTI ROTATE MATRIX, USE INTEGER DEGREE ANGLE
+* 
+ROTI   DAC     **
+       LDA*    ROTI    GET MATRIX POINTER
+       STA     MTA     STORE TO ARGUMENT TO FINAL ROT
+       IRS     ROTI    NEXT ARGUMENT: ANGLE
+       LDA*    ROTI    LOAD ANGLE
+       IRS     ROTI    
+       IRS     ROTI
+       JST     RAD     CONVERT INTEGER TO RADIANT
+       CALL    H$22
+       DAC     RTMP
+       JST     ROT
+MTA    DAC     **
+       DAC     RTMP
+       DAC     0       
+       JMP*    ROTI
+* 
+RTMP   BSS     2       TEMPORARY VARIABLE
+* 
+* 
+********************************************************************************
+* 
+* 
+**** M$SCLI - SCALE MATRIX, USE INTEGER PERCENT VALUE
+* 
+SCLI   DAC     **
+       LDA*    SCLI    GET MATRIX POINTER
+       STA     MTSS    STORE TO ARGUMENT TO FINAL ROT
+       IRS     SCLI    NEXT ARGUMENT: PERCENTS
+* 
+       LDA*    SCLI    LOAD PERCENTS
+       STA     SA1     STORE
+       CALL    FLOAT   CONVERT TO FLOAT
+SA1    DAC     **
+       CALL    M$22    MULTIPLY WITH
+       DAC     PERC    FACTOR 0.01
+       IRS     SCLI    
+       IRS     SCLI
+       CALL    H$22
+       DAC     RTMP
+* 
+       JST     SCLE
+MTSS   DAC     **
+       DAC     RTMP
+       DAC     0
+* 
+       JMP*    SCLI    RETURN
+* 
+* 
+********************************************************************************
 *
 * 
 **** ROUND FLOAT TO INTEGER ROUTINE
 *
 * 
 **** ROUND FLOAT TO INTEGER ROUTINE
@@ -679,22 +1020,57 @@ RND      DAC     **
 ********************************************************************************
 * 
 * 
 ********************************************************************************
 * 
 * 
+**** RAD - CONVERT ANGLE IN DEGREE TO RADIANT.
+* 
+* ENTER WITH INTEGER ANGLE IN A
+* 
+* CALL:
+* 
+*       JST     RAD
+*       DAC     ANGLE   POINTER TO ANGLE
+* 
+****************************************
+* 
+RAD    DAC     **
+       STA     AN1
+       CALL    FLOAT
+AN1    DAC     **
+       CALL    M$22
+       DAC     DEG
+       JMP*    RAD
+* 
+*  
+********************************************************************************
+* 
+* 
 **** CONSTANTS
 * 
 ONE    DEC     1
 HLF    OCT     '040100 CONSTANT 0.5    
        OCT     '000000
 **** CONSTANTS
 * 
 ONE    DEC     1
 HLF    OCT     '040100 CONSTANT 0.5    
        OCT     '000000
+ONEF   OCT     '040300 CONSTANT 1.0
+       OCT     '000000
+DEG    OCT     '036707 CONSTANT PI/180
+       OCT     '076432
+PERC   OCT     '036521 CONTANT 0.01
+       OCT     '165605
 * 
 * 
 ********************************************************************************
 * 
 * 
 * 
 ********************************************************************************
 * 
+* 
 **** VARIABLES
 * 
 TMP1   BSS     '2      TEMPORARY 2-WORD VARIABLE
 TMP2   BSS     '2            "      "      "
 TMP3   BSS     '2            "      "      "   
 **** VARIABLES
 * 
 TMP1   BSS     '2      TEMPORARY 2-WORD VARIABLE
 TMP2   BSS     '2            "      "      "
 TMP3   BSS     '2            "      "      "   
-TMP4   BSS     '2            "      "      "      
-*
+TMP4   BSS     '2            "      "      "
+VAP    DAC     **      TEMPORARY POINTER TO VECTOR
+XOP    DAC     **      OUTPUT VECTOR X POINTER
+YOP    DAC     **      OUTPUT VECTOR Y POINTER
+*VECP  DAC     **      VECTOR POINTER USED BY T$PII,T$PLI
+VECP   EQU     TMP2    VECTOR POINTER USED BY T$PII,T$PLI
+* 
 *
 ********************************************************************************
 *
 *
 ********************************************************************************
 *
index af939176692672853a7ea950dfefec85976ff003..3a142f7cce6411f14518a683d6cdb94c835dca7f 100644 (file)
@@ -27,7 +27,8 @@
 *
 * PURPOSE:     
 *
 *
 * PURPOSE:     
 *
-*    PROVIDE SIMPLE LIBRARY FUNCTIONS FOR INCREMENTAL PLOTTERS
+*    PROVIDE DRAWING AND COORDINATE TRANSFORMATION
+*    ROUTINES FOR INCREMENTAL PLOTTERS
 *
 *
 * STORAGE:     
 *
 *
 * STORAGE:     
 *
 *
        SUBR    PL$MV,MOVE
 *
 *
        SUBR    PL$MV,MOVE
+       SUBR    PL$MVR,MVR
        SUBR    PL$RST,RST
        SUBR    PL$LN,LINE
        SUBR    PL$RMR,RMR
        SUBR    PL$RST,RST
        SUBR    PL$LN,LINE
        SUBR    PL$RMR,RMR
-       SUBR    PL$X,X
-       SUBR    PL$Y,Y
-       SUBR    PL$MAT,MTRX
+       SUBR    PL$X,UX
+       SUBR    PL$Y,UY
+       SUBR    PL$MAT,ATRA
        SUBR    PL$SCL,SCLE
        SUBR    PL$SCL,SCLE
+       SUBR    PL$SCI,SCLI
        SUBR    PL$ROT,ROT
        SUBR    PL$ROT,ROT
-       SUBR    PL$IDN,IDEN
+       SUBR    PL$ROI,ROTI
+       SUBR    PL$PUS,PUSH
+       SUBR    PL$POP,POP
+       SUBR    PL$INI,INIT
 *
 *
 *
        REL             THIS IS A RELOCATABLE OBJECT
        ORG     '0
 *
 *
 *
 *
        REL             THIS IS A RELOCATABLE OBJECT
        ORG     '0
 *
+*
 ********************************************************************************
 ********************************************************************************
+* 
+**** PL$MVR - MOVE PEN RELATIVELY
+* 
+MVR    DAC     **
+* 
+       LDA*    MVR
+       STA     TMPX
+       IRS     MVR
+       LDA*    MVR
+       STA     TMPY
+       IRS     MVR
+* 
+       LDA*    TMPX
+*      CALL    OCT
+       ADD     XU
+       STA     XU
+* 
+       LDA*    TMPY
+*      CALL    OCT
+       ADD     YU
+       STA     YU
+* 
+       IRS     RELA    SET FLAG
+       NOP
+       IRS     MVR
+       JMP*    MVR     RETURN
+*      
+* 
+* 
+**** PL$INI - GRAPHICS INITIALISATION
+* 
+* THIS ROUTINE SETS THE HARDWARE ORIGIN TO THE CURRENT PlOTTER POSITION.
+* IT ALSO INITIALISES THE TRANSFORMATION.
+* 
+****************************************
+* 
+INIT   DAC     **
+       CRA
+       STA     XU
+       STA     YU
+       STA     X
+       STA     Y
+       STA     RELA
+       CALL    T$INIT
+       DAC     ATRA
+       JMP*    INIT
+*  
+* 
+**** PL$PUS - PUSH GRAPHIC CONTEXT ONTO THE STACK
+* 
+PUSH   DAC     **      ENTRY
+       LDA*    PUSH
+       STA     SD1
+       IRS     PUSH
+       CALL    S$PUSM  PUSH MEMORY ROUTINE
+SD1    DAC     **
+       DAC     ATRA
+       DEC     12      12 WORDS OF DATA.
+       JMP*    PUSH
+* 
+* 
+********************************************************************************
+* 
+* 
+**** PL$POP - POP GRAPHIC CONTEXT FROM THE STACK
+* 
+POP    DAC     **      ENTRY
+       LDA*    POP
+       STA     SD2
+       IRS     POP
+       CALL    S$POPM  POP MEMORY ROUTINE
+SD2    DAC     **
+       DAC     ATRA
+       DEC     12      12 WORDS OF DATA.
+       JMP*    POP
+* 
+* 
+* *******************************************************************************
 *
 *
-LINE   DAC     0               DRAW A LINE FROM NEAR STARTING POINT
+* 
+**** PL$LN - DRAW A LINE
+* 
+LINE   DAC     0               DRAW A LINE FROM NEAREST STARTING POINT
        LDA*    LINE    X1
        LDA*    LINE    X1
-       STA     X1
-       LDA*    X1
-       STA     X1      
+       STA     X1P
        IRS     LINE    
        IRS     LINE    
-       LDA*    LINE    Y1
-       STA     Y1
-       LDA*    Y1
-       STA     Y1      
+       LDA*    LINE    Y1
+       STA     Y1P
        IRS     LINE
        LDA*    LINE    X2
        IRS     LINE
        LDA*    LINE    X2
-       STA     X2
-       LDA*    X2
-       STA     X2      
+       STA     X2P
        IRS     LINE
        LDA*    LINE    Y2
        IRS     LINE
        LDA*    LINE    Y2
-       STA     Y2
-       LDA*    Y2
-       STA     Y2      
+       STA     Y2P
        IRS     LINE    TALLY RETURN ADDRESS
        IRS     LINE    AGAIN FOR FORTRAN IV COMPATIBILITY
        IRS     LINE    TALLY RETURN ADDRESS
        IRS     LINE    AGAIN FOR FORTRAN IV COMPATIBILITY
-* 
-* 
-       CALL    M$APLI
-       DAC     MTRX
+*   
+       CALL    T$APII  APPLY MATRIX
+       DAC     ATRA
        DAC     X1
        DAC     X1
+       DAC     Y1
+X1P    DAC     **
+Y1P    DAC     **
        DAC     0
        DAC     0
-* 
-       CALL    M$APLI
-       DAC     MTRX
+*
+       CALL    T$APII  APPLY MATRIX
+       DAC     ATRA
        DAC     X2
        DAC     X2
+       DAC     Y2
+X2P    DAC     **
+Y2P    DAC     **
        DAC     0
        DAC     0
-*
 * 
 * 
        LDA     X
 * 
 * 
        LDA     X
@@ -192,37 +276,50 @@ NM1       CALL    PL$PD   WE ARE AT BEGINNING OF LINE
        JST     RMOV    REAL MOVE
        JMP*    LINE    END OF THE LINE :-)
 *
        JST     RMOV    REAL MOVE
        JMP*    LINE    END OF THE LINE :-)
 *
-*      
-*
+* 
 ********************************************************************************       
 *
 ********************************************************************************       
 *
-**** MOVE PEN ROUTINE
+**** MAKE CURRENT X AND Y THE ORIGIN
 * 
 * 
-RST    DAC     **      SET POINT ZERO
+RST    DAC     **
+*
+**** FIRST TRANSLATE THE CURRENT USER POSITION:
+       CALL    T$TRAN
+       DAC     ATRA
+       DAC     XU
+       DAC     YU
+       DAC     0
        CRA
        CRA
-       STA     Y
-       IMA     X
+       STA     XU
+       STA     YU
+* 
        JMP*    RST
 *
        JMP*    RST
 *
-       ABS
-       ORG     '3000
-*
+* 
+********************************************************************************
+* 
+* 
+**** PL$MV - BASIC MOVE ROUTINE
+* 
 MOVE   DAC     **      MOVE YA!
 *      
 MOVE   DAC     **      MOVE YA!
 *      
-*      JMP*    MOVE
-*
        LDX     MOVE    GET PARAMETERS 
        LDA*    0,1     X VALUE
        LDX     MOVE    GET PARAMETERS 
        LDA*    0,1     X VALUE
+       STA     XU
        STA     XN
        LDA*    1,1     Y VALUE
        STA     XN
        LDA*    1,1     Y VALUE
+       STA     YU
        STA     YN
        LDA     MOVE
        ADD     =3
        STA     MOVE    CORRECT RETURN ADDRESS
 *
        STA     YN
        LDA     MOVE
        ADD     =3
        STA     MOVE    CORRECT RETURN ADDRESS
 *
-       CALL    M$APLI  APPLY TRANSFORMATION MATRIX TO POSITION
-       DAC     MTRX
+       CALL    T$APII  APPLY TRANSFORMATION MATRIX TO POSITION
+       DAC     ATRA
        DAC     XN
        DAC     XN
+       DAC     YN
+       DAC     XN
+       DAC     YN
        DAC     0
 *
        JST     RMOV    CALL INTO REAL MOVE SUBROUTINE
        DAC     0
 *
        JST     RMOV    CALL INTO REAL MOVE SUBROUTINE
@@ -285,8 +382,10 @@ YGTX       NOP             DY GREATER OR EQUAL DX
        STA     STPS
        LDA     DX
        STA     DS
        STA     STPS
        LDA     DX
        STA     DS
+       STA     DS0
        LDA     DY
        STA     DL
        LDA     DY
        STA     DL
+       STA     DL0
        JMP     GTE
 *
 XGTY   LDA     STPY
        JMP     GTE
 *
 XGTY   LDA     STPY
@@ -295,35 +394,53 @@ XGTY      LDA     STPY
        STA     STPL
        LDA     DX
        STA     DL
        STA     STPL
        LDA     DX
        STA     DL
+       STA     DL0
        LDA     DY
        LDA     DY
-       STA     DS      
-*      
-GTE    LDA     DL      LONG DISTANCE
+       STA     DS
+       STA     DS0
+* 
+****************************************
+* 
+*  NOW ALL STEP ROUTINES, DL0, DS0, DL0, DS0 ETC.
+*  ARE READY TO USE.
+* 
+GTE    LDA     DL0     LONG DISTANCE
        LGR     1       DIVIDE BY TWO
        STA     ERR     INITIALIZE ERROR COUNTER
 *
 *
        LGR     1       DIVIDE BY TWO
        STA     ERR     INITIALIZE ERROR COUNTER
 *
 *
-*      
-LOOP   LDA     DL
+*** MOVE LOOP
+* 
+LOOP   LDA     DL      LONG DISTANCE
        SNZ
        JMP     FNSH    END OF WORK - HOPE SO....
        SNZ
        JMP     FNSH    END OF WORK - HOPE SO....
-       SUB     =1      DECREMENT DL
+* 
+       SUB     =1      DECREMENT LONG DISTANCE
        STA     DL
        STA     DL
-       LDA     ERR
-       SUB     DS
+* 
+       LDA     ERR     ERROR COUNTER
+       SUB     DS0
        STA     ERR
        SMI             SKIP IF NOT OVERFLOWN (MINUS)
        JMP     NDIA    NO DIAG STEP
        STA     ERR
        SMI             SKIP IF NOT OVERFLOWN (MINUS)
        JMP     NDIA    NO DIAG STEP
-       ADD     DL      RELOAD
+*
+*** DIAG STEP TO DO
+* 
+       ADD     DL0     
        STA     ERR
        LDA     DS
        SUB     =1
        STA     DS
        STA     ERR
        LDA     DS
        SUB     =1
        STA     DS
-       JST*    STPD
-       JMP     STEN    END OF STEP
-NDIA   JST*    STPL    LONG DIR STEP ONLY
+       JST*    STPD    DO DIAGONAL STEP
+       JMP     LOOP    RELOOP
+*
+*** NO DIAGONAL STEP TO DO
+* 
+NDIA   JST*    STPL    DO LONG DIRECTION STEP
 STEN   JMP     LOOP    RELOOP
 *
 STEN   JMP     LOOP    RELOOP
 *
+* 
+*** END OF LOOP
 FNSH   LDA     XN
        STA     X
        LDA     YN
 FNSH   LDA     XN
        STA     X
        LDA     YN
@@ -334,73 +451,124 @@ FNSH     LDA     XN
 ********************************************************************************
 *
 *
 ********************************************************************************
 *
 *
-IDEN   DAC     **      RESET TRANSFORMATION MATRIX
-       CALL    M$INIT
-       DAC     MTRX
-       JMP*    IDEN
-*
-*
-********************************************************************************
+**** SCALE OUTPUT
 *
 SCLE   DAC     **
        LDA*    SCLE
        STA     FCTR
        IRS     SCLE
 *
 SCLE   DAC     **
        LDA*    SCLE
        STA     FCTR
        IRS     SCLE
-       CALL    M$SCLE
-       DAC     MTRX
+       CALL    T$SCLE
+       DAC     ATRA
 FCTR   DAC     0
        DAC     0
        JMP*    SCLE
 * 
 * 
 FCTR   DAC     0
        DAC     0
        JMP*    SCLE
 * 
 * 
+********************************************************************************
 * 
 * 
 * 
 * 
+**** ROTATE - RADIANT
+* 
 ROT    DAC     **
        LDA*    ROT
        STA     FCR2
        IRS     ROT
 ROT    DAC     **
        LDA*    ROT
        STA     FCR2
        IRS     ROT
-       CALL    M$ROT
-       DAC     MTRX
+       CALL    T$ROT
+       DAC     ATRA
 FCR2   DAC     0
        DAC     0
        JMP*    ROT
 *
 *
 ********************************************************************************
 FCR2   DAC     0
        DAC     0
        JMP*    ROT
 *
 *
 ********************************************************************************
+* 
+* 
+**** RLUP - UPDATE LATENT POSITION TO REAL POSITION
+* 
+RLUP   DAC     **
+       LDA     RELA    LOAD FLAG
+       SNZ
+       JMP*    RLUP    NOTHING TO DO
+       JST     MOVE
+       DAC     XU
+       DAC     YU
+       DAC     0
+       CRA
+       STA     RELA    CLEAR FLAG      
+       JMP*    RLUP
+* 
+* 
+********************************************************************************
+* 
+* 
+**** ROTATE - INTEGER DEGREES
+* 
+ROTI   DAC     **
+       LDA*    ROTI
+       STA     FCR3
+       IRS     ROTI
+       CALL    T$ROTI
+       DAC     ATRA
+FCR3   DAC     0
+       DAC     0
+       JMP*    ROTI
+*
+*
+********************************************************************************
+* 
+* 
+**** SCALE - INTEGER PERCENTS
+* 
+SCLI   DAC     **
+       LDA*    SCLI
+       STA     FCR4
+       IRS     SCLI
+* 
+       CALL    T$SCLI
+       DAC     ATRA    
+FCR4   DAC     0
+       DAC     0
+       JMP*    SCLI
+* 
+********************************************************************************
 *
 *** MOVE COORDINATE SYSTEM RELATIVELY
 *      
 RMR    DAC     **
        LDA*    RMR
 *
 *** MOVE COORDINATE SYSTEM RELATIVELY
 *      
 RMR    DAC     **
        LDA*    RMR
-       STA     PTR
-       LDA     X
-       SUB*    PTR
-       STA     X
+       STA     XTR
        IRS     RMR
        LDA*    RMR
        IRS     RMR
        LDA*    RMR
-       STA     PTR
-       LDA     Y
-       SUB*    PTR
-       STA     Y
+       STA     YTR
        IRS     RMR
        IRS     RMR
        IRS     RMR
        IRS     RMR
+* 
+       CALL    T$TRAN
+       DAC     ATRA
+XTR    DAC     **
+YTR    DAC     **
+       DAC     0
+* 
        JMP*    RMR
        JMP*    RMR
-PTR    DAC     **
 *
 *
-*              
+*              
 **********************
 *      
 *                      VARIABLES
 *
 **********************
 *      
 *                      VARIABLES
 *
-X      DEC     0       PEN POSITION, X VALUE
-Y      DEC     0       PEN POSITION, Y VALUE
+X      DEC     0       HARDWARE VIEW PEN POSITION, X VALUE
+Y      DEC     0       HARDWARE VIEW PEN POSITION, Y VALUE
 XN     DEC     0       NEW PEN POSITION, X VALUE
 YN     DEC     0       NEW PEN POSITION, Y VALUE
 DX     DEC     0       X DIFFERENCE TO GO
 DY     DEC     0       Y DIFFERENCE TO GO
 XN     DEC     0       NEW PEN POSITION, X VALUE
 YN     DEC     0       NEW PEN POSITION, Y VALUE
 DX     DEC     0       X DIFFERENCE TO GO
 DY     DEC     0       Y DIFFERENCE TO GO
+TMPX   DEC     0       TEMPORARY X VALUE
+TMPY   DEC     0       TEMPORARY Y VALUE
 *
 *
-DL     DEC     0       LONG DISTANCE NEGATIVE
-DS     DEC     0       SHORT DISTANCE NEGATIVE
+DL0    DEC     0       INITIAL LONG DISTANCE
+DS0    DEC     0       INITIAL SHORT DISTANCE
+DL     DEC     0       LONG DISTANCE 
+DS     DEC     0       SHORT DISTANCE
 STPL   DAC     **      ROUTINE TO LONG DISTANCE STEP
 STPS   DAC     **      ROUTINE TO SHORT DISTANCE STEP
 STPD   DAC     **      ROUTINE TO DIAGONAL STEP
 STPL   DAC     **      ROUTINE TO LONG DISTANCE STEP
 STPS   DAC     **      ROUTINE TO SHORT DISTANCE STEP
 STPD   DAC     **      ROUTINE TO DIAGONAL STEP
@@ -422,6 +590,7 @@ XB  DEC     0       REAL SECOND POINT X COORDINATE
 YB     DEC     0       REAL SECOND POINT Y COORDINATE
 D1     DEC     0       ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P1
 D2     DEC     0       ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P2
 YB     DEC     0       REAL SECOND POINT Y COORDINATE
 D1     DEC     0       ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P1
 D2     DEC     0       ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P2
+RELA   DEC     0       FLAG INDICATING THAT RELATIVE POSITIONING HAS OCCURED
 * 
 **** GLUE IN THE MOVEMENT ROUTINES
 * 
 * 
 **** GLUE IN THE MOVEMENT ROUTINES
 * 
@@ -435,18 +604,30 @@ MDL       XAC     PL$DL
 MDR    XAC     PL$DR
 *
 ********************************************************************************
 MDR    XAC     PL$DR
 *
 ********************************************************************************
-*
+* 
+* 
+**** AFFINE TRASFORMATION DATA AND REST OF GRAPHIC CONTEXT
+* 
+* OLD PROGRAMS DON'T HAVE TO WORRY ABOUT THAT. NEWER PROGRAMS SHOULD.
+* 
 *** HERE THE TRANSFORMATION MATRIX, INITIALLY NO TRANSFORMATION, OLD PROGRAMS
 *** DON'T HAVE TO CARE ABOUT THAT (HOPE SO)
 *** HERE THE TRANSFORMATION MATRIX, INITIALLY NO TRANSFORMATION, OLD PROGRAMS
 *** DON'T HAVE TO CARE ABOUT THAT (HOPE SO)
-MTRX   OCT     '040300 A11
+ATRA   OCT     '040300 A11 (CONSTANT 1.0)
        OCT     '000000
        OCT     '000000 A12
        OCT     '000000
        OCT     '000000 A21
        OCT     '000000
        OCT     '000000
        OCT     '000000 A12
        OCT     '000000
        OCT     '000000 A21
        OCT     '000000
-       OCT     '040300 A22
+       OCT     '040300 A22 (CONSTANT 1.0)
        OCT     '000000
        OCT     '000000
-*
+* 
+VECT   DEC     0       X TRANSLATION
+       DEC     0       Y TRANSLATION
+XU     DEC     0       USER VIEW PEN POSITION, X VALUE
+YU     DEC     0       USER VIEW PEN POSITION, Y VALUE 
+* 
+VECX   EQU     VECT
+VECY   EQU     VECT+1
 *
 ********************************************************************************
 *
 *
 ********************************************************************************
 *
index fe9d1c22f30f187677aff5eb335ca7acd0256690..d100b3f692454b9033594b87937088cbb942df39 100644 (file)
@@ -1,8 +1,9 @@
-* PLOTTER TEXT TEST
+* PLOTTER TEXT OUTPUT
 *
 *
 *
        SUBR    PL$TXT,FPTX
 *
 *
 *
        SUBR    PL$TXT,FPTX
+       SUBR    PL$TNL,NEWL
 *
 *
        REL
 *
 *
        REL
 *
 ********************************************************************************
 *
 *
 ********************************************************************************
 *
+NEWL   DAC     **
+       LDA*    FONT    LOAD VERTICAL SPACING FROM FONT
+       TCA
+       STA     GPTR
+       LDA     TWDH    LAST TEXT WIDTH
+       TCA
+       STA     PPTR    
+       CALL    PL$MVR  MOVE RELATIVELY
+       DAC     PPTR
+       DAC     GPTR
+       DAC     0
+       JMP*    NEWL    RETURN
+* 
+* 
+********************************************************************************
+* 
+* 
+**** PL$TXT - TEXT OUTPUT ROUTINE
+* 
 FPTX   DAC     **      FORTRAN TEXT OUTPUT ROUTINE
 *
 FPTX   DAC     **      FORTRAN TEXT OUTPUT ROUTINE
 *
+       LDA*    FPTX    LOAD STACK DATA POINTER
+       STA     SDA1    SAVE
+       STA     SDA2
+       IRS     FPTX
+* 
        LDA*    FPTX    ARGUMENT TRANSFER
        STA     BUFP
        IRS     FPTX
        LDA*    FPTX    ARGUMENT TRANSFER
        STA     BUFP
        IRS     FPTX
@@ -24,24 +49,20 @@ FPTX        DAC     **      FORTRAN TEXT OUTPUT ROUTINE
        STA     BLEN
        IRS     FPTX
        IRS     FPTX
        STA     BLEN
        IRS     FPTX
        IRS     FPTX
-*                      WE HAVE TO CORRECT OUR BUFFER POINTER, WHY????
-       LDA     FPTX    LOAD RETURN ADDRESS
-*      JST     OCT
-*      LDA     FPTX
-*      ANA     ='77000
-*      ADD     BUFP
-       STA     BUFP
-*
 *
        CALL    PL$PU   DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
 *
 *
        CALL    PL$PU   DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
 *
+       CRA
+       STA     TWDH    TEXT WIDTH
+* 
        JST     TXIN    EXECUTE INTERNAL TEXT ROUTINE
 *
        JST     TXIN    EXECUTE INTERNAL TEXT ROUTINE
 *
+       LDA     TWDH
        JMP*    FPTX    RETURN TO CALLER
 *
        JMP*    FPTX    RETURN TO CALLER
 *
-TXTP   DAC     TXTT
-TXTT   BCI     10,Philipp VOID                
-       DAC     0
+* TXTP DAC     TXTT
+* TXTT BCI     10,Philipp VOID                
+*      DAC     0
 ********************************************************************************
 *
 *
 ********************************************************************************
 *
 *
@@ -54,21 +75,9 @@ BLEN DEC     0       LENGTH OF TEXT TO OUTPUT
 *
 TXIN   DAC     **      INTERNAL TEXT WRITE ROUTINE
 *
 *
 TXIN   DAC     **      INTERNAL TEXT WRITE ROUTINE
 *
-       LDA*    XP      SAVE CURRENT
-       STA     XPC        PEN POSITION
-       LDA*    YP      FOR 
-       STA     YPC        NEWLINE PROCESSING
-*
-       LDA*    XP      SAVE CURRENT
-       STA     XPB        PEN POSITION
-       LDA*    YP      FOR
-       STA     YPB        RESTORE
-*
+       CALL    PL$PUS  PUSH GRAPHIC CONTEXT ONTO STACK
+SDA1   DAC     **
        CALL    PL$RST  RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0! 
        CALL    PL$RST  RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0! 
-*
-       CRA             CLEAR X BORROW VARIABLE
-       STA     BROW       (WILL BE NEEDED TO RESTORE COORDINATE POSITION)
-*
 *
 TLOP   LDA     BLEN    CHARACTER LOOP, FIRST TEST CHAR COUNTER
        SNZ
 *
 TLOP   LDA     BLEN    CHARACTER LOOP, FIRST TEST CHAR COUNTER
        SNZ
@@ -81,9 +90,8 @@ TLOP  LDA     BLEN    CHARACTER LOOP, FIRST TEST CHAR COUNTER
 TEGO   LGR     8       TAKE DOWN UPPER CHARACTER
        ANA     ='177   MASK OUT PARITY BIT
        JST     PLG     DRAW GLYPH
 TEGO   LGR     8       TAKE DOWN UPPER CHARACTER
        ANA     ='177   MASK OUT PARITY BIT
        JST     PLG     DRAW GLYPH
-*
-       ADD     BROW    PLG CHANGES THE X COORDINATE BUT TELLS US ABOUT THAT.
-       STA     BROW    WE ADD THE "BORROWED" X PIXELS UP FOR LATER.
+       ADD     TWDH
+       STA     TWDH
 *
        IRS     BLEN    INCREMENT CHARACTER COUNTER
        SKP
 *
        IRS     BLEN    INCREMENT CHARACTER COUNTER
        SKP
@@ -93,8 +101,9 @@ TEGO LGR     8       TAKE DOWN UPPER CHARACTER
        ANA     ='177   MASK OUT UPPER BITS AND PARITY.
 *
        JST     PLG     LIKE ABOVE
        ANA     ='177   MASK OUT UPPER BITS AND PARITY.
 *
        JST     PLG     LIKE ABOVE
-       ADD     BROW
-       STA     BROW
+       ADD     TWDH
+       STA     TWDH
+* 
 *
        IRS     BLEN
        NOP
 *
        IRS     BLEN
        NOP
@@ -103,24 +112,16 @@ TEGO      LGR     8       TAKE DOWN UPPER CHARACTER
        JMP     TLOP    JUMP BACK IN CHARACTER LOOP
 *
 *
        JMP     TLOP    JUMP BACK IN CHARACTER LOOP
 *
 *
-TFIN   LDA     XPB     RESTORE AND GO HOME
-       ADD     BROW    TAKE HIDDEN X OFFSET INTO ACCOUNT (SEE GLYPH ROUTINE!)
-       ADD*    XP
-       STA*    XP      UPDATE REAL (RELATED TO ORIGINAL COORDINATES) POSITION
-       LDA     YPB     SAME
-       ADD*    YP          WITH
-       STA*    YP              Y VALUE
-*
+TFIN   CALL    PL$POP  GET OLD GRAPHIC CONTEXT AND BE HAPPY
+SDA2   DAC     **
+       CALL    PL$MVR
+       DAC     TWDH
+       DAC     ZERO
+       DAC     *
+* 
        JMP*    TXIN    THAT'S IT, WE GO HOME.
 *
 *
        JMP*    TXIN    THAT'S IT, WE GO HOME.
 *
 *
-XP     XAC     PL$X    EXTERNAL POINTER TO PLOT X COORDINATE
-YP     XAC     PL$Y    EXTERNAL POINTER TO PLOT Y COORDINATE
-*
-XPB    DEC     0       BACKUP OF X COORDINATE
-YPB    DEC     0       BACKUP OF Y COORDINATE
-*
-BROW   DEC     0       BORROWED X PIXELS
 *
 **********************************************************     
 *
 *
 **********************************************************     
 *
@@ -147,7 +148,7 @@ FGOO        LDA*    GPTR    LOAD GLYPH NUMBER
        SUB     ARG     SUBSTRACT WANTED GLYPH NUMBER
        SNZ
        JMP     PGLP    FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
        SUB     ARG     SUBSTRACT WANTED GLYPH NUMBER
        SNZ
        JMP     PGLP    FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
-*
+* 
        IRS     LEFT    INCREMENT LOOP COUNTER
        LDX     GPTR    UPDATE
        LDA     GPTR          GLYPH
        IRS     LEFT    INCREMENT LOOP COUNTER
        LDX     GPTR    UPDATE
        LDA     GPTR          GLYPH
@@ -163,21 +164,22 @@ PGLP      LDX     GPTR    LOAD CURRENT GLYPH'S ADDRESS TO INDEX REGISTER
        LGR     8       USE UPPER BITS FIRST
        SUB     =82     SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
        TCA             WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
        LGR     8       USE UPPER BITS FIRST
        SUB     =82     SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
        TCA             WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
-       STA     X1      STORE
+       STA     XMIN    STORE
        LDA     2,1     LOAD THE MARGINS AGAIN
        CAL             CLEAR UPPER BITS OF A
        SUB     =81     THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
        LDA     2,1     LOAD THE MARGINS AGAIN
        CAL             CLEAR UPPER BITS OF A
        SUB     =81     THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
-       STA     X2      SAVE RIGHT MARGIN
-*
-       CALL    PL$RMR  MOVE PLOT ORIGIN - THE REASON FOR THE BORROW STUFF.
-       DAC     X1      GLYPH SHOULD START AT ORIGINAL X=0..BUT - ASK HERSHEY
-       DAC     ZERO    Y STAYS UNCHANGED.
-       DAC     0
+       STA     XNEX    SAVE RIGHT MARGIN
 *
        LDA     1,1     LOAD POINT COUNT
 *
        LDA     1,1     LOAD POINT COUNT
+*      CALL    OCT
        TCA             COMPLEMENT
        AOA             INCREMENT - FIRST "POINT" WERE THE MARGINS.
        STA     LEFT    SET UP THE WELL KNOWN COUNTER.
        TCA             COMPLEMENT
        AOA             INCREMENT - FIRST "POINT" WERE THE MARGINS.
        STA     LEFT    SET UP THE WELL KNOWN COUNTER.
+* 
+       CALL    PL$RMR  MOVE ORIGIN
+       DAC     XMIN    
+       DAC     ZERO    Y STAYS UNCHANGED.
+       DAC     0
 *
        LDA     GPTR    
        ADD     =3      ADD OFFSET IN GLYPH DATA
 *
        LDA     GPTR    
        ADD     =3      ADD OFFSET IN GLYPH DATA
@@ -217,7 +219,7 @@ MOGO        LDA*    PPTR
 PEND   IRS     PPTR    INCREMENT POINT POINTER
        IRS     LEFT    INCREMENT POINT COUNTER
        NOP             
 PEND   IRS     PPTR    INCREMENT POINT POINTER
        IRS     LEFT    INCREMENT POINT COUNTER
        NOP             
-       JMP     MLOP    LOOP AGAIN.     
+       JMP     MLOP    LOOP AGAIN.
 *
 *
 PUP    CALL    PL$PU   PEN UP
 *
 *
 PUP    CALL    PL$PU   PEN UP
@@ -227,38 +229,22 @@ PUP       CALL    PL$PU   PEN UP
 MFIN   CALL    PL$PU   END OF GLYPH, PEN UP!
 *
        CALL    PL$RMR  FUZZ COORDINATES AGAIN.
 MFIN   CALL    PL$PU   END OF GLYPH, PEN UP!
 *
        CALL    PL$RMR  FUZZ COORDINATES AGAIN.
-       DAC     X2      THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
+       DAC     XNEX    THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
        DAC     ZERO    Y UNTOUCHED. ZERO IS ZERO.
        DAC     0
 *
        DAC     ZERO    Y UNTOUCHED. ZERO IS ZERO.
        DAC     0
 *
-       CALL    PL$MV   MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
-       DAC     ZERO
-       DAC     ZERO
-       DAC     0
-*
-       LDA     X2      ADD MARGINS 
-       ADD     X1                  TO BORROWED GLYPH WIDTH
+*      CALL    PL$MV   MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
+*      DAC     ZERO
+*      DAC     ZERO
+*      DAC     0
+       LDA     XMIN    RETURN WITH CORRECT WIDTH VALUE
+       ADD     XNEX
        JMP*    PLG     RETURN TO CALLER.
 *
 *
 ****************************************************************
 *
 *
        JMP*    PLG     RETURN TO CALLER.
 *
 *
 ****************************************************************
 *
 *
-PNL    DAC     **      NEW LINE ROUTINE
-       LDA     YPC
-       SUB*    FONT    VERTIVAL SPACING
-       STA     YPC
-       CALL    PL$MV
-       DAC     XPC
-       DAC     YPC
-       DAC     0
-       JMP*    PNL
-*
-*      
-XPC    DEC     0
-YPC    DEC     0
-*
-*
 *
 ********************************************************************
 ARG    DEC     0
 *
 ********************************************************************
 ARG    DEC     0
@@ -267,106 +253,12 @@ GPTR     DEC     0
 PPTR   DEC     0
 X      DEC     0
 Y      DEC     0
 PPTR   DEC     0
 X      DEC     0
 Y      DEC     0
-X1     DEC     0
-X2     DEC     0
+XMIN   DEC     0
+XNEX   DEC     0
 ZERO   DEC     0
 ZERO   DEC     0
+TWDH   DAC     **      GENERATED TEXT WIDTH
 *
 FONT   XAC     PL$FNT
 *
 *
 FONT   XAC     PL$FNT
 *
-MK1    DAC     **
-       OCP     '104
-       LDA     M1
-       OTA     4
-       JMP     *-1
-       ICA
-       OTA     4
-       JMP     *-1
-*      LDA     =10
-*      OTA     '4
-*      JMP     *-1
-*      LDA     =13
-*      OTA     '4
-*      JMP     *-1
-*      LDA     =13
-*      OTA     '4
-*      JMP     *-1
-       JMP*    MK1
-*
-*
-MK2    DAC     **
-       OCP     '104
-       LDA     M2
-       OTA     4
-       JMP     *-1
-       ICA
-       OTA     4
-       JMP     *-1
-*      LDA     =10
-*      OTA     '4
-*      JMP     *-1
-*      LDA     =13
-*      OTA     '4
-*      JMP     *-1
-*      LDA     =13
-*      OTA     '4
-*      JMP     *-1
-       JMP*    MK2
-*
-*
-M1     BCI     2,A:
-M2     BCI     2,B:
-*
-OCT    DAC     **
-       OCP     '104
-       IAB             SAVE TO B
-       CRA
-       LLR     1
-       ADD     =48
-       OTA     '4      ASR OUTPUT
-       JMP     *-1
-       CRA
-       LLR     3
-       ADD     =48
-       OTA     4       ASR OUTPUT
-       OTA     4
-       JMP     *-1
-       CRA
-       LLR     3
-       ADD     =48
-       OTA     '4      ASR OUTPUT
-       OTA     4
-       JMP     *-1
-       CRA
-       LLR     3
-       ADD     =48
-       OTA     '4      ASR OUTPUT
-       OTA     4
-       JMP     *-1
-       CRA
-       LLR     3
-       ADD     =48
-       OTA     '4      ASR OUTPUT
-       OTA     4
-       JMP     *-1
-       CRA
-       LLR     3
-       ADD     =48
-       OTA     '4      ASR OUTPUT
-       OTA     4
-       JMP     *-1
-*      
-       LDA     =10
-       OTA     '4
-       JMP     *-1
-       LDA     =13
-       OTA     '4
-       JMP     *-1
-       LDA     =13
-       OTA     '4
-       JMP     *-1
-       SKS     4
-       JMP     *-1
-*      
-       JMP*    OCT
 *
        END
 *
        END
index 19ee7dac8a33f243302597414e258aca1550d199..e6c2db49da31995e9af78194d38d5ae0e3b98924 100644 (file)
@@ -65,18 +65,24 @@ PADR        EQU     '40     PORT ADDRESS OF THE PLOTTER INTERFACE
        REL             THIS IS A RELOCATABLE OBJECT
        ORG     '0
 *
        REL             THIS IS A RELOCATABLE OBJECT
        ORG     '0
 *
-*
+* 
 OUT    DAC     **      DO THE MOVEMENT
        OTA     PADR
        JMP     *-1
 *
 OUT    DAC     **      DO THE MOVEMENT
        OTA     PADR
        JMP     *-1
 *
-*      LDA     =-'10000
-*      AOA
-*      SZE
-*      JMP     *-2
-*
+*      LDA     =-1
+*      STA     CNT     
+*      LDA     =-1000
+* LLL  AOA
+*      SZE
+*      JMP     LLL
+*      IRS     CNT
+*      JMP     LLL
+* 
+* 
        JMP*    OUT
        JMP*    OUT
-*
+* 
+* CNT  DAC     **
 *      
 UP     DAC     **
        LDA     CUP
 *      
 UP     DAC     **
        LDA     CUP
index 84c72b7ac0f0bb56a99bc0a9696f1dd49f653ac8..b54074f0a3ee9272b5e40ee3b54347487aaffc5a 100644 (file)
 *       TO PROVIDE A SPECIAL-PURPOSE STACK MECHANISM FOR RECURSIVE
 *       PROGRAM CALLS
 *
 *       TO PROVIDE A SPECIAL-PURPOSE STACK MECHANISM FOR RECURSIVE
 *       PROGRAM CALLS
 *
-* WHAT:
+* THEORY OF OPERATION:
 * 
 * 
-* THIS VARIANT OF THE STACK ROUTINE USES A FIXED SIZE MEMORY 
-* BUFFER FOR THE THE STACK. THE STACK USAGE IS MONITORED.
-* ON OVERFLOW, THE COMPUTER TYPES OUT AN ERROR MESSAGE AND HALTS.
+* THE STACK ROUTINES MAINTAIN AN UPWARDS GROWING STACK.
+* EVERY USAGE CONTEXT OF THE STACK NEEDS TO RESERVE THE SPACE FOR
+* ITS STACK'S DATA. THIS ENABLES THE PROGRAMMER TO CHOOSE THE STACK
+* SIZE AND USE MULTIPLE STACKS IN MULTIPLE PLACES INDEPENDENTLY.
+* ALL STACK RELATED ROUTINES TAKE A POINTER TO THE STACK'S INTERNAL
+* DATA AS FIRST ARGUMENT.
 * 
 * 
+* THE DATA LAYOUT OF THE STACK DATA IS AS FOLLOWING:
+* 
+* SIZE  OCT     '1000   SIZE OF THE STACK IN MACHINE WORDS
+* PTR   DAC     **      THE STACK POINTER
+* FILL  DAC     **      THE FILL COUNTER
+* OVER  DAC     OFL     OPTIONAL POINTER TO OVERFLOW ERROR ROUTINE
+* UNDR  DAC     UFL     OPTIONAL POINTER TO UNDERFLOW ERROR ROUTINE
+* STCK  BSS     '1000   THE STACK DATA
+* 
+* IF CUSTOM ERROR HANDLING ROUTINES ARE NOT TO BE USED, SET THE TWO
+* POINTER LOCATIONS TO ZERO. THEN, INTERNAL ERROR ROUTINES WILL BE
+* USED. SIZE AND THE FUNCTION POINTERS HAVE TO BE INITIALISED. THE
+* OTHER LOCATIONS ARE INITIALISED BY THE STACK ROUTINES.
 * 
 * USAGE:
 * 
 * INITIALISING STACK POINTER:
 *       
 * 
 * USAGE:
 * 
 * INITIALISING STACK POINTER:
 *       
-*       CALL S$INIT
+*       CALL    S$INIT
+*       DAC     SDATA   STACK DATA
+*       OCT     SSIZ    DATA SIZE (NOT STACK DEPTH!!!)
 * 
 * PUSHING AND POPPING THE A-REGISTER FROM AND TO THE STACK:
 * 
 *       CALL    S$PUSH  VALUE IN A REGISTER IS PUSHED.
 * 
 * PUSHING AND POPPING THE A-REGISTER FROM AND TO THE STACK:
 * 
 *       CALL    S$PUSH  VALUE IN A REGISTER IS PUSHED.
-*       CALL    $$PUSH  VALUE FROM STACK IS POPPED INTO A-REGISTER.
+*       DAC     SDATA
+* 
+*       CALL    $$POP  VALUE FROM STACK IS POPPED INTO A-REGISTER.
+*       DAC     SDATA
 * 
 * PUSHING AND POPPING ARBITRARY DATA FROM AND TO THE STACK:
 * 
 *       CALL    S$PUSM
 * 
 * PUSHING AND POPPING ARBITRARY DATA FROM AND TO THE STACK:
 * 
 *       CALL    S$PUSM
+*       DAC     SDATA
 *       DAC     ADDRESS
 *       OCT     SIZE
 *  
 *       CALL    S$POPM
 *       DAC     ADDRESS
 *       OCT     SIZE
 *  
 *       CALL    S$POPM
+*       DAC     SDATA
 *       DAC     ADDRESS
 *       OCT     SIZE
 *       DAC     ADDRESS
 *       OCT     SIZE
+*
+* 
+* MAKING A RECURSIVE CALL FROM FORTRAN IV TO A FORTRAN IV OR OTHER ROUTINE:
 * 
 * 
+* THE ROUTINE S$CALL SAVES A SET OF LOCAL VARIABLES ONTO THE STACK.
+* IT ALSO SAVES THE RETURN ADDRESS AND ITS OWN PARAMETERS.
+* S$LLAC DOES EVERYTHING IN REVERSE ORDER.
+* 
+* HERE IS AN EXAMPLE HOW TO USE THE TWO ROUTINES IN FORTRAN IV:
+* 
+* C LOCAL VARIABLES I(3),A,Z TO SAVE
+* 
+*       CALL S$CALL(3,I,3,A,2,Z,2)
+*       RETURN    <-- FOR THE RETURN ADDRESS OF THE CURRENT ROUTINE
+*       CALL MYROUTINE(...)
+*       CALL S$LLAC
+* 
+* ASSEMBLER CALLING SEQUENCE:
+*       
+*       JST     S$CALL
+*       DAC     VARNO  NO OF LOCAL VARIABLES TO SAVE ON THE STACK
+*       DAC     VAR1   POINTER TO FIRST VARIABLE
+*       DAC     SIZE1  WORD SIZE OF VARIABLE
+*       ...
+*       DAC     VARN    POINTER TO LAST VARIABLE
+*       DAC     SIZEN   WORD SIZE OF LAST VARIABLE
+*       DAC     0       FORTRAN IV COMPILER GENERATED
 * 
 * 
+*       JMP*    PROC    RETURN JUMP, GENERATED BY THE "RETURN" STATEMENT
+* 
+*       JST     MYROUTINE
+*       ...
+* 
+*       JST     S$LLAC
+* 
+*  
 ********************************************************************************
 *
 * 
 ********************************************************************************
 *
 * 
        SUBR    S$PUSM,PUSM     MEMORY RANGE PUSH
        SUBR    S$POPM,POPM     MEMORY RANGE POP
        SUBR    S$PTR,SPTR      STACK POINTER ACCESS
        SUBR    S$PUSM,PUSM     MEMORY RANGE PUSH
        SUBR    S$POPM,POPM     MEMORY RANGE POP
        SUBR    S$PTR,SPTR      STACK POINTER ACCESS
+       SUBR    S$CALL,CALL
+       SUBR    S$LLAC,LLAC
 * 
 *      
 ********************************************************************************
 * 
 * 
 *      
 ********************************************************************************
 * 
-*  
-SSIZ   EQU     '1000   512 WORDS DEFAULT STACK BUFFER SIZE
 * 
        REL             RELOCATEABLE OBJECT
 * 
        REL             RELOCATEABLE OBJECT
-       ORG     '0
 *  
 * 
 ********************************************************************************
 *  
 * 
 ********************************************************************************
-* 
-* 
-**** PUSH MEMORY RANGE TO STACK
+*
+* *** PUSH MEMORY RANGE TO STACK
 * 
 PUSM   DAC     **      ENTRY POINT TO PUSH ROUTINE
        STA     ATM1    SAVE A-REGISTER
 * 
 PUSM   DAC     **      ENTRY POINT TO PUSH ROUTINE
        STA     ATM1    SAVE A-REGISTER
+* 
+       LDA*    PUSM    LOAD DATA BASE
+       IRS     PUSM
+       STA     DPT     SAVE FOR LATER USE
 * 
        LDA*    PUSM    LOAD POINTER
        STA     PTR     STORE TO TRANSFER POINTER
 * 
        LDA*    PUSM    LOAD POINTER
        STA     PTR     STORE TO TRANSFER POINTER
@@ -86,12 +145,14 @@ PUSM       DAC     **      ENTRY POINT TO PUSH ROUTINE
 * 
 PULP   LDA*    PTR     GET DATA
        JST     PUSH    PUSH IT!
 * 
 PULP   LDA*    PTR     GET DATA
        JST     PUSH    PUSH IT!
+DPT    DAC     **
+* 
        IRS     PTR     INCREMENT POINTER
        IRS     CNT     INCREMENT BYTE COUNTER
        JMP     PULP    DO IT AGAIN!
 * 
        LDA     ATM1    RESTORE A-REG
        IRS     PTR     INCREMENT POINTER
        IRS     CNT     INCREMENT BYTE COUNTER
        JMP     PULP    DO IT AGAIN!
 * 
        LDA     ATM1    RESTORE A-REG
-       JMP*    PUSM    
+       JMP*    PUSM    RETURN
 * 
 *
 ********************************************************************************
 * 
 *
 ********************************************************************************
@@ -102,6 +163,10 @@ PULP       LDA*    PTR     GET DATA
 POPM   DAC     **      ENTRY POINT TO PUSH ROUTINE
        STA     ATM1    SAVE A-REGISTER
 * 
 POPM   DAC     **      ENTRY POINT TO PUSH ROUTINE
        STA     ATM1    SAVE A-REGISTER
 * 
+       LDA*    POPM    GET DATA POINTER
+       IRS     POPM
+       STA     DPTR    STORE FOR LATER USE
+*
        LDA*    POPM    LOAD POINTER
        IRS     POPM    GO TO NEXT ARGUMENT
        ADD*    POPM    ADD TRANSFER SIZE
        LDA*    POPM    LOAD POINTER
        IRS     POPM    GO TO NEXT ARGUMENT
        ADD*    POPM    ADD TRANSFER SIZE
@@ -114,6 +179,8 @@ POPM        DAC     **      ENTRY POINT TO PUSH ROUTINE
        STA     CNT     STORE TO COUNTER
 * 
 POLP   JST     POP     POP DATA FROM THE STACK
        STA     CNT     STORE TO COUNTER
 * 
 POLP   JST     POP     POP DATA FROM THE STACK
+DPTR   DAC     **
+* 
        STA*    PTR     STORE IT.
        LDA     PTR
        SUB     =1      DECREMENT
        STA*    PTR     STORE IT.
        LDA     PTR
        SUB     =1      DECREMENT
@@ -121,8 +188,8 @@ POLP        JST     POP     POP DATA FROM THE STACK
        IRS     CNT     INCREMENT BYTE COUNTER
        JMP     POLP    DO IT AGAIN!
 * 
        IRS     CNT     INCREMENT BYTE COUNTER
        JMP     POLP    DO IT AGAIN!
 * 
-       LDA     ATM1
-       JMP*    POPM    
+       LDA     ATM1    RESTORE A-REG
+       JMP*    POPM    RETURN
 * 
 *
 ********************************************************************************
 * 
 *
 ********************************************************************************
@@ -130,19 +197,27 @@ POLP      JST     POP     POP DATA FROM THE STACK
 * 
 **** PUSH SINGLE WORD ONTO STACK
 * 
 * 
 **** PUSH SINGLE WORD ONTO STACK
 * 
+       SUBR    PUSH
 PUSH   DAC     **      REAL PUSH ROUTINE - PUSH AC TO STACK.
 PUSH   DAC     **      REAL PUSH ROUTINE - PUSH AC TO STACK.
-*      
+*       
+       STX     XTM     SAVE X REGISTER
        STA     ATM2    SAVE A REGISTER
 * 
        STA     ATM2    SAVE A REGISTER
 * 
-       LDA     SPTR    LOAD STACK POINTER
-       SUB     MAX     TEST IF STACK FULL
-       SNZ
-       JST     OFLO    OVERFLOW OH! OH! OH!
+       LDX*    PUSH    LOAD INDEX REGISTER WITH DATA BASE
+       IRS     PUSH
 * 
 * 
+       LDA     FILL,1  LOAD FILL SIZE
+       CAS     SSIZ,1  COMPARE STACK SIZE
+       NOP
+       JST     OFLO    OVERFLOW!
+*  
        LDA     ATM2
        LDA     ATM2
-       STA*    SPTR    NO OVERFLOW, PUT DATA ONTO STACK
-       IRS     SPTR    INCREMENT STACK POINTER
+       STA*    SPTR,1  NO OVERFLOW, PUT DATA ONTO STACK
+       IRS     SPTR,1  INCREMENT STACK POINTER
+       IRS     FILL,1  INCREMENT FILL SIZE
 * 
 * 
+       LDX     XTM     RESTORE X REGISTER
+       LDA     ATM2
        JMP*    PUSH    RETURN WITH A-REG UNALTERED.
 * 
 * 
        JMP*    PUSH    RETURN WITH A-REG UNALTERED.
 * 
 * 
@@ -153,16 +228,23 @@ PUSH      DAC     **      REAL PUSH ROUTINE - PUSH AC TO STACK.
 * 
 POP    DAC     **      REAL POP ROUTINE - POP AC FROM STACK.
 * 
 * 
 POP    DAC     **      REAL POP ROUTINE - POP AC FROM STACK.
 * 
-       LDA     SPTR    LOAD STACK POINTER
-       SUB     MIN     TEST IF STACK EMPTY
+       STX     XTM     SAVE X REGISTER
+       LDX*    POP     LOAD INDEX REGISTER WITH DATA BASE
+       IRS     POP
+* 
+       LDA     FILL,1  FILL SIZE
        SNZ
        SNZ
-       JST     UFLO    UNDERFLOW OH! OH! OH!
+       JST     UFLO    NOTHING INSIDE? SKIP!
 * 
 * 
-       LDA     SPTR    LOAD STACK POINTER
+       LDA     SPTR,1  LOAD STACK POINTER
        SUB     =1      DECREMENT IT TO LAST USED LOCATION
        SUB     =1      DECREMENT IT TO LAST USED LOCATION
-       STA     SPTR    SAVE IT BACK
+       STA     SPTR,1  SAVE IT BACK
+       LDA     FILL,1
+       SUB     =1
+       STA     FILL,1  DECREMENT FILL SIZE
 * 
 * 
-       LDA*    SPTR    LOAD VALUE FROM THE STACK
+       LDA*    SPTR,1  LOAD VALUE FROM THE STACK
+       LDX     XTM     RESTORE INDEX REGISTER
        JMP*    POP     RETURN.
 * 
 * 
        JMP*    POP     RETURN.
 * 
 * 
@@ -171,9 +253,27 @@ POP        DAC     **      REAL POP ROUTINE - POP AC FROM STACK.
 * 
 **** INITIALIZATION
 * 
 * 
 **** INITIALIZATION
 * 
-INIT   DAC     **      INITIALIZE STACK POINTER
-       LDA     CPTR    LOAD INITIAL STACK POINTER
-       STA     SPTR    SET STACK POINTER
+INIT   DAC     **      INITIALIZE STACK
+       STA     ATM1
+       STX     XTM
+* 
+       LDX*    INIT
+* 
+       LDA     VARS    SIZE OF MANAGEMENT VARIABLES
+       ADD*    INIT    BASE ADDRESS
+       STA     SPTR,1  SAVE TO STACK POINTER
+       IRS     INIT
+* 
+       LDA*    INIT    LOAD DATA POOL SIZE
+       SUB     VARS    VARIABLE SIZE
+       STA     SSIZ,1  SAVE TO STACK DEPTH
+* 
+       CRA
+       STA     FILL,1
+* 
+       LDA     ATM1
+       LDX     XTM
+       IRS     INIT
        JMP*    INIT
 * 
 *
        JMP*    INIT
 * 
 *
@@ -182,6 +282,7 @@ INIT        DAC     **      INITIALIZE STACK POINTER
 *  
 **** ERROR HANDLING ROUTINES
 * 
 *  
 **** ERROR HANDLING ROUTINES
 * 
+       SUBR    OFLO
 OFLO   DAC     **      STACK OVERFLOW ROUTINE
        LDA     OMSP    LOAD OVERFLOW MESSAGE POINTER
        JST     TYPE    TYPE IT OUT.
 OFLO   DAC     **      STACK OVERFLOW ROUTINE
        LDA     OMSP    LOAD OVERFLOW MESSAGE POINTER
        JST     TYPE    TYPE IT OUT.
@@ -193,6 +294,7 @@ OFLO        DAC     **      STACK OVERFLOW ROUTINE
 ****************************************
 * 
 * 
 ****************************************
 * 
 * 
+       SUBR    UFLO
 UFLO   DAC     **      STACK OVERFLOW ROUTINE
        LDA     UMSP    LOAD OVERFLOW MESSAGE POINTER
        JST     TYPE    TYPE IT OUT.
 UFLO   DAC     **      STACK OVERFLOW ROUTINE
        LDA     UMSP    LOAD OVERFLOW MESSAGE POINTER
        JST     TYPE    TYPE IT OUT.
@@ -204,6 +306,7 @@ UFLO        DAC     **      STACK OVERFLOW ROUTINE
 ****************************************
 * 
 * 
 ****************************************
 * 
 * 
+       SUBR    TYPE
 TYPE   DAC     **
        SKS     '104    TEST ASR READY
        JMP     *-1     WAIT TO BECOME READY
 TYPE   DAC     **
        SKS     '104    TEST ASR READY
        JMP     *-1     WAIT TO BECOME READY
@@ -231,22 +334,23 @@ TLOP      LDA*    PTR     TYPE LOOP
 * 
 ***** VARIABLES
 * 
 * 
 ***** VARIABLES
 * 
-SBUF   BSS     SSIZ    THE STACK BUFFER
-SPTR   DAC     SBUF    THE STACK POINTER
 * 
 PTR    DEC     0       TRANSFER POINTER TO USER BUFFERS
 CNT    DEC     0       TRANSFER COUNTER
 * 
 ATM1   DEC     0       A-REGISTER BACKUP
 ATM2   DEC     0       A-REGISTER BACKUP
 * 
 PTR    DEC     0       TRANSFER POINTER TO USER BUFFERS
 CNT    DEC     0       TRANSFER COUNTER
 * 
 ATM1   DEC     0       A-REGISTER BACKUP
 ATM2   DEC     0       A-REGISTER BACKUP
+XTM    DEC     0       X-REGISTER BACKUP
 * 
 * 
 ***** CONSTANTS
 * 
 * 
 ***** CONSTANTS
-* 
-CPTR   DAC     SBUF    STACK POINTER CONSTANT
-MAX    DAC     SBUF+SSIZ       FIRST ILLEGAL SPTR LOC BEFORE PUSH      
-MIN    DAC     SBUF            FIRST ILLEGAL SPTR LOC BEFORE POP  
 *
 *
+VARS   DEC     3       SIZE OF VARIABLES AT BEGINNING OF DATA
+* 
+SSIZ   EQU     0
+SPTR   EQU     1        
+FILL   EQU     2
+* 
 OMSP   DAC     OMSG            POINTER TO MESSAGE
 UMSP   DAC     UMSG            POINTER TO MESSAGE
 OMSG   OCT     '006412         CR/LF CHARACTERS
 OMSP   DAC     OMSG            POINTER TO MESSAGE
 UMSP   DAC     UMSG            POINTER TO MESSAGE
 OMSG   OCT     '006412         CR/LF CHARACTERS
index 905292e9a516869d28a0680d605c9719747c8ba0..0bc613a95199b6ddf29958cd0488a738e4bc9fc2 100644 (file)
@@ -2,11 +2,14 @@
  * 
  * LDC2 source code
  *
  * 
  * LDC2 source code
  *
- * $Date: 2007/12/23 15:25:11 $
+ * $Date: 2008/08/25 21:02:24 $
  * $Author: hachti $
  *
  * $Log: config.cpp,v $
  * $Author: hachti $
  *
  * $Log: config.cpp,v $
- * Revision 2.1  2007/12/23 15:25:11  hachti
+ * Revision 2.2  2008/08/25 21:02:24  hachti
+ * *** empty log message ***
+ *
+ * Revision 2.1  2007-12-23 15:25:11  hachti
  * *** empty log message ***
  *
  * Revision 2.0  2007-03-26 01:00:38  hachti
  * *** empty log message ***
  *
  * Revision 2.0  2007-03-26 01:00:38  hachti
@@ -24,6 +27,7 @@
 
 #include <stdio.h>
 #include <unistd.h>
 
 #include <stdio.h>
 #include <unistd.h>
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
index 98a377822a76a3116cf9cef65675bf3254ecfc38..f21de674ca791c2e7f03b97f85a82d05b2a85e78 100644 (file)
@@ -2,11 +2,14 @@
  * 
  * LDC2 source code
  *
  * 
  * LDC2 source code
  *
- * $Date: 2007/06/15 12:46:04 $
+ * $Date: 2008/08/25 21:02:24 $
  * $Author: hachti $
  *
  * $Log: configuration_manager.cpp,v $
  * $Author: hachti $
  *
  * $Log: configuration_manager.cpp,v $
- * Revision 2.2  2007/06/15 12:46:04  hachti
+ * Revision 2.3  2008/08/25 21:02:24  hachti
+ * *** empty log message ***
+ *
+ * Revision 2.2  2007-06-15 12:46:04  hachti
  * Some small changes in configuration_manager output - added (c/f) info.
  * Changed order in tool.hh:add_unique....
  *
  * Some small changes in configuration_manager output - added (c/f) info.
  * Changed order in tool.hh:add_unique....
  *
@@ -23,6 +26,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <fcntl.h>
+#include <string.h>
 
 #define MAX_LINE_LENGTH 80
 
 
 #define MAX_LINE_LENGTH 80
 
index d2270b68aaffdeeb5d8169b1582a714afb13d31d..352b47637a7b1bb6b1d6bbc71ee610a9fec35642 100644 (file)
@@ -2,11 +2,14 @@
  * 
  * LDC2 source code
  *
  * 
  * LDC2 source code
  *
- * $Date: 2007/05/30 02:51:16 $
+ * $Date: 2008/08/25 21:02:24 $
  * $Author: hachti $
  *
  * $Log: main.cpp,v $
  * $Author: hachti $
  *
  * $Log: main.cpp,v $
- * Revision 2.3  2007/05/30 02:51:16  hachti
+ * Revision 2.4  2008/08/25 21:02:24  hachti
+ * *** empty log message ***
+ *
+ * Revision 2.3  2007-05-30 02:51:16  hachti
  * Changed everything towards LDC2 use.
  * Worked on the buildlib.sh.
  * Centralized  buildlib.sh to a new lib/common directory.
  * Changed everything towards LDC2 use.
  * Worked on the buildlib.sh.
  * Centralized  buildlib.sh to a new lib/common directory.
@@ -26,6 +29,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
 
 #include <vector>
 #include <string>
 
 #include <vector>
 #include <string>
index d4dff8fbe8d9e42076e6fe3706945c518599158e..901a677701073ff86fbd844f5dd0c2a05061ca95 100644 (file)
@@ -1,29 +1,45 @@
 C PLOTTING MATRIX TEST!
 C
 C
 C PLOTTING MATRIX TEST!
 C
 C
-      INTEGER DD(100)
+C      INTEGER DD(100)
       INTEGER FF
 C
       INTEGER FF
 C
-      WRITE (1,100)
- 100  FORMAT (5HHALLO)
+C      WRITE (1,100)
+C 100  FORMAT (5HHALLO)
 C
 C
-      CALL PL$RST
-      CALL PL$IDN
+C      CALL PL$RST
 C
  
 C
  
+CCCCCC INITIALISE STACK
+      EXTERNAL MUH
 
 
-C      CALL BOX(0,0)
-      CALL PL$LN(0,0,0,100)
-      CALL PL$LN(50,0,50,100)
+      A=0.01
       
       
-      CALL PL$PU
-      CALL PL$MV(0,-120)
+      CALL S$INIT
+      CALL MUH
       CALL PL$RST
       CALL PL$RST
+      CALL PL$PUS
+
+      CALL PL$RMR(25,25)
       CALL PL$SCL(0.5)
       CALL PL$SCL(0.5)
-      CALL PL$LN(0,0,0,100)
-      CALL PL$LN(50,0,50,100)
-      CALL PL$LN(100,0,100,100)
-      CALL PL$PU
+      CALL PL$ROT(RAD(45))
+      CALL BOX(0,0)
+      
+      CALL PL$POP
+      CALL BOX(0,0)
+C      CALL PL$LN(0,0,0,100)
+C      CALL PL$LN(50,0,50,100)
+      
+      
+C      CALL PL$MV(-50,-100)
+
+C      CALL PL$RST
+C      CALL PL$SCL(0.5)
+C      CALL PL$LN(0,0,0,100)
+C      CALL PL$LN(50,0,50,100)
+C      CALL PL$LN(100,0,100,100)
+C      CALL PL$PU
       
 C      CALL PL$SCL(0.5)
 C      CALL BOX(0,0)
       
 C      CALL PL$SCL(0.5)
 C      CALL BOX(0,0)
@@ -46,7 +62,7 @@ C      CALL PL$MV(0,-100)
 C      CALL PL$RST
 
 C     ALL PL$PU
 C      CALL PL$RST
 
 C     ALL PL$PU
-      CALL PL$MV(0,0)
+C      CALL PL$MV(0,0)
 C      CALL PL$TXT(18HText auf der Linie,18)
 C      CALL PL$LN(0,16,18*8,16)
 C      CALL PL$LN(18*8,16,18*8,0)
 C      CALL PL$TXT(18HText auf der Linie,18)
 C      CALL PL$LN(0,16,18*8,16)
 C      CALL PL$LN(18*8,16,18*8,0)
@@ -57,12 +73,19 @@ C 2    CALL PL$MV (0,-70)
  9999 CALL REBOOT
 
  2000 END
  9999 CALL REBOOT
 
  2000 END
-      
+      SUBROUTINE MUH
+      WRITE (1,334)
+ 334  FORMAT(4HMUH!)
+      RETURN
+      END
+
+
       FUNCTION RAD(RIN)
       INTEGER RIN
       REAL RINF,ROUT
       REAL RAD,PI
       FUNCTION RAD(RIN)
       INTEGER RIN
       REAL RINF,ROUT
       REAL RAD,PI
-      PI=3.1416
+      PI=3.14159265
 
       RINF=RIN
       ROUT = (RINF/180.0)*PI
 
       RINF=RIN
       ROUT = (RINF/180.0)*PI
index 3d55f1487b58d0ba0d0a46861504c1dd1e0ff6ff..66433c3a5da3bdaae79202fb445a53d43af752f2 100644 (file)
@@ -2,6 +2,8 @@ C PLOTTER TEST PROGRAM
 C
 C
       CALL PL$RST
 C
 C
       CALL PL$RST
+      CALL PL$SCI(100)
+      CALL PL$ROI(30)
       CALL PL$PD
       CALL PL$MV(605,0)
       CALL PL$MV(605,95)
       CALL PL$PD
       CALL PL$MV(605,0)
       CALL PL$MV(605,95)