home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1985 February / Antic_Magazine_1985_02_Antic.atr / samhandl.asm < prev    next >
Assembly Source File  |  2023-02-26  |  3KB  |  1 lines

  1. 50       .OPT LIST¢60 ;EQUATES¢70 BUFFO =   $CB     ;BUFFER OFFSET IS A SAFE PAGE 0 LOCATION¢80 BUFF  =   $2014   ;LOCATION OF SAM BUFFER¢90 EOL   =   $9B     ;END OF LINE CHARACTER CODE¢0100 SAYIT = $200B   ;RECITER ENTRY POINT¢0110 HATABS = $031A  ;START OF HANDLER TABLE¢0120 ;THIS IS IT¢0130 ;INSTALLATION ROUTINE¢0140 ;LOCATED IN PAGE 6¢0150     *=  $0600¢0160 HANDLOAD¢0170     PLA         ;REMOVE UNUSED BASIC ARGUMENT¢0180     LDX #0      ;START AT THE BEGINNING¢0190     STX BUFFO   ;MARK BUFFER EMPTY¢0200 SEARCH¢0210     LDA HATABS,X ;CHECK DEVICE NAME¢0220     BEQ NOMORE  ;LAST ENTRY?¢0230     CMP #'V     ;IS HANDLER ALREADY INSTALLED?¢0240     BEQ END     ;YES, SO QUIT¢0250     INX ¢0260     INX ¢0270     INX         ;NEXT ENTRY¢0280     BNE SEARCH¢0290 NOMORE ;        LOAD HANDLER¢0300     LDA #'V     ;DEVICE NAME, "V:"(VOICE)¢0310     STA HATABS,X ;TO HANDLER TABLE¢0320     LDA # <SAMHAND ;LSB OF VECTOR ADDRESS¢0330     STA HATABS+1,X¢0340     LDA # >SAMHAND ;MSB OF VECTOR ADDRESS¢0350     STA HATABS+2,X¢0360     LDA #0¢0370     STA HATABS+3,X ;ENSURE CORRECT END OF TABLE¢0380 END RTS ¢0390 ;HANDLER TABLE UPDATED¢0400 ;IN ORDER TO USE, AFTER RESET SAY,¢0410 ;USE "A=USR(1536)"¢0420     .PAGE "THIS IS SAM HANDLER"¢0430 SAMHAND¢0440     .WORD VOPEN-1¢0450     .WORD VCLOSE-1¢0460     .WORD VGETB-1 ;IMPOSSIBLE, BUT A VECTOR IS REQUIRED¢0470     .WORD VPUTB-1¢0480     .WORD VSTATUS-1¢0490     .WORD VXIO-1¢0500     JMP VXIO    ;FOR SAFETY!¢0510 VXIO ;          ERROR IT¢0520 VGETB RTS       ;CANNOT BE DONE¢0530 VOPEN ;         DO NOTHING BUT TELL¢0540 VSTATUS ;       O.S. THAT EVERYTHING O.K.¢0550     LDY #1      ;IF THEY ARE CALLED¢0560     RTS         ;THEY SIGNAL SUCCESS!¢0570 VPUTB¢0580     PHA         ;SAVE DATA BYTE¢0590     LDA BUFFO¢0600     TAX         ;BUFFER OFFSET IN X¢0610     PLA ¢0620     CMP #EOL    ;IS IT AN END OF LINE¢0630     BNE NEXT    ;NO¢0640     LDA #'.     ;YES, SO SEND A¢0650     STA BUFF,X  ;PERIOD FOR INFLECTION¢0660     INX ¢0670     LDA #EOL    ;AND THEN SEND THE¢0680     STA BUFF,X  ;END OF LINE¢0690     JMP SPEAK   ;AND SAY IT¢0700     STA BUFF,X¢0710 NEXT CMP #',    ;IS IT A COMMA?¢0720     BNE NEXT1   ;NO¢0730     STA BUFF,X  ;YES SO SEND IT,¢0740     INX ¢0750     LDA #$20    ;AND A SPACE.¢0760 NEXT1 STA BUFF,X¢0770     INX ¢0780     TXA ¢0790     STA BUFFO   ;INCREMENT BUFFER OFFSET¢0800     CMP #$FE    ;BUFFER FULL?¢0810     BNE NOTFULL¢0820     LDA #EOL    ;BUFFER FULL SO SEND EOL¢0830     STA BUFF,X  ;TO BUFFER AND SAY IT.¢0840 SPEAK¢0850     JSR SAYIT¢0860     LDA #EOL¢0870     STA BUFF    ;EMPTY BUFFER¢0880     LDA #0¢0890     STA BUFFO   ;MARK BUFFER EMPTY¢0900 NOTFULL LDY $01 ;MARK SUCCESS¢0910     RTS ¢0920 ;AND THAT'S IT!¢0930 VCLOSE¢0940     LDA #EOL¢0950     STA BUFF,X¢0960     JSR SAYIT   ;ON CLOSE, SPEAK WHAT ID IN BUFFER¢0970     LDA #EOL¢0980     STA BUFF    ;EMPTY BUFFER¢0990     LDA #0¢1000     STA BUFFO   ;MARK BUFFER EMPTY¢1010     LDY #1      ;SIGNAL SUCCESS¢1020     RTS ¢