Professional Documents
Culture Documents
INC LIST BASE DS.L 2 LINESYNCH EQU 4 Q1STORAGE DS.L 1 WHERELEDS DC.L LEDSAT XREF STESTON,PTESTON,ISITOK,READEXIT,TSTR1D,TSTR2D,TSTSTP,TSTNUL NOLIST * * * ENTRY PARI0D READ PAR - UPPER WORD IS HS, LOWER WORD IS DATA * ENTRY PARI1D READ PAR, TIME OUT AFTER 10mS * ENTRY PARIAD,PARI2D TIME OUT AFTER 100mS * * *********************** FRAME ASYNCHRONOUS PAR READING * frame SYNCRONIZATION is IGNORED, PAR is read til array is full ******************************************************** * THESE STUFF INTEGER*4 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY TAREID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY RAREID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit15(frame synch), bit14 (ext. event), bits13-0 data * high word is handshake status - bit 13,5 = running, bit 9,1 = prog. accepted * ENTRY TARNID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY RARNID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF INTEGER*2 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FAREID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IAREID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit15(frame synch), bit14 (ext. event), bits13-0 data * ENTRY FARNID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IARNID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF INTEGER*1 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FAREI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IAREI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bits7-0 data (INT*1 UNSIGNED!!) * ENTRY FARNI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IARNI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF 7 bit DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FAREI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IAREI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit7 = 0, bits6-0 data (INT*1 SIGNED, positive only) * ENTRY FARNI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IARNI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF 6 bit DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FAREI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IAREI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bits7-6 = 0, bits5-0 data (INT*1 SIGNED, positive only)
* ENTRY FARNI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IARNI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * *********************** FRAME SYNCHRONOUS PAR READING * frame SYNCHRONIZATION is MADE, PAR is read til ONE FULL FRAME IS READ ******************************************************** * THESE STUFF INTEGER*4 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY TSREID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY RSREID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit15(frame synch), bit14 (ext. event), bits13-0 data * high word is handshake status - bit 13,5 = running, bit 9,1 = prog. accepted * ENTRY TSRNID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY RSRNID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF INTEGER*2 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FSREID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISREID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit15(frame synch), bit14 (ext. event), bits13-0 data * ENTRY FSRNID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISRNID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF INTEGER*1 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FSREI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISREI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bits7-0 data (INT*1 UNSIGNED!!) * ENTRY FSRNI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISRNI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF 7 bit DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FSREI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISREI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit7 = 0, bits6-0 data (INT*1 SIGNED, positive only) * ENTRY FSRNI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISRNI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF 6 bit DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FSREI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISREI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bits7-6 = 0, bits5-0 data (INT*1 SIGNED, positive only) * ENTRY FSRNI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY ISRNI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * *********************** EXTERNAL EVENT SYNCHRONOUS PAR READING * EXTERNAL event SYNCHRONIZATION is MADE, PAR is read til ONE FULL FRAME IS READ ******************************************************** * THESE STUFF INTEGER*2 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FXREID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXREID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit15(frame synch), bit14 (ext. event), bits13-0 data * ENTRY FXRNID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXRNID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF INTEGER*1 DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FXREI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXREI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bits7-0 data (INT*1 UNSIGNED!!) * ENTRY FXRNI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXRNI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect]
* * THESE STUFF 7 bit DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FXREI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXREI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bit7 = 0, bits6-0 data (INT*1 SIGNED, positive only) * ENTRY FXRNI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXRNI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * * THESE STUFF 6 bit DATA INTO ARRAY, WILL START PAR RUNNING IF NOT ALREADY * ENTRY FXREI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXREI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * NO PAR START, data = bits7-6 = 0, bits5-0 data (INT*1 SIGNED, positive only) * ENTRY FXRNI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH * ENTRY IXRNI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH [indirect] * ***********PAREIDS LIST NOPAGE XDEF PARI0D PARI0D EQU * LEA SENPPBASE,A0 REIDPAR0 RTS * XDEF PARI1D PARI1D EQU * LEA SENPPBASE,A0 REIDPAR1 RTS * XDEF PARIAD,PARI2D PARIAD EQU * PARI2D EQU * LEA SENPPBASE,A0 REIDPAR2 RTS * ********QQQQQQQQQQQQQQQQ XDEF FAREID,GITPAR FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH GITPAR EQU * MOVEA.L 4(A7),A0 MOVE.L (A0),D0 ADD.L D0,(A0) FAREID EQU * MOVE.L 8(A7),D0 BRA.S INTOFAREID ENTRY IAREID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IAREID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFAREID XDEF FARNID FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FARNID EQU * MOVE.L 8(A7),D0 BRA.S INTOFARNID XDEF IARNID FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IARNID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFARNID
XDEF FARZID FIRST FARZID EQU * MOVE.L 8(A7),D0 BRA.S INTOFARZID XDEF IARZID FIRST IARZID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFARZID INTOFAREID EQU * JSR STISTON BRA.S INT0FARNID INTOFARNID EQU * JSR ISITIK INT0FARNID EQU * INTOFARZID EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #2,D6 LEA.L SENPPBASE,A0 FREADFRAME EQU * FOR.L D5 = #0 TO D6 BY #2 DO.S REIDPAR0 0 MOVE.W D0,0(A3,D5.L) ENDF JMP.L REIDEXIT * ENTRY FSRNID FIRST FSRNID EQU * MOVE.L 8(A7),D0 BRA.S INTOFSRNID ENTRY ISRNID FIRST ISRNID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFSRNID XDEF FSRZID FIRST FSRZID EQU * MOVE.L 8(A7),D0 BRA.S INTOFSRZID XDEF ISRZID FIRST ISRZID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFSRZID ENTRY FSREID FIRST FSREID EQU * MOVE.L 8(A7),D0 BRA.S INTOFSREID ENTRY ISREID FIRST ISREID EQU * MOVEA.L 8(A7),A0
MOVE.L (A0),D0 INTOFSREID EQU * JSR STISTON BRA.S INT0FSRNID INTOFSRNID EQU * JSR ISITIK INT0FSRNID EQU * INTOFSRZID EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #2,D6 LEA.L SENPPBASE,A0 FSLOOPQQQQ EQU * WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOPQQQQ MOVE.B #CLED2ON,(A6) FSLOOPXQXQ EQU * FOR.L D5 = #0 TO D6 BY #2 DO.S REIDPAR0 0 MOVE.W D0,0(A3,D5.L) BTST #15,D0 BNE.S FSOUTQQQQ ENDF FSOUTQQQQ EQU * TST.L D5 BEQ.S FSLOOPXQXQ MOVE.L D5,(A4) JMP.L REIDEXIT * * ENTRY TARNID FIRST TARNID EQU * MOVE.L 8(A7),D0 BRA.S INTOTARNID ENTRY RARNID FIRST RARNID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOTARNID XDEF TARZID FIRST TARZID EQU * MOVE.L 8(A7),D0 BRA.S INTOTARZID XDEF RARZID FIRST RARZID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOTARZID ENTRY TAREID FIRST TAREID EQU * MOVE.L 8(A7),D0
BRA.S INTOTAREID ENTRY RAREID FIRST RAREID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INTOTAREID EQU * JSR STISTON BRA.S INT0TARNID INTOTARNID EQU * JSR ISITIK INT0TARNID EQU * INTOTARZID EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #4,D6 LEA.L SENPPBASE,A0 TREADFRAME EQU * FOR.L D5 = #0 TO D6 BY #4 DO.S REIDPAR0 0,32 MOVE.L D0,0(A3,D5.L) ENDF JMP.L REIDEXIT * ENTRY TSRNID FIRST TSRNID EQU * MOVE.L 8(A7),D0 BRA.S INTOTSRNID ENTRY RSRNID FIRST RSRNID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOTSRNID XDEF TSRZID FIRST TSRZID EQU * MOVE.L 8(A7),D0 BRA.S INTOTSRZID XDEF RSRZID FIRST RSRZID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOTSRZID ENTRY TSREID FIRST TSREID EQU * MOVE.L 8(A7),D0 BRA.S INTOTSREID ENTRY RSREID FIRST RSREID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INTOTSREID EQU * JSR STISTON BRA.S INT0TSRNID
INTOTSRNID EQU * JSR ISITIK INT0TSRNID EQU * INTOTSRZID EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #4,D6 LEA.L SENPPBASE,A0 TSLOOPQQQQ EQU * WAITPAR3 0 BTST #7,(A0) BNE.S TSLOOPQQQQ MOVE.B #CLED2ON,(A6) TSLOOPXQXQ EQU * FOR.L D5 = #0 TO D6 BY #4 DO.S REIDPAR0 0,32 MOVE.L D0,0(A3,D5.L) BTST #15,D0 BNE.S TSOUTQQQQ ENDF TSOUTQQQQ EQU * TST.L D5 BEQ.S TSLOOPXQXQ MOVE.L D5,(A4) JMP.L REIDEXIT * * ENTRY FXRNID FIRST FXRNID EQU * MOVE.L 8(A7),D0 BRA.S INTOFXRNID ENTRY IXRNID FIRST IXRNID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFXRNID XDEF FXRZID FIRST FXRZID EQU * MOVE.L 8(A7),D0 BRA.S INTOFXRZID XDEF IXRZID FIRST IXRZID EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INTOFXRZID ENTRY FXREID FIRST FXREID EQU * MOVE.L 8(A7),D0 BRA.S INTOFXREID ENTRY IXREID FIRST IXREID EQU * MOVEA.L 8(A7),A0
MOVE.L (A0),D0 INTOFXREID EQU * JSR STISTON BRA.S INT0FXRNID INTOFXRNID EQU * JSR ISITIK INT0FXRNID EQU * INTOFXRZID EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #2,D6 LEA.L SENPPBASE,A0 MOVE.L D6,D5 SYNCHRONIZE TO PAR CONTROLLER FRAMING FSLOOPXXXX EQU * PAR FRAME SYNCHRONIZATION LOOP WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOPXXXX FSL00PXXXX EQU * WAITPAR3 0 BTST #7,(A0) BEQ.S FSL00PXXXX MOVE.B #CLED2ON,(A6) * FIND FRAME LENGTH (IF LESS THAN BUFFER LENGTH) FOR.L D6 = #2 TO D5 BY #2 DO.S REIDPAR0 0 BTST #15,D0 BNE.S ESLOOPWW ENDF SUBQ.L #2,D6 ESLOOPWW ADDQ.L #2,D6 MOVE.L D6,(A4) MOVE.B #CLEDSON,(A6) MOVE.B #CLBDSON,(A6) ESLOOPXXXX EQU * EXTERNAL EVENT SYNCHRONIZATION LOOP REIDPAR0 0 BTST #15,D0 BNE.S ESLOOPXXXX MOVE.W D0,(A3) FOR.L D5 = #2 TO D6 BY #2 DO.S REIDPAR0 0 MOVE.W D0,0(A3,D5.L) BTST #14,D0 BNE.S ESOVERQQQQ ENDF JMP.S ESLOOPXXXX ESOVERQQQQ EQU * ADDQ.L #2,D5 MOVE.B #$0EC,(A6) * HAVE FOUND EXTERNAL EVENT -- READ BALANCE ON CURRENT FRAME FOR.L D4 = D5 TO D6 BY #2 DO.S
REIDPAR0 0 MOVE.W D0,0(A3,D4.L) ENDF * READ NEXT FRAME UP TO POINT WHERE EXTERNAL EVENT HAD BEEN FOUND ESOUTQQQQ EQU * REIDPAR0 0 BTST #15,D0 BNE.S ESOUTQQQQ MOVE.W D0,(A3) SUBQ.L #4,D5 FOR.L D4 = #2 TO D5 BY #2 DO.S REIDPAR0 0 MOVE.W D0,0(A3,D4.L) ENDF JMP.L REIDEXIT * * ENTRY FARNI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FARNI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FARNI8 ENTRY IARNI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IARNI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT8FARNI8 XDEF FARZI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FARZI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FARZI8 XDEF IARZI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IARZI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT8FARZI8 ENTRY FAREI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FAREI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FAREI8 ENTRY IAREI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IAREI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT8FAREI8 EQU * JSR STISTON BRA.S INT8FARZI8 INT8FARNI8 EQU * JSR ISITIK INT8FARZI8 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 SUBQ.L #1,D6 LEA.L SENPPBASE,A0
FOR.L D5 = #0 TO D6 BY #1 DO.S REI8PAR0 0 MOVE.B D0,0(A3,D5.L) ENDF JMP.L REIDEXIT * ENTRY FSRNI8 FIRST FSRNI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FSRNI8 ENTRY ISRNI8 FIRST ISRNI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT8FSRNI8 XDEF FSRZI8 FIRST FSRZI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FSRZI8 XDEF ISRZI8 FIRST ISRZI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT8FSRZI8 ENTRY FSREI8 FIRST FSREI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FSREI8 ENTRY ISREI8 FIRST ISREI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT8FSREI8 EQU * JSR STISTON BRA.S INT8FSRZI8 INT8FSRNI8 EQU * JSR ISITIK INT8FSRZI8 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 FSLOOP8QQQ EQU * REIDPAR0 0 BTST #15,D0 BEQ.S FSLOOP8QQQ MOVE.B #CLED2ON,(A6) FREA8FRAME EQU * FOR.L D5 = #0 TO D6 BY #1 DO.S REI8PAR0 0 MOVE.B D0,0(A3,D5.L) ARG IS BUFFER ADDR, SECOND HAS LENGTH
BTST #15,D0 BNE.S FSOUT8QQQ ENDF FSOUT8QQQ EQU * TST.L D5 BEQ.S FREA8FRAME MOVE.L D5,(A4) JMP.L REIDEXIT * * ENTRY FXRNI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FXRNI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FXRNI8 ENTRY IXRNI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IXRNI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT8FXRNI8 XDEF FXRZI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FXRZI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FXRZI8 XDEF IXRZI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IXRZI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT8FXRZI8 ENTRY FXREI8 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FXREI8 EQU * MOVE.L 8(A7),D0 BRA.S INT8FXREI8 ENTRY IXREI8 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IXREI8 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT8FXREI8 EQU * JSR STISTON BRA.S INT8FXRZI8 INT8FXRNI8 EQU * JSR ISITIK INT8FXRZI8 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 MOVE.L D6,D5 SYNCHRONIZE TO PAR CONTROLLER FRAMING FSLOOP8XXX EQU * PAR FRAME SYNCHRONIZATION LOOP WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOP8XXX FSL00P8XXX EQU * WAITPAR3 0
BTST #7,(A0) BEQ.S FSL00P8XXX MOVE.B #CLED2ON,(A6) * FIND FRAME LENGTH (IF LESS THAN BUFFER LENGTH) FOR.L D6 = #0 TO D5 BY #1 DO.S WAITPAR3 0 BTST #7,(A0) BEQ.S ESLOOP8W ENDF SUBQ.L #1,D6 ESLOOP8W ADDQ.L #1,D6 MOVE.L D6,(A4) MOVE.B #CLEDSON,(A6) MOVE.B #CLBDSON,(A6) ESLOOP8XXX EQU * EXTERNAL EVENT SYNCHRONIZATION LOOP REI8PAR0 0 BTST #7,(A0) BNE.S ESLOOP8XXX MOVE.B D0,(A3) FOR.L D5 = #1 TO D6 BY #1 DO.S REI8PAR0 0 MOVE.B D0,0(A3,D5.L) BTST #6,(A0) BEQ.S ESOVER8QQQQ ENDF JMP.S ESLOOP8XXXX ESOVER8QQQ EQU * ADDQ.L #1,D5 MOVE.B #$0EC,(A6) * HAVE FOUND EXTERNAL EVENT -- REA8 BALANCE ON CURRENT FRAME FOR.L D4 = D5 TO D6 BY #1 DO.S REI8PAR0 0 MOVE.B D0,0(A3,D4.L) ENDF * REA8 NEXT FRAME UP TO POINT WHERE EXTERNAL EVENT HAD BEEN FOUND ESOUT8XXX EQU * REI8PAR0 0 BTST #7,(A0) BEQ.S ESOUT8XXX MOVE.B D0,(A3) SUBQ.L #2,D5 FOR.L D4 = #1 TO D5 BY #1 DO.S REI8PAR0 0 MOVE.B D0,0(A3,D4.L) ENDF JMP.L REIDEXIT * * ENTRY FARNI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FARNI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FARNI7 ENTRY IARNI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IARNI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0
BRA.S INT7FARNI7 XDEF FARZI7 FIRST FARZI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FARZI7 XDEF IARZI7 FIRST IARZI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT7FARZI7 ENTRY FAREI7 FIRST FAREI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FAREI7 ENTRY IAREI7 FIRST IAREI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT7FAREI7 EQU * JSR STISTON BRA.S INT7FARZI7 INT7FARNI7 EQU * JSR ISITIK INT7FARZI7 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 FREA7FRAME EQU * FOR.L D5 = #0 TO D6 BY #1 DO.S REI7PAR0 0 MOVE.B D0,0(A3,D5.L) ENDF JMP.L REIDEXIT * ENTRY FSRNI7 FIRST FSRNI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FSRNI7 ENTRY ISRNI7 FIRST ISRNI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT7FSRNI7 XDEF FSRZI7 FIRST FSRZI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FSRZI7 XDEF ISRZI7 FIRST ISRZI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0
BRA.S INT7FSRZI7 ENTRY FSREI7 FIRST FSREI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FSREI7 ENTRY ISREI7 FIRST ISREI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT7FSREI7 EQU * JSR STISTON BRA.S INT7FSRZI7 INT7FSRNI7 EQU * JSR ISITIK INT7FSRZI7 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 FSLOOP7QQQ EQU * WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOP7QQQ MOVE.B #CLED2ON,(A6) FSL7XQXQ EQU * FOR.L D5 = #0 TO D6 BY #1 DO.S REI7PAR0 0 MOVE.B D0,0(A3,D5.L) BTST #15,D0 BNE.S FSOUT7QQQ ENDF FSOUT7QQQ EQU * TST.L D5 BEQ.S FSL7XQXQ MOVE.L D5,(A4) JMP.L REIDEXIT * * ENTRY FXRNI7 FIRST FXRNI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FXRNI7 ENTRY IXRNI7 FIRST IXRNI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT7FXRNI7 XDEF FXRZI7 FIRST FXRZI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FXRZI7 XDEF IXRZI7 FIRST
IXRZI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT7FXRZI7 ENTRY FXREI7 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FXREI7 EQU * MOVE.L 8(A7),D0 BRA.S INT7FXREI7 ENTRY IXREI7 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IXREI7 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT7FXREI7 EQU * JSR STISTON BRA.S INT7FXRZI7 INT7FXRNI7 EQU * JSR ISITIK INT7FXRZI7 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 MOVE.L D6,D5 SYNCHRONIZE TO PAR CONTROLLER FRAMING FSLOOP7XXX EQU * PAR FRAME SYNCHRONIZATION LOOP WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOP7XXX FSL00P7XXX EQU * WAITPAR3 0 BTST #7,(A0) BEQ.S FSL00P7XXX MOVE.B #CLED2ON,(A6) * FIND FRAME LENGTH (IF LESS THAN BUFFER LENGTH) FOR.L D6 = #0 TO D5 BY #1 DO.S WAITPAR3 0 BTST #7,(A0) BEQ.S ESLOOP7W ENDF SUBQ.L #1,D6 ESLOOP7W ADDQ.L #1,D6 MOVE.L D6,(A4) MOVE.B #CLEDSON,(A6) MOVE.B #CLBDSON,(A6) ESLOOP7XXX EQU * EXTERNAL EVENT SYNCHRONIZATION LOOP REI7PAR0 0 BTST #7,(A0) BEQ.S ESLOOP7XXX MOVE.B D0,(A3) FOR.L D5 = #1 TO D6 BY #1 DO.S REI7PAR0 0 MOVE.B D0,0(A3,D5.L)
BTST #6,(A0) BEQ.S ESOVER7QQQQ ENDF JMP.S ESLOOP7XXXX ESOVER7QQQ EQU * ADDQ.L #1,D5 MOVE.B #$0EC,(A6) * HAVE FOUND EXTERNAL EVENT -- REA7 BALANCE ON CURRENT FRAME FOR.L D4 = D5 TO D6 BY #1 DO.S REI7PAR0 0 MOVE.B D0,0(A3,D4.L) ENDF * REA7 NEXT FRAME UP TO POINT WHERE EXTERNAL EVENT HAD BEEN FOUND ESOUT7XXX EQU * REI7PAR0 0 BTST #7,(A0) BEQ.S ESOUT7XXXX MOVE.B D0,(A3) SUBQ.L #2,D5 FOR.L D4 = #1 TO D5 BY #1 DO.S REI7PAR0 0 MOVE.B D0,0(A3,D4.L) ENDF JMP.L REIDEXIT * * ENTRY FARNI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FARNI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FARNI6 ENTRY IARNI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IARNI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT6FARNI6 XDEF FARZI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FARZI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FARZI6 XDEF IARZI6 FIRST SRG HAS BUFFER ADDR, SECOND HAS LENGTH IARZI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT6FARZI6 ENTRY FAREI6 FIRST ARG IS BUFFER ADDR, SECOND HAS LENGTH FAREI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FAREI6 ENTRY IAREI6 FIRST ARG HAS BUFFER ADDR, SECOND HAS LENGTH IAREI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT6FAREI6 EQU * JSR STISTON BRA.S INT6FARZI6 INT6FARNI6 EQU * JSR ISITIK INT6FARZI6 EQU *
MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 FREA6FRAME EQU * FOR.L D5 = #0 TO D6 BY #1 DO.S REI6PAR0 0 MOVE.B D0,0(A3,D5.L) ENDF JMP.L REIDEXIT * ENTRY FSRNI6 FIRST FSRNI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FSRNI6 ENTRY ISRNI6 FIRST ISRNI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT6FSRNI6 XDEF FSRZI6 FIRST FSRZI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FSRZI6 XDEF ISRZI6 FIRST ISRZI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT6FSRZI6 ENTRY FSREI6 FIRST FSREI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FSREI6 ENTRY ISREI6 FIRST ISREI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT6FSREI6 EQU * JSR STISTON BRA.S INT6FSRZI6 INT6FSRNI6 EQU * JSR ISITIK INT6FSRZI6 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6) MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4
SUBQ.L #1,D6 LEA.L SENPPBASE,A0 FSLOOP6QQQ EQU * WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOP6QQQ MOVE.B #CLED2ON,(A6) FSL6XQXQ EQU * FOR.L D5 = #0 TO D6 BY #1 DO.S REI6PAR0 0 MOVE.B D0,0(A3,D5.L) BTST #15,D0 BNE.S FSOUT6QQQ ENDF FSOUT6QQQ EQU * TST.L D5 BEQ.S FSL6XQXQ MOVE.L D5,(A4) JMP.L REIDEXIT * * ENTRY FXRNI6 FIRST FXRNI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FXRNI6 ENTRY IXRNI6 FIRST IXRNI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT6FXRNI6 XDEF FXRZI6 FIRST FXRZI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FXRZI6 XDEF IXRZI6 FIRST IXRZI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 BRA.S INT6FXRZI6 ENTRY FXREI6 FIRST FXREI6 EQU * MOVE.L 8(A7),D0 BRA.S INT6FXREI6 ENTRY IXREI6 FIRST IXREI6 EQU * MOVEA.L 8(A7),A0 MOVE.L (A0),D0 INT6FXREI6 EQU * JSR STISTON BRA.S INT6FXRZI6 INT6FXRNI6 EQU * JSR ISITIK INT6FXRZI6 EQU * MOVEA.L 4(A7),A0 SAVREG PERILOUSGARD INTROFF MOVEA.L WHERELEDS(PC),A6 MOVE.B #CLED1ON,(A6)
MOVEA.L D0,A3 MOVE.L (A0),D6 MOVEA.L A0,A4 SUBQ.L #1,D6 LEA.L SENPPBASE,A0 MOVE.L D6,D5 SYNCHRONIZE TO PAR CONTROLLER FRAMING FSLOOP6XXX EQU * PAR FRAME SYNCHRONIZATION LOOP WAITPAR3 0 BTST #7,(A0) BNE.S FSLOOP6XXX FSL00P6XXX EQU * WAITPAR3 0 BTST #7,(A0) BEQ.S FSL00P6XXX MOVE.B #CLED2ON,(A6) * FIND FRAME LENGTH (IF LESS THAN BUFFER LENGTH) FOR.L D6 = #1 TO D5 BY #1 DO.S WAITPAR3 0 BTST #7,(A0) BEQ.S ESLOOP6W ENDF SUBQ.L #1,D6 ESLOOP6W ADDQ.L #1,D6 MOVE.L D6,(A4) MOVE.B #CLEDSON,(A6) MOVE.B #CLBDSON,(A6) ESLOOP6XXX EQU * EXTERNAL EVENT SYNCHRONIZATION LOOP REI6PAR0 0 BTST #7,(A0) BEQ.S ESLOOP6XXX MOVE.B D0,(A3) FOR.L D5 = #1 TO D6 BY #1 DO.S REI6PAR0 0 MOVE.B D0,0(A3,D5.L) BTST #6,(A0) BEQ.S ESOVER6QQQQ ENDF JMP.S ESLOOP6XXXX ESOVER6QQQ EQU * ADDQ.L #1,D5 MOVE.B #$0EC,(A6) * HAVE FOUND EXTERNAL EVENT -- REA6 BALANCE ON CURRENT FRAME FOR.L D4 = D5 TO D6 BY #1 DO.S REI6PAR0 0 MOVE.B D0,0(A3,D4.L) ENDF * REA6 NEXT FRAME UP TO POINT WHERE EXTERNAL EVENT HAD BEEN FOUND ESOUT6XXX EQU * REI6PAR0 0 BTST #7,(A0) BEQ.S ESOUT6XXX MOVE.B D0,(A3) SUBQ.L #2,D5 FOR.L D4 = #1 TO D5 BY #1 DO.S REI6PAR0 0 MOVE.B D0,0(A3,D4.L)
ENDF REIDEXIT EQU * JMP.L READEXIT * INTRON * MOVE.B CABEEP,(A6) * TRAP #$B * RSTREG * FNRET 2 * * STAPARO EQU * XDEF STAPARO PERILOUSGARD LEA.L -800(A7),A0 MOVE.L #152,D1 LEA.L SENPPBASE,A1 FOR.L D2 = #0 TO D1 BY DO.S MOVE.W 4(A1),D0 SWAP D0 MOVE.W 4(A1),D0 ANDI.L #STAMSKL,D0 MOVE.L D0,0(A0,D2.L) MOVE.B D2,D0 ANDI.B #$3F,D0 BNE.S BNOTDO MOVE.W (A1),D0 MOVE.W #0,2(A1) BNOTDO EQU * ENDF FOR.L D2 = #4 TO D1 BY DO.S MOVE.W 0(A0,D2.L),D0 CMPI.W #NOCONN,D0 BNE.S HAVECONN ENDF MOVEQ.L #4,D0 RTS HAVECONN EQU * FOR.L D2 = #4 TO D1 BY DO.S MOVE.W 0(A0,D2.L),D0 CMPI.W #READY,D0 BNE.S HAVEPOWER ENDF MOVEQ.L #2,D0 RTS HAVEPOWER EQU * FOR.L D2 = #4 TO D1 BY DO.S MOVE.W 0(A0,D2.L),D0 CMPI.W #BTHPEND,D0 BEQ.S BOTHPEND CMPI.W #REAPEND,D0 BEQ.S READPEND ENDF MOVEQ.L #7,D0 RTS BOTHPEND EQU * READPEND EQU *
#4
#2
#2
#2
FOR.L D2 = D2 TO D1 BY #2 DO.S MOVE.W 0(A0,D2.L),D0 CMPI.W #READY,D0 BEQ.S RUNNING CMPI.W #WRIPEND,D0 BEQ.S RUNNING ENDF MOVEQ.L #1,D0 RTS RUNNING MOVEQ.L #0,D0 RTS * * STISTON EQU * XDEF STISTON * XREF STESTON JMP STESTON * PTISTON EQU * XDEF PTISTON * XREF PTESTON JMP PTESTON * ISITIK EQU * XDEF ISITIK * XREF ISITOK JMP ISITOK END