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