
 1000  *---------------------------------
 1010  *      FAST INPUT STRING ROUTINE
 1020  *      &GET <STRING VARIABLE>
 1030  *      ACCEPTS ANY CHARACTER, UNLIKE NORMAL INPUT
 1040  *---------------------------------
 1050  AMPERSAND.VECTOR    .EQ $3F5
 1060  LENGTH .EQ $9D
 1070  SYNTAX.ERROR .EQ $DEC9
 1080  PTRGET .EQ $DFE3
 1090  GETSPA .EQ $E452
 1100  MOVSTR .EQ $E5E2
 1110  *---------------------------------
 1120  MON.PROMPT .EQ $33
 1130  MON.RDLINE .EQ $FD6F
 1140  *---------------------------------
 1150         .OR $300
 1160         LDA #$4C     JUMP INSTRUCTION
 1170         STA AMPERSAND.VECTOR
 1180         LDA #GET
 1190         STA AMPERSAND.VECTOR+1
 1200         LDA /GET
 1210         STA AMPERSAND.VECTOR+2
 1220         RTS
 1230  *---------------------------------
 1240  GET    CMP #$BE     GET TOKEN
 1250         BEQ .1       YES
 1260         JMP SYNTAX.ERROR
 1270  .1     JSR $B1
 1280         JSR PTRGET   GET STRING DESCRIPTOR
 1290         LDA MON.PROMPT
 1300         PHA
 1310         LDA #$87     BELL FOR PROMPT
 1320         STA MON.PROMPT
 1330         JSR MON.RDLINE   INPUT A LINE
 1340         PLA
 1350         STA MON.PROMPT
 1360         STX LENGTH   SAVE LENGTH
 1370         TXA
 1380         JSR GETSPA   GET SPACE IN STRING AREA
 1390         LDY #0       MOVE DATA INTO VARIABLE
 1400         STA ($83),Y  LENGTH
 1410         LDA $71
 1420         INY
 1430         STA ($83),Y  LO-BYTE OF ADDRESS
 1440         LDA $72
 1450         INY
 1460         STA ($83),Y  HI-BYTE OF ADDRESS
 1470         LDY /$200    SET UP TO COPY STRING DATA
 1480         LDX #$200    INTO STRING AREA
 1490         LDA LENGTH
 1500         JMP MOVSTR   COPY IT NOW

