***************** LCD-DISPLAY MET EVM-BOARD ************************* **************** START-ADRES OP $D000 ******************************* ************ **************************** ************************** ************** REGISTERS WORDEN NIET VERANDERD DOOR DEZE ROUTINE **** ************************************************************************ ******* AANROEP: FUNCTIE-NR. IN REGISTER A EN/OF B ** JSR LCD ******* FUNCTIE-NR IN ACCU B=$FF ** TEKST AFDRUKKEN ** REGISTER X=STARTADRES STRING (EOT=EINDE STRING) ******* FUNCTIE-NR IN ACCU B=$00 ** INITIALISATIE EN CLEAR SCREEN EN CURSUR HOME ******* FUNCTIE-NR IN ACCU B=$0X EN ACCU A=$XX ** CURSOR-POSITIE SETTEN : ** ACCU B BEVAT GEWENSTE REGELNR (01 T/M 04 OF $01 T/M $04) ** ACCU A BEVAT GEWENSTE KOLOMNR (01 T/M 20 OF $01 T/M $14) ******* FUNCTIE-NR IN ACCU B=$05 ** CURSOR-POSITIE OPVRAGEN: ** NA UITVOERING VAN ROUTINE ** ACCU B BEVAT REGELNR (01 T/M 04 OF $01 T/M $04) ** ACCU A BEVAT KOLOMNR (01 T/M 20 OF $01 T/M $14) ******* FUNCTIE-NAMEN LCD_INIT EQU $00 LCD_ASK_POS EQU $05 LCD_STRING EQU $FF ******* ENKELE ASCII-CODES EOT EQU $04 ; EINDE-TEKST TEKEN VOOR STRING-FUNCTIE RETURN EQU $0D ;+LF ************* EINDE GEBRUIKERS INFORMATIE *************************** *********************************************************************** *********************************************************************** *********************************************************************** ******* REGELNR'S BIJ INPUT-FUNCTIE INP_LN_1 EQU $01 ; REGEL 1 BIJ INVOER IN ACCU B INP_LN_2 EQU $02 ; REGEL 2 BIJ INVOER IN ACCU B INP_LN_3 EQU $03 ; REGEL 3 BIJ INVOER IN ACCU B INP_LN_4 EQU $04 ; REGEL 4 BIJ INVOER IN ACCU B ******* INTERNE REGELNUMMEREING LCD-DISPLAY LN_1 EQU $00 ; POSITIE EERSTE KARAKTER OP REGEL 1 LN_2 EQU $40 ; POSITIE EERSTE KARAKTER OP REGEL 2 LN_3 EQU $14 ; POSITIE EERSTE KARAKTER OP REGEL 3 LN_4 EQU $54 ; POSITIE EERSTE KARAKTER OP REGEL 4 MAX EQU $13 ; MAXIMUM AANTAL KAR. OP EEN REGEL ******* FUNCTIES LCD-DISPLAY FN_SET EQU $3F ; DATA-LEN=8 , DUTY CYCLE 1/16 ; 5*7 ENTRY_MS EQU $06 ; INCR , NO DP-SHIFT DP_CLEAR EQU $01 ; DP_ON EQU $0F ; DISPLAY ON,CURSOR ON EN BLINKING WR_POS EQU $80 ; MSB VAN LCD-CONTR-REG MOET HOOG ZIJN ; BIJ HET POSITIONEREN VAN DE CURSOR ******* ADRESSEN 68HC11-PROCESSOR DP_REG EQU $2000 DP_RAM EQU $3000 ***************************************************************************** ***************************************************************************** ***************************************************************************** ORG $D000 LCD EQU * PSHY ;Y GEBRUIKEN ALS TELLER PSHA ;A BEWAREN CMPB #LCD_STRING ;STRING MODE BEQ X_SCHRIJF CMPB #LCD_INIT BEQ INIT_DP ;INITIALISATIE CMPB #LCD_ASK_POS BEQ LEES_POS ;LEES POSITIE CMPB #INP_LN_4 ;ZET POSITIE BHI DP_REST ;BEREIK IN B $01 T/M $04 CMPB #INP_LN_1 ;VOOR REGELNR 1 T/M 4 BHS SCHRIJF_POS DP_REST JSR B_SCHRIJF ;KARAKTER IN B BRA STOP STOP PULA ;A TERUGHALEN PULY ;Y ,, RTS INIT_DP LDAB #FN_SET JSR WRITE_REG JSR WRITE_REG LDAB #DP_ON JSR WRITE_REG LDAB #ENTRY_MS JSR WRITE_REG LDAB #DP_CLEAR JSR WRITE_REG BRA STOP LEES_POS JSR POSITIE ;LEVERT POSITIE IN ACCU A IN HEX JSR HEX_2_LN_KM ;VAN HEX NAAR LN-NR IN B EN KOLOMNR IN A. TSY ;ACCU A WORDT BIJ HET VERLATEN VAN DE STAA 0,Y ;DISPLAY-ROUTINE VAN DE STACK GEHAALD. BRA STOP ;KOLOM-NR IN ACCU B SCHRIJF_POS JSR LN_KM_2_HEX ;INVOER IS POSITIE IN ACCCU A IN LN EN KOLOM JSR POS_CORR ;UITVOER ,, ,, ,, ,, A IN HEX BRA STOP X_SCHRIJF LDAB 0,X ;karakter inlezen mbv X-register CMPB #EOT ;einde tekst , geen activiteit BNE X_AFH LDAB #LCD_STRING ;HERSTEL ACCU B BRA STOP ;EINDE INVOER X_AFH JSR B_SCHR ;AFHANDELING IDENTIEK AAN INVOER INX ;VIA ACCU B BRA X_SCHRIJF ; B_SCHRIJF CMPB #EOT ;EINDE TEKST , GEEN ACTIVITEIT BNE B_SCHR RTS B_SCHR CMPB #RETURN ;INVOER EEN CARRIAGE-RETURN(LF) BNE BVERVOLG JSR C_RETURN RTS BVERVOLG JSR WRITE_RAM ;KARAKTER IN B JSR POSITIE ;INDIEN TGV EEN SCHRIJF-ACTIE DE JSR POS_N_REGEL ;CURSOR OP 'VERKEERDE' NIEUWE REGEL RTS ;KOMT, MOET DEZE AANGEPAST WORDEN C_RETURN JSR POSITIE ;IDEM BIJ EEN JSR CR_AANPAS RTS POS_N_REGEL CMPA #LN_3 ;EVENTUELE CORRECTIE VAN REGEL-NR NA BEQ LINE_2 ;EEN SCHRIJF-ACTIE CMPA #LN_2 ;ACCU A BEVAT DE POSITIE BEQ LINE_4 ;REGEL1=>EIND +1 ==>REGEL3 = REGEL2 CMPA #LN_4 ;REGEL2=>EIND +1 ==>REGEL4 = REGEL3 BEQ LINE_3 ;REGEL3=>EIND +1 ==>REGEL2 = REGEL4 CMPA #LN_1 ;REGEL4=>EIND +1 ==>REGEL1 = REGEL1+ BEQ LINE_1 ;+CLEAR-DISPLAY RTS CR_AANPAS CMPA #LN_1+MAX ;AANPASSEN REGELNR. NA EEN BLS LINE_2 ;ZIE HIERBOVEN CMPA #LN_3+MAX BLS LINE_4 CMPA #LN_2+MAX BLS LINE_3 CMPA #LN_4+MAX BLS LINE_1 LINE_1 LDAA #DP_CLEAR ;BIJ ROUTINE 'POS-CORR' SUBA #WR_POS ;WORDT #WR_POS OPGETELD BRA POS_CORR ;MOET NIET BIJ EEN DISPLAY-CLEAR LINE_2 LDAA #LN_2 BRA POS_CORR LINE_3 LDAA #LN_3 BRA POS_CORR LINE_4 LDAA #LN_4 BRA POS_CORR POS_CORR PSHB ;EVENTUEEL KARAKTER IN B BEWAREN TAB ;INFO VAN A => B ADDB #WR_POS ;MSB MOET HOOG ZIJN BIJ SETTEN POSITIE JSR WRITE_REG PULB RTS HEX_2_LN_KM CMPA #LN_1+MAX ;VAN HEX NAAR LN-NR IN B EN KOLOMNR IN A. LIJN_1 BHI LIJN_3 LDAB #1 BRA HEX_END LIJN_3 CMPA #LN_3+MAX BHI LIJN_2 LDAB #3 SUBA #LN_3 BRA HEX_END LIJN_2 CMPA #LN_2+MAX BHI LIJN_4 LDAB #2 SUBA #LN_2 BRA HEX_END LIJN_4 LDAB #4 SUBA #LN_4 HEX_END INCA ;KOLOMNR VAN 1 T/M 20 IPV $0 T/M $13 RTS LN_KM_2_HEX CMPA #0 ;KOLOMNR MOET GROTER DAN 0 ZIJN BEQ INV_LN_1 ;VEILIGHEIDSHALVE CMPA #MAX+1 ;KOLOMNR NIET GROTER DAN 20 BLS KM_GOED LDAA #1 ;VEILIGHEIDSHALVE KM_GOED DECA ;KOLOMNR INTERN VAN $0 T/M $13 INV_LN_1 CMPB #INP_LN_1 BEQ LN_END ;LN_1=$0 ,GEEN OPTELLING INV_LN_2 CMPB #INP_LN_2 BNE INV_LN_3 ADDA #LN_2 ;LN_2=$40 BRA LN_END INV_LN_3 CMPB #INP_LN_3 BNE INV_LN_4 ADDA #LN_3 ;LN_3=$14 BRA LN_END INV_LN_4 ADDA #LN_4 ;LN_4=$54 ;BLIJFT ALLEEN REGEL4 OVER LN_END RTS WRITE_REG STAB DP_REG JSR LUS_5MS ;ZONDER DEZE LUS DISPLAY 'WISSELVALLIG' RTS WRITE_RAM STAB DP_RAM JSR LUS_5MS ;ZONDER DEZE LUS DISPLAY 'WISSELVALLIG' RTS POSITIE LDY #2 ;MINIMAAL 2* LEZEN VGL DOCUMENTATIE ? BUSY LDAA DP_REG ;BUSY-VLAG/POSITIE LEZEN BMI BUSY ;BUSY IS MSB HOOG DEY BNE BUSY RTS LUS_5MS LDY #$800 ; 2K * 3 MICRO-SEC LUS_AGAIN DEY ; zonder deze lus is het display BNE LUS_AGAIN ; 'wisselvallig',dwz letters worden RTS ; af en toe weergegeven