A large commit.
[pdp8.git] / sw / src / mandel_screen / PCHAR.RA
diff --git a/sw/src/mandel_screen/PCHAR.RA b/sw/src/mandel_screen/PCHAR.RA
new file mode 100644 (file)
index 0000000..5e0b76f
--- /dev/null
@@ -0,0 +1,127 @@
+       FIELD1  PCHAR\r
+       JA      #ST     / JUMP TO FPP ROUTINE'S START\r
+       TEXT    +PCHAR +\r
+\r
+       EXTERN  #RETRN          / NEEDED FOR TRAP3 RETURN\r
+       EXTERN  ONQI            / FIDDLE SOMETHING INTO SKIP CHAIN\r
+       EXTERN  #DISMS          / DISMISS JUMP LIST\r
+       EXTERN  #HANG           / HANG ROUTINE\r
+\r
+       TOCHR=4         / LOCATION OF TTY STATUS WORD\r
+                       / POSITIVE=CHARACTER IN QUEUE\r
+                       / NEGATIVE=BUSY\r
+                       / ZERO=IDLE\r
+\r
+       TCF=6042        / CLEAR TELEPRINTER FLAG\r
+       TSF=6041        / TEST TELEPRINTER FLAG\r
+\r
+/ **************************************************************\r
+/ PDP-8 CODE\r
+\r
+PC8,   CLA CLL\r
+       \r
+       CDF     0       \r
+SWAIT, CLA CLL         / WAIT FOR SYSTEM TO BE DONE WITH TTY\r
+       TAD%    PTOCHR  / TELEPRINTER STATUS\r
+       SZA\r
+       JMP     SWAIT   / KEEP ON WAITING\r
+       CDF     10      / BACK TO DATA FIELD 1\r
+\r
+       TAD     FIRST   / FIRST CALL?\r
+       SZA     \r
+       JMP     NOTFST\r
+       \r
+       ISZ     FIRST\r
+\r
+       JMS%    PONQI+1 / REGISTER OUR ROUTINE TO SKIP CHAIN\r
+       TSF             / SKIP TO BE USED\r
+       ADDR    HANDLE  / POINTER TO OUR HANDLER        \r
+       \r
+       TAD     DISMIS+1        / SET UP TO CALL HANG\r
+       DCA     HLOC\r
+               \r
+       \r
+NOTFST,        IOF             / THIS SHOULD BE DONE WITHOUT INTERRUPT!\r
+       \r
+       TAD     CHAR    / LOAD CHARACTER TO PRINT\r
+       TLS             / AND PRINT IT\r
+       \r
+       ISZ     ACTIVE  / ENABLE OUR INT HANDLER\r
+\r
+       CIF     0       / #HANG IS IN FIELD 0\r
+       JMS%    HANG+1\r
+HLOC,  0               / LOCATION WHERE #HANG COUPLES INTO\r
+\r
+       ION             / INTERRUPT BACK ON\r
+               \r
+       CIF CDF 0\r
+       JMP%    RET+1   / GO HOME TO FPP LAND\r
+\r
+/***************\r
+\r
+HANDLE,        0               / OUR INTERRUPT HANDLER, CALLED FROM FIELD 1\r
+       CLA CLL\r
+       TAD     ACTIVE\r
+       SNA             / ACTIVE FLAG?\r
+       JMP%    HANDLE  / NOT ACTIVE, LEAVE INTERRUPT UNPROCESSED\r
+       CLA\r
+       DCA     ACTIVE  / NOW INACTIVE\r
+       TCF             / CLEAR TTY FLAG\r
+       CIF CDF 0\r
+       JMP%    DISMIS+1        / INT PROCESSED\r
+\r
+/***************\r
+\r
+\r
+RET,   ADDR    #RETRN\r
+PONQI, ADDR    ONQI    / PUT SOMETHING ONTO SKIP CHAIN\r
+HANG,  ADDR    #HANG\r
+DISMIS,        ADDR    #DISMS\r
+\r
+PTOCHR,        TOCHR\r
+FIRST, 0               / FLAG FOR INITAL SETUP\r
+ACTIVE,        0               / FLAG TO INACTIVATE INT HANDLER\r
+#CHAR, 0;0             / HERE GOES THE 3-WORD FROM FPP\r
+CHAR,  0               / THAT'S WHAT WE PRINT\r
+\r
+\r
+\r
+/ **************************************************************\r
+/ FPP-12 CODE\r
+\r
+       BASE 0                  / STAY ON THE CALLER'S BASE\r
+#PCBAS,        ORG     .+3             / OUR BASE PAGE \r
+#PTR,  ORG     .+3             / POINTER\r
+#ARGP1,        ORG     .+3\r
+#XR,   ORG     .+10            / INDEX REGISTERS\r
+\r
+#ST,                           / START OF FPP ROUTINE\r
+       STARTD                  / 24 BIT DATA ONLY\r
+\r
+       0210    /FLDA   30      / GET RETURN JA\r
+       FSTA#   #GOBAK          / PUT TO RETURN LOCATION\r
+\r
+       0200    /FLDA   0       / JA AROUND ARGUMENTS\r
+\r
+       BASE    #PCBAS\r
+       SETX    #XR             / USE OWN INDEX REGISTERS\r
+       SETB    #PCBAS          / OUR BASE\r
+\r
+       FSTA    #PTR            / TO POINTER\r
+       \r
+       LDX     0,1             / 0 TO INDEX REG 1\r
+\r
+       FLDA%   #PTR,1+         / LOAD FROM (#PTR)+INDEX1 \r
+       FSTA    #ARGP1          / FIRST ARGUMENT POINTER\r
+\r
+       STARTF                  / BACK TO FLOATING POINT MODE\r
+       FLDA%   #ARGP1          / LOAD THE ACTUAL ARGUMENT TO FAC.\r
+       ALN     0               / MAKE INTEGER OF IT\r
+       FSTA    CHAR            / STORE INTO PDP-8 ROUTINE'S BUFFER\r
+\r
+       TRAP3   PC8             / FIRE UP PDP-8\r
+       \r
+       STARTF                  / BACK TO 3-WORD MODE (STILL NEEDED?)\r
+#GOBAK,        0;0                     / RETURN JUMP (FILLED IN ABOVE) \r
+\r
+       END\r