home *** CD-ROM | disk | FTP | other *** search
- OPT O+
-
- PRN EQU 10
-
- SECTION TEXT
-
- MOVE.L SP,A5
- MOVE.L 4(A5),A5
- MOVE.L $C(A5),D0
- ADD.L $14(A5),D0
- ADD.L $1C(A5),D0
- ADD.L #$100,D0
- MOVE.L D0,TAILLE_PRG
-
- PEA ALL
- MOVE.W #9,-(SP)
- TRAP #1
- ADDQ.L #6,SP
-
- CLR.L -(SP)
- MOVE.W #32,-(SP)
- TRAP #1
- ADDQ.L #6,SP
- MOVE.L D0,-(SP)
-
- BSR.S INSTALL_PRINTER
-
- MOVE.W #32,-(SP)
- TRAP #1
- ADDQ.L #6,SP
-
- CLR.W -(SP)
- MOVE.L TAILLE_PRG,-(SP)
- MOVE.W #$31,-(SP)
- TRAP #1
-
- *********************************
- *** DE TOURNEMENT DU COMPTEUR ***
- *********************************
- MY_TIMER:
- TST.W COMPTEUR2
- BEQ.S .CONT1
- SUBQ.W #1,COMPTEUR2
- BNE.S .CONT1
- BSR PRN_END
- .CONT1: JMP ([TIMER])
-
- *******************************************************************************
-
- *******************************
- *** INSTALLATION DU SPOOLER ***
- *******************************
-
- INSTALL_PRINTER:
- MOVE.W #$2700,SR
- MOVE.L $114.W,TIMER
- MOVE.L #MY_TIMER,$114.W
- MOVE.L $B4.W,EX_TRAP
- MOVE.L #MY_TRAP,$B4.W
- MOVE.W #$2300,SR
- RTS
-
- MY_TRAP: MOVE.L USP,A0
- BTST #5,(SP)
- BEQ.S .USER
- .SUPER: MOVE.L SP,A0
- ADDQ.W #8,A0
- .USER: *CMPI.L #$00080000,(A0)
- *BNE.S .NEXT
- *CLR.W D0
- *BTST #0,$FFFFFA01.W
- *BNE.S .CONT
- *NOT.W D0
- .CONT: *RTE
-
- .NEXT: CMPI.L #$00030000,(A0)
- BNE.S .CONT1
- BSR.S FILE
- RTE
-
- .CONT1: JMP ([EX_TRAP])
-
- FILE: MOVE.B 5(A0),D0
- MOVE.W #PRN*200,COMPTEUR2
- TST INT_PRINTER
- BNE.S .CONT
- BSR.S PRN_INIT
- .CONT: BSR WAIT_PRINTER
- BSR.S PRN_RUN
- RTS
-
- **************************************
- *** INITIALISATION DE L'IMPRIMANTE ***
- **************************************
- PRN_INIT: MOVE.L A0,-(SP)
- MOVE.L D0,-(SP)
- LEA $FFFF8800.W,A0
- * ON PREND L'ETAT DU REG 14
- MOVE.B #14,(A0)
- MOVE.B (A0),EX_REG14
- * ON PREND L'ETAT DU REG 7
- MOVE.B #7,(A0)
- MOVE.B (A0),D0
- MOVE.B D0,EX_REG7
- * CENTRONIC EN SORTIE
- OR.B #128,D0
- * ON BALANCE LE NOUVEAU REGISTRE 7
- MOVE.B D0,2(A0)
- * FIN SOUS IT
- MOVE.W #-1,INT_PRINTER
- MOVE.L (SP)+,D0
- MOVE.L (SP)+,A0
- RTS
-
- ***************************************
- *** ON ENVOIE UNE SÉRIE DE DONNÉES ***
- ***************************************
- PRN_RUN: LEA $FFFF8800.W,A0
- * ON BALANCE LA DONNÉE SUR LE PORT: REGISTRE 15
- MOVE.B #15,(A0)
- MOVE.B D0,2(A0)
- * ON PREND L'ETAT DU REG 14
- MOVE.B #14,(A0)
- MOVE.B (A0),D0
- * CENTRONIC EN SORTIE
- AND.B #223,D0
- * ON BALANCE LE NOUVEAU REGISTRE 14
- REPT 2
- MOVE.B D0,2(A0)
- ENDR
- * CENTRONIC EN SORTIE
- OR.B #32,D0
- * ON BALANCE LE NOUVEAU REGISTRE 14
- MOVE.B D0,2(A0)
- RTS
-
- ********************************
- *** ON RETABLIT L'IMPRIMANTE ***
- ********************************
- PRN_END: MOVE.L A0,-(SP)
- LEA $FFFF8800.W,A0
- * ON BALANCE L'ANCIEN REGISTRE 7
- MOVE.B #7,(A0)
- MOVE.B EX_REG7,2(A0)
- * ON BALANCE L'ANCIEN REGISTRE 14
- MOVE.B #14,(A0)
- MOVE.B EX_REG14,2(A0)
- * FIN
- CLR.W INT_PRINTER
- MOVE.L (SP)+,A0
- RTS
-
- **************************
- *** IMPRIMANTE PRETE ? ***
- **************************
- WAIT_PRINTER: BTST #0,$FFFFFA01.W
- BNE.S WAIT_PRINTER
- RTS
-
- ********************************************************************************
- SECTION DATA
- ********************************************************************************
- ALL: DC.B 27,"pSPEED PRINTER par Simon VOLANT (C)1995",27,"q",13,10,10,0
- EVEN
- ********************************************************************************
- SECTION BSS
- ********************************************************************************
-
- TAILLE_PRG: DS.L 1
-
- *************************
- *** DATA SCREEN SAVER ***
- *************************
- * COMPTEUR EN 1/200 DE SECONDE
- COMPTEUR2: DS.W 1
- * DETOURNEMENT DES VECTEURS
- TIMER: DS.L 1
- ***************
- *** PRINTER ***
- ***************
- * SAUVEGARDE DES REGISTRE
- EX_REG7: DS.B 1
- EX_REG14: DS.B 1
- EX_TIMER: DS.L 1
- EX_TRAP: DS.L 1
- * L'INTERRUPTION EST-ELLE VALIDE
- INT_PRINTER: DS.W 1
- END