A large commit.
[pdp8.git] / sw / adventure / src / DROP.RA
diff --git a/sw/adventure/src/DROP.RA b/sw/adventure/src/DROP.RA
new file mode 100644 (file)
index 0000000..22e523e
--- /dev/null
@@ -0,0 +1,89 @@
+       SECT    DROP\r
+/       SUBROUTINE DROP(OBJECT,WHERE)\r
+/       C\r
+/       C PLACE AN OBJECT AT A GIVEN LOC, PREFIXING IT ONTO THE ATLOC LIST.\r
+/       C DECR HOLDNG IF THE OBJECT WAS BEING TOTED.\r
+/       C\r
+/       IMPLICIT INTEGER (A-Z)\r
+/       COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG\r
+/       DIMENSION ATLOC(150)\r
+/       DIMENSION LINK(200)\r
+/       DIMENSION PLACE(100)\r
+/       DIMENSION FIXED(100)\r
+\r
+       JA      #ST\r
+#XR,   ORG     .+10\r
+       TEXT    +DROP  +\r
+#RET,  SETX    #XR\r
+       SETB    #BASE\r
+       JA      .+3\r
+#BASE, ORG     .+6\r
+OBJECT,        ORG     .+3\r
+WHERE, ORG     .+3\r
+ONE,   F 1.0\r
+HUND,  F 100.0\r
+       ORG     #BASE+30\r
+       FNOP\r
+       JA      #RET\r
+       FNOP\r
+#GOBAK,        0;0\r
+       #LBL=.\r
+       COMMON  PLACOM\r
+ATLOC, ORG     .+702\r
+LINK,  ORG     .+1130\r
+PLACE, ORG     .+454\r
+FIXED, ORG     .+454\r
+HOLDNG,        ORG     .+3\r
+       ORG     #LBL\r
+#RTN,  BASE    #BASE\r
+       JA      #GOBAK\r
+#ST,   STARTD\r
+       0210\r
+       FSTA    #GOBAK,0\r
+       0200\r
+       SETX    #XR\r
+       SETB    #BASE\r
+       LDX     0,1\r
+       FSTA    #BASE\r
+       FLDA%   #BASE,1+\r
+       FSTA    OBJECT\r
+       FLDA%   #BASE,1+\r
+       FSTA    WHERE\r
+       STARTF\r
+       FLDA%   WHERE           /Pre-load index regs\r
+       ATX     6\r
+       FLDA%   OBJECT\r
+       ATX     7\r
+/       IF(OBJECT.GT.100)GOTO 1\r
+       FSUB    HUND\r
+       ATX     5               /Save object-100\r
+       JGT     #1\r
+/       IF(PLACE(OBJECT).EQ.-1)HOLDNG=HOLDNG-1\r
+       FLDA    ONE\r
+       FADD    PLACE-3,7\r
+       JNE     #G1\r
+       FLDA    HOLDNG\r
+       FSUB    ONE\r
+       FSTA    HOLDNG\r
+/       PLACE(OBJECT)=WHERE\r
+#G1,   FLDA%   WHERE\r
+       FSTA    PLACE-3,7\r
+/       GOTO 2\r
+       JA      #2\r
+\r
+/       1      FIXED(OBJECT-100)=WHERE\r
+#1,    FLDA%   WHERE\r
+       FSTA    FIXED-3,5\r
+\r
+/       2      IF(WHERE.LE.0)RETURN\r
+#2,    JLE     #RTN\r
+/       LINK(OBJECT)=ATLOC(WHERE)\r
+#G2,   FLDA    ATLOC-3,6\r
+       FSTA    LINK-3,7\r
+/       ATLOC(WHERE)=OBJECT\r
+       XTA     7\r
+       FSTA    ATLOC-3,6\r
+/       RETURN\r
+/       END\r
+       JA      #RTN\r
+       END\r