00000000: 2A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |*---------------|
00000010: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |----------------|
00000020: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 2A A0 69 4E 50 |----------.*.iNP|
00000030: 55 54 A0 52 4F 55 54 49 4E 45 2E A0 A0 67 45 54 |UT.ROUTINE...gET|
00000040: 53 A0 49 4E 50 55 54 A0 46 52 4F 4D A0 43 55 52 |S.INPUT.FROM.CUR|
00000050: 52 45 4E 54 0D 2A A0 49 4E 50 55 54 A0 44 45 56 |RENT.*.INPUT.DEV|
00000060: 49 43 45 A0 28 55 53 55 41 4C 4C 59 A0 54 48 45 |ICE.(USUALLY.THE|
00000070: A0 4B 45 59 42 4F 41 52 44 29 A0 41 4E 44 0D 2A |.KEYBOARD).AND.*|
00000080: A0 53 54 4F 52 45 53 A0 49 54 A0 41 54 A0 5D 32 |.STORES.IT.AT.]2|
00000090: 2E A0 A0 69 4E 50 55 54 A0 49 53 A0 54 45 52 4D |...iNPUT.IS.TERM|
000000A0: 49 4E 41 54 45 44 0D 2A A0 42 59 A0 41 A0 63 72 |INATED.*.BY.A.cr|
000000B0: A0 41 4E 44 A0 43 41 4E A0 42 45 A0 41 54 A0 4D |.AND.CAN.BE.AT.M|
000000C0: 4F 53 54 A0 5D 31 A0 43 48 41 52 41 43 54 45 52 |OST.]1.CHARACTER|
000000D0: 53 0D 2A A0 4C 4F 4E 47 A0 28 32 35 36 A0 43 48 |S.*.LONG.(256.CH|
000000E0: 41 52 41 43 54 45 52 53 A0 49 46 A0 5D 31 3D 30 |ARACTERS.IF.]1=0|
000000F0: 29 2E A0 A0 69 46 A0 54 48 45 0D 2A A0 55 53 55 |)...iF.THE.*.USU|
00000100: 41 4C A0 49 4E 50 55 54 A0 42 55 46 46 45 52 A0 |AL.INPUT.BUFFER.|
00000110: 24 32 30 30 A0 49 53 A0 55 53 45 44 A0 46 4F 52 |$200.IS.USED.FOR|
00000120: A0 5D 32 0D 2A A0 54 48 45 4E A0 5D 31 A0 4D 55 |.]2.*.THEN.]1.MU|
00000130: 53 54 A0 42 45 A0 41 54 A0 4D 4F 53 54 A0 24 35 |ST.BE.AT.MOST.$5|
00000140: 38 2E 0D 2A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |8..*------------|
00000150: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |----------------|
00000160: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 |-------------.. |
00000170: 64 6F 20 5D 32 2D 24 32 30 30 0D 20 65 72 72 20 |do ]2-$200. err |
00000180: 5D 31 2F 24 31 30 30 20 3B 6D 55 53 54 A0 42 45 |]1/$100 ;mUST.BE|
00000190: A0 4F 4E 45 A0 42 59 54 45 0D 20 65 6C 73 65 20 |.ONE.BYTE. else |
000001A0: 3B 69 46 A0 55 53 49 4E 47 A0 55 53 55 41 4C A0 |;iF.USING.USUAL.|
000001B0: 49 4E 50 55 54 A0 42 55 46 46 45 52 0D 20 65 72 |INPUT.BUFFER. er|
000001C0: 72 20 5D 31 2D 31 2F 24 35 38 20 3B A0 54 48 45 |r ]1-1/$58 ;.THE|
000001D0: 4E A0 4C 45 4E 47 54 48 A0 3C A0 24 35 39 0D 20 |N.LENGTH.<.$59. |
000001E0: 66 69 6E 0D 0D 69 6E 70 75 74 20 6C 64 79 20 23 |fin..input ldy #|
000001F0: 2D 31 0D 6E 78 63 68 72 20 69 6E 79 0D 20 6A 73 |-1.nxchr iny. js|
00000200: 72 20 63 68 72 69 6E 20 3B 24 66 66 63 66 0D 20 |r chrin ;$ffcf. |
00000210: 73 74 61 20 5D 32 2C 79 0D 20 63 6D 70 20 23 24 |sta ]2,y. cmp #$|
00000220: 64 20 3B 69 4E 50 55 54 A0 44 4F 4E 45 3F 0D 0D |d ;iNPUT.DONE?..|
00000230: 20 64 6F 20 5D 31 0D 0D 20 62 65 71 20 62 61 63 | do ]1.. beq bac|
00000240: 6B 20 3B 65 58 49 54 A0 49 46 A0 53 4F 0D 20 63 |k ;eXIT.IF.SO. c|
00000250: 70 79 20 23 5D 31 20 3B 6C 49 4E 45 A0 54 4F 4F |py #]1 ;lINE.TOO|
00000260: A0 4C 4F 4E 47 A0 46 4F 52 A0 42 55 46 46 45 52 |.LONG.FOR.BUFFER|
00000270: 3F 0D 20 62 6C 74 20 6E 78 63 68 72 20 3B 6C 4F |?. blt nxchr ;lO|
00000280: 4F 50 A0 49 46 A0 4E 4F 54 0D 20 64 65 79 20 3B |OP.IF.NOT. dey ;|
00000290: 64 49 53 41 4C 4C 4F 57 A0 54 48 49 53 A0 43 48 |dISALLOW.THIS.CH|
000002A0: 52 0D 20 62 67 65 20 6E 78 63 68 72 20 3B 61 4C |R. bge nxchr ;aL|
000002B0: 57 41 59 53 A0 54 41 4B 45 4E 0D 0D 20 65 6C 73 |WAYS.TAKEN.. els|
000002C0: 65 0D 20 62 6E 65 20 6E 78 63 68 72 20 3B 62 52 |e. bne nxchr ;bR|
000002D0: 41 4E 43 48 A0 49 46 A0 4E 4F 54 A0 44 4F 4E 45 |ANCH.IF.NOT.DONE|
000002E0: 0D 20 66 69 6E 0D 0D 62 61 63 6B 20 72 74 73 0D |. fin..back rts.|
*---------------------------------------
--.* INPUT ROUTINE. GETS INPUT FROM CUR
RENT.* INPUT DEVICE (USUALLY THE KEYBOAR
D) AND.* STORES IT AT ]2. INPUT IS TERM
INATED.* BY A CR AND CAN BE AT MOST ]1 C
HARACTERS.* LONG (256 CHARACTERS IF ]1=0
). IF THE.* USUAL INPUT BUFFER $200 IS
USED FOR ]2.* THEN ]1 MUST BE AT MOST $5
8..*------------------------------------
-----.. DO ]2-$200. ERR ]1/$100 ;MUST BE
ONE BYTE. ELSE ;IF USING USUAL INPUT BU
FFER. ERR ]1-1/$58 ; THEN LENGTH < $59.
FIN..INPUT LDY #-1.NXCHR INY. JSR CHRIN
;$FFCF. STA ]2,Y. CMP #$D ;INPUT DONE?..
DO ]1.. BEQ BACK ;EXIT IF SO. CPY #]1 ;
LINE TOO LONG FOR BUFFER?. BLT NXCHR ;LO
OP IF NOT. DEY ;DISALLOW THIS CHR. BGE N
XCHR ;ALWAYS TAKEN.. ELSE. BNE NXCHR ;BR
ANCH IF NOT DONE. FIN..BACK RTS.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL