*---------------------------------------------------------------------------- * BUFFER-DEMO *---------------------------------------------------------------------------- * Akties t.b.v. invoermechanisme: *---------------------------------------------------------------------------- * * Basispointer = X * * Offset-pointer = B waarde bewaren in: IN_PTR * * Haal data voor buffer * * Berg data op in 0,(X + B) * * IN_PTR := IN_PTR + 1 * * IN_PTR := IN_PTR MOD 16 * * Vergelijk IN_PTR met OUT_PTR * * Als IN_PTR = OUT_PTR dan geldt: buffer is vol * * Berg IN_PTR op. * * LEEG-vlag := $FF ( niet leeg ) * *---------------------------------------------------------------------------- ORG $0000 IN_PTR RMB 1 OUT_PTR RMB 1 VOL RMB 1 LEEG RMB 1 BUFFER RMB 16 *---------------------------------------------------------------------------- ORG $E000 INIT_BUF PSHA CLR IN_PTR CLR OUT_PTR CLR LEEG ; buffer is leeg LDAA #$FF STAA VOL ; buffer is niet vol PULA RTS *---------------------------------------------------------------------------- * invoeren van CHAR's in buffer BUF_IN PSHA PSHB PSHX LDX #BUFFER LDAB IN_PTR ABX LDAA ...... ; invoer STAA 0,X INCB ANDB #%00001111 ; B MOD 16 CMPB OUT_PTR BNE L00 CLR VOL ; buffer is vol L00 STAB IN_PTR LDAA #$FF STAA LEEG ; buffer is niet leeg PULX PULB PULA RTS *---------------------------------------------------------------------------- * uitlezen van CHAR's uit buffer BUF_OUT PSHA PSHB PSHX .... .... ; programma analoog .... ; aan BUF_IN .... PULX PULB PULA RTS *----------------------------------------------------------------------------