JOYSTK.ASM

              01352 * JOYSTK
A9C8 BDB710   01353 JOYSTK  JSR     >LB70E  EVALUATE JOYSTICK ARGUMENT
A9CB C103     01354         CMPB    #3      TWO JOYSTICKS MAXIMUM (HOR & VER FOR EACH)
A9CD 10220A7B 01355         LBHI    LB44A   ‘ILLEGAL FUNCTION CALL’ IF >3
A9D1 5D       01356         TSTB            SET FLAGS
A9D2 2602     01357         BNE     LA9D4   GET NEW DATA ONLY IF JOYSTK(0)
A9D4 8D0A     01358         BSR     GETJOY  GET NEW DATA FOR ALL JOYSTICKS
A9D6 8E015A   01359 LA9D4   LDX     #POTVAL POINT X TO JOYSTICK DATA BUFFER
A9D9 D653     01360         LDB     FPA0+3  WHICH JOYSTICK DID YOU WANT?
A9DB E685     01361         LDB     B,X     PUT ITS DATA INTO ACCB
A9DD 7EB4F5   01362         JMP     >LB4F3  CONVERT ACCB INTO FLOATING POINT NUMBER
              01363 *       
              01364 * JOYSTK DATA AT:
              01365 * $15A $15B $15C $15D
              01366 * LEFT LEFT RIGHT RIGHT
              01367 * VERT HORIZ VERT HORIZ
              01368 ** THIS IS A 6 BIT SOFTWARE A/D CONVERSION ROUTINE 
A9E0 8D94     01369 GETJOY  BSR     LA974   TURN OFF AUDIO
A9E2 8E015E   01370         LDX     #POTVAL+4       POINT X TO JOYSTICK DATA BUFFER
A9E5 C603     01371         LDB     #3      GET FOUR SETS OF DATA (4 JOYSTICKS)
A9E7 860A     01372 LA9E5   LDA     #10     10 TRIES TO GET STABLE READING 
A9E9 EDE3     01373         STD     ,--S    STORE JOYSTICK NUMBER AND TRY NUMBER ON THE STACK
A9EB 8DB7     01374         BSR     LA9A2   SET THE SELECT INPUTS ON ANALOG MULTIPLEXER
A9ED CC4080   01375 LA9EB   LDD     #$4080  ACCA IS A SHIFT COUNTER OF HOW MANY BITS TO CONVERT 
              01376 * AND WIlL BE $40 (6 BITS) FOR THE COLOR
              01377 * COMPUTER. ACCB CONTAINS A VALUE EQUAL TO 1/2
              01378 * THE CURRENT TRIAL DIFFERENCE. INITIALLY =$80 (2.5 VOLTS). 
A9F0 A7E2     01379 LA9EE   STA     ,-S     TEMP STORE SHIFT COUNTER ON STACK
A9F2 CA02     01380         ORB     #2      KEEP RS 232 SERIAL OUT MARKING 
A9F4 F7FF20   01381         STB     DA      STORE IN D/A CONVERTER
A9F7 C802     01382         EORB    #2      PUT R5232 OUTPUT BIT BACK TO ZERO 
A9F9 B6FF00   01383         LDA     PIA0    HIGH BIT IS FROM COMPARATOR
A9FC 2B03     01384         BMI     LA9FF   BRANCH IF COMPARATOR OUTPUT IS HIGH 
A9FE E0E4     01385         SUBB    ,S      SUBTRACT 1/2 THE CURRENT TRIAL DIFFERENCE
AA00 8C       01386         FCB     SKP2    SKIP NEXT TWO BYTES
AA01 EBE4     01387 LA9FF   ADDB    ,S      ADD 1/2 OF THE CURRENT TRIAL DIFFERENCE
AA03 A6E0     01388         LDA     ,S+     PULL SHIFT COUNTER OFF THE STACK
AA05 44       01389         LSRA    SHIFT   IT RIGHT ONCE
AA06 8101     01390         CMPA    #1      HAVE ALL THE SHIFTS BEEN DONE?
AA08 26E6     01391         BNE     LA9EE   NO
AA0A 54       01392         LSRB    YES     - THE DATA IS IN THE TOP 6 BYTES OF ACCB 
AA0B 54       01393         LSRB    PUT     IT INTO THE BOTTOM SIX
AA0C E11F     01394         CMPB    -1,X    IS THIS VALUE EQUAL TO THE LAST TRY?
AA0E 2704     01395         BEQ     LAA12   YES - GO SAVE THE VALUE
AA10 6AE4     01396         DEC     ,S      NO-DECREMENT TRIES COUNTER 
AA12 26D9     01397         BNE     LA9EB   BRANCH IF YOU HAVEN’T TRIED 10 TIMES
              01398 * IF YOU FALL THROUGH HERE YOU HAVE TRIED TO GET THE SAME READING 
              01399 * 10 TIMES AND NEVER GOTTEN A MATCH. AS A RESULT YOU JUST FALL
              01400 * THROUGH AND USE THE LAST VALUE READ IN.
AA14 E782     01401 LAA12   STB     ,-X     SAVE THE DIGITIZED VALUE
AA16 ECE1     01402         LDD     ,S++    GET THE NUMBER OF THE JOYSTICK JUST DONE
AA18 5A       01403         DECB            DECR JOYSTK NUMBER
AA19 2ACC     01404         BPL     LA9E5   BRANCH IF THE LAST ONE DONE WASN’T NUMBER 0
AA1B 39       01405         RTS     

RTS

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies