/****** MULTI8 CARDREADER EMULATOR TASK /CREATED 7/13/76, CW /TWOPAGE EMULATOR FOR CARDREADER. ONE PAGE CODE, ONE PAGE /BUFFER. EMULATES THE FOLLOWING IOT'S: /6672 READ ONE CARD AND SKIP. IF CARDREADER NOT READY, / DON'T SKIP. ONE CARD IS READ INTO INTERNAL BUFFER. / /6671 SKIP WHEN BUFFER IS EMTIED, DON'T SKIP IF MORE CHAR / IN BUFFER. / /6631 SKIP IF DATA FLAG. PATCHED WITH A SKP. / /6632 ONE CHARACTER FROM THE BUFFER GOES INTO UAC. / *200 "C^100+"R&3777 /TASK NAME IS CR 401 /TWO PAGES, ONE CONNECT. CCRD, CRD /THE CARDREADER EVENT CRINT /INTERRUPT ENTRY POINT CRBUF, CRBBEG /BEGIN OF BUFFER 0 CR, CDF MONFLD /THERE ARE THE INTERRESTING THINGS SNA /DID HE QUIT ? JMP CRCLR /YES, RELEASE DEVICE TAD C3 /(UPC DCA CRUPC TAD CRUPC IAC JMS DEFER /GET HIS FIELDS AND C70 /INSTRUCTION FIELD TAD C6201 /MAKE A CDF DCA CRCDF ACM1 TAD I CRUPC /ADDRESS OF USERS INSTRUCTION DCA CRPNT TAD CRUPC TAD C2 DCA CRUAC /POINTER TO UAC TAD CRUAC IAC JMS DEFER /GET INSTRUCTION TAD (-6672 SNA /SELET CARDREADER ? JMP CRLEES /YES, READCARD TAD (6672-6671 SNA /SKIP IF DONE ? JMP CRDONE TAD (6671-6632 SNA /READ COLLUM ? JMP CRDAT TAD (6632-6631 SZA CLA /SKIP IF DATA READY? JMP CRRET /NEE NIKS DOEN JMS GELIJK /POINTERS GELIJK? SKP /NEE JMP CRRET /JA NIETS DOEN TAD CRPNT DCA CRTPNT /ADRES ONTHOUDEN TAD .-4 JMS CRCDF-1 DCA I CRPNT /PLAATS SKIP INSTRUKTIE CRSRET, CDF MONFLD ISZ I CRUPC /LET HIM SKIP CRRET, CLA CLL JMS MONITOR RETURN CRLEES, AC0001 /ENABLE INTERRUPTS 6635 6672 /SELECT CARDREADER JMP CRRET /NOT READY, RETURN CLA CLL DCA CRDOFL /CLEAR SOFTWARE DONE TAD CRBUF DCA CRADRI /INITIALISE INPUT POINTER TAD CRADRI DCA CRADRO /INITIALISE OUTPUT POINTER JMP CRSRET /NO, SKIP CRDAT, AC0001 TAD CRADRO AND C177 TAD CRBUF DCA CRADRO /BUMP WITH WRAP-AROUND FOR SAFETY CDTOIF //TO FIELD OF BUFFER TAD I CRADRO //GET NEXT CHAR CDF MONFLD DCA I CRUAC /DROP IN USERS AC JMS GELIJK /POINTERS GELIJK? JMP CRRET /NEE NIKS AAN DE HAND TAD CRINT JMS CRCDF-1 DCA I CRTPNT /HERSTEL INSTRUKTIE JMP CRRET CRDONE, JMS GELIJK JMP CRRET TAD CRDOFL SZA CLA /ECHT KLAAR? JMP CRSRET /JA JMP CRRET /NEE CRCLR, JMS MONITOR EXIT SWPOUT /INTERRUPT ROUTINES: CRINT, 6631 /DATA FALG UP ? JMP CREND /MUST BE END OF CARD AC0001 TAD CRADRI AND C177 TAD CRBUF DCA CRADRI /BUMP WITH WRAP AROUND FOR SAFETY 6632 /READ COLLUM ALFA, CLEARS FLAG DCA I CRADRI /PUT CHAR IN BUFFER INTEXT, CDF CIF MONFLD JMP I ZFSTEXT /INTERRUPT EXIT CREND, 6671 /DONE FLAG UP ? JMP INTEXT /GHOST INTERRUPT 6674 /CLEAR DONE FLAG CLA CMA DCA CRDOFL JMP INTEXT GELIJK, 0 TAD CRADRO CIA TAD CRADRI SNA CLA ISZ GELIJK JMP I GELIJK 0 /SUBROUTINE CRCDF, CDF JMP I CRCDF-1 CRUPC, 0 CRDOFL, 0 CRTPNT, 0 CRUAC, 0 CRPNT, 0 CRADRI, 0 CRADRO, 0 PAGE CRBBEG, ZBLOCK 200