Forum

Notifications
Clear all

VIC-20 (unexpanded) ASM listings  

  RSS
LJ2
 LJ2
(@lj2)
New Member

1. Kleuren (alt. adressen)

Het vergemakkelijkt instellen van de Rand, Scherm and Aux kleur.
Zoals je wellicht weet heeft de VIC (de chip) een aantal adressen waarbinnen de bits
meer dan 1 functie hebben, zo ook de rand en scherm kleur of de auxiliary
die een byte moet delen met het volume.

De volgende code zal de adressen 1020 tot 1023 lezen en verwerken naar de juiste
VIC adressen, de adressen hebben de volgende functie:

1020 Border kleur (0-7)
1021 Scherm kleur (0-15)
1022 Aux kleur (0-15)
1023 Multi color (0/1)

POKE 1021,6 zal het scherm dus blauw maken bijv.

00001 0000 *=7600
00002 1DB0
00003 1DB0 78 SEI
00004 1DB1 A9 BD LDA #<INSERT
00005 1DB3 A2 1D LDX #>INSERT
00006 1DB5 8D 14 03 STA $0314
00007 1DB8 8E 15 03 STX $0315
00008 1DBB 58 CLI
00009 1DBC 60 RTS
00010 1DBD INSERT
00011 1DBD AD FC 03 LDA 1020
00012 1DC0 29 0F AND #15
00013 1DC2 85 02 STA 2
00014 1DC4 AD FD 03 LDA 1021
00015 1DC7 0A ASL
00016 1DC8 0A ASL
00017 1DC9 0A ASL
00018 1DCA 0A ASL
00019 1DCB 05 02 ORA 2
00020 1DCD 09 08 ORA #8
00021 1DCF 8D 0F 90 STA 36879
00022 1DD2 AD 0E 90 LDA 36878
00023 1DD5 29 0F AND #15
00024 1DD7 85 02 STA 2
00025 1DD9 AD FE 03 LDA 1022
00026 1DDC 0A ASL
00027 1DDD 0A ASL
00028 1DDE 0A ASL
00029 1DDF 0A ASL
00030 1DE0 05 02 ORA 2
00031 1DE2 8D 0E 90 STA 36878
00032 1DE5 AD FF 03 LDA 1023
00033 1DE8 29 01 AND #1
00034 1DEA 0A ASL
00035 1DEB 0A ASL
00036 1DEC 0A ASL
00037 1DED 85 02 STA 2
00038 1DEF AD 86 02 LDA 646
00039 1DF2 29 07 AND #7
00040 1DF4 05 02 ORA 2
00041 1DF6 8D 86 02 STA 646
00042 1DF9 4C BF EA JMP $EABF
00043 1DFC

2. Joystick uitlezen

De joystick uitlezen op de VIC-20 is nogal een gehannes omdat de bits vanaf 2
locaties moeten worden gelezen en er een poort moet worden omgezet, enfin.
Het volgende stukje code zal alle desbetreffende bits netjes verzagen en aan
elkaar timmeren tot een hapklaar brokje en serveren op het adres 7679.
De waarden zijn:

  1 Rechts
  2 Omhoog
  4 Omlaag 
  8 Links
16 Vuur

Test voorbeeld:

NEW
5 SYS 7620

10 PRINT PEEK(7679) : GOTO 10


00001 0000 *=7620
00002 1DC4
00003 1DC4 MEM_LIMIT=7619
00004 1DC4
00005 1DC4 A9 C3 LDA #<MEM_LIMIT
00006 1DC6 A2 1D LDX #>MEM_LIMIT
00007 1DC8 85 37 STA 55
00008 1DCA 86 38 STX 56
00009 1DCC
00010 1DCC 78 SEI
00011 1DCD A9 D9 LDA #<INSERT
00012 1DCF A2 1D LDX #>INSERT
00013 1DD1 8D 14 03 STA $0314
00014 1DD4 8E 15 03 STX $0315
00015 1DD7 58 CLI
00016 1DD8 60 RTS
00017 1DD9 INSERT
00018 1DD9 A9 7F LDA #127 ;POORT B AANPASSEN
00019 1DDB 8D 22 91 STA $9122 ;OM TE KUNNEN LEZEN
00020 1DDE AD 1F 91 LDA $911F ;LEES POORT A
00021 1DE1 29 3C AND #%00111100 ; JOY FLDU
00022 1DE3 4A LSR
00023 1DE4 85 02 STA 2 ;BEWAREN IN ADRES 2
00024 1DE6 AD 20 91 LDA $9120 ;LEES POORT B
00025 1DE9 2A ROL
00026 1DEA 2A ROL ;SHUIF VAN 7 NAAR 0
00027 1DEB 29 01 AND #1
00028 1DED 05 02 ORA 2 ;BITS SAMENVOEGEN
00029 1DEF 49 1F EOR #31 ;INVERTEREN
00030 1DF1 8D FF 1D STA 7679 ;OPSLAAN IN AD.7679
00031 1DF4
00032 1DF4 A9 FF LDA #255
00033 1DF6 8D 22 91 STA $9122 ;HERSTEL POORT B
00034 1DF9 4C BF EA JMP $EABF ;TERUG NAAR BASIC
00035 1DFC
This topic was modified 3 maanden geleden 3 times by LJ2
Citaat
Geplaatst : 31/08/2020 10:01 pm
Share: