( Instructions de gestion de la deuxieme UART du 68681. Version 1.50 du 18 Septembre 2011. Ecrit par jpb.forth . ) TELECHARGEMENT HEX FORGET RS232B_RECEIVE_FILE ( Definition des files de transmission. ) INTERRUPT_VECTORS 1410+ CONSTANT RS232B_RECEIVE_FILE ( 260 Octets ) INTERRUPT_VECTORS 1514+ CONSTANT RS232B_TRANSMIT_FILE ( 260 Octets ) ( Programme de gestion des interruptions de l'UART. ) HERE ] 68681_ISR C@ DUP 20 AND IF ( Reception UARTB ) BEGIN RS232B_RECEIVE_FILE DUP @ 1+ FF AND OVER 2+ @ OVER = IF DROP DROP 2 68681_CRB C! 68681_RHRB C@ DROP -1 ELSE 68681_RHRB C@ 3 PICK DUP @ + 4+ C! SWAP ! 68681_ISR C@ 20 AND 0= THEN UNTIL THEN 10 AND IF ( Emission UARTB ) RS232B_TRANSMIT_FILE DUP 2+ @ OVER @ OVER = IF DROP DROP 8 68681_CRB C! ELSE OVER + 4+ C@ >R 2+ DUP @ 1+ FF AND SWAP ! R> 68681_RHRB C! THEN THEN EXIT [ CONSTANT RS232B_IT ( Routine d'initialisation de l'interface RS232B : ----------------------------------------------- vitesse,nbbits,nbstop,parite,rts/cts RS232B_INIT - vitesse : vitesse de transmission en nombre de bits par seconde nbbits : nombre de bits des mots { 5,6,7 ou 8 } nbstop : nombre de bits de stop { 1 ou 2 } parite : 0 pour pas de parite 1 pour parite forcee a "0" 2 pour parite impaire 3 pour parite paire 4 pour parite forcee a "1" rts/cts : different de 0 si controle de flux materiel ) DECIMAL : RS232B_INIT RS232B_IT 68681_IT+ 2! T_SUSPEND DUP @ >R >R -1 R@ ! COPIE_IMR @ 207 AND DUP COPIE_IMR ! 68681_ISR C! 0 RS232B_RECEIVE_FILE 2! 0 RS232B_TRANSMIT_FILE 2! 42 68681_CRB DUP >R C! 58 R@ C! 26 R> C! >R ?DUP IF 1- ?DUP IF 1- ?DUP IF 1- ?DUP IF 1- IF 0 ELSE 6 THEN ELSE 0 THEN ELSE 4 THEN ELSE 8 THEN ELSE 16 THEN ROT DUP 4 > OVER 9 < AND IF 5- ELSE DROP 3 THEN + R@ 0= NOT 128 AND OR 68681_MRB C! DUP 0> OVER 3 < AND NOT IF DROP 1 THEN 3 LSH 1- R> 0= NOT 16 AND OR 68681_MRB C! 68681_TABLE BEGIN OVER OVER @ > IF 2+ @ -1 ELSE 4+ 0 THEN UNTIL 68681_SRB C! DROP 9 68681_CRB C! 2 68681_SOPBC C! COPIE_IMR @ 48 OR DUP COPIE_IMR ! 68681_ISR C! R> R> SWAP ! ; ( Routine d'emission d'un octet : ------------------------------- octet RS232B_EMET - ) HEX : RS232B_EMET RS232B_TRANSMIT_FILE DUP @ 1+ FF AND BEGIN OVER 2+ @ OVER - IF -1 ELSE 4 68681_CRB C! 0 [ 4E722000 2, ( STOP #$2000 ) ] THEN UNTIL ROT 3 PICK DUP @ + 4+ C! SWAP ! 4 68681_CRB C! ; ( Routine de reception d'un octet : --------------------------------- - RS232B_RECOIT octet ) HEX : RS232B_RECOIT RS232B_RECEIVE_FILE DUP 2+ @ BEGIN OVER @ OVER = WHILE [ 4E722000 2, ( STOP #$2000 ) ] REPEAT OVER + 4+ C@ >R 2+ DUP @ 1+ FF AND SWAP ! R> 1 68681_CRB C! ; DECIMAL ( FIN )