
00001  0000             
00002  0001                        ;       MEMTEST64 - MEMORY TEST PROGRAM FOR C64/128/65
00003  0001                        ;       (CAN BE BOTH RUN IN 64 AND NATIVE MODES)
00004  0001             
00005  0001                        ;       ALSO CAN BE RUN ON PET, VIC-20, LCD AND TED MACHINES
00006  0001                        ;       (EVEN ON THE CBM-II SERIES WITH SPECIAL CODE)
00007  0001             
00008  0001             
00009  0001             *=$1301
00010  1301             
00011  1301                        ;       20 I=PEEK(65534)+PEEK(65535)*256:A=PEEK(45)+PEEK(46)*256:
00012  1301                        ;          IFPEEK(43)=1ANDPEEK(45)=193THENA=PEEK(44)*256+1
00013  1301                        ;       20 IFI=64014THENA=PEEK(102)*256+1
00014  1301                        ;       20 B=I:S=A+3211:IFA=3THENS=272:FORI=STO315:BANK-(B=64470):
00015  1301                        ;          A=PEEK(I+5452):BANK15:POKEI,A:NEXT
00016  1301                        ;       20 IFA>4865THENS=272:BANK.:FORI=STO402:POKEI,PEEK(A+I+3068):
00017  1301                        ;          NEXT:BANK128+113*(B=65303)
00018  1301                        ;       20 SYSS
00019  1301             
00020  1301  4C 0D 14              BYTE    $4C,$0D,$14,$00,$49,$B2,$C2,$28,$36,$35,$35,$33,$34,$29,$AA,$C2
00021  1311  28 36 35              BYTE    $28,$36,$35,$35,$33,$35,$29,$AC,$32,$35,$36,$3A,$41,$B2,$C2,$28
00022  1321  34 35 29              BYTE    $34,$35,$29,$AA,$C2,$28,$34,$36,$29,$AC,$32,$35,$36,$3A,$8B,$C2
00023  1331  28 34 33              BYTE    $28,$34,$33,$29,$B2,$31,$AF,$C2,$28,$34,$35,$29,$B2,$31,$39,$33
00024  1341  A7 41 B2              BYTE    $A7,$41,$B2,$C2,$28,$34,$34,$29,$AC,$32,$35,$36,$AA,$31,$00
00025  1350             
00026  1350  6C 13 14              BYTE    $6C,$13,$14,$00,$8B,$49,$B2,$36,$34,$30,$31,$34,$A7,$41,$B2,$C2
00027  1360  28 31 30              BYTE    $28,$31,$30,$32,$29,$AC,$32,$35,$36,$AA,$31,$00
00028  136C             
00029  136C  B4 13 14              BYTE    $B4,$13,$14,$00,$42,$B2,$49,$3A,$53,$B2,$41,$AA,$33,$32,$31,$31
00030  137C  3A 8B 41              BYTE    $3A,$8B,$41,$B2,$33,$A7,$53,$B2,$32,$37,$32,$3A,$81,$49,$B2,$53
00031  138C  A4 33 31              BYTE    $A4,$33,$31,$35,$3A,$DC,$AB,$28,$42,$B2,$36,$34,$34,$37,$30,$29
00032  139C  3A 41 B2              BYTE    $3A,$41,$B2,$C2,$28,$49,$AA,$35,$34,$35,$32,$29,$3A,$DC,$31,$35
00033  13AC  3A 97 49              BYTE    $3A,$97,$49,$2C,$41,$3A,$82,$00
00034  13B4             
00035  13B4  F8 13 14              BYTE    $F8,$13,$14,$00,$8B,$41,$B1,$34,$38,$36,$35,$A7,$53,$B2,$32,$37
00036  13C4  32 3A FE              BYTE    $32,$3A,$FE,$02,$2E,$3A,$81,$49,$B2,$53,$A4,$34,$30,$32,$3A,$97
00037  13D4  49 2C C2              BYTE    $49,$2C,$C2,$28,$41,$AA,$49,$AA,$33,$30,$36,$38,$29,$3A,$82,$3A
00038  13E4  FE 02 31              BYTE    $FE,$02,$31,$32,$38,$AA,$31,$31,$33,$AC,$28,$42,$B2,$36,$35,$33
00039  13F4  30 33 29              BYTE    $30,$33,$29,$00
00040  13F8             
00041  13F8  FF 13 14              BYTE    $FF,$13,$14,$00,$9E,$53,$00
00042  13FF             
00043  13FF  00                    BYTE    $00
00044  1400             
00045  1400             
00046  1400             *=$1400
00047  1400             
00048  1400                        ;       0 SYS5133
00049  1400             
00050  1400  00 0B 14   BASIC      BYTE    $00,$0B,$14,$00,$00,$9E,$35,$31,$33,$33,$00,$00,$00
00051  140D             
00052  140D             
00053  140D             *=$140D
00054  140D             
00055  140D                        ;       MACHINE DETECTION
00056  140D             
00057  140D  20 79 18   MAIN       JSR     MTEST
00058  1410             
00059  1410  2C         XAIN       BYTE    $2C
00060  1411  B0 16                 BCS     OLX
00061  1413             
00062  1413                        ;       TEMPORARY DISABLING OF FAST MODE
00063  1413             
00064  1413  20 09 18              JSR     REUX
00065  1416             
00066  1416  48                    PHA
00067  1417  98                    TYA
00068  1418  48                    PHA
00069  1419             
00070  1419                        ;       REU DETECTION
00071  1419             
00072  1419  20 E1 15   RAIN       JSR     REDET
00073  141C             
00074  141C                        ;       GEORAM DETECTION
00075  141C             
00076  141C  20 20 15   GAIN       JSR     GEDET
00077  141F             
00078  141F                        ;       SUPERRAM DETECTION (SUPERCPU) OR DMA (C65/DTV)
00079  141F             
00080  141F  20 B6 1D              JSR     CPU
00081  1422             
00082  1422  68                    PLA
00083  1423  A8                    TAY
00084  1424  68                    PLA
00085  1425             
00086  1425                        ;       RESTORING FAST MODE
00087  1425             
00088  1425  20 18 18              JSR     ZEUX
00089  1428             
00090  1428                        ;       PRINT MESSAGE
00091  1428             
00092  1428  38                    SEC
00093  1429             
00094  1429  8A         OLX        TXA
00095  142A  69 0D                 ADC     #$0D
00096  142C  AA                    TAX
00097  142D             
00098  142D  BD A0 16   OLP        LDA     REU-$0E,X
00099  1430  F0 0A                 BEQ     OKS
00100  1432             
00101  1432  C9 FF                 CMP     #$FF
00102  1434  B0 F3                 BCS     OLX
00103  1436             
00104  1436  20 D2 FF              JSR     $FFD2
00105  1439  E8                    INX
00106  143A  10 F1                 BPL     OLP
00107  143C             
00108  143C                        ;       SPEED TEST
00109  143C             
00110  143C  20 77 17   OKS        JSR     EWAP
00111  143F             
00112  143F                        ;       RETURN TO BASIC
00113  143F             
00114  143F  20 25 18              JSR     BEDET
00115  1442             
00116  1442  B9 00 14   CLP        LDA     BASIC,Y
00117  1445  91 2B                 STA     ($2B),Y
00118  1447  88                    DEY
00119  1448  10 F8                 BPL     CLP
00120  144A             
00121  144A  E6 2B                 INC     $2B
00122  144C  58                    CLI
00123  144D  60                    RTS
00124  144E             
00125  144E                        ;       DETECTING VDC
00126  144E             
00127  144E  86 A2      VEDET      STX     $A2
00128  1450  78                    SEI
00129  1451  08                    PHP
00130  1452  E8                    INX
00131  1453  8E 11 26              STX     VCHR+1
00132  1456  8E 00 D6              STX     $D600
00133  1459             
00134  1459                        ;       CHECK IF VDC ANSWERS (IF EXISTS AND IS PRESENT AT ALL)
00135  1459                        ;       AND GIVES BACK A VALID REVISION NUMBER (0-2)
00136  1459             
00137  1459  58         VPL        CLI
00138  145A  E4 A2                 CPX     $A2
00139  145C  78                    SEI
00140  145D  90 2C                 BCC     NDC
00141  145F             
00142  145F  AD 00 D6              LDA     $D600
00143  1462  10 F5                 BPL     VPL
00144  1464             
00145  1464                        ;       CHECK VDC REGISTER #1 (MUST BE SET FOR 80-COLUMN MODE)
00146  1464             
00147  1464  CC 01 D6              CPY     $D601
00148  1467  D0 22                 BNE     NDC
00149  1469             
00150  1469  29 07                 AND     #$07
00151  146B  C9 03                 CMP     #$03
00152  146D  09 30                 ORA     #$30
00153  146F  B0 1A                 BCS     NDC
00154  1471             
00155  1471  8D A4 16              STA     REV
00156  1474             
00157  1474                        ;       CHECK FOR VDC MEMORY (16K/64K)
00158  1474             
00159  1474  20 91 16              JSR     ZPTX
00160  1477             
00161  1477                        ;       CHECK FOR VDC MEMORY (16K) BY WRITING
00162  1477             
00163  1477  20 22 17   WPX        JSR     ZPXY
00164  147A  E8                    INX
00165  147B  D0 FA                 BNE     WPX
00166  147D             
00167  147D                        ;       CHECK FOR VDC MEMORY (16K) BY COMPARING #1
00168  147D                        ;       (THE WRITTEN BYTES MUST BE READ BACK -> NO VDC IF NOT)
00169  147D             
00170  147D  20 91 16              JSR     ZPTX
00171  1480  20 22 17              JSR     ZPXY
00172  1483             
00173  1483  E8         WPQ1       INX
00174  1484  F0 07                 BEQ     WPY
00175  1486             
00176  1486  20 F6 14              JSR     CPLP
00177  1489  F0 F8                 BEQ     WPQ1
00178  148B             
00179  148B  28         NDC        PLP
00180  148C  60                    RTS
00181  148D             
00182  148D                        ;       CHECK FOR VDC MEMORY (16K) BY COMPARING #2
00183  148D                        ;       (IF $13XX BEING MIRRORED AT $93XX -> NO 64K IF SO)
00184  148D             
00185  148D  20 91 16   WPY        JSR     ZPTX
00186  1490             
00187  1490  A2 93                 LDX     #$93
00188  1492  20 22 17              JSR     ZPXY
00189  1495             
00190  1495  A2 13                 LDX     #$13
00191  1497  A9 36                 LDA     #$36
00192  1499             
00193  1499  E8         WPQ2       INX
00194  149A  F0 0B                 BEQ     W16
00195  149C             
00196  149C  20 F6 14              JSR     CPLP
00197  149F  F0 F8                 BEQ     WPQ2
00198  14A1             
00199  14A1                        ;       VDC REGISTER #28 MUST BE SET (47/63 -> 16K/64K)
00200  14A1             
00201  14A1  A2 34                 LDX     #$34
00202  14A3  A0 3F                 LDY     #$3F
00203  14A5  D0 05                 BNE     W64
00204  14A7             
00205  14A7  AA         W16        TAX
00206  14A8  A9 31                 LDA     #$31
00207  14AA  A0 2F                 LDY     #$2F
00208  14AC             
00209  14AC  8D AB 16   W64        STA     RAM
00210  14AF  8E AC 16              STX     RAM+1
00211  14B2             
00212  14B2  A9 1C                 LDA     #$1C
00213  14B4  20 0F 17              JSR     CPTP
00214  14B7             
00215  14B7  A9 24                 LDA     #$24
00216  14B9  CC 01 D6              CPY     $D601
00217  14BC  08                    PHP
00218  14BD  20 09 17              JSR     CPTS
00219  14C0  68                    PLA
00220  14C1             
00221  14C1                        ;       VDC REGISTER #36 MUST ALSO BE SET (DRAM REFRESH CYCLES)
00222  14C1                        ;       ACCORDING TO FORMER TEST RESULTS (POSSIBLY TO ZERO)
00223  14C1             
00224  14C1  A2 00      X36        LDX     #$00
00225  14C3  20 E6 16              JSR     WPLX
00226  14C6             
00227  14C6  28                    PLP
00228  14C7  D0 0D                 BNE     RDC
00229  14C9             
00230  14C9  29 02                 AND     #$02
00231  14CB  D0 06                 BNE     WDC
00232  14CD             
00233  14CD                        ;       REGENERATION OF VDC CHARSET IF NECESSARY (IN C128 MODE)
00234  14CD             
00235  14CD  8D 11 26              STA     VCHR+1
00236  14D0  20 62 FF              JSR     $FF62
00237  14D3             
00238  14D3  A9 89      WDC        LDA     #<XDC-$0E
00239  14D5  2C                    BYTE    $2C
00240  14D6             
00241  14D6  A9 90      RDC        LDA     #<VDC-$0E
00242  14D8  A2 0D                 LDX     #$0D
00243  14DA  8D 2E 14              STA     OLP+1
00244  14DD  8E 9E 16              STX     VDC
00245  14E0  60                    RTS
00246  14E1             
00247  14E1  CA         RYND       DEX
00248  14E2  38                    SEC
00249  14E3  8A                    TXA
00250  14E4  A2 00                 LDX     #$00
00251  14E6  86 02                 STX     $02
00252  14E8  66 02      RYLP       ROR     $02
00253  14EA  C4 02                 CPY     $02
00254  14EC  90 FA                 BCC     RYLP
00255  14EE  0A                    ASL
00256  14EF  0A                    ASL
00257  14F0  A8                    TAY
00258  14F1  A5 02                 LDA     $02
00259  14F3  E9 00                 SBC     #$00
00260  14F5  60                    RTS
00261  14F6             
00262  14F6                        ;       VDC SUBROUTINES
00263  14F6             
00264  14F6  20 EC 16   CPLP       JSR     WPLP
00265  14F9  EC 01 D6              CPX     $D601
00266  14FC  60         REO        RTS
00267  14FD             
00268  14FD  00         ZDE        BYTE    $00
00269  14FE             
00270  14FE             
00271  14FE             *=$14FE
00272  14FE             
00273  14FE                        ;       (C128/C65 BASIC FIX) <- $14FE (SEE ALSO AT $13FE)
00274  14FE                        ;       (WITHOUT THIS, A "?SYNTAX ERROR IN 0" MAY OCCUR ON RETURN)
00275  14FE             
00276  14FE  00 00 00              BYTE    $00,$00,$00
00277  1501             
00278  1501                        ;       GEORAM SUBROUTINES
00279  1501             
00280  1501  B9 12 15   NOGEO      LDA     GEMET,Y
00281  1504             
00282  1504  C9 DE      GC1        CMP     #$DE
00283  1506  90 09                 BCC     GELD
00284  1508             
00285  1508  C9 E0      GC2        CMP     #$E0
00286  150A  B0 05                 BCS     GELD
00287  150C             
00288  150C  49 01      GE1        EOR     #$01
00289  150E  99 12 15              STA     GEMET,Y
00290  1511  C8         GELD       INY
00291  1512  10 ED      GEMET      BPL     NOGEO
00292  1514             
00293  1514  A9 03      GE2        LDA     #$03
00294  1516  4D C2 16              EOR     GEM
00295  1519  8D C2 16              STA     GEM
00296  151C  C9 45      GEN        CMP     #$45
00297  151E  F0 DC                 BEQ     REO
00298  1520             
00299  1520                        ;       GEORAM DETECTION
00300  1520             
00301  1520  A2 00      GEDET      LDX     #$00
00302  1522  AC AE 16              LDY     REU
00303  1525  8E BC 16              STX     GEO
00304  1528  F0 08                 BEQ     GEDEX
00305  152A             
00306  152A  AD B4 16              LDA     REM
00307  152D  CD C2 16              CMP     GEM
00308  1530  F0 CF                 BEQ     NOGEO
00309  1532             
00310  1532  8E FF DF   GEDEX      STX     $DFFF
00311  1535  8E FE DF              STX     $DFFE
00312  1538             
00313  1538  8A         GLP1       TXA
00314  1539  9D 00 DE              STA     $DE00,X
00315  153C  E8                    INX
00316  153D  D0 F9                 BNE     GLP1
00317  153F             
00318  153F  8A         GLP2       TXA
00319  1540  DD 00 DE              CMP     $DE00,X
00320  1543  D0 BC      CEO        BNE     NOGEO
00321  1545  E8                    INX
00322  1546  D0 F7                 BNE     GLP2
00323  1548             
00324  1548  CA         GLP3       DEX
00325  1549  8E FF DF              STX     $DFFF
00326  154C  8E FF DE              STX     $DEFF
00327  154F  D0 F7                 BNE     GLP3
00328  1551             
00329  1551  E8         GLP4       INX
00330  1552  8E FF DF              STX     $DFFF
00331  1555  F0 09                 BEQ     GZPQ
00332  1557  EC FF DE              CPX     $DEFF
00333  155A  F0 F5                 BEQ     GLP4
00334  155C             
00335  155C  E0 04      GZPC       CPX     #$04
00336  155E  90 E3                 BCC     CEO
00337  1560             
00338  1560  8A         GZPQ       TXA
00339  1561  A2 06                 LDX     #$06
00340  1563  A8                    TAY
00341  1564  F0 06                 BEQ     GLPQ
00342  1566             
00343  1566  0A         GLPL       ASL
00344  1567  CA                    DEX
00345  1568  90 FC                 BCC     GLPL
00346  156A  F0 15                 BEQ     GZPZ
00347  156C             
00348  156C  20 E1 14   GLPQ       JSR     RYND
00349  156F  4A                    LSR
00350  1570  4A                    LSR
00351  1571  85 FB                 STA     $FB
00352  1573             
00353  1573  B9 AB 15   GAPP       LDA     M128,Y
00354  1576  F0 09                 BEQ     GZPZ
00355  1578  9D C6 16              STA     G64,X
00356  157B  E0 03                 CPX     #$03
00357  157D  C8                    INY
00358  157E  E8                    INX
00359  157F  90 F2                 BCC     GAPP
00360  1581             
00361  1581  A9 0D      GZPZ       LDA     #$0D
00362  1583  AE AE 16              LDX     REU
00363  1586  8D BC 16              STA     GEO
00364  1589  D0 1F                 BNE     VREO
00365  158B             
00366  158B  AD 9E 16              LDA     VDC
00367  158E  D0 05                 BNE     DEO
00368  1590             
00369  1590  A9 AE                 LDA     #<GEO-$0E
00370  1592  8D 2E 14              STA     OLP+1
00371  1595             
00372  1595  CE AE 16   DEO        DEC     REU
00373  1598             
00374  1598                        ;       "MAGIC BYTES" FOR MEGA65 (VIC-IV MODE)
00375  1598             
00376  1598  A9 47      VIC4       LDA     #$47
00377  159A  8D 2F D0              STA     $D02F
00378  159D  A9 53                 LDA     #$53
00379  159F  8D 2F D0              STA     $D02F
00380  15A2             
00381  15A2                        ;       ENABLE ROM WRITE PROTECT (ON MEGA65)
00382  15A2             
00383  15A2  A9 04                 LDA     #$04
00384  15A4  0D 7D D6              ORA     $D67D
00385  15A7  8D 7D D6              STA     $D67D
00386  15AA  60         VREO       RTS
00387  15AB             
00388  15AB                        ;       128/256/512(K)
00389  15AB             
00390  15AB  31 32 38   M128       BYTE    $31,$32,$38,$00
00391  15AF  32 35 36   M256       BYTE    $32,$35,$36,$00
00392  15B3  35 31 32   M512       BYTE    $35,$31,$32,$00
00393  15B7             
00394  15B7                        ;       1M/2M/4M/8M/16M
00395  15B7             
00396  15B7  31 4D 20   MB01       BYTE    $31,$4D,$20,$20
00397  15BB  32 4D 20   MB02       BYTE    $32,$4D,$20,$20
00398  15BF  34 4D 20   MB04       BYTE    $34,$4D,$20,$20
00399  15C3  38 4D 20   MB08       BYTE    $38,$4D,$20,$20
00400  15C7  31 36 4D   MB16       BYTE    $31,$36,$4D,$20
00401  15CB             
00402  15CB                        ;       REU SUBROUTINES
00403  15CB             
00404  15CB  BD D4 15   NOREU      LDA     REMET,X
00405  15CE             
00406  15CE  C9 DF                 CMP     #$DF
00407  15D0  F0 7E                 BEQ     VICV
00408  15D2             
00409  15D2  C9 DE                 CMP     #$DE
00410  15D4  D0 08      REMET      BNE     XREU
00411  15D6             
00412  15D6  A9 46                 LDA     #$46
00413  15D8  FE D4 15              INC     REMET,X
00414  15DB  8D B4 16              STA     REM
00415  15DE             
00416  15DE  CA         XREU       DEX
00417  15DF  D0 EA                 BNE     NOREU
00418  15E1             
00419  15E1                        ;       REU DETECTION
00420  15E1             
00421  15E1  A0 0D      REDET      LDY     #$0D
00422  15E3  CC C3 2F              CPY     CWYP+1
00423  15E6  8E AE 16              STX     REU
00424  15E9  D0 11                 BNE     RZPY
00425  15EB             
00426  15EB  20 B9 2F              JSR     CPMZ80
00427  15EE  F0 0C                 BEQ     RZPY
00428  15F0             
00429  15F0  AD B4 16              LDA     REM
00430  15F3  C9 46                 CMP     #$46
00431  15F5  D0 D4                 BNE     NOREU
00432  15F7             
00433  15F7  A9 2C                 LDA     #$2C
00434  15F9  8D 1C 14              STA     GAIN
00435  15FC             
00436  15FC  A0 00      RZPY       LDY     #$00
00437  15FE             
00438  15FE  8A         RZP1       TXA
00439  15FF  9D 80 13              STA     $1380,X
00440  1602  E8                    INX
00441  1603  10 F9                 BPL     RZP1
00442  1605             
00443  1605  20 65 16              JSR     REOUT
00444  1608  EE FF 13              INC     $13FF
00445  160B  20 68 16              JSR     REUIN
00446  160E             
00447  160E  98         RZP3       TYA
00448  160F  D9 80 13              CMP     $1380,Y
00449  1612  D0 B7                 BNE     NOREU
00450  1614  C8                    INY
00451  1615  10 F7                 BPL     RZP3
00452  1617             
00453  1617  A0 00                 LDY     #$00
00454  1619             
00455  1619  8C FF 13   RZP4       STY     $13FF
00456  161C  20 65 16              JSR     REOUT
00457  161F  88                    DEY
00458  1620  D0 F7                 BNE     RZP4
00459  1622             
00460  1622  C8         RZP5       INY
00461  1623  F0 08                 BEQ     RZPQ
00462  1625             
00463  1625  20 68 16              JSR     REUIN
00464  1628  CC FF 13              CPY     $13FF
00465  162B  F0 F5                 BEQ     RZP5
00466  162D             
00467  162D  A2 08      RZPQ       LDX     #$08
00468  162F  98                    TYA
00469  1630  F0 06                 BEQ     RLPQ
00470  1632             
00471  1632  0A         RLPL       ASL
00472  1633  CA                    DEX
00473  1634  90 FC                 BCC     RLPL
00474  1636  F0 13                 BEQ     RZPZ
00475  1638             
00476  1638  20 E1 14   RLPQ       JSR     RYND
00477  163B  85 FE                 STA     $FE
00478  163D             
00479  163D  B9 AB 15   RAPP       LDA     M128,Y
00480  1640  F0 09                 BEQ     RZPZ
00481  1642  9D B8 16              STA     R64,X
00482  1645  E0 03                 CPX     #$03
00483  1647  C8                    INY
00484  1648  E8                    INX
00485  1649  90 F2                 BCC     RAPP
00486  164B             
00487  164B  A9 0D      RZPZ       LDA     #$0D
00488  164D  8D AE 16              STA     REU
00489  1650             
00490  1650  AD FF FF   VICV       LDA     $FFFF
00491  1653  49 FF                 EOR     #$FF
00492  1655  F0 08                 BEQ     VIC2
00493  1657             
00494  1657                        ;       "MAGIC BYTES" FOR C65 (VIC-III MODE)
00495  1657             
00496  1657  A9 A5      VIC3       LDA     #$A5
00497  1659  8D 2F D0              STA     $D02F
00498  165C  A9 96                 LDA     #$96
00499  165E  2C                    BYTE    $2C
00500  165F             
00501  165F                        ;       STANDARD MODE FOR VIC-II (HIDING EXTRA REGISTERS)
00502  165F             
00503  165F  A9 FF      VIC2       LDA     #$FF
00504  1661  8D 2F D0              STA     $D02F
00505  1664  60                    RTS
00506  1665             
00507  1665                        ;       REU TRANSFER SUBROUTINE
00508  1665             
00509  1665  A9 90      REOUT      LDA     #$90
00510  1667  2C                    BYTE    $2C
00511  1668  A9 91      REUIN      LDA     #$91
00512  166A             
00513  166A  A2 13                 LDX     #$13
00514  166C  48                    PHA
00515  166D             
00516  166D  8E 03 DE              STX     $DE03
00517  1670             
00518  1670  A9 80                 LDA     #$80
00519  1672  A2 00                 LDX     #$00
00520  1674  8D 05 DE              STA     $DE05
00521  1677  8E 08 DE              STX     $DE08
00522  167A             
00523  167A  8D 02 DE   TREU       STA     $DE02
00524  167D  8E 04 DE              STX     $DE04
00525  1680  8C 06 DE              STY     $DE06
00526  1683  8D 07 DE              STA     $DE07
00527  1686  8E 09 DE              STX     $DE09
00528  1689  8E 0A DE              STX     $DE0A
00529  168C             
00530  168C  68                    PLA
00531  168D  8D 01 DE              STA     $DE01
00532  1690  60                    RTS
00533  1691             
00534  1691  A0 00      ZPTX       LDY     #$00
00535  1693  A9 12      BPTX       LDA     #$12
00536  1695  D0 6A                 BNE     WPTX
00537  1697             
00538  1697                        ;       ESC-X/SCNCLR/ESC-X
00539  1697             
00540  1697  1B 58 0E   XDC        BYTE    $1B,$58,$0E,$99,$93,$1B,$58
00541  169E             
00542  169E                        ;       "VDC R1 WITH 16K"
00543  169E             
00544  169E  00 56 44   VDC        BYTE    $00,$56,$44,$43,$20,$52
00545  16A4  31 20 57   REV        BYTE    $31,$20,$57,$49,$54,$48,$20
00546  16AB  31 36 4B   RAM        BYTE    $31,$36,$4B
00547  16AE             
00548  16AE                        ;       "REU DE00 64K"
00549  16AE             
00550  16AE  00 52 45   REU        BYTE    $00,$52,$45,$55,$20,$44
00551  16B4  45 30 30   REM        BYTE    $45,$30,$30,$20
00552  16B8  0E 36 34   R64        BYTE    $0E,$36,$34,$4B
00553  16BC             
00554  16BC                        ;       "GEO DE00 64K"
00555  16BC             
00556  16BC  00 47 45   GEO        BYTE    $00,$47,$45,$4F,$20
00557  16C1  44         GEV        BYTE    $44
00558  16C2  45 30 30   GEM        BYTE    $45,$30,$30,$20
00559  16C6  0E 36 34   G64        BYTE    $0E,$36,$34,$4B
00560  16CA             
00561  16CA                        ;       "SRM SCPU 64K"
00562  16CA             
00563  16CA  00 53 52   SCPU       BYTE    $00,$53,$52,$4D,$20
00564  16CF  53 43 50   SEV        BYTE    $53,$43,$50,$55
00565  16D3  20         SEM        BYTE    $20
00566  16D4  0E 36 34   S64        BYTE    $0E,$36,$34,$4B
00567  16D8             
00568  16D8  00 00 03   NTAB2      BYTE    $00,$00,$03,$27,$86,$42,$96
00569  16DF  0A 64 E8   NTAB1      BYTE    $0A,$64,$E8,$10,$A0,$40,$80
00570  16E6             
00571  16E6                        ;       VDC SUBROUTINES
00572  16E6             
00573  16E6  20 EC 16   WPLX       JSR     WPLP
00574  16E9  8E 01 D6              STX     $D601
00575  16EC             
00576  16EC  2C 00 D6   WPLP       BIT     $D600
00577  16EF  10 FB                 BPL     WPLP
00578  16F1  60                    RTS
00579  16F2             
00580  16F2  A9 12      APTX       LDA     #$12
00581  16F4  A6 05                 LDX     $05
00582  16F6  20 0F 17              JSR     CPTP
00583  16F9             
00584  16F9  20 EC 16              JSR     WPLP
00585  16FC  8E 01 D6              STX     $D601
00586  16FF             
00587  16FF  A9 1F                 LDA     #$1F
00588  1701             
00589  1701  A2 13      WPTX       LDX     #$13
00590  1703             
00591  1703  20 EC 16   WPTS       JSR     WPLP
00592  1706  8E 00 D6              STX     $D600
00593  1709             
00594  1709  20 EC 16   CPTS       JSR     WPLP
00595  170C  8C 01 D6              STY     $D601
00596  170F             
00597  170F  20 EC 16   CPTP       JSR     WPLP
00598  1712  8D 00 D6              STA     $D600
00599  1715  60                    RTS
00600  1716             
00601  1716  00 00 00   NTAB3      BYTE    $00,$00,$00,$00,$01,$0F
00602  171C             
00603  171C  98         APLP       TYA
00604  171D  29 3F                 AND     #$3F
00605  171F  09 40                 ORA     #$40
00606  1721  60                    RTS
00607  1722             
00608  1722  A0 1F      ZPXY       LDY     #$1F
00609  1724             
00610  1724  20 E6 16   WPXY       JSR     WPLX
00611  1727             
00612  1727  20 EC 16   WPLY       JSR     WPLP
00613  172A  8C 00 D6              STY     $D600
00614  172D  60                    RTS
00615  172E             
00616  172E                        ;       PRINTING 16-BIT/24-BIT NUMBER IN $02/$03/$04
00617  172E             
00618  172E  86 04      NUM16      STX     $04
00619  1730  86 05      NUM24      STX     $05
00620  1732  A2 08                 LDX     #$08
00621  1734  D0 35                 BNE     NLP0
00622  1736             
00623  1736  A5 02      NLP1       LDA     $02
00624  1738  FD DE 16              SBC     NTAB1-1,X
00625  173B  85 02                 STA     $02
00626  173D  A5 03                 LDA     $03
00627  173F  FD D7 16              SBC     NTAB2-1,X
00628  1742  85 03                 STA     $03
00629  1744  A5 04                 LDA     $04
00630  1746  FD 15 17              SBC     NTAB3-1,X
00631  1749  85 04                 STA     $04
00632  174B  C8                    INY
00633  174C             
00634  174C  A5 02      NLP2       LDA     $02
00635  174E  DD DE 16              CMP     NTAB1-1,X
00636  1751  A5 03                 LDA     $03
00637  1753  FD D7 16              SBC     NTAB2-1,X
00638  1756  A5 04                 LDA     $04
00639  1758  FD 15 17              SBC     NTAB3-1,X
00640  175B  B0 D9                 BCS     NLP1
00641  175D             
00642  175D  98                    TYA
00643  175E  D0 04                 BNE     NLP3
00644  1760  A4 05                 LDY     $05
00645  1762  F0 09                 BEQ     NLPY
00646  1764             
00647  1764  09 30      NLP3       ORA     #$30
00648  1766  84 05                 STY     $05
00649  1768  20 D2 FF              JSR     $FFD2
00650  176B             
00651  176B  A0 00      NLP0       LDY     #$00
00652  176D  CA         NLPY       DEX
00653  176E  D0 DC                 BNE     NLP2
00654  1770             
00655  1770  A9 30                 LDA     #$30
00656  1772  05 02                 ORA     $02
00657  1774  4C D2 FF              JMP     $FFD2
00658  1777             
00659  1777             
00660  1777             *=$1777
00661  1777             
00662  1777                        ;       EXECUTE WITH SWAPPING (CONTINUATION)
00663  1777             
00664  1777  20 84 17   EWAP       JSR     SWAP
00665  177A             
00666  177A  A9 60                 LDA     #$60
00667  177C  CD FD 18              CMP     SREST-$0800
00668  177F  D0 03                 BNE     SWAP
00669  1781             
00670  1781  20 F8 18              JSR     STEST-$0800
00671  1784             
00672  1784                        ;       SWAPPING MEMORY (IF POSSIBLE) AT $1800 <-> $2000
00673  1784             
00674  1784  78         SWAP       SEI
00675  1785  A6 FD                 LDX     $FD
00676  1787  A0 00                 LDY     #$00
00677  1789  CA                    DEX
00678  178A  18                    CLC
00679  178B  D0 15                 BNE     SWAX
00680  178D             
00681  178D  A5 FC                 LDA     $FC
00682  178F  C9 09                 CMP     #$09
00683  1791  90 0F                 BCC     SWAX
00684  1793             
00685  1793  98                    TYA
00686  1794             
00687  1794                        ;       TAZ / MAP
00688  1794             
00689  1794  4B 5C                 BYTE    $4B,$5C
00690  1796             
00691  1796  A9 07                 LDA     #$07
00692  1798  05 00                 ORA     $00
00693  179A  85 00                 STA     $00
00694  179C             
00695  179C  A9 FE                 LDA     #$FE
00696  179E  25 01                 AND     $01
00697  17A0  85 01                 STA     $01
00698  17A2             
00699  17A2  84 02      SWAX       STY     $02
00700  17A4  84 04                 STY     $04
00701  17A6  08                    PHP
00702  17A7             
00703  17A7  A9 20                 LDA     #$20
00704  17A9  A2 0C                 LDX     #$0C
00705  17AB  8D 02 14   SALP       STA     BASIC+2
00706  17AE             
00707  17AE  BD 00 14   SELP       LDA     BASIC,X
00708  17B1  DD 00 20   SEJT       CMP     $2000,X
00709  17B4  D0 2C                 BNE     SWRE
00710  17B6  CA                    DEX
00711  17B7  10 F5                 BPL     SELP
00712  17B9             
00713  17B9  A9 18                 LDA     #$18
00714  17BB  A2 20                 LDX     #$20
00715  17BD  85 03                 STA     $03
00716  17BF  86 05                 STX     $05
00717  17C1             
00718  17C1  A9 38                 LDA     #$38
00719  17C3  A2 08                 LDX     #$08
00720  17C5  4D B3 17              EOR     SEJT+2
00721  17C8  8D B3 17              STA     SEJT+2
00722  17CB             
00723  17CB  B1 02      SWLP       LDA     ($02),Y
00724  17CD  48                    PHA
00725  17CE  B1 04                 LDA     ($04),Y
00726  17D0  91 02                 STA     ($02),Y
00727  17D2  68                    PLA
00728  17D3  91 04                 STA     ($04),Y
00729  17D5  C8                    INY
00730  17D6  D0 F3                 BNE     SWLP
00731  17D8             
00732  17D8  E6 03                 INC     $03
00733  17DA  E6 05                 INC     $05
00734  17DC  CA                    DEX
00735  17DD  D0 EC                 BNE     SWLP
00736  17DF             
00737  17DF  20 CB 2B              JSR     SWALT
00738  17E2             
00739  17E2  28         SWRE       PLP
00740  17E3  98                    TYA
00741  17E4  90 0E                 BCC     SWEX
00742  17E6             
00743  17E6  A9 07      SWAZ       LDA     #$07
00744  17E8  05 01                 ORA     $01
00745  17EA  85 01                 STA     $01
00746  17EC             
00747  17EC  98         SWYZ       TYA
00748  17ED             
00749  17ED                        ;       LDX #$E3
00750  17ED                        ;       LDZ #$B3
00751  17ED             
00752  17ED  A2 E3      SWXZ       BYTE    $A2,$E3
00753  17EF  A3 B3                 BYTE    $A3,$B3
00754  17F1             
00755  17F1                        ;       MAP / TAZ
00756  17F1             
00757  17F1  5C 4B                 BYTE    $5C,$4B
00758  17F3             
00759  17F3  18                    CLC
00760  17F4             
00761  17F4  AA         SWEX       TAX
00762  17F5  EA                    NOP
00763  17F6  60                    RTS
00764  17F7             
00765  17F7             
00766  17F7             *=$17F7
00767  17F7             
00768  17F7                        ;       (SELF-MODIFICATIONS)
00769  17F7             
00770  17F7  A9 33      DTV64      LDA     #$33
00771  17F9  8D FC 1B              STA     DS+5
00772  17FC  A9 D3                 LDA     #$D3
00773  17FE  85 0B      DTV65      STA     $0B
00774  1800  A9 60      DTV66      LDA     #$60
00775  1802  8D 0B 18              STA     REUY
00776  1805  8D 1A 18              STA     ZEUY
00777  1808  60                    RTS
00778  1809             
00779  1809                        ;       TEMPORARY DISABLING OF FAST MODE
00780  1809             
00781  1809  A2 00      REUX       LDX     #$00
00782  180B  AC 30 D0   REUY       LDY     $D030
00783  180E  AD B8 D0              LDA     $D0B8
00784  1811  8E 30 D0              STX     $D030
00785  1814  8E 7A D0              STX     $D07A
00786  1817  60                    RTS
00787  1818             
00788  1818                        ;       RESTORING FAST MODE
00789  1818             
00790  1818  A2 00      ZEUX       LDX     #$00
00791  181A  8C 30 D0   ZEUY       STY     $D030
00792  181D  29 C0                 AND     #$C0
00793  181F  D0 03                 BNE     BEUX
00794  1821  8E 7B D0              STX     $D07B
00795  1824  60         BEUX       RTS
00796  1825             
00797  1825                        ;       BASIC DETECTION
00798  1825             
00799  1825  78         BEDET      SEI
00800  1826  AC FF FF              LDY     $FFFF
00801  1829             
00802  1829  C0 F0                 CPY     #$F0
00803  182B  A2 00                 LDX     #$00
00804  182D  A9 04                 LDA     #$04
00805  182F  90 2F                 BCC     BASY
00806  1831             
00807  1831  AD FE FF              LDA     $FFFE
00808  1834             
00809  1834  C0 FA                 CPY     #$FA
00810  1836  D0 0A                 BNE     BLCD
00811  1838  C9 0E                 CMP     #$0E
00812  183A  D0 06                 BNE     BLCD
00813  183C             
00814  183C  A4 65                 LDY     $65
00815  183E  A5 66                 LDA     $66
00816  1840  B0 17                 BCS     BASN
00817  1842             
00818  1842  C0 FC      BLCD       CPY     #$FC
00819  1844  D0 04                 BNE     BTCD
00820  1846  C9 B3                 CMP     #$B3
00821  1848  F0 07                 BEQ     BTSD
00822  184A             
00823  184A  C8         BTCD       INY
00824  184B  D0 0E                 BNE     BASE
00825  184D             
00826  184D  C9 17                 CMP     #$17
00827  184F  F0 0A                 BEQ     BASE
00828  1851             
00829  1851  A5 2C      BTSD       LDA     $2C
00830  1853  A4 2B                 LDY     $2B
00831  1855  F0 09                 BEQ     BASY
00832  1857             
00833  1857  A5 2C                 LDA     $2C
00834  1859  D0 07      BASN       BNE     BASC
00835  185B             
00836  185B  A4 2D      BASE       LDY     $2D
00837  185D  A5 2E                 LDA     $2E
00838  185F  2C                    BYTE    $2C
00839  1860             
00840  1860  A0 01      BASY       LDY     #$01
00841  1862             
00842  1862  8D 02 14   BASC       STA     BASIC+2
00843  1865  85 2C                 STA     $2C
00844  1867  98                    TYA
00845  1868  D0 01                 BNE     BASF
00846  186A  24                    BYTE    $24
00847  186B             
00848  186B  88         BASF       DEY
00849  186C  8A                    TXA
00850  186D  84 2B                 STY     $2B
00851  186F  A0 0C                 LDY     #$0C
00852  1871             
00853  1871  9D 00 13   BELP       STA     $1300,X
00854  1874  E8                    INX
00855  1875  D0 FA                 BNE     BELP
00856  1877             
00857  1877  EA                    NOP
00858  1878  60                    RTS
00859  1879             
00860  1879                        ;       CPU AND MACHINE DETECTION
00861  1879             
00862  1879  20 25 18   MTEST      JSR     BEDET
00863  187C             
00864  187C  20 98 15              JSR     VIC4
00865  187F             
00866  187F  A9 40                 LDA     #$40
00867  1881  A0 13                 LDY     #$13
00868  1883  E6 2B                 INC     $2B
00869  1885             
00870  1885  85 02                 STA     $02
00871  1887  8A                    TXA
00872  1888             
00873  1888  86 03                 STX     $03
00874  188A  86 04                 STX     $04
00875  188C  84 05                 STY     $05
00876  188E  86 0A                 STX     $0A
00877  1890  86 0B                 STX     $0B
00878  1892             
00879  1892                        ;       $1A = INC A ON NEWER CPU BUT ONLY A NOP ON 65XX
00880  1892             
00881  1892  1A EA EA              BYTE    $1A,$EA,$EA
00882  1895  F0 10                 BEQ     NOXP
00883  1897             
00884  1897  EB A9 EA              BYTE    $EB,$A9,$EA
00885  189A             
00886  189A                        ;       ON 65CE02: ROW $EAA9     (A = $01)
00887  189A                        ;       ON 65C02: NOP / LDA #$EA (A = $EA)
00888  189A                        ;       ON 65816: XBA / LDA #$EA (A = $EA, B = $01)
00889  189A                        ;       (ON 65XX: SBC #$A9 / NOP)
00890  189A             
00891  189A  C9 01                 CMP     #$01
00892  189C  F0 0A                 BEQ     NOCP
00893  189E             
00894  189E  A9 00 EB              BYTE    $A9,$00,$EB,$1A,$1A
00895  18A3             
00896  18A3                        ;       (ON 65CE02: LDA #$00 / ROW $1A1A)
00897  18A3                        ;       ON 65C02: LDA #$00 / NOP / INC A / INC A (A = $02)
00898  18A3                        ;       ON 65816: LDA #$00 / XBA / INC A / INC A (A = $03, B = $00)
00899  18A3                        ;       (ON 65XX: LDA #$00 / SBC #$1A / NOP)
00900  18A3             
00901  18A3  C9 04                 CMP     #$04
00902  18A5  90 01                 BCC     NOCP
00903  18A7             
00904  18A7  8A         NOXP       TXA
00905  18A8             
00906  18A8  85 FD      NOCP       STA     $FD
00907  18AA             
00908  18AA                        ;       SYSTEM IDENTIFICATION (BY KERNAL)
00909  18AA             
00910  18AA  AC FF FF              LDY     $FFFF
00911  18AD  AD FE FF              LDA     $FFFE
00912  18B0             
00913  18B0  C0 E6                 CPY     #$E6
00914  18B2  F0 09                 BEQ     PEYR
00915  18B4  B0 1A                 BCS     NOPE
00916  18B6  C0 E4                 CPY     #$E4
00917  18B8  90 16                 BCC     NOPE
00918  18BA             
00919  18BA                        ;       PET DETECTED ($E66B/$E61B/$E442) <- KERNAL REVISIONS (1-2/3/4)
00920  18BA             
00921  18BA  A0 03                 LDY     #$03
00922  18BC  2C                    BYTE    $2C
00923  18BD  A0 02      PEYR       LDY     #$02
00924  18BF  C9 6B                 CMP     #$6B
00925  18C1  D0 01                 BNE     PEMR
00926  18C3  88                    DEY
00927  18C4  A9 84      PEMR       LDA     #$84
00928  18C6  8D 28 19              STA     VETR+1
00929  18C9  8D 37 19              STA     AETR+1
00930  18CC  A9 04                 LDA     #$04
00931  18CE  D0 22                 BNE     MEMR
00932  18D0             
00933  18D0  C0 FA      NOPE       CPY     #$FA
00934  18D2  D0 12                 BNE     NNTD
00935  18D4  C9 0E                 CMP     #$0E
00936  18D6  D0 0E                 BNE     NNTD
00937  18D8             
00938  18D8                        ;       LCD DETECTED ($FA0E) <- KERNAL
00939  18D8             
00940  18D8  A5 FD                 LDA     $FD
00941  18DA  09 14                 ORA     #$14
00942  18DC  A8                    TAY
00943  18DD  A9 2C                 LDA     #$2C
00944  18DF  8D 2F 19              STA     XETR
00945  18E2  A9 05                 LDA     #$05
00946  18E4  D0 0C                 BNE     MEMR
00947  18E6             
00948  18E6  D0 71      NNTD       BNE     NCTD
00949  18E8             
00950  18E8                        ;       DETECTING MEMORY OF PET, VIC-20, LCD OR TED
00951  18E8                        ;       (ALSO USED FOR ALL MACHINES)
00952  18E8             
00953  18E8  C0 07      YEMR       CPY     #$07
00954  18EA  98                    TYA
00955  18EB  F0 05                 BEQ     MEMR
00956  18ED  A0 1A                 LDY     #$1A
00957  18EF  B0 01                 BCS     MEMR
00958  18F1  88                    DEY
00959  18F2             
00960  18F2  48         MEMR       PHA
00961  18F3  20 00 18   DEMR       JSR     DTV66
00962  18F6  A9 04      REMR       LDA     #$04
00963  18F8  86 06                 STX     $06
00964  18FA             
00965  18FA  85 07      MELP       STA     $07
00966  18FC  8A                    TXA
00967  18FD  81 04                 STA     ($04,X)
00968  18FF  A1 06                 LDA     ($06,X)
00969  1901  48                    PHA
00970  1902  98                    TYA
00971  1903  81 06                 STA     ($06,X)
00972  1905  C1 06                 CMP     ($06,X)
00973  1907  D0 16                 BNE     DETR
00974  1909  A9 AA                 LDA     #$AA
00975  190B  81 06                 STA     ($06,X)
00976  190D  C1 06                 CMP     ($06,X)
00977  190F  D0 0E                 BNE     DETR
00978  1911  68                    PLA
00979  1912  81 06                 STA     ($06,X)
00980  1914  C1 06                 CMP     ($06,X)
00981  1916  D0 08                 BNE     PETR
00982  1918  A9 01                 LDA     #$01
00983  191A  E6 06                 INC     $06
00984  191C  81 04                 STA     ($04,X)
00985  191E  24                    BYTE    $24
00986  191F  68         DETR       PLA
00987  1920  A5 07      PETR       LDA     $07
00988  1922  E6 04      PATR       INC     $04
00989  1924  18                    CLC
00990  1925  69 10                 ADC     #$10
00991  1927  C9 D4      VETR       CMP     #$D4
00992  1929  F0 F7                 BEQ     PATR
00993  192B  C9 04      METR       CMP     #$04
00994  192D  D0 CB                 BNE     MELP
00995  192F             
00996  192F  8E 3E FF   XETR       STX     $FF3E
00997  1932             
00998  1932  A5 06                 LDA     $06
00999  1934  0A                    ASL
01000  1935  0A                    ASL
01001  1936  C9 04      AETR       CMP     #$04
01002  1938  D0 02                 BNE     NETR
01003  193A  69 00                 ADC     #$00
01004  193C  C0 15      NETR       CPY     #$15
01005  193E  90 0A                 BCC     CETR
01006  1940  C0 18                 CPY     #$18
01007  1942  B0 06                 BCS     CETR
01008  1944  C9 20                 CMP     #$20
01009  1946  A9 20                 LDA     #$20
01010  1948  B0 04                 BCS     CATR
01011  194A  C9 2C      CETR       CMP     #$2C
01012  194C  90 02                 BCC     SATR
01013  194E  A9 40      CATR       LDA     #$40
01014  1950  85 02      SATR       STA     $02
01015  1952  86 03      XATR       STX     $03
01016  1954  86 06                 STX     $06
01017  1956             
01018  1956  4C 51 1B              JMP     NEX
01019  1959             
01020  1959  C0 FC      NCTD       CPY     #$FC
01021  195B  D0 53                 BNE     NC64
01022  195D  C9 B3                 CMP     #$B3
01023  195F  D0 4F                 BNE     NC64
01024  1961             
01025  1961                        ;       TED DETECTED ($FCB3) <- KERNAL
01026  1961                        ;       (PREPARING WITH SELF-MODIFICATIONS)
01027  1961             
01028  1961  8E 3F FF              STX     $FF3F
01029  1964             
01030  1964  8E FE 3F              STX     $3FFE
01031  1967  8E FF 3F              STX     $3FFF
01032  196A  8E FE 7F              STX     $7FFE
01033  196D  8E FF 7F              STX     $7FFF
01034  1970  8D FE FF              STA     $FFFE
01035  1973  8C FF FF              STY     $FFFF
01036  1976             
01037  1976  A9 38                 LDA     #$38
01038  1978  8D 10 14              STA     XAIN
01039  197B             
01040  197B                        ;       64K
01041  197B             
01042  197B  A0 04                 LDY     #$04
01043  197D  AD FE 7F              LDA     $7FFE
01044  1980  0D FF 7F              ORA     $7FFF
01045  1983  F0 0C                 BEQ     TYDD
01046  1985             
01047  1985                        ;       32K
01048  1985             
01049  1985  A0 84                 LDY     #$84
01050  1987  AD FE 3F              LDA     $3FFE
01051  198A  0D FF 3F              ORA     $3FFF
01052  198D  F0 02                 BEQ     TYDD
01053  198F             
01054  198F                        ;       16K
01055  198F             
01056  198F  A0 44                 LDY     #$44
01057  1991  8C 2C 19   TYDD       STY     METR+1
01058  1994             
01059  1994  E8                    INX
01060  1995  8E 4F 1B              STX     WMPA+1
01061  1998  8E 83 1C              STX     RLHC+1
01062  199B  A2 1C                 LDX     #$1C
01063  199D  A9 FF                 LDA     #$FF
01064  199F  8E 4C 1B              STX     WMPP+1
01065  19A2  8D 4D 1B              STA     WMPP+2
01066  19A5  8E 80 1C              STX     RLHB+1
01067  19A8  8D 81 1C              STA     RLHB+2
01068  19AB  E8                    INX
01069  19AC             
01070  19AC  A0 05                 LDY     #$05
01071  19AE  D0 5B                 BNE     VYDD
01072  19B0             
01073  19B0  C8         NC64       INY
01074  19B1  D0 79                 BNE     NC65
01075  19B3             
01076  19B3  C9 72                 CMP     #$72
01077  19B5  D0 66                 BNE     NVIC
01078  19B7             
01079  19B7                        ;       VIC-20 DETECTED ($FF72) <- KERNAL
01080  19B7                        ;       (SELF-MODIFICATIONS FOR GEORAM AND SCANLINES)
01081  19B7             
01082  19B7  BE 12 15   VGLP       LDX     GEMET,Y
01083  19BA  A9 98                 LDA     #$98
01084  19BC  E0 DE                 CPX     #$DE
01085  19BE  F0 06                 BEQ     VGSP
01086  19C0  A9 9C                 LDA     #$9C
01087  19C2  E0 DF                 CPX     #$DF
01088  19C4  D0 03                 BNE     VGYP
01089  19C6  99 12 15   VGSP       STA     GEMET,Y
01090  19C9  C8         VGYP       INY
01091  19CA  10 EB                 BPL     VGLP
01092  19CC             
01093  19CC  A0 06                 LDY     #$06
01094  19CE  CC AC 1B              CPY     NTPA
01095  19D1  8C AC 1B              STY     NTPA
01096  19D4  F0 41                 BEQ     XYDD
01097  19D6             
01098  19D6  A9 94                 LDA     #$94
01099  19D8  8D 28 19              STA     VETR+1
01100  19DB             
01101  19DB  A2 39                 LDX     #$39
01102  19DD  A9 38                 LDA     #$38
01103  19DF  8E C1 16              STX     GEV
01104  19E2  8D C2 16              STA     GEM
01105  19E5             
01106  19E5  A2 7B                 LDX     #$7B
01107  19E7  8D 1D 15              STA     GEN+1
01108  19EA  8E 15 15              STX     GE2+1
01109  19ED             
01110  19ED  A2 98                 LDX     #$98
01111  19EF  A9 9D                 LDA     #$9D
01112  19F1  8E 05 15              STX     GC1+1
01113  19F4  8D 09 15              STA     GC2+1
01114  19F7             
01115  19F7  A2 60                 LDX     #$60
01116  19F9  A9 29                 LDA     #$29
01117  19FB  8E B6 1D              STX     CPU
01118  19FE  8E 40 1B              STX     WAITMP
01119  1A01  8D 84 1C              STA     RLHD
01120  1A04             
01121  1A04  A2 04                 LDX     #$04
01122  1A06  A9 90                 LDA     #$90
01123  1A08  8E 0D 15              STX     GE1+1
01124  1A0B             
01125  1A0B  8E 96 1B   VYDD       STX     NTPR+1
01126  1A0E  8D 97 1B              STA     NTPR+2
01127  1A11  8E 56 1C              STX     RLLB+1
01128  1A14  8D 57 1C              STA     RLLB+2
01129  1A17             
01130  1A17  C8         XYDD       INY
01131  1A18  A2 00                 LDX     #$00
01132  1A1A             
01133  1A1A  4C E8 18              JMP     YEMR
01134  1A1D             
01135  1A1D  A0 50      NVIC       LDY     #$50
01136  1A1F  C9 17                 CMP     #$17
01137  1A21             
01138  1A21                        ;       DETECTING VDC
01139  1A21             
01140  1A21  20 4E 14              JSR     VEDET
01141  1A24             
01142  1A24  78                    SEI
01143  1A25  A2 00                 LDX     #$00
01144  1A27             
01145  1A27                        ;       DETECTING EMULATOR
01146  1A27             
01147  1A27  20 CE 1B              JSR     EMUL
01148  1A2A  F0 1E                 BEQ     VCLP
01149  1A2C             
01150  1A2C                        ;       C64 MODE (DETECTING C65 OR MEGA65)
01151  1A2C             
01152  1A2C  A5 FD      NC65       LDA     $FD
01153  1A2E  A0 FF                 LDY     #$FF
01154  1A30  C9 01                 CMP     #$01
01155  1A32  F0 38                 BEQ     MC65
01156  1A34  B0 72                 BCS     NTX
01157  1A36             
01158  1A36  20 57 16              JSR     VIC3
01159  1A39             
01160  1A39  CC 30 D0              CPY     $D030
01161  1A3C  F0 05                 BEQ     NO65
01162  1A3E  AD 31 D0              LDA     $D031
01163  1A41  C9 FF                 CMP     #$FF
01164  1A43  8C 2F D0   NO65       STY     $D02F
01165  1A46  F0 4B                 BEQ     M64
01166  1A48  D0 19                 BNE     M65
01167  1A4A             
01168  1A4A                        ;       C128 DETECTED ($FF17) <- KERNAL
01169  1A4A             
01170  1A4A  B9 90 28   VCLP       LDA     VC128,Y
01171  1A4D  99 40 01              STA     $0140,Y
01172  1A50  C8                    INY
01173  1A51  10 F7                 BPL     VCLP
01174  1A53             
01175  1A53                        ;       DETECTING MEMORY OF C128 (FOUR BANKS)
01176  1A53             
01177  1A53  20 40 01              JSR     $0140
01178  1A56             
01179  1A56  A0 18      MM18       LDY     #$18
01180  1A58  A5 FD                 LDA     $FD
01181  1A5A  F0 03                 BEQ     MM28
01182  1A5C             
01183  1A5C  09 14                 ORA     #$14
01184  1A5E  A8                    TAY
01185  1A5F             
01186  1A5F  A9 08      MM28       LDA     #$08
01187  1A61  D0 2E                 BNE     MB28
01188  1A63             
01189  1A63  2D 2F D0   M65        AND     $D02F
01190  1A66  29 F0                 AND     #$F0
01191  1A68  C9 D0                 CMP     #$D0
01192  1A6A  F0 27                 BEQ     M64
01193  1A6C             
01194  1A6C                        ;       C65 DETECTED
01195  1A6C             
01196  1A6C  A9 D7      MC65       LDA     #$D7
01197  1A6E  20 FE 17              JSR     DTV65
01198  1A71             
01199  1A71  20 98 15              JSR     VIC4
01200  1A74             
01201  1A74  AD 30 D0              LDA     $D030
01202  1A77  8C 2F D0              STY     $D02F
01203  1A7A  CD 30 D0              CMP     $D030
01204  1A7D  08                    PHP
01205  1A7E             
01206  1A7E  98                    TYA
01207  1A7F  A0 09                 LDY     #$09
01208  1A81             
01209  1A81  28                    PLP
01210  1A82  F0 01                 BEQ     MG65
01211  1A84             
01212  1A84                        ;       MEGA65 DETECTED
01213  1A84             
01214  1A84  C8                    INY
01215  1A85             
01216  1A85  CD FF FF   MG65       CMP     $FFFF
01217  1A88  F0 75                 BEQ     MD64
01218  1A8A             
01219  1A8A  20 57 1F              JSR     SYLF
01220  1A8D             
01221  1A8D  06 02                 ASL     $02
01222  1A8F  A9 09                 LDA     #$09
01223  1A91  D0 6D      MB28       BNE     MC28
01224  1A93             
01225  1A93                        ;       C64 MODE (DETECTING CHAMELEON, DTV, TDC OR C128)
01226  1A93             
01227  1A93  A9 2A      M64        LDA     #$2A
01228  1A95  8D FE D0              STA     $D0FE
01229  1A98  CD FE D0              CMP     $D0FE
01230  1A9B  F0 03                 BEQ     CHY
01231  1A9D             
01232  1A9D  CC FE D0              CPY     $D0FE
01233  1AA0  8C FE D0   CHY        STY     $D0FE
01234  1AA3  D0 58                 BNE     CHAM
01235  1AA5             
01236  1AA5  CC 3F D0              CPY     $D03F
01237  1AA8  D0 29      NTX        BNE     DTX
01238  1AAA             
01239  1AAA  8D 00 D8              STA     $D800
01240  1AAD  CD 00 D8              CMP     $D800
01241  1AB0  D0 21                 BNE     DTX
01242  1AB2             
01243  1AB2  A9 01                 LDA     #$01
01244  1AB4  8D 00 D0              STA     $D000
01245  1AB7  8D 3F D0              STA     $D03F
01246  1ABA  CD 40 D0              CMP     $D040
01247  1ABD  8E 00 D0              STX     $D000
01248  1AC0  D0 03                 BNE     DTN
01249  1AC2  EC 40 D0              CPX     $D040
01250  1AC5  8E 3F D0   DTN        STX     $D03F
01251  1AC8  F0 09                 BEQ     DTX
01252  1ACA             
01253  1ACA                        ;       DTV DETECTED
01254  1ACA             
01255  1ACA  20 F7 17              JSR     DTV64
01256  1ACD  A0 0D                 LDY     #$0D
01257  1ACF  84 0A                 STY     $0A
01258  1AD1  D0 2C                 BNE     MD64
01259  1AD3             
01260  1AD3  8E 2F D0   DTX        STX     $D02F
01261  1AD6  AD 2F D0              LDA     $D02F
01262  1AD9  8C 2F D0              STY     $D02F
01263  1ADC  A8                    TAY
01264  1ADD             
01265  1ADD  2D 31 D0              AND     $D031
01266  1AE0  29 F0                 AND     #$F0
01267  1AE2  C9 D0                 CMP     #$D0
01268  1AE4  F0 14                 BEQ     TDC
01269  1AE6             
01270  1AE6                        ;       C128 IN C64 MODE
01271  1AE6             
01272  1AE6  C0 F8                 CPY     #$F8
01273  1AE8  90 06                 BCC     MC14
01274  1AEA             
01275  1AEA  C0 FF                 CPY     #$FF
01276  1AEC  A0 18      MC18       LDY     #$18
01277  1AEE  90 02                 BCC     MC64
01278  1AF0             
01279  1AF0                        ;       C64 DETECTED ($FF48) <- KERNAL
01280  1AF0             
01281  1AF0  A0 14      MC14       LDY     #$14
01282  1AF2  A5 FD      MC64       LDA     $FD
01283  1AF4  F0 0A                 BEQ     MC28
01284  1AF6             
01285  1AF6  09 14                 ORA     #$14
01286  1AF8  A8                    TAY
01287  1AF9  2C                    BYTE    $2C
01288  1AFA             
01289  1AFA                        ;       TDC DETECTED
01290  1AFA             
01291  1AFA  A0 0B      TDC        LDY     #$0B
01292  1AFC  2C                    BYTE    $2C
01293  1AFD             
01294  1AFD                        ;       TURBO CHAMELEON DETECTED
01295  1AFD             
01296  1AFD  A0 0C      CHAM       LDY     #$0C
01297  1AFF             
01298  1AFF                        ;       C64 MODE
01299  1AFF             
01300  1AFF  8A         MD64       TXA
01301  1B00  48         MC28       PHA
01302  1B01             
01303  1B01  84 09                 STY     $09
01304  1B03  A9 99                 LDA     #$99
01305  1B05             
01306  1B05  8E 20 D0              STX     $D020
01307  1B08  8E 21 D0              STX     $D021
01308  1B0B             
01309  1B0B  20 D2 FF              JSR     $FFD2
01310  1B0E             
01311  1B0E  78                    SEI
01312  1B0F  68                    PLA
01313  1B10  48                    PHA
01314  1B11             
01315  1B11  D0 0E      BNS1       BNE     X64
01316  1B13  A9 07                 LDA     #$07
01317  1B15             
01318  1B15  05 00                 ORA     $00
01319  1B17  85 00                 STA     $00
01320  1B19             
01321  1B19  A9 F8                 LDA     #$F8
01322  1B1B  25 01                 AND     $01
01323  1B1D  85 01                 STA     $01
01324  1B1F             
01325  1B1F  D0 0C                 BNE     X128
01326  1B21             
01327  1B21  C9 08      X64        CMP     #$08
01328  1B23  D0 08                 BNE     X128
01329  1B25             
01330  1B25  A9 3F                 LDA     #$3F
01331  1B27  8D 00 FF              STA     $FF00
01332  1B2A             
01333  1B2A  A9 8E                 LDA     #$8E
01334  1B2C  2C                    BYTE    $2C
01335  1B2D             
01336  1B2D  A9 2C      X128       LDA     #$2C
01337  1B2F  8D 2F 19              STA     XETR
01338  1B32             
01339  1B32  A9 24                 LDA     #$24
01340  1B34  8E 30 19              STX     XETR+1
01341  1B37  8D 50 19              STA     SATR
01342  1B3A  8D 52 19              STA     XATR
01343  1B3D             
01344  1B3D  4C F6 18              JMP     REMR
01345  1B40             
01346  1B40                        ;       RASTER SYNCHRONIZATION
01347  1B40             
01348  1B40  20 4B 1B   WAITMP     JSR     WMPP
01349  1B43  D0 FB                 BNE     WAITMP
01350  1B45  20 4B 1B   WMP        JSR     WMPP
01351  1B48  F0 FB                 BEQ     WMP
01352  1B4A  60                    RTS
01353  1B4B  AD 11 D0   WMPP       LDA     $D011
01354  1B4E  29 80      WMPA       AND     #$80
01355  1B50  60         WEX        RTS
01356  1B51             
01357  1B51                        ;       (CONTINUATION)
01358  1B51             
01359  1B51  68         NEX        PLA
01360  1B52  48                    PHA
01361  1B53             
01362  1B53  84 09                 STY     $09
01363  1B55  85 FC                 STA     $FC
01364  1B57             
01365  1B57  D0 06      BNS2       BNE     NX64
01366  1B59  A9 07                 LDA     #$07
01367  1B5B             
01368  1B5B  05 01                 ORA     $01
01369  1B5D  85 01                 STA     $01
01370  1B5F             
01371  1B5F  20 50 16   NX64       JSR     VICV
01372  1B62             
01373  1B62                        ;       PRINT MESSAGE (MACHINE TYPE AND CPU)
01374  1B62             
01375  1B62  A9 1F                 LDA     #$1F
01376  1B64  20 E3 1C              JSR     MSG
01377  1B67             
01378  1B67  68                    PLA
01379  1B68  48                    PHA
01380  1B69  20 E3 1C              JSR     MSG
01381  1B6C             
01382  1B6C  A9 1B                 LDA     #$1B
01383  1B6E  20 E3 1C              JSR     MSG
01384  1B71             
01385  1B71  98                    TYA
01386  1B72  C0 09                 CPY     #$09
01387  1B74  D0 02                 BNE     X65
01388  1B76  A9 13                 LDA     #$13
01389  1B78  20 E3 1C   X65        JSR     MSG
01390  1B7B             
01391  1B7B  A9 1C                 LDA     #$1C
01392  1B7D  20 E3 1C              JSR     MSG
01393  1B80             
01394  1B80                        ;       PRINTING MEMORY (WITH "K")
01395  1B80             
01396  1B80  20 2E 17              JSR     NUM16
01397  1B83             
01398  1B83  A9 4B                 LDA     #$4B
01399  1B85  20 D2 FF              JSR     $FFD2
01400  1B88             
01401  1B88  78                    SEI
01402  1B89  68                    PLA
01403  1B8A  F0 04                 BEQ     NTPP
01404  1B8C  C9 06                 CMP     #$06
01405  1B8E  90 C0                 BCC     WEX
01406  1B90             
01407  1B90  48         NTPP       PHA
01408  1B91             
01409  1B91                        ;       DETECTING PAL/NTSC (BY COUNTING SCANLINES)
01410  1B91             
01411  1B91  8A         NTPX       TXA
01412  1B92             
01413  1B92  A8         NTPL       TAY
01414  1B93  85 02                 STA     $02
01415  1B95  AD 12 D0   NTPR       LDA     $D012
01416  1B98  C5 02                 CMP     $02
01417  1B9A  B0 F6                 BCS     NTPL
01418  1B9C             
01419  1B9C  C8                    INY
01420  1B9D  F0 F2                 BEQ     NTPX
01421  1B9F             
01422  1B9F  86 04                 STX     $04
01423  1BA1  86 05                 STX     $05
01424  1BA3  8E 79 1C              STX     XIUX+1
01425  1BA6             
01426  1BA6  E6 02                 INC     $02
01427  1BA8  A2 03                 LDX     #$03
01428  1BAA  A0 FF                 LDY     #$FF
01429  1BAC  24 02      NTPA       BIT     $02
01430  1BAE             
01431  1BAE  8E 44 1C              STX     X03+2
01432  1BB1  CA                    DEX
01433  1BB2  8E 3F 1C              STX     X02+2
01434  1BB5  CA                    DEX
01435  1BB6  8E 3A 1C              STX     X01+2
01436  1BB9             
01437  1BB9  A5 02                 LDA     $02
01438  1BBB  86 03                 STX     $03
01439  1BBD             
01440  1BBD  C9 10                 CMP     #$10
01441  1BBF  A9 68                 LDA     #$68
01442  1BC1  B0 02                 BCS     NPAL
01443  1BC3             
01444  1BC3  CA                    DEX
01445  1BC4  C8                    INY
01446  1BC5             
01447  1BC5  CD 0D 1C   NPAL       CMP     NPL
01448  1BC8  F0 43                 BEQ     NPL
01449  1BCA             
01450  1BCA  68                    PLA
01451  1BCB  A2 00                 LDX     #$00
01452  1BCD  60                    RTS
01453  1BCE             
01454  1BCE                        ;       DETECTING EMULATOR #1
01455  1BCE             
01456  1BCE  A0 60      EMUL       LDY     #$60
01457  1BD0  CC E9 20              CPY     EMMA
01458  1BD3  D0 1A                 BNE     EMME
01459  1BD5             
01460  1BD5  A5 FD                 LDA     $FD
01461  1BD7  20 BF 20              JSR     EMUL2
01462  1BDA  D0 13                 BNE     EMME
01463  1BDC             
01464  1BDC  68         JMME       PLA
01465  1BDD  68                    PLA
01466  1BDE             
01467  1BDE  A9 0E                 LDA     #$0E
01468  1BE0  8D 57 1A              STA     MM18+1
01469  1BE3  8D ED 1A              STA     MC18+1
01470  1BE6  8D F1 1A              STA     MC14+1
01471  1BE9             
01472  1BE9  20 00 18   JSSE       JSR     DTV66
01473  1BEC             
01474  1BEC  4C D3 1A   DMME       JMP     DTX
01475  1BEF             
01476  1BEF  AD FE FF   EMME       LDA     $FFFE
01477  1BF2  A0 00                 LDY     #$00
01478  1BF4  C9 17                 CMP     #$17
01479  1BF6  60                    RTS
01480  1BF7             
01481  1BF7                        ;       "DMA D700"
01482  1BF7             
01483  1BF7  44 4D 41   DS         BYTE    $44,$4D,$41,$20,$44,$37,$30,$30
01484  1BFF             
01485  1BFF             
01486  1BFF             *=$1C00
01487  1C00             
01488  1C00                        ;       0 SYS5133
01489  1C00             
01490  1C00  00 0B 1C              BYTE    $00,$0B,$1C,$00,$00,$9E,$35,$31,$33,$33,$00,$00,$00
01491  1C0D             
01492  1C0D             
01493  1C0D             *=$1C0D
01494  1C0D             
01495  1C0D  68         NPL        PLA
01496  1C0E  C9 08                 CMP     #$08
01497  1C10  90 0A                 BCC     NPLC
01498  1C12  D0 03                 BNE     NPLB
01499  1C14             
01500  1C14                        ;       PAL/NTSC SWITCH ON C128
01501  1C14             
01502  1C14  8C 03 0A   NPLA       STY     $0A03
01503  1C17             
01504  1C17                        ;       PAL/NTSC SWITCH ON C65
01505  1C17             
01506  1C17  8C 03 11   NPLB       STY     $1103
01507  1C1A  B0 04                 BCS     NPLX
01508  1C1C             
01509  1C1C                        ;       PAL/NTSC SWITCH ON C64
01510  1C1C             
01511  1C1C  8E A6 02   NPLC       STX     $02A6
01512  1C1F  38                    SEC
01513  1C20             
01514  1C20  8A         NPLX       TXA
01515  1C21  48                    PHA
01516  1C22             
01517  1C22                        ;       CPU SPEED TEST (FOR C64/128/65/TED/VIC-20):
01518  1C22             
01519  1C22                        ;       EXACTLY FOR 0.1 SECOND, WE ARE COUNTING THE CYCLES. 100.000
01520  1C22                        ;       CYCLES FOR THIS TIME PERIOD SIGNS A 1 MHZ CLOCK. IF WE MEASURE
01521  1C22                        ;       MORE OR LESS, THE CLOCK IS ALSO PROPORTIONATELY MORE OR LESS.
01522  1C22             
01523  1C22                        ;       (ALTHOUGH THIS METHOD IS NOT ALWAYS PERFECTLY EXACT, BECAUSE
01524  1C22                        ;       ANOTHER TYPE OF CPU, E.G. A 65C02 OR A 65CE02 ETC., MAY PRODUCE
01525  1C22                        ;       A SLIGHTLY DIFFERENT NUMBER OF CYCLES IN THE INNER LOOP.)
01526  1C22             
01527  1C22  49 01                 EOR     #$01
01528  1C24  69 04                 ADC     #$04
01529  1C26             
01530  1C26                        ;       0.1 SEC = 5 X PAL OR 6 X NTSC FRAMES
01531  1C26             
01532  1C26  85 06                 STA     $06
01533  1C28  78                    SEI
01534  1C29             
01535  1C29                        ;       RASTER SYNCHRONIZATION
01536  1C29             
01537  1C29  20 40 1B              JSR     WAITMP
01538  1C2C             
01539  1C2C                        ;       THE INNER LOOP TAKES 99 CYCLES (FROM X00 TO X09), SO REPEATEDLY
01540  1C2C                        ;       (2 + 99 X 10 - 2 + 9) X 100 = 99.900 CYCLES (FROM XXX TO X99),
01541  1C2C                        ;       PLUS FEW (FOR A FEW TIMES WHEN A BIT MORE BECAUSE OF BRANCHING)
01542  1C2C                        ;       THAT MEANS JUST SOME HARDLY LESS THAN 100.000 CYCLES AFTER ALL:
01543  1C2C             
01544  1C2C                        ;       ...AT LEAST ON A 65XX CPU (PROBABLY ON C65 SLIGHTLY LESS),
01545  1C2C                        ;       ...AND WITH SCREEN/SPRITES/INTERRUPTS COMPLETELY TURNED OFF.
01546  1C2C             
01547  1C2C                        ;       (THIS PROGRAM TAKES ONLY CARE ABOUT DISABLING THE INTERRUPTS,
01548  1C2C                        ;       THUS OTHER THINGS, LIKE THE SCREEN AND SPRITES, AS WELL AS THE
01549  1C2C                        ;       FAST MODE AND THE TURBO SETTINGS YET ARE WAITING FOR THE USER!)
01550  1C2C             
01551  1C2C  A0 00      YYY        LDY     #$00
01552  1C2E             
01553  1C2E  A2 00      XXX        LDX     #$00
01554  1C30             
01555  1C30  A5 04      X00        LDA     $04
01556  1C32  C1 03                 CMP     ($03,X)
01557  1C34  A5 05                 LDA     $05
01558  1C36  C1 02                 CMP     ($02,X)
01559  1C38             
01560  1C38  AD 00 01   X01        LDA     $0100
01561  1C3B  C1 04                 CMP     ($04,X)
01562  1C3D  AD 01 02   X02        LDA     $0201
01563  1C40  C1 03                 CMP     ($03,X)
01564  1C42  AD 02 03   X03        LDA     $0302
01565  1C45  C1 02                 CMP     ($02,X)
01566  1C47             
01567  1C47  EE 3A 1C              INC     X01+2
01568  1C4A  CE 3F 1C              DEC     X02+2
01569  1C4D  EE 44 1C              INC     X03+2
01570  1C50             
01571  1C50  EA                    NOP
01572  1C51  EA                    NOP
01573  1C52  EA                    NOP
01574  1C53  EA                    NOP
01575  1C54  EA                    NOP
01576  1C55             
01577  1C55  AD 12 D0   RLLB       LDA     $D012
01578  1C58  29 F0                 AND     #$F0
01579  1C5A  F0 1C                 BEQ     XIUX
01580  1C5C  EA                    NOP
01581  1C5D  8D 79 1C              STA     XIUX+1
01582  1C60             
01583  1C60  E8         XUIX       INX
01584  1C61  E0 0A                 CPX     #$0A
01585  1C63  B0 03                 BCS     X09
01586  1C65  4C 30 1C              JMP     X00
01587  1C68             
01588  1C68  C8         X09        INY
01589  1C69  C0 64                 CPY     #$64
01590  1C6B  B0 03                 BCS     X99
01591  1C6D  4C 2E 1C              JMP     XXX
01592  1C70             
01593  1C70  E6 04      X99        INC     $04
01594  1C72  D0 B8                 BNE     YYY
01595  1C74  E6 05                 INC     $05
01596  1C76  B0 B4                 BCS     YYY
01597  1C78             
01598  1C78  C9 00      XIUX       CMP     #$00
01599  1C7A  F0 E4                 BEQ     XUIX
01600  1C7C  8D 79 1C              STA     XIUX+1
01601  1C7F             
01602  1C7F  AD 11 D0   RLHB       LDA     $D011
01603  1C82  29 80      RLHC       AND     #$80
01604  1C84  F0 DA      RLHD       BEQ     XUIX
01605  1C86             
01606  1C86  C6 06                 DEC     $06
01607  1C88  D0 D6                 BNE     XUIX
01608  1C8A             
01609  1C8A  E0 05                 CPX     #$05
01610  1C8C  A6 04                 LDX     $04
01611  1C8E  A5 05                 LDA     $05
01612  1C90  90 0C                 BCC     ROUA
01613  1C92  C8                    INY
01614  1C93  C0 64                 CPY     #$64
01615  1C95  90 07                 BCC     ROUA
01616  1C97  A0 00                 LDY     #$00
01617  1C99  E8                    INX
01618  1C9A  D0 02                 BNE     ROUA
01619  1C9C  69 00                 ADC     #$00
01620  1C9E             
01621  1C9E  86 07      ROUA       STX     $07
01622  1CA0  85 08                 STA     $08
01623  1CA2             
01624  1CA2  68                    PLA
01625  1CA3  09 10                 ORA     #$10
01626  1CA5  20 E1 1C              JSR     XSG
01627  1CA8             
01628  1CA8  A9 0F                 LDA     #$0F
01629  1CAA  20 E3 1C              JSR     MSG
01630  1CAD             
01631  1CAD                        ;       PRINTING NUMBER OF SCANLINES
01632  1CAD             
01633  1CAD  98                    TYA
01634  1CAE  48                    PHA
01635  1CAF  20 2E 17              JSR     NUM16
01636  1CB2             
01637  1CB2  A9 12                 LDA     #$12
01638  1CB4  20 E3 1C              JSR     MSG
01639  1CB7             
01640  1CB7  A9 1D                 LDA     #$1D
01641  1CB9  20 E3 1C              JSR     MSG
01642  1CBC             
01643  1CBC  A5 07                 LDA     $07
01644  1CBE  A4 08                 LDY     $08
01645  1CC0  85 02                 STA     $02
01646  1CC2  84 03                 STY     $03
01647  1CC4             
01648  1CC4                        ;       PRINTING X.YY MHZ
01649  1CC4             
01650  1CC4  20 2E 17              JSR     NUM16
01651  1CC7  68                    PLA
01652  1CC8  85 02                 STA     $02
01653  1CCA  84 03                 STY     $03
01654  1CCC             
01655  1CCC  A9 2E                 LDA     #$2E
01656  1CCE  20 D2 FF              JSR     $FFD2
01657  1CD1             
01658  1CD1  A5 02                 LDA     $02
01659  1CD3  C9 0A                 CMP     #$0A
01660  1CD5  B0 05                 BCS     RUM
01661  1CD7             
01662  1CD7  A9 30                 LDA     #$30
01663  1CD9  20 D2 FF              JSR     $FFD2
01664  1CDC             
01665  1CDC  20 2E 17   RUM        JSR     NUM16
01666  1CDF             
01667  1CDF  A9 1E                 LDA     #$1E
01668  1CE1             
01669  1CE1                        ;       PRINT MESSAGE SUBROUTINE
01670  1CE1             
01671  1CE1  A2 00      XSG        LDX     #$00
01672  1CE3  84 05      MSG        STY     $05
01673  1CE5  A8                    TAY
01674  1CE6  F0 0C                 BEQ     YSG
01675  1CE8             
01676  1CE8  E8         XLP        INX
01677  1CE9             
01678  1CE9  BD 07 1D   YLP        LDA     MGX-1,X
01679  1CEC  F0 03                 BEQ     YSP
01680  1CEE  E8                    INX
01681  1CEF  D0 F8                 BNE     YLP
01682  1CF1             
01683  1CF1  88         YSP        DEY
01684  1CF2  D0 F4                 BNE     XLP
01685  1CF4             
01686  1CF4  BD 08 1D   YSG        LDA     MGX,X
01687  1CF7  D0 08                 BNE     MNX
01688  1CF9             
01689  1CF9  A4 05                 LDY     $05
01690  1CFB  78                    SEI
01691  1CFC  AA                    TAX
01692  1CFD  60                    RTS
01693  1CFE             
01694  1CFE             
01695  1CFE             *=$1CFE
01696  1CFE             
01697  1CFE                        ;       (C128 BASIC FIX) <- $1CFE (SEE ALSO AT $20FE/$14FE/$13FE)
01698  1CFE             
01699  1CFE  00 00 00              BYTE    $00,$00,$00
01700  1D01             
01701  1D01  58         MNX        CLI
01702  1D02  20 D2 FF              JSR     $FFD2
01703  1D05  E8                    INX
01704  1D06  D0 EC                 BNE     YSG
01705  1D08             
01706  1D08                        ;       #00 "C64"
01707  1D08             
01708  1D08  43 36 34   MGX        BYTE    $43,$36,$34,$00
01709  1D0C             
01710  1D0C                        ;       #01 "R1-2"
01711  1D0C             
01712  1D0C  52 31 2D              BYTE    $52,$31,$2D,$32,$00
01713  1D11             
01714  1D11                        ;       #02 "R3"
01715  1D11             
01716  1D11  52 33 00              BYTE    $52,$33,$00
01717  1D14             
01718  1D14                        ;       #03 "R4"
01719  1D14             
01720  1D14  52 34 00              BYTE    $52,$34,$00
01721  1D17             
01722  1D17                        ;       #04 "PET"
01723  1D17             
01724  1D17  50 45 54              BYTE    $50,$45,$54,$00
01725  1D1B             
01726  1D1B                        ;       #05 "LCD"
01727  1D1B             
01728  1D1B  4C 43 44              BYTE    $4C,$43,$44,$00
01729  1D1F             
01730  1D1F                        ;       #06 "TED"
01731  1D1F             
01732  1D1F  54 45 44              BYTE    $54,$45,$44,$00
01733  1D23             
01734  1D23                        ;       #07 "VIC"
01735  1D23             
01736  1D23  56 49 43              BYTE    $56,$49,$43,$00
01737  1D27             
01738  1D27                        ;       #08 "C128"
01739  1D27             
01740  1D27  43 31 32              BYTE    $43,$31,$32,$38,$00
01741  1D2C             
01742  1D2C                        ;       #09 "C65"
01743  1D2C             
01744  1D2C  43 36 35              BYTE    $43,$36,$35,$00
01745  1D30             
01746  1D30                        ;       #0A "MEGA65"
01747  1D30             
01748  1D30  4D 45 47              BYTE    $4D,$45,$47,$41,$36,$35,$00
01749  1D37             
01750  1D37                        ;       #0B "TDC"
01751  1D37             
01752  1D37  54 44 43              BYTE    $54,$44,$43,$00
01753  1D3B             
01754  1D3B                        ;       #0C "CHM"
01755  1D3B             
01756  1D3B  43 48 4D              BYTE    $43,$48,$4D,$00
01757  1D3F             
01758  1D3F                        ;       #0D "DTV"
01759  1D3F             
01760  1D3F  44 54 56              BYTE    $44,$54,$56,$00
01761  1D43             
01762  1D43                        ;       #0E "EMU"
01763  1D43             
01764  1D43  45 4D 55   XEMU       BYTE    $45,$4D,$55,$00
01765  1D47             
01766  1D47                        ;       #0F " ON "
01767  1D47             
01768  1D47  20 4F 4E              BYTE    $20,$4F,$4E,$20,$00
01769  1D4C             
01770  1D4C                        ;       #10 "NTSC"
01771  1D4C             
01772  1D4C  0D 4E 54              BYTE    $0D,$4E,$54,$53,$43,$00
01773  1D52             
01774  1D52                        ;       #11 "PAL"
01775  1D52             
01776  1D52  0D 50 41              BYTE    $0D,$50,$41,$4C,$00
01777  1D57             
01778  1D57                        ;       #12 " SCANLINES"
01779  1D57             
01780  1D57  20 53 43              BYTE    $20,$53,$43,$41,$4E,$4C,$49,$4E,$45,$53,$00
01781  1D62             
01782  1D62                        ;       #13 "4510"
01783  1D62             
01784  1D62  34 35 31              BYTE    $34,$35,$31,$30,$00
01785  1D67             
01786  1D67                        ;       #14 "6510"
01787  1D67             
01788  1D67  36 35 31              BYTE    $36,$35,$31,$30,$00
01789  1D6C             
01790  1D6C                        ;       #15 "65CE02"
01791  1D6C             
01792  1D6C  36 35 43              BYTE    $36,$35,$43,$45,$30,$32,$00
01793  1D73             
01794  1D73                        ;       #16 "65C02"
01795  1D73             
01796  1D73  36 35 43              BYTE    $36,$35,$43,$30,$32,$00
01797  1D79             
01798  1D79                        ;       #17 "65816"
01799  1D79             
01800  1D79  36 35 38              BYTE    $36,$35,$38,$31,$36,$00
01801  1D7F             
01802  1D7F                        ;       #18 "8502"
01803  1D7F             
01804  1D7F  38 35 30              BYTE    $38,$35,$30,$32,$00
01805  1D84             
01806  1D84                        ;       #19 "7501"
01807  1D84             
01808  1D84  37 35 30              BYTE    $37,$35,$30,$31,$00
01809  1D89             
01810  1D89                        ;       #1A "6502"
01811  1D89             
01812  1D89  36 35 30              BYTE    $36,$35,$30,$32,$00
01813  1D8E             
01814  1D8E                        ;       #1B " ("
01815  1D8E             
01816  1D8E  20 28 00              BYTE    $20,$28,$00
01817  1D91             
01818  1D91                        ;       #1C ") WITH "
01819  1D91             
01820  1D91  29 20 57              BYTE    $29,$20,$57,$49,$54,$48,$20,$00
01821  1D99             
01822  1D99                        ;       #1D "CPU SPEED AT "
01823  1D99             
01824  1D99  0D 43 50              BYTE    $0D,$43,$50,$55,$20,$53,$50,$45,$45,$44,$20,$41,$54,$20,$00
01825  1DA8             
01826  1DA8                        ;       #1E " MHZ"
01827  1DA8             
01828  1DA8  20 4D 48              BYTE    $20,$4D,$48,$5A,$00
01829  1DAD             
01830  1DAD                        ;       #1F
01831  1DAD             
01832  1DAD  0E 93 00              BYTE    $0E,$93,$00
01833  1DB0             
01834  1DB0                        ;       "IDE"
01835  1DB0             
01836  1DB0  49 44 45   IDE64      BYTE    $49,$44,$45
01837  1DB3             
01838  1DB3                        ;       "ULT"
01839  1DB3             
01840  1DB3  55 4C 54   ULT        BYTE    $55,$4C,$54
01841  1DB6             
01842  1DB6                        ;       SUPERRAM DETECTION (SUPERCPU) OR DMA (C65/DTV)
01843  1DB6                        ;       (CONTINUATION)
01844  1DB6             
01845  1DB6  A5 FD      CPU        LDA     $FD
01846  1DB8  A2 00                 LDX     #$00
01847  1DBA  C9 03                 CMP     #$03
01848  1DBC  86 0D                 STX     $0D
01849  1DBE  8E CA 16              STX     SCPU
01850  1DC1  D0 6A                 BNE     SOSC
01851  1DC3             
01852  1DC3  AC 7B D2              LDY     $D27B
01853  1DC6  C8                    INY
01854  1DC7  F0 61                 BEQ     NOSC
01855  1DC9             
01856  1DC9  AD 7D D2              LDA     $D27D
01857  1DCC  AC 7F D2              LDY     $D27F
01858  1DCF  85 0C                 STA     $0C
01859  1DD1  84 0D                 STY     $0D
01860  1DD3             
01861  1DD3  98                    TYA
01862  1DD4  88                    DEY
01863  1DD5  E5 0C                 SBC     $0C
01864  1DD7  8C F1 1D              STY     SLY1+3
01865  1DDA  8C F5 1D              STY     SLY2+3
01866  1DDD  A0 08                 LDY     #$08
01867  1DDF  90 49                 BCC     NOSC
01868  1DE1             
01869  1DE1  0A         SLPL       ASL
01870  1DE2  88                    DEY
01871  1DE3  F0 45                 BEQ     NOSC
01872  1DE5  90 FA                 BCC     SLPL
01873  1DE7             
01874  1DE7  98         SLPQ       TYA
01875  1DE8  0A                    ASL
01876  1DE9  0A                    ASL
01877  1DEA  A8                    TAY
01878  1DEB             
01879  1DEB  8E FF 13              STX     $13FF
01880  1DEE             
01881  1DEE                        ;       STA $XX13FF
01882  1DEE             
01883  1DEE  8F FF 13   SLY1       BYTE    $8F,$FF,$13,$FF
01884  1DF2             
01885  1DF2                        ;       CMP $XX13FF
01886  1DF2             
01887  1DF2  CF FF 13   SLY2       BYTE    $CF,$FF,$13,$FF
01888  1DF6             
01889  1DF6  D0 32                 BNE     NOSC
01890  1DF8             
01891  1DF8  AD FF 13              LDA     $13FF
01892  1DFB  D0 2D                 BNE     NOSC
01893  1DFD             
01894  1DFD  B9 AB 15   SAPP       LDA     M128,Y
01895  1E00  F0 09                 BEQ     SZPZ
01896  1E02  9D D4 16              STA     S64,X
01897  1E05  E0 03                 CPX     #$03
01898  1E07  C8                    INY
01899  1E08  E8                    INX
01900  1E09  90 F2                 BCC     SAPP
01901  1E0B             
01902  1E0B  A9 0D      SZPZ       LDA     #$0D
01903  1E0D  CD BC 16              CMP     GEO
01904  1E10  F0 15                 BEQ     SEO
01905  1E12  CE BC 16              DEC     GEO
01906  1E15             
01907  1E15  CD AE 16              CMP     REU
01908  1E18  F0 0D                 BEQ     SEO
01909  1E1A  CE AE 16              DEC     REU
01910  1E1D             
01911  1E1D  CD 9E 16              CMP     VDC
01912  1E20  F0 05                 BEQ     SEO
01913  1E22             
01914  1E22  A0 BC                 LDY     #<SCPU-$0E
01915  1E24  8C 2E 14              STY     OLP+1
01916  1E27             
01917  1E27  8D CA 16   SEO        STA     SCPU
01918  1E2A             
01919  1E2A  4C 50 16   NOSC       JMP     VICV
01920  1E2D             
01921  1E2D                        ;       DMA (C65) DETECTION (BY WRITING AND COMPARING)
01922  1E2D             
01923  1E2D  C9 01      SOSC       CMP     #$01
01924  1E2F  D0 58                 BNE     DOSC
01925  1E31             
01926  1E31  AC FF FF              LDY     $FFFF
01927  1E34  C8                    INY
01928  1E35  F0 F3                 BEQ     NOSC
01929  1E37             
01930  1E37  20 57 16              JSR     VIC3
01931  1E3A             
01932  1E3A                        ;       LDZ #$00
01933  1E3A             
01934  1E3A  A3 00                 BYTE    $A3,$00
01935  1E3C             
01936  1E3C  A2 02                 LDX     #$02
01937  1E3E  A0 40                 LDY     #$40
01938  1E40  86 02                 STX     $02
01939  1E42  84 03                 STY     $03
01940  1E44             
01941  1E44                        ;       DEZ / TZA
01942  1E44             
01943  1E44  3B 6B      CLP1       BYTE    $3B,$6B
01944  1E46             
01945  1E46  20 77 FF              JSR     $FF77
01946  1E49             
01947  1E49                        ;       TZA
01948  1E49             
01949  1E49  6B                    BYTE    $6B
01950  1E4A             
01951  1E4A  D0 F8                 BNE     CLP1
01952  1E4C             
01953  1E4C                        ;       INC A
01954  1E4C             
01955  1E4C  1A                    BYTE    $1A
01956  1E4D             
01957  1E4D  20 74 FF   CLP2       JSR     $FF74
01958  1E50  85 04                 STA     $04
01959  1E52             
01960  1E52                        ;       TZA
01961  1E52             
01962  1E52  6B                    BYTE    $6B
01963  1E53             
01964  1E53  C9 02                 CMP     #$02
01965  1E55  F0 08                 BEQ     CINZ
01966  1E57  C9 03                 CMP     #$03
01967  1E59  F0 04                 BEQ     CINZ
01968  1E5B             
01969  1E5B  C5 04                 CMP     $04
01970  1E5D  D0 06                 BNE     CLNQ
01971  1E5F             
01972  1E5F                        ;       INZ
01973  1E5F             
01974  1E5F  1B         CINZ       BYTE    $1B
01975  1E60             
01976  1E60  D0 EB                 BNE     CLP2
01977  1E62             
01978  1E62                        ;       TZA
01979  1E62             
01980  1E62  6B                    BYTE    $6B
01981  1E63             
01982  1E63  F0 05                 BEQ     CLNZ
01983  1E65             
01984  1E65                        ;       TZA
01985  1E65             
01986  1E65  6B         CLNQ       BYTE    $6B
01987  1E66             
01988  1E66  F0 C2                 BEQ     NOSC
01989  1E68             
01990  1E68                        ;       LDZ #$00
01991  1E68             
01992  1E68  A3 00                 BYTE    $A3,$00
01993  1E6A             
01994  1E6A  A2 08      CLNZ       LDX     #$08
01995  1E6C  A8                    TAY
01996  1E6D             
01997  1E6D  BD F6 1B   SCP        LDA     DS-1,X
01998  1E70  9D CA 16              STA     SCPU,X
01999  1E73  CA                    DEX
02000  1E74  D0 F7                 BNE     SCP
02001  1E76             
02002  1E76  A2 08                 LDX     #$08
02003  1E78  98                    TYA
02004  1E79  F0 06                 BEQ     CLPQ
02005  1E7B             
02006  1E7B  0A         CLPL       ASL
02007  1E7C  CA                    DEX
02008  1E7D  90 FC                 BCC     CLPL
02009  1E7F  F0 8A                 BEQ     SZPZ
02010  1E81             
02011  1E81  20 E1 14   CLPQ       JSR     RYND
02012  1E84  85 0D                 STA     $0D
02013  1E86             
02014  1E86  4C FD 1D              JMP     SAPP
02015  1E89             
02016  1E89                        ;       DMA (DTV) DETECTION (BY WRITING AND COMPARING)
02017  1E89             
02018  1E89  A4 0A      DOSC       LDY     $0A
02019  1E8B  F0 40                 BEQ     SEUX
02020  1E8D             
02021  1E8D  A8                    TAY
02022  1E8E  D0 3D                 BNE     SEUX
02023  1E90             
02024  1E90  A9 01                 LDA     #$01
02025  1E92  8D 3F D0              STA     $D03F
02026  1E95             
02027  1E95  8A         DZP1       TXA
02028  1E96  9D 80 13              STA     $1380,X
02029  1E99  E8                    INX
02030  1E9A  10 F9                 BPL     DZP1
02031  1E9C             
02032  1E9C  20 D0 1E              JSR     DMOUT
02033  1E9F  EE FF 13              INC     $13FF
02034  1EA2  20 E5 1E              JSR     DMAIN
02035  1EA5             
02036  1EA5  98         DZP3       TYA
02037  1EA6  D9 80 13              CMP     $1380,Y
02038  1EA9  D0 1C                 BNE     CEUX
02039  1EAB  C8                    INY
02040  1EAC  10 F7                 BPL     DZP3
02041  1EAE             
02042  1EAE  A0 3F                 LDY     #$3F
02043  1EB0             
02044  1EB0  8C FF 13   DZP4       STY     $13FF
02045  1EB3  20 D0 1E              JSR     DMOUT
02046  1EB6  88                    DEY
02047  1EB7  10 F7                 BPL     DZP4
02048  1EB9             
02049  1EB9  C8         DZP5       INY
02050  1EBA  20 E5 1E              JSR     DMAIN
02051  1EBD  CC FF 13              CPY     $13FF
02052  1EC0  F0 F7                 BEQ     DZP5
02053  1EC2             
02054  1EC2  98         DZPQ       TYA
02055  1EC3  F0 02                 BEQ     CEUX
02056  1EC5  38                    SEC
02057  1EC6  24                    BYTE    $24
02058  1EC7  18         CEUX       CLC
02059  1EC8             
02060  1EC8  8E 3F D0   DEUX       STX     $D03F
02061  1ECB  B0 9D                 BCS     CLNZ
02062  1ECD             
02063  1ECD  4C 50 16   SEUX       JMP     VICV
02064  1ED0             
02065  1ED0                        ;       DMA (DTV) TRANSFER SUBROUTINE
02066  1ED0             
02067  1ED0  20 1E 1F   DMOUT      JSR     WDMA
02068  1ED3             
02069  1ED3  A9 13                 LDA     #$13
02070  1ED5  8D 01 D3              STA     $D301
02071  1ED8  A9 40                 LDA     #$40
02072  1EDA  8D 02 D3              STA     $D302
02073  1EDD  8D 04 D3              STA     $D304
02074  1EE0  20 1C 17              JSR     APLP
02075  1EE3  D0 13                 BNE     DMSR
02076  1EE5             
02077  1EE5  20 1E 1F   DMAIN      JSR     WDMA
02078  1EE8             
02079  1EE8  20 1C 17              JSR     APLP
02080  1EEB  8D 02 D3              STA     $D302
02081  1EEE  A9 13                 LDA     #$13
02082  1EF0  8D 04 D3              STA     $D304
02083  1EF3  A9 40                 LDA     #$40
02084  1EF5  8D 01 D3              STA     $D301
02085  1EF8             
02086  1EF8  8D 05 D3   DMSR       STA     $D305
02087  1EFB             
02088  1EFB  A9 80                 LDA     #$80
02089  1EFD  8D 00 D3              STA     $D300
02090  1F00  8D 03 D3              STA     $D303
02091  1F03             
02092  1F03  8D 0A D3   WDMR       STA     $D30A
02093  1F06  8E 0B D3              STX     $D30B
02094  1F09             
02095  1F09  A9 01                 LDA     #$01
02096  1F0B  A2 00                 LDX     #$00
02097  1F0D  8D 06 D3              STA     $D306
02098  1F10  8E 07 D3              STX     $D307
02099  1F13  8D 08 D3              STA     $D308
02100  1F16  8E 09 D3              STX     $D309
02101  1F19             
02102  1F19  A9 0D                 LDA     #$0D
02103  1F1B  8D 1F D3              STA     $D31F
02104  1F1E             
02105  1F1E  A9 01      WDMA       LDA     #$01
02106  1F20  2D 1F D3   WAND       AND     $D31F
02107  1F23  D0 FB                 BNE     WAND
02108  1F25             
02109  1F25  AA                    TAX
02110  1F26  60                    RTS
02111  1F27             
02112  1F27                        ;       DETECTING IDE64 OR 1541 ULTIMATE
02113  1F27             
02114  1F27  A0 02      EMUL3      LDY     #$02
02115  1F29             
02116  1F29  B9 60 DE   NEOR       LDA     $DE60,Y
02117  1F2C  59 B0 1D              EOR     IDE64,Y
02118  1F2F  D0 0A                 BNE     NIDE
02119  1F31             
02120  1F31  88                    DEY
02121  1F32  10 F5                 BPL     NEOR
02122  1F34             
02123  1F34  8C FD 14              STY     ZDE
02124  1F37             
02125  1F37  A0 B2                 LDY     #<IDE64+2
02126  1F39  D0 09                 BNE     ULTI
02127  1F3B             
02128  1F3B  AD 1D DF   NIDE       LDA     $DF1D
02129  1F3E  49 C9                 EOR     #$C9
02130  1F40  D0 13                 BNE     UMMA
02131  1F42             
02132  1F42  A0 B5                 LDY     #<ULT+2
02133  1F44             
02134  1F44  A9 2C      ULTI       LDA     #$2C
02135  1F46  A2 03                 LDX     #$03
02136  1F48  8D E9 1B              STA     JSSE
02137  1F4B             
02138  1F4B  B9 00 1D   ULP        LDA     $1D00,Y
02139  1F4E  88                    DEY
02140  1F4F  CA                    DEX
02141  1F50  9D 43 1D              STA     XEMU,X
02142  1F53  D0 F6                 BNE     ULP
02143  1F55             
02144  1F55  78         UMMA       SEI
02145  1F56  60                    RTS
02146  1F57             
02147  1F57             
02148  1F57             *=$1F57
02149  1F57             
02150  1F57                        ;       (SELF-MODIFICATION)
02151  1F57             
02152  1F57  84 09      SYLF       STY     $09
02153  1F59  A0 11                 LDY     #$11
02154  1F5B             
02155  1F5B  B9 7A 1F   SPLP       LDA     SPAX,Y
02156  1F5E  99 EE 1F              STA     $1FEE,Y
02157  1F61  88                    DEY
02158  1F62  10 F7                 BPL     SPLP
02159  1F64             
02160  1F64  20 83 1F              JSR     SPIXX
02161  1F67             
02162  1F67  05 00                 ORA     $00
02163  1F69  85 00                 STA     $00
02164  1F6B             
02165  1F6B  A9 FE                 LDA     #$FE
02166  1F6D  25 01                 AND     $01
02167  1F6F  85 01                 STA     $01
02168  1F71             
02169  1F71  20 C6 27              JSR     XYLF
02170  1F74             
02171  1F74  A9 07                 LDA     #$07
02172  1F76  05 01                 ORA     $01
02173  1F78  85 01                 STA     $01
02174  1F7A             
02175  1F7A             
02176  1F7A             *=$1F7A
02177  1F7A             
02178  1F7A                        ;       (* = $1FEE) <-> (* = $27EE)
02179  1F7A             
02180  1F7A  F0 0D      SPAX       BEQ     SPAQ
02181  1F7C             
02182  1F7C  8A         SPAXX      TXA
02183  1F7D  A8                    TAY
02184  1F7E             
02185  1F7E  20 ED 17              JSR     SWXZ
02186  1F81             
02187  1F81             
02188  1F81             *=$1F81
02189  1F81             
02190  1F81                        ;       (* = $1FF5) <-> (* = $27F5)
02191  1F81             
02192  1F81  F0 04      SPIX       BEQ     SPIQ
02193  1F83             
02194  1F83  8A         SPIXX      TXA
02195  1F84  A8                    TAY
02196  1F85             
02197  1F85                        ;       TAZ / MAP
02198  1F85             
02199  1F85  4B 5C                 BYTE    $4B,$5C
02200  1F87             
02201  1F87  A4 09      SPIQ       LDY     $09
02202  1F89  A9 07      SPAQ       LDA     #$07
02203  1F8B  60         SRTS       RTS
02204  1F8C             
02205  1F8C             
02206  1F8C             *=$1F8C
02207  1F8C             
02208  1F8C                        ;       UPWARD RELOCATION (SYS8076) <- BASIC + 3211
02209  1F8C             
02210  1F8C  78                    SEI
02211  1F8D  A6 2B                 LDX     $2B
02212  1F8F  A5 2D                 LDA     $2D
02213  1F91  A4 2E                 LDY     $2E
02214  1F93             
02215  1F93  C9 C1                 CMP     #<ENDE
02216  1F95  D0 07                 BNE     BEX
02217  1F97  CA                    DEX
02218  1F98  D0 04                 BNE     BEX
02219  1F9A             
02220  1F9A  A9 01                 LDA     #$01
02221  1F9C  A4 2C                 LDY     $2C
02222  1F9E             
02223  1F9E  AE FE FF   BEX        LDX     $FFFE
02224  1FA1  E0 0E                 CPX     #$0E
02225  1FA3  D0 0B                 BNE     FEX
02226  1FA5  AE FF FF              LDX     $FFFF
02227  1FA8  E0 FA                 CPX     #$FA
02228  1FAA  D0 04                 BNE     FEX
02229  1FAC             
02230  1FAC  A9 01                 LDA     #$01
02231  1FAE  A4 66                 LDY     $66
02232  1FB0             
02233  1FB0  38         FEX        SEC
02234  1FB1  48                    PHA
02235  1FB2  E9 01                 SBC     #$01
02236  1FB4  48                    PHA
02237  1FB5  98                    TYA
02238  1FB6  E9 13                 SBC     #$13
02239  1FB8  AA                    TAX
02240  1FB9  68                    PLA
02241  1FBA  08                    PHP
02242  1FBB             
02243  1FBB  69 E5                 ADC     #<FLP2-1
02244  1FBD  85 02                 STA     $02
02245  1FBF  8A                    TXA
02246  1FC0  69 1F                 ADC     #>FLP2
02247  1FC2  85 03                 STA     $03
02248  1FC4             
02249  1FC4  28                    PLP
02250  1FC5  68                    PLA
02251  1FC6  B0 2E                 BCS     UND
02252  1FC8             
02253  1FC8  69 FF                 ADC     #$FF
02254  1FCA  85 04                 STA     $04
02255  1FCC  98                    TYA
02256  1FCD  A0 1A                 LDY     #$1A
02257  1FCF  69 1C                 ADC     #$1C
02258  1FD1  85 05                 STA     $05
02259  1FD3             
02260  1FD3  B1 02      FLP1       LDA     ($02),Y
02261  1FD5  99 0F 01              STA     $010F,Y
02262  1FD8  88                    DEY
02263  1FD9  D0 F8                 BNE     FLP1
02264  1FDB             
02265  1FDB  A9 30                 LDA     #$30
02266  1FDD  A2 1D                 LDX     #$1D
02267  1FDF  84 02                 STY     $02
02268  1FE1  85 03                 STA     $03
02269  1FE3             
02270  1FE3  4C 10 01              JMP     $0110
02271  1FE6             
02272  1FE6  88         FLP2       DEY
02273  1FE7  B1 04                 LDA     ($04),Y
02274  1FE9  91 02                 STA     ($02),Y
02275  1FEB  98                    TYA
02276  1FEC  D0 F8                 BNE     FLP2
02277  1FEE             
02278  1FEE  C6 03                 DEC     $03
02279  1FF0  C6 05                 DEC     $05
02280  1FF2             
02281  1FF2  8A                    TXA
02282  1FF3  CA                    DEX
02283  1FF4  D0 F0                 BNE     FLP2
02284  1FF6             
02285  1FF6  C9 01      UND        CMP     #$01
02286  1FF8  D0 13                 BNE     DOWN
02287  1FFA  8A                    TXA
02288  1FFB  D0 10                 BNE     DOWN
02289  1FFD             
02290  1FFD  4C 0D 14              JMP     MAIN
02291  2000             
02292  2000             
02293  2000             *=$2000
02294  2000             
02295  2000                        ;       0 SYS5133
02296  2000             
02297  2000  00 0B 20              BYTE    $00,$0B,$20,$00,$00,$9E,$35,$31,$33,$33,$00,$00,$00
02298  200D             
02299  200D             
02300  200D             *=$200D
02301  200D             
02302  200D                        ;       DOWNWARD RELOCATION (SYS8205) <- BASIC + 3340
02303  200D                        ;       (COPIED TO $0110 AND STARTED THERE)
02304  200D             
02305  200D  78         DOWN       SEI
02306  200E  A4 2B                 LDY     $2B
02307  2010  A5 2D                 LDA     $2D
02308  2012  A6 2E                 LDX     $2E
02309  2014             
02310  2014  88                    DEY
02311  2015  D0 08                 BNE     XEX
02312  2017  C9 C1                 CMP     #<ENDE
02313  2019  D0 04                 BNE     XEX
02314  201B             
02315  201B  A6 2C                 LDX     $2C
02316  201D  B0 12                 BCS     SMEX
02317  201F             
02318  201F  AC FF FF   XEX        LDY     $FFFF
02319  2022  C0 FA                 CPY     #$FA
02320  2024  D0 16                 BNE     LEX
02321  2026  AC FE FF              LDY     $FFFE
02322  2029  C0 0E                 CPY     #$0E
02323  202B  D0 0C                 BNE     KEX
02324  202D             
02325  202D  A6 66                 LDX     $66
02326  202F  A0 00                 LDY     #$00
02327  2031             
02328  2031  E8         SMEX       INX
02329  2032  84 02                 STY     $02
02330  2034  86 03                 STX     $03
02331  2036             
02332  2036  08                    PHP
02333  2037  B0 23                 BCS     ZYEX
02334  2039             
02335  2039  AC FF FF   KEX        LDY     $FFFF
02336  203C             
02337  203C  18         LEX        CLC
02338  203D  69 FF                 ADC     #$FF
02339  203F  85 02                 STA     $02
02340  2041  8A                    TXA
02341  2042  69 00                 ADC     #$00
02342  2044  C8                    INY
02343  2045  85 03                 STA     $03
02344  2047             
02345  2047  08                    PHP
02346  2048  F0 3D                 BEQ     QYEX
02347  204A             
02348  204A  A9 00                 LDA     #$00
02349  204C  AA                    TAX
02350  204D  A8                    TAY
02351  204E             
02352  204E                        ;       TAZ / MAP
02353  204E             
02354  204E  4B 5C                 BYTE    $4B,$5C
02355  2050             
02356  2050  A9 07                 LDA     #$07
02357  2052  05 00                 ORA     $00
02358  2054  85 00                 STA     $00
02359  2056             
02360  2056  A9 F8                 LDA     #$F8
02361  2058  25 01                 AND     $01
02362  205A  85 01                 STA     $01
02363  205C             
02364  205C  A9 14      ZYEX       LDA     #$14
02365  205E  A2 1D                 LDX     #$1D
02366  2060  84 04                 STY     $04
02367  2062  85 05                 STA     $05
02368  2064             
02369  2064  B1 02      FLP3       LDA     ($02),Y
02370  2066  91 04                 STA     ($04),Y
02371  2068  C8                    INY
02372  2069  D0 F9                 BNE     FLP3
02373  206B             
02374  206B  E6 03                 INC     $03
02375  206D  E6 05                 INC     $05
02376  206F             
02377  206F  CA                    DEX
02378  2070  D0 F2                 BNE     FLP3
02379  2072             
02380  2072  28                    PLP
02381  2073  B0 0F                 BCS     SJEX
02382  2075  F0 12                 BEQ     STEX
02383  2077             
02384  2077  A9 07                 LDA     #$07
02385  2079  05 01                 ORA     $01
02386  207B  85 01                 STA     $01
02387  207D             
02388  207D  98                    TYA
02389  207E             
02390  207E                        ;       LDX #$E3
02391  207E                        ;       LDZ #$B3
02392  207E             
02393  207E  A2 E3                 BYTE    $A2,$E3
02394  2080  A3 B3                 BYTE    $A3,$B3
02395  2082             
02396  2082                        ;       MAP / TAZ
02397  2082             
02398  2082  5C 4B                 BYTE    $5C,$4B
02399  2084             
02400  2084  4C 0D 14   SJEX       JMP     MAIN
02401  2087             
02402  2087  A2 3F      QYEX       LDX     #$3F
02403  2089             
02404  2089  8E 00 FF   STEX       STX     $FF00
02405  208C  D0 CE                 BNE     ZYEX
02406  208E  F0 F4                 BEQ     SJEX
02407  2090             
02408  2090             
02409  2090             *=$2090
02410  2090             
02411  2090  A9 08      EMSG       LDA     #$08
02412  2092  69 00      AMSG       ADC     #$00
02413  2094  2C                    BYTE    $2C
02414  2095             
02415  2095  A9 0D      DMSG       LDA     #$0D
02416  2097  2C                    BYTE    $2C
02417  2098             
02418  2098  A9 0F      FMSG       LDA     #$0F
02419  209A             
02420  209A                        ;       PRINT MESSAGE SUBROUTINE
02421  209A             
02422  209A  A2 00      XMSG       LDX     #$00
02423  209C             
02424  209C  A8         YMSG       TAY
02425  209D  F0 0C                 BEQ     XYSG
02426  209F             
02427  209F  E8         XXLP       INX
02428  20A0             
02429  20A0  BD 9E 1D   XYLP       LDA     XMGX-$0801,X
02430  20A3  F0 03                 BEQ     XYSP
02431  20A5  E8                    INX
02432  20A6  D0 F8                 BNE     XYLP
02433  20A8             
02434  20A8  88         XYSP       DEY
02435  20A9  D0 F4                 BNE     XXLP
02436  20AB             
02437  20AB  BD 9F 1D   XYSG       LDA     XMGX-$0800,X
02438  20AE  84 05                 STY     $05
02439  20B0  F0 08                 BEQ     XMEX
02440  20B2             
02441  20B2  20 D2 FF              JSR     $FFD2
02442  20B5  C8                    INY
02443  20B6  E8                    INX
02444  20B7  D0 F2                 BNE     XYSG
02445  20B9             
02446  20B9  8A                    TXA
02447  20BA             
02448  20BA  78         XMEX       SEI
02449  20BB  A8                    TAY
02450  20BC  18                    CLC
02451  20BD  AA                    TAX
02452  20BE  60                    RTS
02453  20BF             
02454  20BF             
02455  20BF             *=$20BF
02456  20BF             
02457  20BF                        ;       DETECTING EMULATOR #2
02458  20BF             
02459  20BF  D0 28      EMUL2      BNE     EMMA
02460  20C1             
02461  20C1  AD FF DF              LDA     $DFFF
02462  20C4  C9 55                 CMP     #$55
02463  20C6  F0 04                 BEQ     EMLP
02464  20C8  C9 AA                 CMP     #$AA
02465  20CA  D0 1E                 BNE     AMMA
02466  20CC             
02467  20CC  49 FF      EMLP       EOR     #$FF
02468  20CE  CD FF DF              CMP     $DFFF
02469  20D1  D0 17                 BNE     AMMA
02470  20D3             
02471  20D3  88                    DEY
02472  20D4  D0 F6                 BNE     EMLP
02473  20D6             
02474  20D6  AD FE FF   YMMY       LDA     $FFFE
02475  20D9  C9 17                 CMP     #$17
02476  20DB  D0 0A                 BNE     YAMM
02477  20DD             
02478  20DD  A0 24                 LDY     #$24
02479  20DF  A9 2C                 LDA     #$2C
02480  20E1  8C DC 1B              STY     JMME
02481  20E4  8D EC 1B              STA     DMME
02482  20E7             
02483  20E7  A0 00      YAMM       LDY     #$00
02484  20E9  60         EMMA       RTS
02485  20EA             
02486  20EA  8C FE D0   AMMA       STY     $D0FE
02487  20ED  CC FE D0              CPY     $D0FE
02488  20F0  F0 E4                 BEQ     YMMY
02489  20F2             
02490  20F2  20 27 1F              JSR     EMUL3
02491  20F5  F0 DF                 BEQ     YMMY
02492  20F7  60                    RTS
02493  20F8             
02494  20F8                        ;       SPEED TEST
02495  20F8             
02496  20F8  CD FF 1F   STEST      CMP     XRTS-$0800
02497  20FB  F0 39                 BEQ     XCONT
02498  20FD  60         SREST      RTS
02499  20FE             
02500  20FE             
02501  20FE             *=$20FE
02502  20FE             
02503  20FE                        ;       (C65 BASIC FIX) <- $20FE (SEE ALSO AT $1CFE/$14FE/$13FE)
02504  20FE             
02505  20FE  00 00                 BYTE    $00,$00
02506  2100             
02507  2100                        ;       C65 DMA TABLES
02508  2100             
02509  2100  00 00 01   DMA1       BYTE    $00,$00,$01
02510  2103  00 13 00              BYTE    $00,$13,$00
02511  2106  00         D1LB       BYTE    $00
02512  2107  00         D1HB       BYTE    $00
02513  2108  00         D1MB       BYTE    $00
02514  2109  00                    BYTE    $00
02515  210A             
02516  210A  00 00 01   DMA2       BYTE    $00,$00,$01
02517  210D  00         D2LB       BYTE    $00
02518  210E  00         D2HB       BYTE    $00
02519  210F  00         D2MB       BYTE    $00
02520  2110  00 12 00              BYTE    $00,$12,$00
02521  2113  00 00                 BYTE    $00,$00
02522  2115             
02523  2115  00 55 AA   DCMP       BYTE    $00,$55,$AA,$FF
02524  2119             
02525  2119  20 0B 1D   MNIT       JSR     INIT-$0800
02526  211C  8A         XNIT       TXA
02527  211D             
02528  211D                        ;       PRINT "TESTING " + A + " MEMORY" + B + "... "
02529  211D             
02530  211D  48         MMSG       PHA
02531  211E             
02532  211E  20 95 18              JSR     DMSG-$0800
02533  2121             
02534  2121  68                    PLA
02535  2122  48                    PHA
02536  2123  29 0F                 AND     #$0F
02537  2125             
02538  2125  20 9A 18              JSR     XMSG-$0800
02539  2128             
02540  2128  68                    PLA
02541  2129  10 03                 BPL     NOSG
02542  212B             
02543  212B  A9 0B                 LDA     #$0B
02544  212D  2C                    BYTE    $2C
02545  212E             
02546  212E  A9 0E      NOSG       LDA     #$0E
02547  2130  20 9A 18              JSR     XMSG-$0800
02548  2133             
02549  2133  4C 98 18   MOSG       JMP     FMSG-$0800
02550  2136             
02551  2136                        ;       SPEED TEST (CONTINUATION)
02552  2136             
02553  2136  20 BB 1C   XCONT      JSR     PRET-$0800
02554  2139  20 BB 1C              JSR     PRET-$0800
02555  213C             
02556  213C  A9 0A                 LDA     #$0A
02557  213E  20 1D 19              JSR     MMSG-$0800
02558  2141             
02559  2141                        ;       TESTING MAIN MEMORY (ON ALL MACHINES)
02560  2141             
02561  2141  A5 FC                 LDA     $FC
02562  2143             
02563  2143  D0 0C      BNS3       BNE     XACH
02564  2145  A9 07                 LDA     #$07
02565  2147             
02566  2147  05 00                 ORA     $00
02567  2149  85 00                 STA     $00
02568  214B             
02569  214B  A9 F8                 LDA     #$F8
02570  214D  25 01                 AND     $01
02571  214F  85 01                 STA     $01
02572  2151             
02573  2151  A0 00      XACH       LDY     #$00
02574  2153  A9 04                 LDA     #$04
02575  2155             
02576  2155  A6 FC                 LDX     $FC
02577  2157  F0 2D                 BEQ     BUCH
02578  2159             
02579  2159  E0 08                 CPX     #$08
02580  215B  D0 08                 BNE     NACH
02581  215D             
02582  215D  A2 3F                 LDX     #$3F
02583  215F  8C EA 19              STY     FACH-$07FF
02584  2162  8E 00 FF              STX     $FF00
02585  2165             
02586  2165  E0 07      NACH       CPX     #$07
02587  2167  D0 05                 BNE     BACH
02588  2169             
02589  2169  A2 B0                 LDX     #$B0
02590  216B  8E 97 19              STX     BUBI-$07FF
02591  216E             
02592  216E  E0 05      BACH       CPX     #$05
02593  2170  90 1A                 BCC     QACH
02594  2172             
02595  2172  E0 06                 CPX     #$06
02596  2174  90 0B                 BCC     BECH
02597  2176  D0 0E                 BNE     BUCH
02598  2178             
02599  2178  8E E6 19              STX     TECH-$07FF
02600  217B  8C 3F FF              STY     $FF3F
02601  217E             
02602  217E  A6 38                 LDX     $38
02603  2180  2C                    BYTE    $2C
02604  2181  A2 6F      BECH       LDX     #$6F
02605  2183  8E D0 19              STX     FALP-$07FF
02606  2186             
02607  2186  C5 2C      BUCH       CMP     $2C
02608  2188  B0 02                 BCS     QACH
02609  218A             
02610  218A  A5 2C                 LDA     $2C
02611  218C             
02612  218C  C9 13      QACH       CMP     #$13
02613  218E  90 11                 BCC     CECH
02614  2190  C9 31                 CMP     #$31
02615  2192  A2 31                 LDX     #$31
02616  2194  90 0A                 BCC     CACH
02617  2196  C9 C0      BUBI       CMP     #$C0
02618  2198  90 07                 BCC     CECH
02619  219A  AA                    TAX
02620  219B  AD D0 19              LDA     FALP-$07FF
02621  219E  B0 33                 BCS     XECH
02622  21A0  8A         CACH       TXA
02623  21A1  85 03      CECH       STA     $03
02624  21A3             
02625  21A3  4A                    LSR
02626  21A4  4A                    LSR
02627  21A5  4A                    LSR
02628  21A6  4A                    LSR
02629  21A7  AA                    TAX
02630  21A8  09 10                 ORA     #$10
02631  21AA  C5 03                 CMP     $03
02632  21AC  69 02                 ADC     #$02
02633  21AE  85 04                 STA     $04
02634  21B0             
02635  21B0  BD 00 13              LDA     $1300,X
02636  21B3  F0 16                 BEQ     QALP
02637  21B5             
02638  21B5  B1 03      WRALP      LDA     ($03),Y
02639  21B7  91 02                 STA     ($02),Y
02640  21B9  C8                    INY
02641  21BA  D0 F9                 BNE     WRALP
02642  21BC             
02643  21BC  B1 03      REALP      LDA     ($03),Y
02644  21BE  51 02                 EOR     ($02),Y
02645  21C0  D0 14                 BNE     PECH
02646  21C2  91 02                 STA     ($02),Y
02647  21C4  B1 02                 LDA     ($02),Y
02648  21C6  D0 0E                 BNE     PECH
02649  21C8  C8                    INY
02650  21C9  D0 F1                 BNE     REALP
02651  21CB             
02652  21CB  E6 03      QALP       INC     $03
02653  21CD  A5 03                 LDA     $03
02654  21CF             
02655  21CF  C9 FF      FALP       CMP     #$FF
02656  21D1  90 B9                 BCC     QACH
02657  21D3             
02658  21D3                        ;       TESTING MAIN MEMORY <- EXTENDED
02659  21D3             
02660  21D3  20 F3 14   XECH       JSR     $14F3
02661  21D6             
02662  21D6  A2 00      PECH       LDX     #$00
02663  21D8  A5 FC                 LDA     $FC
02664  21DA             
02665  21DA  48                    PHA
02666  21DB  08                    PHP
02667  21DC  48                    PHA
02668  21DD             
02669  21DD  D0 06      BNS4       BNE     TECH
02670  21DF  A9 07                 LDA     #$07
02671  21E1             
02672  21E1  05 01                 ORA     $01
02673  21E3  85 01                 STA     $01
02674  21E5             
02675  21E5  49 08      TECH       EOR     #$08
02676  21E7  D0 03                 BNE     HACH
02677  21E9             
02678  21E9  8D 3E FF   FACH       STA     $FF3E
02679  21EC             
02680  21EC  68         HACH       PLA
02681  21ED  28                    PLP
02682  21EE  78                    SEI
02683  21EF  08                    PHP
02684  21F0  90 2A                 BCC     XCENT
02685  21F2  F0 04                 BEQ     XORM
02686  21F4             
02687  21F4  C9 08                 CMP     #$08
02688  21F6  90 24                 BCC     XCENT
02689  21F8             
02690  21F8                        ;       TESTING NORMAL COPY SPEED
02691  21F8             
02692  21F8  48         XORM       PHA
02693  21F9             
02694  21F9  20 DE 1C              JSR     YNIT-$0800
02695  21FC             
02696  21FC  A9 13                 LDA     #$13
02697  21FE  85 03                 STA     $03
02698  2200  86 04                 STX     $04
02699  2202             
02700  2202  86 05      XORP       STX     $05
02701  2204             
02702  2204  B1 04      XYRP       LDA     ($04),Y
02703  2206  91 02                 STA     ($02),Y
02704  2208  C8                    INY
02705  2209  D0 F9                 BNE     XYRP
02706  220B             
02707  220B  20 25 1D              JSR     MEAS-$0800
02708  220E             
02709  220E  CA                    DEX
02710  220F  D0 F1                 BNE     XORP
02711  2211             
02712  2211  68                    PLA
02713  2212  D0 0A                 BNE     BONT
02714  2214             
02715  2214  A5 0A                 LDA     $0A
02716  2216  D0 0C                 BNE     XONT
02717  2218             
02718  2218  A5 FD                 LDA     $FD
02719  221A  C9 03                 CMP     #$03
02720  221C  90 75      XCENT      BCC     XENT
02721  221E             
02722  221E  C9 09      BONT       CMP     #$09
02723  2220  D0 02                 BNE     XONT
02724  2222             
02725  2222  4A                    LSR
02726  2223  2C                    BYTE    $2C
02727  2224             
02728  2224                        ;       TESTING ZP + SP SPEED (ON C65, C128, DTV AND SUPERCPU)
02729  2224             
02730  2224  A9 0B      XONT       LDA     #$0B
02731  2226  85 07                 STA     $07
02732  2228  8D 5E 1A              STA     JOLP-$07FE
02733  222B             
02734  222B  CA         XOLP       DEX
02735  222C  A9 A5                 LDA     #$A5
02736  222E  E0 03                 CPX     #$03
02737  2230  20 00 1B              JSR     STOLP-$0800
02738  2233  8A                    TXA
02739  2234  20 00 1B              JSR     STOLP-$0800
02740  2237  A9 48                 LDA     #$48
02741  2239  20 00 1B              JSR     STOLP-$0800
02742  223C  B0 ED                 BCS     XOLP
02743  223E             
02744  223E  A9 4C                 LDA     #$4C
02745  2240  20 00 1B              JSR     STOLP-$0800
02746  2243  A9 5F                 LDA     #<ROLP
02747  2245  20 00 1B              JSR     STOLP-$0800
02748  2248             
02749  2248  CA                    DEX
02750  2249  A9 1A                 LDA     #$1A
02751  224B  91 06                 STA     ($06),Y
02752  224D             
02753  224D  20 0B 1D              JSR     INIT-$0800
02754  2250             
02755  2250  A5 FD      NOLP       LDA     $FD
02756  2252  BA                    TSX
02757  2253  C9 03                 CMP     #$03
02758  2255  8A                    TXA
02759  2256  A2 FF                 LDX     #$FF
02760  2258  9A                    TXS
02761  2259  AA                    TAX
02762  225A  B0 15                 BCS     SOLP
02763  225C             
02764  225C  4C 00 0B   JOLP       JMP     $0B00
02765  225F             
02766  225F  B0 28      ROLP       BCS     TOLP
02767  2261             
02768  2261  9A         DOLP       TXS
02769  2262             
02770  2262  20 25 1D              JSR     MEAS-$0800
02771  2265             
02772  2265  88                    DEY
02773  2266  D0 E8                 BNE     NOLP
02774  2268             
02775  2268  B1 02      XCLP       LDA     ($02),Y
02776  226A  91 04                 STA     ($04),Y
02777  226C  C8                    INY
02778  226D  D0 F9                 BNE     XCLP
02779  226F  F0 22                 BEQ     XENT
02780  2271             
02781  2271                        ;       ZP + SP ON 65816
02782  2271             
02783  2271  98         SOLP       TYA
02784  2272  18                    CLC
02785  2273             
02786  2273                        ;       XBA
02787  2273             
02788  2273  EB                    BYTE    $EB
02789  2274             
02790  2274                        ;       TCD (SET DIRECT PAGE REGISTER TO $YY00)
02791  2274             
02792  2274  5B                    BYTE    $5B
02793  2275             
02794  2275  A9 0F      ALAP       LDA     #$0F
02795  2277  09 F0                 ORA     #$F0
02796  2279             
02797  2279                        ;       INC A
02798  2279             
02799  2279  1A                    BYTE    $1A
02800  227A             
02801  227A  D0 02                 BNE     FLAP
02802  227C             
02803  227C  A9 02                 LDA     #$02
02804  227E             
02805  227E                        ;       DEC A
02806  227E             
02807  227E  3A         FLAP       BYTE    $3A
02808  227F  EE 76 1A              INC     ALAP-$07FF
02809  2282             
02810  2282                        ;       XBA
02811  2282             
02812  2282  EB                    BYTE    $EB
02813  2283             
02814  2283  A9 FF                 LDA     #$FF
02815  2285             
02816  2285                        ;       XCE (SWITCH OVER TO NATIVE MODE)
02817  2285             
02818  2285  FB                    BYTE    $FB
02819  2286             
02820  2286                        ;       TCS (SET 16-BIT STACK POINTER)
02821  2286             
02822  2286  1B                    BYTE    $1B
02823  2287             
02824  2287  B0 D3                 BCS     JOLP
02825  2289             
02826  2289                        ;       XCE (SWITCH BACK TO EMULATION MODE)
02827  2289             
02828  2289  FB         TOLP       BYTE    $FB
02829  228A             
02830  228A  A9 00                 LDA     #$00
02831  228C  38                    SEC
02832  228D             
02833  228D                        ;       XBA
02834  228D             
02835  228D  EB                    BYTE    $EB
02836  228E             
02837  228E  A9 00                 LDA     #$00
02838  2290             
02839  2290                        ;       TCD (SET DIRECT PAGE REGISTER BACK TO ZERO)
02840  2290             
02841  2290  5B                    BYTE    $5B
02842  2291             
02843  2291  B0 CE                 BCS     DOLP
02844  2293             
02845  2293  28         XENT       PLP
02846  2294  08                    PHP
02847  2295             
02848  2295  20 90 18              JSR     EMSG-$0800
02849  2298             
02850  2298  28                    PLP
02851  2299  68                    PLA
02852  229A  90 6B                 BCC     XEND
02853  229C  F0 6A                 BEQ     QONT
02854  229E             
02855  229E  C9 08                 CMP     #$08
02856  22A0  90 65                 BCC     XEND
02857  22A2  F0 74                 BEQ     SENT
02858  22A4             
02859  22A4  8A                    TXA
02860  22A5             
02861  22A5  48         TENT       PHA
02862  22A6             
02863  22A6  A9 8A                 LDA     #$8A
02864  22A8  20 1D 19              JSR     MMSG-$0800
02865  22AB             
02866  22AB  EE E8 1D              INC     BANK-$0800
02867  22AE             
02868  22AE  68                    PLA
02869  22AF  D0 59                 BNE     BENT
02870  22B1             
02871  22B1                        ;       TESTING BANKS (ON C65)
02872  22B1             
02873  22B1  20 57 16              JSR     VIC3
02874  22B4             
02875  22B4  A2 06                 LDX     #$06
02876  22B6             
02877  22B6                        ;       LDZ #$01
02878  22B6             
02879  22B6  A3 01                 BYTE    $A3,$01
02880  22B8             
02881  22B8  A9 1F                 LDA     #$1F
02882  22BA  85 05                 STA     $05
02883  22BC             
02884  22BC                        ;       INC A
02885  22BC             
02886  22BC  1A                    BYTE    $1A
02887  22BD             
02888  22BD  85 07                 STA     $07
02889  22BF             
02890  22BF  B1 04      WCLP       LDA     ($04),Y
02891  22C1  20 77 FF              JSR     $FF77
02892  22C4  C8                    INY
02893  22C5  D0 F8                 BNE     WCLP
02894  22C7             
02895  22C7  A5 05                 LDA     $05
02896  22C9             
02897  22C9                        ;       DEC A
02898  22C9             
02899  22C9  3A                    BYTE    $3A
02900  22CA  09 10                 ORA     #$10
02901  22CC  85 05                 STA     $05
02902  22CE             
02903  22CE  E6 07                 INC     $07
02904  22D0  A5 07                 LDA     $07
02905  22D2  C9 E0                 CMP     #$E0
02906  22D4  90 E9                 BCC     WCLP
02907  22D6             
02908  22D6  A9 1F                 LDA     #$1F
02909  22D8  85 05                 STA     $05
02910  22DA             
02911  22DA                        ;       INC A
02912  22DA             
02913  22DA  1A                    BYTE    $1A
02914  22DB             
02915  22DB  85 07                 STA     $07
02916  22DD             
02917  22DD  20 74 FF   RCLP       JSR     $FF74
02918  22E0  51 04                 EOR     ($04),Y
02919  22E2  18                    CLC
02920  22E3  D0 15                 BNE     ZENT
02921  22E5  20 77 FF              JSR     $FF77
02922  22E8  C8                    INY
02923  22E9  D0 F2                 BNE     RCLP
02924  22EB             
02925  22EB  A5 05                 LDA     $05
02926  22ED             
02927  22ED                        ;       DEC A
02928  22ED             
02929  22ED  3A                    BYTE    $3A
02930  22EE  09 10                 ORA     #$10
02931  22F0  85 05                 STA     $05
02932  22F2             
02933  22F2  E6 07                 INC     $07
02934  22F4  A5 07                 LDA     $07
02935  22F6  C9 E0                 CMP     #$E0
02936  22F8  90 E3                 BCC     RCLP
02937  22FA             
02938  22FA  20 50 16   ZENT       JSR     VICV
02939  22FD             
02940  22FD                        ;       DEZ
02941  22FD             
02942  22FD  3B                    BYTE    $3B
02943  22FE  F0 15                 BEQ     CENT
02944  2300             
02945  2300  91 06      STOLP      STA     ($06),Y
02946  2302  C8                    INY
02947  2303  D0 02                 BNE     XEND
02948  2305  E6 07                 INC     $07
02949  2307  60         XEND       RTS
02950  2308             
02951  2308  F0 1C      QONT       BEQ     CONT
02952  230A             
02953  230A                        ;       TESTING BANKS (ON C128)
02954  230A             
02955  230A  C9 02      BENT       CMP     #$02
02956  230C  CA                    DEX
02957  230D  B0 02                 BCS     TEXX
02958  230F  A2 E0                 LDX     #$E0
02959  2311  4A         TEXX       LSR
02960  2312             
02961  2312  20 78 01              JSR     $0178
02962  2315             
02963  2315  20 90 18   CENT       JSR     EMSG-$0800
02964  2318             
02965  2318  A9 07      SENT       LDA     #$07
02966  231A  2D E8 1D              AND     BANK-$0800
02967  231D             
02968  231D  C9 00      CRAM       CMP     #$00
02969  231F  90 84                 BCC     TENT
02970  2321             
02971  2321  A9 31                 LDA     #$31
02972  2323  8D E8 1D              STA     BANK-$0800
02973  2326             
02974  2326                        ;       (CONTINUATION)
02975  2326             
02976  2326  AD 9E 16   CONT       LDA     VDC
02977  2329  F0 08                 BEQ     MONT
02978  232B             
02979  232B  AD FA 28              LDA     CBMY+1
02980  232E  D0 03                 BNE     MONT
02981  2330             
02982  2330                        ;       TESTING VDC MEMORY (WITH DRAM SET TO 0-15 IF NECESSARY)
02983  2330             
02984  2330  20 01 29              JSR     CVNT
02985  2333             
02986  2333                        ;       (CONTINUATION)
02987  2333             
02988  2333  A5 FC      MONT       LDA     $FC
02989  2335  C9 08                 CMP     #$08
02990  2337  D0 09                 BNE     DONT
02991  2339             
02992  2339  8D 1F 1C              STA     XLPR-$07FE
02993  233C  8D 32 1F              STA     REP2-$07FF
02994  233F  8D 58 1F              STA     GEP2-$07FE
02995  2342             
02996  2342  AD 7C 16   DONT       LDA     TREU+2
02997  2345  8D 35 1F              STA     REUA-$07FE
02998  2348  8D 38 1F              STA     REUB-$07FE
02999  234B  8D 3D 1F              STA     REUC-$07FE
03000  234E             
03001  234E  AD 34 15              LDA     GEDEX+2
03002  2351  8D 66 1F              STA     GEE1-$07FE
03003  2354  8D 70 1F              STA     GEE2-$07FE
03004  2357             
03005  2357  49 01                 EOR     #$01
03006  2359  A0 02                 LDY     #$02
03007  235B  8D 4B 1F              STA     GEF1-$07FE
03008  235E  8D 55 1F              STA     GEF2-$07FE
03009  2361             
03010  2361  84 09                 STY     $09
03011  2363  C8                    INY
03012  2364  AD CA 16              LDA     SCPU
03013  2367  84 03                 STY     $03
03014  2369  F0 53                 BEQ     EONT
03015  236B             
03016  236B  B9 CA 16   SCPP       LDA     SCPU,Y
03017  236E  99 C6 1D              STA     SDMA-$0801,Y
03018  2371  88                    DEY
03019  2372  D0 F7                 BNE     SCPP
03020  2374             
03021  2374  A2 A4                 LDX     #<D65O
03022  2376  A0 AE                 LDY     #<D65I
03023  2378  A5 0A                 LDA     $0A
03024  237A  F0 0D                 BEQ     DIC
03025  237C             
03026  237C  A2 02                 LDX     #$02
03027  237E  8E F8 1B              STX     DENT-$07FF
03028  2381             
03029  2381  CA                    DEX
03030  2382  8E 3F D0              STX     $D03F
03031  2385             
03032  2385  A2 72                 LDX     #<DTMO
03033  2387  A0 84                 LDY     #<DTMI
03034  2389             
03035  2389  20 57 16   DIC        JSR     VIC3
03036  238C             
03037  238C  A5 09      DIKK       LDA     $09
03038  238E  D0 15                 BNE     GONT
03039  2390             
03040  2390  68                    PLA
03041  2391  A8                    TAY
03042  2392  68                    PLA
03043  2393             
03044  2393  20 18 20   ZEJX       JSR     ZEUX+$0800
03045  2396             
03046  2396  A5 FB                 LDA     $FB
03047  2398  85 0D                 STA     $0D
03048  239A             
03049  239A  AD BC 16              LDA     GEO
03050  239D  49 0D                 EOR     #$0D
03051  239F  D0 1D                 BNE     EONT
03052  23A1             
03053  23A1  A2 43                 LDX     #<GEOO
03054  23A3  A0 50                 LDY     #<GEOI
03055  23A5             
03056  23A5  C9 01      GONT       CMP     #$01
03057  23A7  D0 1E                 BNE     RONT
03058  23A9             
03059  23A9  20 09 20   REJX       JSR     REUX+$0800
03060  23AC             
03061  23AC  48                    PHA
03062  23AD  98                    TYA
03063  23AE  48                    PHA
03064  23AF             
03065  23AF  A9 FF                 LDA     #$FF
03066  23B1  85 0C                 STA     $0C
03067  23B3  A5 FE                 LDA     $FE
03068  23B5  85 0D                 STA     $0D
03069  23B7             
03070  23B7  AD AE 16              LDA     REU
03071  23BA  49 0D                 EOR     #$0D
03072  23BC  F0 03                 BEQ     RENT
03073  23BE             
03074  23BE  4C 5E 1C   EONT       JMP     NONT-$0800
03075  23C1             
03076  23C1  A9 01      RENT       LDA     #$01
03077  23C3  A2 27                 LDX     #<REUO
03078  23C5  A0 2E                 LDY     #<REUI
03079  23C7             
03080  23C7  49 03      RONT       EOR     #$03
03081  23C9  09 04                 ORA     #$04
03082  23CB  8E 10 1C              STX     DCL1-$07FF
03083  23CE  8C 18 1C              STY     DCL2-$07FF
03084  23D1  AA                    TAX
03085  23D2             
03086  23D2  20 19 19              JSR     MNIT-$0800
03087  23D5             
03088  23D5  A4 0C                 LDY     $0C
03089  23D7             
03090  23D7  C8         DYLP       INY
03091  23D8             
03092  23D8  C0 FF      DMLP       CPY     #$FF
03093  23DA  A9 02                 LDA     #$02
03094  23DC  B0 71                 BCS     DERR
03095  23DE  C4 0D                 CPY     $0D
03096  23E0  F0 02                 BEQ     DMLA
03097  23E2  B0 6B                 BCS     DERR
03098  23E4             
03099  23E4  45 09      DMLA       EOR     $09
03100  23E6  D0 21                 BNE     YENT
03101  23E8             
03102  23E8  A5 0B                 LDA     $0B
03103  23EA  D0 0B                 BNE     DENT
03104  23EC  B0 61                 BCS     DERR
03105  23EE             
03106  23EE                        ;       TESTING SUPERRAM
03107  23EE             
03108  23EE  8A                    TXA
03109  23EF  48                    PHA
03110  23F0             
03111  23F0  20 F7 1E              JSR     SUPR-$0800
03112  23F3  50 34                 BVC     DMRR
03113  23F5             
03114  23F5  10 95      PIKK       BPL     DIKK
03115  23F7             
03116  23F7                        ;       TESTING DMA (ON C65 OR DTV)
03117  23F7             
03118  23F7  C0 04      DENT       CPY     #$04
03119  23F9  8A                    TXA
03120  23FA  D0 0D                 BNE     YENT
03121  23FC  B0 0B                 BCS     YENT
03122  23FE  C0 01                 CPY     #$01
03123  2400  D0 D5                 BNE     DYLP
03124  2402             
03125  2402  A9 D0                 LDA     #$D0
03126  2404  A2 20                 LDX     #$20
03127  2406  8D 2F 1C              STA     DCLX-$07FF
03128  2409             
03129  2409  8A         YENT       TXA
03130  240A  48                    PHA
03131  240B  48                    PHA
03132  240C             
03133  240C  20 74 1D              JSR     REAS-$0800
03134  240F             
03135  240F  20 A4 1F   DCL1       JSR     D65O-$0800
03136  2412             
03137  2412  20 25 1D              JSR     MEAS-$0800
03138  2415             
03139  2415  68                    PLA
03140  2416  AA                    TAX
03141  2417             
03142  2417  20 AE 1F   DCL2       JSR     D65I-$0800
03143  241A             
03144  241A  20 25 1D              JSR     MEAS-$0800
03145  241D             
03146  241D  BD 00 12   XLPR       LDA     $1200,X
03147  2420  5D 00 13              EOR     $1300,X
03148  2423  D0 04                 BNE     DMRR
03149  2425  E8                    INX
03150  2426  D0 F5                 BNE     XLPR
03151  2428             
03152  2428  38         SMRR       SEC
03153  2429             
03154  2429  68         DMRR       PLA
03155  242A  AA                    TAX
03156  242B             
03157  242B  E8         DMNX       INX
03158  242C  90 21                 BCC     DERR
03159  242E             
03160  242E  E0 00      DCLX       CPX     #$00
03161  2430  D0 A6                 BNE     DMLP
03162  2432             
03163  2432  A9 03                 LDA     #$03
03164  2434  C6 03                 DEC     $03
03165  2436  25 03                 AND     $03
03166  2438  85 03                 STA     $03
03167  243A  AA                    TAX
03168  243B  BD 15 19              LDA     DCMP-$0800,X
03169  243E  A2 00                 LDX     #$00
03170  2440             
03171  2440  9D 00 13   XLPW       STA     $1300,X
03172  2443  E8                    INX
03173  2444  D0 FA                 BNE     XLPW
03174  2446             
03175  2446  C9 FF                 CMP     #$FF
03176  2448  8E 2F 1C              STX     DCLX-$07FF
03177  244B  90 8B                 BCC     DMLP
03178  244D  B0 88                 BCS     DYLP
03179  244F             
03180  244F  A5 0A      DERR       LDA     $0A
03181  2451  F0 05                 BEQ     RIC
03182  2453             
03183  2453  A9 00                 LDA     #$00
03184  2455  8D 3F D0              STA     $D03F
03185  2458             
03186  2458  20 50 16   RIC        JSR     VICV
03187  245B             
03188  245B  20 90 18              JSR     EMSG-$0800
03189  245E             
03190  245E  C6 09      NONT       DEC     $09
03191  2460  10 93                 BPL     PIKK
03192  2462             
03193  2462                        ;       TESTING COLOUR RAM & C65/MEGA65 <- EXTENDED
03194  2462             
03195  2462  20 F9 14              JSR     $14F9
03196  2465             
03197  2465                        ;       PRINTING RESULTS OF MEASUREMENT
03198  2465             
03199  2465  20 17 1D              JSR     CIA1-$0800
03200  2468             
03201  2468  20 BB 1C              JSR     PRET-$0800
03202  246B             
03203  246B  98         CRES       TYA
03204  246C  0A                    ASL
03205  246D  0A                    ASL
03206  246E  0A                    ASL
03207  246F  AA                    TAX
03208  2470             
03209  2470  BD C0 10              LDA     $10C0,X
03210  2473  F0 3E                 BEQ     ZRES
03211  2475             
03212  2475  98                    TYA
03213  2476  84 07                 STY     $07
03214  2478  86 08                 STX     $08
03215  247A             
03216  247A  20 9A 18              JSR     XMSG-$0800
03217  247D             
03218  247D  38                    SEC
03219  247E  A9 09                 LDA     #$09
03220  2480  E5 05                 SBC     $05
03221  2482  AA                    TAX
03222  2483             
03223  2483  A9 20      XRES       LDA     #$20
03224  2485  20 D2 FF              JSR     $FFD2
03225  2488             
03226  2488  CA                    DEX
03227  2489  D0 F8                 BNE     XRES
03228  248B             
03229  248B  A4 08                 LDY     $08
03230  248D  20 C0 1C              JSR     YRES-$0800
03231  2490             
03232  2490  38                    SEC
03233  2491  A5 02                 LDA     $02
03234  2493  E9 00      OVLB       SBC     #$00
03235  2495  85 02                 STA     $02
03236  2497             
03237  2497  A5 03                 LDA     $03
03238  2499  E9 00      OVHB       SBC     #$00
03239  249B  85 03                 STA     $03
03240  249D             
03241  249D  A5 04                 LDA     $04
03242  249F  E9 00                 SBC     #$00
03243  24A1  85 04                 STA     $04
03244  24A3  B0 06                 BCS     SRES
03245  24A5             
03246  24A5  86 02                 STX     $02
03247  24A7  86 03                 STX     $03
03248  24A9  86 04                 STX     $04
03249  24AB             
03250  24AB  20 30 17   SRES       JSR     NUM24
03251  24AE             
03252  24AE  20 BB 1C              JSR     PRET-$0800
03253  24B1             
03254  24B1  A4 07                 LDY     $07
03255  24B3             
03256  24B3  C0 07      ZRES       CPY     #$07
03257  24B5  C8                    INY
03258  24B6  90 B3                 BCC     CRES
03259  24B8             
03260  24B8  60         RJMP       RTS
03261  24B9  FC 14                 WORD    $14FC
03262  24BB             
03263  24BB                        ;       PRINT RETURN
03264  24BB             
03265  24BB  A9 0D      PRET       LDA     #$0D
03266  24BD  4C D2 FF              JMP     $FFD2
03267  24C0             
03268  24C0                        ;       TIME-MEASURING SUBROUTINES
03269  24C0             
03270  24C0  B9 C2 10   YRES       LDA     $10C2,Y
03271  24C3  85 02                 STA     $02
03272  24C5  B9 C3 10              LDA     $10C3,Y
03273  24C8  85 03                 STA     $03
03274  24CA  B9 C4 10              LDA     $10C4,Y
03275  24CD  85 04                 STA     $04
03276  24CF             
03277  24CF  BE C0 10              LDX     $10C0,Y
03278  24D2  D0 06                 BNE     DRES
03279  24D4             
03280  24D4  46 04      RRES       LSR     $04
03281  24D6  66 03                 ROR     $03
03282  24D8  66 02                 ROR     $02
03283  24DA             
03284  24DA  CA         DRES       DEX
03285  24DB  D0 F7                 BNE     RRES
03286  24DD  60                    RTS
03287  24DE             
03288  24DE                        ;       INITIALIZATION FOR THE FIRST TIME
03289  24DE             
03290  24DE  AD 0D DD   YNIT       LDA     $DD0D
03291  24E1  8D 18 1D              STA     CIA1-$07FF
03292  24E4  AD 0E DD              LDA     $DD0E
03293  24E7  8D 1D 1D              STA     CIA2-$07FF
03294  24EA             
03295  24EA  20 02 1D              JSR     YNYT-$0800
03296  24ED             
03297  24ED                        ;       CALCULATING OVERHEAD (IN AVERAGE)
03298  24ED             
03299  24ED  20 25 1D   YREP       JSR     MEAS-$0800
03300  24F0             
03301  24F0  C8                    INY
03302  24F1  D0 FA                 BNE     YREP
03303  24F3             
03304  24F3  20 C0 1C              JSR     YRES-$0800
03305  24F6             
03306  24F6  A4 02                 LDY     $02
03307  24F8  86 02                 STX     $02
03308  24FA  A5 03                 LDA     $03
03309  24FC             
03310  24FC  8C 94 1C              STY     OVLB-$07FF
03311  24FF  8D 9A 1C              STA     OVHB-$07FF
03312  2502             
03313  2502  A0 40      YNYT       LDY     #$40
03314  2504  8A                    TXA
03315  2505             
03316  2505  88         XNYT       DEY
03317  2506  99 C0 10              STA     $10C0,Y
03318  2509  D0 FA                 BNE     XNYT
03319  250B             
03320  250B                        ;       INITIALIZATION FOR A NEW RUN
03321  250B             
03322  250B  8A         INIT       TXA
03323  250C  0A         ANIT       ASL
03324  250D  0A                    ASL
03325  250E  0A                    ASL
03326  250F  A0 00                 LDY     #$00
03327  2511  85 08                 STA     $08
03328  2513  90 5F                 BCC     REAS
03329  2515             
03330  2515  68         XEAS       PLA
03331  2516  AA                    TAX
03332  2517             
03333  2517                        ;       CIA RESET
03334  2517             
03335  2517  A9 00      CIA1       LDA     #$00
03336  2519  8D 0D DD              STA     $DD0D
03337  251C             
03338  251C  A9 08      CIA2       LDA     #$08
03339  251E  8D 0E DD              STA     $DD0E
03340  2521  AD 0D DD              LDA     $DD0D
03341  2524  60                    RTS
03342  2525             
03343  2525                        ;       EACH RUN OF MEASUREMENT IS DONE FOR EVERY PAGE (I.E. 256 BYTES)
03344  2525                        ;       BEING COPIED, AND THEN THEY ARE SUMMED UP TO 128 TIMES AT MOST
03345  2525                        ;       (I.E. UP TO 32K) FROM THAT IT IS DIVIDED BACK TO A 1K AVERAGE.
03346  2525             
03347  2525  20 1C 1D   MEAS       JSR     CIA2-$0800
03348  2528             
03349  2528  8A                    TXA
03350  2529  48                    PHA
03351  252A             
03352  252A  A6 08                 LDX     $08
03353  252C  30 E7                 BMI     XEAS
03354  252E             
03355  252E  BD C1 10              LDA     $10C1,X
03356  2531  30 E2                 BMI     XEAS
03357  2533             
03358  2533  98                    TYA
03359  2534  48                    PHA
03360  2535             
03361  2535  AC 04 DD              LDY     $DD04
03362  2538  AD 05 DD              LDA     $DD05
03363  253B  F0 32                 BEQ     CEAS
03364  253D             
03365  253D  C0 FF                 CPY     #$FF
03366  253F  49 FF                 EOR     #$FF
03367  2541  90 03                 BCC     MEAX
03368  2543  18                    CLC
03369  2544  F0 2A                 BEQ     YEAS
03370  2546             
03371  2546  48         MEAX       PHA
03372  2547  98                    TYA
03373  2548  49 FF                 EOR     #$FF
03374  254A             
03375  254A  7D C5 10              ADC     $10C5,X
03376  254D  9D C5 10              STA     $10C5,X
03377  2550             
03378  2550  68                    PLA
03379  2551  7D C6 10              ADC     $10C6,X
03380  2554  9D C6 10              STA     $10C6,X
03381  2557             
03382  2557  A9 00                 LDA     #$00
03383  2559  7D C7 10              ADC     $10C7,X
03384  255C  9D C7 10              STA     $10C7,X
03385  255F             
03386  255F  FE C1 10              INC     $10C1,X
03387  2562             
03388  2562  A9 04                 LDA     #$04
03389  2564  A0 01                 LDY     #$01
03390  2566             
03391  2566  DD C1 10   CEAX       CMP     $10C1,X
03392  2569  F0 1C                 BEQ     REAX
03393  256B             
03394  256B  0A                    ASL
03395  256C  C8                    INY
03396  256D  90 F7                 BCC     CEAX
03397  256F             
03398  256F  18         CEAS       CLC
03399  2570             
03400  2570  68         YEAS       PLA
03401  2571  A8                    TAY
03402  2572             
03403  2572  68                    PLA
03404  2573  AA                    TAX
03405  2574             
03406  2574  A9 01      REAS       LDA     #$01
03407  2576  8D 0D DD              STA     $DD0D
03408  2579             
03409  2579  A9 FF                 LDA     #$FF
03410  257B  8D 04 DD              STA     $DD04
03411  257E  8D 05 DD              STA     $DD05
03412  2581             
03413  2581  A9 19                 LDA     #$19
03414  2583  8D 0E DD              STA     $DD0E
03415  2586  60                    RTS
03416  2587             
03417  2587  BD C5 10   REAX       LDA     $10C5,X
03418  258A  9D C2 10              STA     $10C2,X
03419  258D             
03420  258D  BD C6 10              LDA     $10C6,X
03421  2590  9D C3 10              STA     $10C3,X
03422  2593             
03423  2593  BD C7 10              LDA     $10C7,X
03424  2596  9D C4 10              STA     $10C4,X
03425  2599             
03426  2599  98                    TYA
03427  259A  9D C0 10              STA     $10C0,X
03428  259D  B0 D0                 BCS     CEAS
03429  259F             
03430  259F                        ;       #00 "NORMAL"
03431  259F             
03432  259F  4E 4F 52   XMGX       BYTE    $4E,$4F,$52,$4D,$41,$4C,$00
03433  25A6             
03434  25A6                        ;       #01 "ZP+SP"
03435  25A6             
03436  25A6  5A 50 2B              BYTE    $5A,$50,$2B,$53,$50,$00
03437  25AC             
03438  25AC                        ;       #02 "VDC/LOAD"
03439  25AC             
03440  25AC  56 44 43              BYTE    $56,$44,$43,$2F,$4C,$4F,$41,$44,$00
03441  25B5             
03442  25B5                        ;       #03 "VDC/COPY"
03443  25B5             
03444  25B5  56 44 43              BYTE    $56,$44,$43,$2F,$43,$4F,$50,$59,$00
03445  25BE             
03446  25BE                        ;       #04 "VDC/FILL"
03447  25BE             
03448  25BE  56 44 43              BYTE    $56,$44,$43,$2F,$46,$49,$4C,$4C,$00
03449  25C7             
03450  25C7                        ;       #05 "DMA"
03451  25C7             
03452  25C7  44 4D 41   SDMA       BYTE    $44,$4D,$41,$00
03453  25CB             
03454  25CB                        ;       #06 "REU"
03455  25CB             
03456  25CB  52 45 55              BYTE    $52,$45,$55,$00
03457  25CF             
03458  25CF                        ;       #07 "GEO"
03459  25CF             
03460  25CF  47 45 4F              BYTE    $47,$45,$4F,$00
03461  25D3             
03462  25D3                        ;       #08 "ERROR"
03463  25D3             
03464  25D3  45 52 52              BYTE    $45,$52,$52,$4F,$52,$0D,$00
03465  25DA             
03466  25DA                        ;       #09 "OK"
03467  25DA             
03468  25DA  4F 4B 0D              BYTE    $4F,$4B,$0D,$00
03469  25DE             
03470  25DE                        ;       #0A "CPU"
03471  25DE             
03472  25DE  43 50 55              BYTE    $43,$50,$55,$00
03473  25E2             
03474  25E2                        ;       #0B " BANK 1"
03475  25E2             
03476  25E2  20 42 41              BYTE    $20,$42,$41,$4E,$4B,$20
03477  25E8  31 00      BANK       BYTE    $31,$00
03478  25EA             
03479  25EA                        ;       #0C "VDC DRAM "
03480  25EA             
03481  25EA  56 44 43              BYTE    $56,$44,$43,$20,$44,$52,$41,$4D,$20,$00
03482  25F4             
03483  25F4                        ;       #0D "TESTING "
03484  25F4             
03485  25F4  54 45 53              BYTE    $54,$45,$53,$54,$49,$4E,$47,$20,$00
03486  25FD             
03487  25FD                        ;       #0E " MEMORY"
03488  25FD             
03489  25FD  20 4D 45              BYTE    $20,$4D,$45,$4D,$4F,$52,$59,$00
03490  2605             
03491  2605                        ;       #0F "... "
03492  2605             
03493  2605  2E 2E 2E              BYTE    $2E,$2E,$2E,$20,$00
03494  260A             
03495  260A             
03496  260A             *=$260A
03497  260A             
03498  260A                        ;       SETTING DRAM REFRESH RATE (IN VDC REGISTER #36)
03499  260A             
03500  260A  A9 24      VPTS       LDA     #$24
03501  260C  AA                    TAX
03502  260D  20 03 17              JSR     WPTS
03503  2610  A9 01      VCHR       LDA     #$01
03504  2612  D0 3B                 BNE     RDCT
03505  2614  4C 62 FF              JMP     $FF62
03506  2617             
03507  2617             
03508  2617             *=$2617
03509  2617             
03510  2617                        ;       TESTING VDC MEMORY
03511  2617             
03512  2617  C9 20      VDCT       CMP     #$20
03513  2619  90 0B                 BCC     ADCT
03514  261B  D0 02                 BNE     NDCT
03515  261D             
03516  261D  06 05                 ASL     $05
03517  261F             
03518  261F  A9 31      NDCT       LDA     #$31
03519  2621  CD AB 16              CMP     RAM
03520  2624  F0 29                 BEQ     RDCT
03521  2626             
03522  2626  8A         ADCT       TXA
03523  2627  48                    PHA
03524  2628             
03525  2628  A9 02                 LDA     #$02
03526  262A  20 0C 1D              JSR     ANIT-$0800
03527  262D             
03528  262D  20 F2 16              JSR     APTX
03529  2630             
03530  2630  68                    PLA
03531  2631  AA                    TAX
03532  2632  D0 1C                 BNE     NOLO
03533  2634             
03534  2634  B1 02      LOLP       LDA     ($02),Y
03535  2636  2C 00 D6   LOLB       BIT     $D600
03536  2639  10 FB                 BPL     LOLB
03537  263B  8D 01 D6              STA     $D601
03538  263E  C8                    INY
03539  263F  D0 F3                 BNE     LOLP
03540  2641             
03541  2641  20 25 1D              JSR     MEAS-$0800
03542  2644             
03543  2644  E6 03      NINC       INC     $03
03544  2646  A5 03                 LDA     $03
03545  2648  29 0F                 AND     #$0F
03546  264A  09 20                 ORA     #$20
03547  264C  85 03                 STA     $03
03548  264E  38                    SEC
03549  264F  60         RDCT       RTS
03550  2650             
03551  2650  C9 03      NOLO       CMP     #$03
03552  2652  F0 22                 BEQ     RORP
03553  2654             
03554  2654  C9 04                 CMP     #$04
03555  2656  F0 04                 BEQ     ANCP
03556  2658  B0 32                 BCS     ZOZP
03557  265A             
03558  265A  A9 03                 LDA     #$03
03559  265C             
03560  265C  08         ANCP       PHP
03561  265D  20 0C 1D              JSR     ANIT-$0800
03562  2660  28                    PLP
03563  2661  8A                    TXA
03564  2662  48                    PHA
03565  2663  A2 00                 LDX     #$00
03566  2665  90 32                 BCC     COCP
03567  2667             
03568  2667  20 E6 16              JSR     WPLX
03569  266A             
03570  266A  CA                    DEX
03571  266B  A0 20                 LDY     #$20
03572  266D             
03573  266D  20 E3 1E   CINC       JSR     COXP-$0800
03574  2670             
03575  2670  68         RINC       PLA
03576  2671  AA                    TAX
03577  2672  A0 00                 LDY     #$00
03578  2674  F0 CE                 BEQ     NINC
03579  2676             
03580  2676  A5 05      RORP       LDA     $05
03581  2678  C9 12                 CMP     #$12
03582  267A  90 C8                 BCC     NINC
03583  267C             
03584  267C  20 EC 16   RYRP       JSR     WPLP
03585  267F  AD 01 D6              LDA     $D601
03586  2682  D1 02                 CMP     ($02),Y
03587  2684  18         CDCT       CLC
03588  2685  D0 C8                 BNE     RDCT
03589  2687  C8                    INY
03590  2688  D0 F2                 BNE     RYRP
03591  268A  F0 B8                 BEQ     NINC
03592  268C             
03593  268C  20 EC 16   ZOZP       JSR     WPLP
03594  268F  AD 01 D6              LDA     $D601
03595  2692  D0 F0                 BNE     CDCT
03596  2694  C8                    INY
03597  2695  D0 F5                 BNE     ZOZP
03598  2697  F0 B6                 BEQ     RDCT
03599  2699             
03600  2699  A2 21      COCP       LDX     #$21
03601  269B  A9 20                 LDA     #$20
03602  269D  20 03 17              JSR     WPTS
03603  26A0             
03604  26A0  A5 05                 LDA     $05
03605  26A2  29 01                 AND     #$01
03606  26A4  D0 0C                 BNE     CONP
03607  26A6             
03608  26A6  A2 10                 LDX     #$10
03609  26A8  20 E6 16              JSR     WPLX
03610  26AB             
03611  26AB  A2 00                 LDX     #$00
03612  26AD  20 E1 1E              JSR     COYP-$0800
03613  26B0  90 BB                 BCC     CINC
03614  26B2             
03615  26B2  A5 05      CONP       LDA     $05
03616  26B4  C9 1F                 CMP     #$1F
03617  26B6  D0 02                 BNE     COFP
03618  26B8             
03619  26B8  A9 3F                 LDA     #$3F
03620  26BA             
03621  26BA  18         COFP       CLC
03622  26BB  48                    PHA
03623  26BC  69 02                 ADC     #$02
03624  26BE  AA                    TAX
03625  26BF  20 E6 16              JSR     WPLX
03626  26C2             
03627  26C2  20 93 16              JSR     BPTX
03628  26C5             
03629  26C5  A2 10                 LDX     #$10
03630  26C7  20 E6 16              JSR     WPLX
03631  26CA             
03632  26CA  A2 00                 LDX     #$00
03633  26CC  20 E1 1E              JSR     COYP-$0800
03634  26CF             
03635  26CF  18                    CLC
03636  26D0  68                    PLA
03637  26D1  69 01                 ADC     #$01
03638  26D3  18                    CLC
03639  26D4  AA                    TAX
03640  26D5             
03641  26D5  A9 20                 LDA     #$20
03642  26D7  8D 00 D6              STA     $D600
03643  26DA  20 E6 16              JSR     WPLX
03644  26DD             
03645  26DD  A2 00                 LDX     #$00
03646  26DF  90 8C                 BCC     CINC
03647  26E1             
03648  26E1  A0 A0      COYP       LDY     #$A0
03649  26E3             
03650  26E3  8A         COXP       TXA
03651  26E4  48                    PHA
03652  26E5             
03653  26E5  A2 18                 LDX     #$18
03654  26E7  A9 1E                 LDA     #$1E
03655  26E9  20 03 17              JSR     WPTS
03656  26EC             
03657  26EC  68                    PLA
03658  26ED  AA                    TAX
03659  26EE             
03660  26EE  20 74 1D   CORP       JSR     REAS-$0800
03661  26F1  20 E6 16              JSR     WPLX
03662  26F4  4C 25 1D              JMP     MEAS-$0800
03663  26F7             
03664  26F7             
03665  26F7             *=$26F7
03666  26F7             
03667  26F7                        ;       TESTING SUPERRAM
03668  26F7             
03669  26F7  A2 00      SUPR       LDX     #$00
03670  26F9             
03671  26F9  8D 0D 1F              STA     SPS1-$07FE
03672  26FC  8C 0E 1F              STY     SPS1-$07FD
03673  26FF  8D 1A 1F              STA     SPS2-$07FE
03674  2702  8C 1B 1F              STY     SPS2-$07FD
03675  2705             
03676  2705  20 74 1D              JSR     REAS-$0800
03677  2708             
03678  2708  BD 00 13   SCS1       LDA     $1300,X
03679  270B             
03680  270B                        ;       STA $YYXX00,X
03681  270B             
03682  270B  9F 00 00   SPS1       BYTE    $9F,$00,$00,$00
03683  270F             
03684  270F  E8                    INX
03685  2710  D0 F6                 BNE     SCS1
03686  2712             
03687  2712  20 25 1D              JSR     MEAS-$0800
03688  2715             
03689  2715  BD 00 13   SCS2       LDA     $1300,X
03690  2718             
03691  2718                        ;       EOR $YYXX00,X
03692  2718             
03693  2718  5F 00 00   SPS2       BYTE    $5F,$00,$00,$00
03694  271C             
03695  271C  D0 07                 BNE     YERR
03696  271E  E8                    INX
03697  271F  D0 F4                 BNE     SCS2
03698  2721             
03699  2721  20 25 1D              JSR     MEAS-$0800
03700  2724             
03701  2724  38                    SEC
03702  2725             
03703  2725  B8         YERR       CLV
03704  2726  60                    RTS
03705  2727             
03706  2727             
03707  2727             *=$2727
03708  2727             
03709  2727                        ;       REU TRANSFER SUBROUTINES
03710  2727             
03711  2727  A9 90      REUO       LDA     #$90
03712  2729  48                    PHA
03713  272A  A9 13      REP1       LDA     #$13
03714  272C  D0 05                 BNE     REUA
03715  272E             
03716  272E  A9 91      REUI       LDA     #$91
03717  2730  48                    PHA
03718  2731  A9 12      REP2       LDA     #$12
03719  2733             
03720  2733  8D 03 DE   REUA       STA     $DE03
03721  2736  8E 05 DE   REUB       STX     $DE05
03722  2739             
03723  2739  A2 01                 LDX     #$01
03724  273B  8E 08 DE   REUC       STX     $DE08
03725  273E  CA                    DEX
03726  273F  8A                    TXA
03727  2740  4C 7A 16              JMP     TREU
03728  2743             
03729  2743             
03730  2743             *=$2743
03731  2743             
03732  2743                        ;       GEORAM TRANSFER SUBROUTINES
03733  2743             
03734  2743  20 5D 1F   GEOO       JSR     GEXY-$0800
03735  2746             
03736  2746  BD 00 13   GEP1       LDA     $1300,X
03737  2749  9D 00 DE   GEF1       STA     $DE00,X
03738  274C  E8                    INX
03739  274D  D0 F7                 BNE     GEP1
03740  274F  60                    RTS
03741  2750             
03742  2750  20 5D 1F   GEOI       JSR     GEXY-$0800
03743  2753             
03744  2753  BD 00 DE   GEF2       LDA     $DE00,X
03745  2756  9D 00 12   GEP2       STA     $1200,X
03746  2759  E8                    INX
03747  275A  D0 F7                 BNE     GEF2
03748  275C  60                    RTS
03749  275D             
03750  275D  8A         GEXY       TXA
03751  275E  86 02                 STX     $02
03752  2760  29 3F                 AND     #$3F
03753  2762  A2 00                 LDX     #$00
03754  2764  8D FE DF   GEE1       STA     $DFFE
03755  2767  98                    TYA
03756  2768  06 02                 ASL     $02
03757  276A  2A                    ROL
03758  276B  06 02                 ASL     $02
03759  276D  2A                    ROL
03760  276E  8D FF DF   GEE2       STA     $DFFF
03761  2771  60                    RTS
03762  2772             
03763  2772             
03764  2772             *=$2772
03765  2772             
03766  2772                        ;       DMA TRANSFER SUBROUTINES (ON DTV)
03767  2772             
03768  2772  20 1C 17   DTMO       JSR     APLP
03769  2775  8D 05 D3              STA     $D305
03770  2778             
03771  2778  A9 13                 LDA     #$13
03772  277A  8D 01 D3              STA     $D301
03773  277D             
03774  277D  A9 40                 LDA     #$40
03775  277F  8D 02 D3              STA     $D302
03776  2782  D0 10                 BNE     DTMR
03777  2784             
03778  2784  20 1C 17   DTMI       JSR     APLP
03779  2787  8E 01 D3              STX     $D301
03780  278A  8D 02 D3              STA     $D302
03781  278D             
03782  278D  A9 40                 LDA     #$40
03783  278F  A2 12                 LDX     #$12
03784  2791  8D 05 D3              STA     $D305
03785  2794             
03786  2794  A9 00      DTMR       LDA     #$00
03787  2796  8E 04 D3              STX     $D304
03788  2799  8D 00 D3              STA     $D300
03789  279C  8D 03 D3              STA     $D303
03790  279F             
03791  279F  A2 01                 LDX     #$01
03792  27A1  4C 03 27              JMP     WDMR+$0800
03793  27A4             
03794  27A4             
03795  27A4             *=$27A4
03796  27A4             
03797  27A4                        ;       DMA TRANSFER SUBROUTINES (ON C65)
03798  27A4             
03799  27A4  A9 00      D65O       LDA     #<DMA1
03800  27A6  8E 07 19              STX     D1HB-$0800
03801  27A9  8C 08 19              STY     D1MB-$0800
03802  27AC  10 08                 BPL     D65R
03803  27AE             
03804  27AE  8E 0E 19   D65I       STX     D2HB-$0800
03805  27B1  8C 0F 19              STY     D2MB-$0800
03806  27B4  A9 0A                 LDA     #<DMA2
03807  27B6             
03808  27B6  A2 00      D65R       LDX     #$00
03809  27B8  8E 02 D7              STX     $D702
03810  27BB  A2 19                 LDX     #$19
03811  27BD  8E 01 D7              STX     $D701
03812  27C0  A2 00                 LDX     #$00
03813  27C2  8D 00 D7              STA     $D700
03814  27C5  60                    RTS
03815  27C6             
03816  27C6             
03817  27C6             *=$27C6
03818  27C6             
03819  27C6                        ;       (SELF-MODIFICATION)
03820  27C6             
03821  27C6  A9 2C      XYLF       LDA     #$2C
03822  27C8  A0 03                 LDY     #$03
03823  27CA             
03824  27CA  8D 93 23              STA     ZEJX
03825  27CD  8D A9 23              STA     REJX
03826  27D0             
03827  27D0  B9 E6 27   XPLP       LDA     SNS1,Y
03828  27D3  99 11 1B              STA     BNS1,Y
03829  27D6  99 43 21              STA     BNS3,Y
03830  27D9  B9 EA 27              LDA     SNS2,Y
03831  27DC  99 57 1B              STA     BNS2,Y
03832  27DF  99 DD 21              STA     BNS4,Y
03833  27E2  88                    DEY
03834  27E3  10 EB                 BPL     XPLP
03835  27E5  60                    RTS
03836  27E6             
03837  27E6  78         SNS1       SEI
03838  27E7  20 F5 1F              JSR     $1FF5
03839  27EA             
03840  27EA  78         SNS2       SEI
03841  27EB  20 EE 1F              JSR     $1FEE
03842  27EE             
03843  27EE             
03844  27EE             *=$27EE
03845  27EE             
03846  27EE                        ;       (* = $1FEE) <-> (* = $27EE)
03847  27EE             
03848  27EE  F0 0D      XPAX       BEQ     XPAQ
03849  27F0             
03850  27F0  8A         XPAXX      TXA
03851  27F1  A8                    TAY
03852  27F2             
03853  27F2  20 ED 17              JSR     SWXZ
03854  27F5             
03855  27F5             
03856  27F5             *=$27F5
03857  27F5             
03858  27F5                        ;       (* = $1FF5) <-> (* = $27F5)
03859  27F5             
03860  27F5  F0 04      XPIX       BEQ     XPIQ
03861  27F7             
03862  27F7  8A         XPIXX      TXA
03863  27F8  A8                    TAY
03864  27F9             
03865  27F9                        ;       TAZ / MAP
03866  27F9             
03867  27F9  4B 5C                 BYTE    $4B,$5C
03868  27FB             
03869  27FB  A4 09      XPIQ       LDY     $09
03870  27FD  A9 07      XPAQ       LDA     #$07
03871  27FF  60         XRTS       RTS
03872  2800             
03873  2800             
03874  2800             *=$2800
03875  2800             
03876  2800                        ;       MEGA65 = FAST MODE <- SYS10240
03877  2800             
03878  2800  78         M65ON      SEI
03879  2801  A9 47                 LDA     #$47
03880  2803  8D 2F D0              STA     $D02F
03881  2806  A9 53                 LDA     #$53
03882  2808  8D 2F D0              STA     $D02F
03883  280B  AD 54 D0              LDA     $D054
03884  280E  09 40                 ORA     #$40
03885  2810  D0 10                 BNE     MFS
03886  2812             
03887  2812             
03888  2812             *=$2812
03889  2812             
03890  2812                        ;       MEGA65 = SLOW MODE <- SYS10258
03891  2812             
03892  2812  78         M65OFF     SEI
03893  2813  A9 47                 LDA     #$47
03894  2815  8D 2F D0              STA     $D02F
03895  2818  A9 53                 LDA     #$53
03896  281A  8D 2F D0              STA     $D02F
03897  281D  AD 54 D0              LDA     $D054
03898  2820  29 BF                 AND     #$BF
03899  2822  8D 54 D0   MFS        STA     $D054
03900  2825  A9 FF                 LDA     #$FF
03901  2827  8D 2F D0              STA     $D02F
03902  282A  58                    CLI
03903  282B  60                    RTS
03904  282C             
03905  282C             
03906  282C             *=$282C
03907  282C             
03908  282C                        ;       C65 = FAST MODE <- SYS10284
03909  282C             
03910  282C  78         C65ON      SEI
03911  282D  A9 A5                 LDA     #$A5
03912  282F  8D 2F D0              STA     $D02F
03913  2832  A9 96                 LDA     #$96
03914  2834  8D 2F D0              STA     $D02F
03915  2837  AD 31 D0              LDA     $D031
03916  283A  09 40                 ORA     #$40
03917  283C  D0 10                 BNE     CFS
03918  283E             
03919  283E             
03920  283E             *=$283E
03921  283E             
03922  283E                        ;       C65 = SLOW MODE <- SYS10302
03923  283E             
03924  283E  78         C65OFF     SEI
03925  283F  A9 A5                 LDA     #$A5
03926  2841  8D 2F D0              STA     $D02F
03927  2844  A9 96                 LDA     #$96
03928  2846  8D 2F D0              STA     $D02F
03929  2849  AD 31 D0              LDA     $D031
03930  284C  29 BF                 AND     #$BF
03931  284E  8D 31 D0   CFS        STA     $D031
03932  2851  A9 FF                 LDA     #$FF
03933  2853  8D 2F D0              STA     $D02F
03934  2856  58                    CLI
03935  2857  60                    RTS
03936  2858             
03937  2858             
03938  2858             *=$2858
03939  2858             
03940  2858                        ;       DTV = FAST MODE <- SYS10328
03941  2858             
03942  2858  78         DTVON      SEI
03943  2859  A9 01                 LDA     #$01
03944  285B  8D 3F D0              STA     $D03F
03945  285E  32 99                 BYTE    $32,$99
03946  2860  A9 03                 LDA     #$03
03947  2862  32 00                 BYTE    $32,$00
03948  2864  A9 20                 LDA     #$20
03949  2866  D0 0E                 BNE     DTS
03950  2868             
03951  2868             
03952  2868             *=$2868
03953  2868             
03954  2868                        ;       DTV = SLOW MODE <- SYS10344
03955  2868             
03956  2868  78         DTVOFF     SEI
03957  2869  A9 01                 LDA     #$01
03958  286B  8D 3F D0              STA     $D03F
03959  286E  32 99                 BYTE    $32,$99
03960  2870  A9 00                 LDA     #$00
03961  2872  32 00                 BYTE    $32,$00
03962  2874  A9 00                 LDA     #$00
03963  2876  8D 3C D0   DTS        STA     $D03C
03964  2879  A9 00                 LDA     #$00
03965  287B  8D 3F D0              STA     $D03F
03966  287E  58                    CLI
03967  287F  60                    RTS
03968  2880             
03969  2880             
03970  2880             *=$2880
03971  2880             
03972  2880                        ;       C128 = FAST MODE <- SYS10368
03973  2880                        ;       (ALSO FOR TURBO CHAMELEON, MEGA65 AND TDC)
03974  2880             
03975  2880  A9 01      C128ON     LDA     #$01
03976  2882  0D 30 D0              ORA     $D030
03977  2885  D0 05                 BNE     C128S
03978  2887             
03979  2887             
03980  2887             *=$2887
03981  2887             
03982  2887                        ;       C128 = SLOW MODE <- SYS10375
03983  2887                        ;       (ALSO FOR TURBO CHAMELEON, MEGA65 AND TDC)
03984  2887             
03985  2887  A9 FE      C128OFF    LDA     #$FE
03986  2889  2D 30 D0              AND     $D030
03987  288C  8D 30 D0   C128S      STA     $D030
03988  288F  60                    RTS
03989  2890             
03990  2890             
03991  2890             *=$2890
03992  2890             
03993  2890                        ;       DETECTING MEMORY OF C128 (FOUR BANKS)
03994  2890                        ;       (COPIED TO $0140 AND RUN FROM THERE)
03995  2890             
03996  2890  8A         VC128      TXA
03997  2891  A0 04                 LDY     #$04
03998  2893             
03999  2893  E9 40      VLP1       SBC     #$40
04000  2895  88                    DEY
04001  2896  38                    SEC
04002  2897  8D 00 FF              STA     $FF00
04003  289A  8C FF 13              STY     $13FF
04004  289D  D0 F4                 BNE     VLP1
04005  289F             
04006  289F  69 3F      VLP2       ADC     #$3F
04007  28A1  C8                    INY
04008  28A2  8D 00 FF              STA     $FF00
04009  28A5  CC FF 13              CPY     $13FF
04010  28A8  F0 F5                 BEQ     VLP2
04011  28AA             
04012  28AA  8E 00 FF   VEND       STX     $FF00
04013  28AD             
04014  28AD  C0 02                 CPY     #$02
04015  28AF  90 0C                 BCC     TEND
04016  28B1             
04017  28B1  8D FE D0              STA     $D0FE
04018  28B4  CD FE D0              CMP     $D0FE
04019  28B7  D0 04                 BNE     TEND
04020  28B9             
04021  28B9  A0 02                 LDY     #$02
04022  28BB  A9 80                 LDA     #$80
04023  28BD             
04024  28BD  8C 1E 23   TEND       STY     CRAM+1
04025  28C0  A8                    TAY
04026  28C1  85 02                 STA     $02
04027  28C3  D0 02                 BNE     REND
04028  28C5  E6 03                 INC     $03
04029  28C7  60         REND       RTS
04030  28C8             
04031  28C8                        ;       TESTING BANKS 1-3 (ON C128)
04032  28C8                        ;       (COPIED TO $0178 AND RUN FROM THERE)
04033  28C8             
04034  28C8  6A                    ROR
04035  28C9  6A                    ROR
04036  28CA  86 05                 STX     $05
04037  28CC  09 3F                 ORA     #$3F
04038  28CE  8D 00 FF              STA     $FF00
04039  28D1  48                    PHA
04040  28D2             
04041  28D2  CA         TLP1       DEX
04042  28D3  86 03                 STX     $03
04043  28D5             
04044  28D5  B1 03      TLP2       LDA     ($03),Y
04045  28D7  91 02                 STA     ($02),Y
04046  28D9  C8                    INY
04047  28DA  D0 F9                 BNE     TLP2
04048  28DC             
04049  28DC  E0 05                 CPX     #$05
04050  28DE  B0 F2                 BCS     TLP1
04051  28E0             
04052  28E0  B1 03      TLP3       LDA     ($03),Y
04053  28E2  51 02                 EOR     ($02),Y
04054  28E4  D0 10                 BNE     TERR
04055  28E6  91 02                 STA     ($02),Y
04056  28E8  B1 02                 LDA     ($02),Y
04057  28EA  D0 0A                 BNE     TERR
04058  28EC  C8                    INY
04059  28ED  D0 F1                 BNE     TLP3
04060  28EF             
04061  28EF  E8                    INX
04062  28F0  86 03                 STX     $03
04063  28F2  E4 05                 CPX     $05
04064  28F4  90 EA                 BCC     TLP3
04065  28F6             
04066  28F6  68         TERR       PLA
04067  28F7  A0 00                 LDY     #$00
04068  28F9  8C 00 FF   CBMY       STY     $FF00
04069  28FC  90 C9                 BCC     REND
04070  28FE             
04071  28FE                        ;       TESTING BANKS 1-3 (ON C128) <- EXTENDED
04072  28FE             
04073  28FE  4C F0 14              JMP     $14F0
04074  2901             
04075  2901                        ;       TESTING VDC MEMORY (WITH DRAM SET TO 0-15 IF NECESSARY)
04076  2901             
04077  2901  20 95 18   CVNT       JSR     DMSG-$0800
04078  2904             
04079  2904  A9 0C                 LDA     #$0C
04080  2906  20 9A 18              JSR     XMSG-$0800
04081  2909             
04082  2909  AD C2 14              LDA     X36+1
04083  290C  85 02                 STA     $02
04084  290E  86 03                 STX     $03
04085  2910  20 2E 17              JSR     NUM16
04086  2913             
04087  2913  20 98 18              JSR     FMSG-$0800
04088  2916             
04089  2916  A0 18                 LDY     #$18
04090  2918  8A                    TXA
04091  2919             
04092  2919  88         VNIT       DEY
04093  291A  99 D0 10              STA     $10D0,Y
04094  291D  D0 FA                 BNE     VNIT
04095  291F             
04096  291F  A9 20      VVNT       LDA     #$20
04097  2921  84 02                 STY     $02
04098  2923  85 03                 STA     $03
04099  2925  4A                    LSR
04100  2926  85 05                 STA     $05
04101  2928             
04102  2928                        ;       TESTING VDC MEMORY
04103  2928             
04104  2928  20 17 1E   JVNT       JSR     VDCT-$0800
04105  292B  E6 05                 INC     $05
04106  292D  A5 05                 LDA     $05
04107  292F  B0 18                 BCS     EVNT
04108  2931             
04109  2931  AC C2 14   CYNT       LDY     X36+1
04110  2934  C0 0F                 CPY     #$0F
04111  2936  B0 1E                 BCS     CVCT
04112  2938             
04113  2938                        ;       SETTING DRAM REFRESH RATE (IN VDC REGISTER #36)
04114  2938             
04115  2938  C8                    INY
04116  2939  20 0A 1E              JSR     VPTS-$0800
04117  293C             
04118  293C  A9 91                 LDA     #$91
04119  293E  20 D2 FF              JSR     $FFD2
04120  2941             
04121  2941  20 BB 1C              JSR     PRET-$0800
04122  2944             
04123  2944  EE C2 14              INC     X36+1
04124  2947  D0 B8                 BNE     CVNT
04125  2949             
04126  2949  D0 DD      EVNT       BNE     JVNT
04127  294B             
04128  294B  E0 05                 CPX     #$05
04129  294D  E8                    INX
04130  294E  90 CF                 BCC     VVNT
04131  2950             
04132  2950                        ;       TESTING VDC MEMORY <- EXTENDED
04133  2950             
04134  2950  20 F6 14              JSR     $14F6
04135  2953  90 DC                 BCC     CYNT
04136  2955             
04137  2955  24                    BYTE    $24
04138  2956  18         CVCT       CLC
04139  2957             
04140  2957  4C 90 18              JMP     EMSG-$0800
04141  295A             
04142  295A             
04143  295A             *=$295A
04144  295A             
04145  295A                        ;       CBM-II RELOCATION (10586) <- BASIC + 5721
04146  295A                        ;       (COPIED TO $0110 IN SYSTEM BANK AND STARTED THERE)
04147  295A             
04148  295A  78                    SEI
04149  295B  AD FE FF              LDA     $FFFE
04150  295E  A2 01                 LDX     #$01
04151  2960  C9 D6                 CMP     #$D6
04152  2962  F0 01                 BEQ     CBM2
04153  2964  CA                    DEX
04154  2965             
04155  2965  A0 88      CBM2       LDY     #<$1688
04156  2967  A9 16                 LDA     #>$1688
04157  2969             
04158  2969  86 01                 STX     $01
04159  296B  84 02                 STY     $02
04160  296D  85 03                 STA     $03
04161  296F             
04162  296F  A0 00                 LDY     #$00
04163  2971  A2 03                 LDX     #$03
04164  2973             
04165  2973  B1 02      CBLP       LDA     ($02),Y
04166  2975  99 00 04              STA     $0400,Y
04167  2978  C8                    INY
04168  2979  D0 F8                 BNE     CBLP
04169  297B             
04170  297B  E6 03                 INC     $03
04171  297D  EE 2D 01              INC     $012D
04172  2980             
04173  2980  CA                    DEX
04174  2981  D0 F0                 BNE     CBLP
04175  2983             
04176  2983  4C 03 04              JMP     $0403
04177  2986             
04178  2986             
04179  2986             *=$2986
04180  2986             
04181  2986                        ;       CBM-II CODE (10630) <- BASIC + 5765 ( = $1688)
04182  2986                        ;       (COPIED TO $0400 IN SYSTEM BANK AND STARTED THERE)
04183  2986             
04184  2986  78                    SEI
04185  2987  A0 00                 LDY     #$00
04186  2989             
04187  2989                        ;       (* = $0403)
04188  2989             
04189  2989  A2 FE                 LDX     #$FE
04190  298B  84 02                 STY     $02
04191  298D  86 03                 STX     $03
04192  298F  84 04                 STY     $04
04193  2991             
04194  2991                        ;       COUNTING BANKS
04195  2991             
04196  2991  8A         FAXP       TXA
04197  2992  29 0F                 AND     #$0F
04198  2994  85 01                 STA     $01
04199  2996             
04200  2996  91 02                 STA     ($02),Y
04201  2998  09 40                 ORA     #$40
04202  299A  C8                    INY
04203  299B  91 02                 STA     ($02),Y
04204  299D  88                    DEY
04205  299E             
04206  299E  CA                    DEX
04207  299F  E0 EF                 CPX     #$EF
04208  29A1  B0 EE                 BCS     FAXP
04209  29A3             
04210  29A3  8A         FEXP       TXA
04211  29A4  29 0F                 AND     #$0F
04212  29A6  C9 0F                 CMP     #$0F
04213  29A8  85 01                 STA     $01
04214  29AA  85 05                 STA     $05
04215  29AC  AA                    TAX
04216  29AD  B0 12                 BCS     FDXP
04217  29AF             
04218  29AF  B1 02                 LDA     ($02),Y
04219  29B1  C5 05                 CMP     $05
04220  29B3  D0 0C                 BNE     FDXP
04221  29B5             
04222  29B5  09 40                 ORA     #$40
04223  29B7  C8                    INY
04224  29B8  85 05                 STA     $05
04225  29BA             
04226  29BA  B1 02                 LDA     ($02),Y
04227  29BC  88                    DEY
04228  29BD  C5 05                 CMP     $05
04229  29BF  F0 02                 BEQ     FXXP
04230  29C1             
04231  29C1  98         FDXP       TYA
04232  29C2  2C                    BYTE    $2C
04233  29C3  E6 04      FXXP       INC     $04
04234  29C5  9D 45 06              STA     CNDC-$2586,X
04235  29C8             
04236  29C8  CA                    DEX
04237  29C9  E0 0E                 CPX     #$0E
04238  29CB  D0 D6                 BNE     FEXP
04239  29CD             
04240  29CD                        ;       COUNTING FREE PAGES IN SYSTEM BANK
04241  29CD             
04242  29CD  A9 04                 LDA     #$04
04243  29CF  85 05                 STA     $05
04244  29D1  A9 CF                 LDA     #$CF
04245  29D3             
04246  29D3  85 03      SACP       STA     $03
04247  29D5  91 02                 STA     ($02),Y
04248  29D7  E9 01                 SBC     #$01
04249  29D9  C9 08                 CMP     #$08
04250  29DB  B0 F6                 BCS     SACP
04251  29DD             
04252  29DD  69 01      CACP       ADC     #$01
04253  29DF  85 03                 STA     $03
04254  29E1  D1 02                 CMP     ($02),Y
04255  29E3  D0 0B                 BNE     NECP
04256  29E5             
04257  29E5  48                    PHA
04258  29E6  29 03                 AND     #$03
04259  29E8  49 03                 EOR     #$03
04260  29EA  D0 0B                 BNE     PACP
04261  29EC             
04262  29EC  E6 05                 INC     $05
04263  29EE  D0 03                 BNE     NACP
04264  29F0             
04265  29F0  09 03      NECP       ORA     #$03
04266  29F2  48                    PHA
04267  29F3             
04268  29F3  9D 47 06   NACP       STA     CNDC-$2584,X
04269  29F6  E8                    INX
04270  29F7             
04271  29F7  68         PACP       PLA
04272  29F8  E0 40                 CPX     #$40
04273  29FA  90 E1                 BCC     CACP
04274  29FC             
04275  29FC                        ;       EVALUATING +KB (4-38)
04276  29FC             
04277  29FC  A5 05                 LDA     $05
04278  29FE             
04279  29FE  E9 0A      SBCP       SBC     #$0A
04280  2A00  E8                    INX
04281  2A01  B0 FB                 BCS     SBCP
04282  2A03             
04283  2A03  69 3A                 ADC     #$3A
04284  2A05  8D 11 06              STA     CNP2-$2586
04285  2A08             
04286  2A08  E0 42                 CPX     #$42
04287  2A0A  A9 0E                 LDA     #$0E
04288  2A0C  90 03                 BCC     NBCP
04289  2A0E             
04290  2A0E  8A                    TXA
04291  2A0F  E9 11                 SBC     #$11
04292  2A11             
04293  2A11  8D 10 06   NBCP       STA     CNP1-$2586
04294  2A14             
04295  2A14                        ;       PRINT MESSAGE
04296  2A14             
04297  2A14  A2 00                 LDX     #$00
04298  2A16  20 8A 05              JSR     CMSG-$2586
04299  2A19             
04300  2A19  A6 04                 LDX     $04
04301  2A1B  D0 01                 BNE     QMEX
04302  2A1D  E8                    INX
04303  2A1E             
04304  2A1E  20 8A 05   QMEX       JSR     CMSG-$2586
04305  2A21             
04306  2A21  A2 15                 LDX     #$15
04307  2A23  20 8A 05              JSR     CMSG-$2586
04308  2A26             
04309  2A26                        ;       TESTING MAIN MEMORY (ALL BANKS EXCEPT SYSTEM BANK)
04310  2A26             
04311  2A26  78                    SEI
04312  2A27  A9 FE                 LDA     #$FE
04313  2A29  84 02                 STY     $02
04314  2A2B  85 03                 STA     $03
04315  2A2D             
04316  2A2D                        ;       WRITING TO ALL BANKS
04317  2A2D             
04318  2A2D  86 01      WMEX       STX     $01
04319  2A2F  BD 45 06              LDA     CNDC-$2586,X
04320  2A32  F0 16                 BEQ     ZMEX
04321  2A34             
04322  2A34  91 02      WMLP       STA     ($02),Y
04323  2A36  69 01                 ADC     #$01
04324  2A38  C8                    INY
04325  2A39  D0 F9                 BNE     WMLP
04326  2A3B             
04327  2A3B  C6 03                 DEC     $03
04328  2A3D  D0 F5                 BNE     WMLP
04329  2A3F             
04330  2A3F  A0 02                 LDY     #$02
04331  2A41             
04332  2A41  91 02      WZLP       STA     ($02),Y
04333  2A43  C8                    INY
04334  2A44  D0 FB                 BNE     WZLP
04335  2A46             
04336  2A46  A9 FE                 LDA     #$FE
04337  2A48  85 03                 STA     $03
04338  2A4A             
04339  2A4A  E8         ZMEX       INX
04340  2A4B  E0 10                 CPX     #$10
04341  2A4D  90 DE                 BCC     WMEX
04342  2A4F             
04343  2A4F  AA                    TAX
04344  2A50  18                    CLC
04345  2A51             
04346  2A51                        ;       READING BACK (COMPARING AND CLEARING)
04347  2A51             
04348  2A51  86 01      RMEX       STX     $01
04349  2A53  BD 45 06              LDA     CNDC-$2586,X
04350  2A56  F0 37                 BEQ     FMEX
04351  2A58             
04352  2A58  85 04      RMLP       STA     $04
04353  2A5A  B1 02                 LDA     ($02),Y
04354  2A5C  45 04                 EOR     $04
04355  2A5E  D0 2A                 BNE     XERR
04356  2A60  91 02                 STA     ($02),Y
04357  2A62  B1 02                 LDA     ($02),Y
04358  2A64  D0 24                 BNE     XERR
04359  2A66  A9 01                 LDA     #$01
04360  2A68  65 04                 ADC     $04
04361  2A6A  C8                    INY
04362  2A6B  D0 EB                 BNE     RMLP
04363  2A6D             
04364  2A6D  C6 03                 DEC     $03
04365  2A6F  D0 E7                 BNE     RMLP
04366  2A71             
04367  2A71  A0 02                 LDY     #$02
04368  2A73  85 04                 STA     $04
04369  2A75             
04370  2A75  B1 02      RZLP       LDA     ($02),Y
04371  2A77  45 04                 EOR     $04
04372  2A79  D0 0F                 BNE     XERR
04373  2A7B  91 02                 STA     ($02),Y
04374  2A7D  B1 02                 LDA     ($02),Y
04375  2A7F  D0 09                 BNE     XERR
04376  2A81  C8                    INY
04377  2A82  D0 F1                 BNE     RZLP
04378  2A84             
04379  2A84  A9 FE                 LDA     #$FE
04380  2A86  85 03                 STA     $03
04381  2A88  D0 05                 BNE     FMEX
04382  2A8A             
04383  2A8A  A2 0F      XERR       LDX     #$0F
04384  2A8C  86 01                 STX     $01
04385  2A8E  E8                    INX
04386  2A8F             
04387  2A8F  E8         FMEX       INX
04388  2A90  E0 10                 CPX     #$10
04389  2A92  90 BD                 BCC     RMEX
04390  2A94             
04391  2A94                        ;       "SYS1024"
04392  2A94             
04393  2A94  AD FE FF              LDA     $FFFE
04394  2A97  A0 01                 LDY     #$01
04395  2A99  C9 D6                 CMP     #$D6
04396  2A9B  F0 01                 BEQ     FBMF
04397  2A9D  88                    DEY
04398  2A9E             
04399  2A9E  84 01      FBMF       STY     $01
04400  2AA0             
04401  2AA0  A0 09                 LDY     #$09
04402  2AA2  B9 02 06   FBLP       LDA     CBSC-$2587,Y
04403  2AA5  88                    DEY
04404  2AA6  91 2D                 STA     ($2D),Y
04405  2AA8  D0 F8                 BNE     FBLP
04406  2AAA             
04407  2AAA  A9 0F                 LDA     #$0F
04408  2AAC  85 01                 STA     $01
04409  2AAE             
04410  2AAE  20 8A 05              JSR     CMSG-$2586
04411  2AB1             
04412  2AB1  A2 16                 LDX     #$16
04413  2AB3  20 8A 05              JSR     CMSG-$2586
04414  2AB6             
04415  2AB6                        ;       TESTING SYSTEM BANK
04416  2AB6             
04417  2AB6  78                    SEI
04418  2AB7  A9 08                 LDA     #$08
04419  2AB9  A2 32                 LDX     #$32
04420  2ABB  84 02                 STY     $02
04421  2ABD  85 03                 STA     $03
04422  2ABF  4A                    LSR
04423  2AC0             
04424  2AC0                        ;       WRITING ($0800-$CFFF)
04425  2AC0             
04426  2AC0  85 04      WREX       STA     $04
04427  2AC2             
04428  2AC2  B1 03      WREY       LDA     ($03),Y
04429  2AC4  91 02                 STA     ($02),Y
04430  2AC6  C8                    INY
04431  2AC7  D0 F9                 BNE     WREY
04432  2AC9             
04433  2AC9  E6 03                 INC     $03
04434  2ACB  C6 04                 DEC     $04
04435  2ACD  D0 F3                 BNE     WREY
04436  2ACF             
04437  2ACF  A9 04                 LDA     #$04
04438  2AD1  CA                    DEX
04439  2AD2  D0 EC                 BNE     WREX
04440  2AD4             
04441  2AD4  0A                    ASL
04442  2AD5  85 03                 STA     $03
04443  2AD7  4A                    LSR
04444  2AD8             
04445  2AD8                        ;       READING BACK (COMPARING AND CLEARING)
04446  2AD8             
04447  2AD8  85 04      RREX       STA     $04
04448  2ADA             
04449  2ADA  BD 55 06              LDA     CNDC-$2576,X
04450  2ADD  D0 15                 BNE     RNEX
04451  2ADF             
04452  2ADF  B1 03      NREY       LDA     ($03),Y
04453  2AE1  51 02                 EOR     ($02),Y
04454  2AE3  D0 27                 BNE     SERR
04455  2AE5  91 02                 STA     ($02),Y
04456  2AE7  B1 02                 LDA     ($02),Y
04457  2AE9  D0 21                 BNE     SERR
04458  2AEB  C8                    INY
04459  2AEC  D0 F1                 BNE     NREY
04460  2AEE             
04461  2AEE  E6 03                 INC     $03
04462  2AF0  C6 04                 DEC     $04
04463  2AF2  D0 EB                 BNE     NREY
04464  2AF4             
04465  2AF4  A5 04      RNEX       LDA     $04
04466  2AF6  65 03                 ADC     $03
04467  2AF8  85 03                 STA     $03
04468  2AFA             
04469  2AFA  E8                    INX
04470  2AFB  E0 32                 CPX     #$32
04471  2AFD  A9 04                 LDA     #$04
04472  2AFF  90 D7                 BCC     RREX
04473  2B01             
04474  2B01                        ;       "SYS5133"
04475  2B01             
04476  2B01  A2 4C                 LDX     #$4C
04477  2B03  8E 0D 14              STX     $140D
04478  2B06  8D 0F 14              STA     $140F
04479  2B09             
04480  2B09  A2 10                 LDX     #$10
04481  2B0B  2C                    BYTE    $2C
04482  2B0C  A2 11      SERR       LDX     #$11
04483  2B0E  A0 00                 LDY     #$00
04484  2B10             
04485  2B10                        ;       PRINT MESSAGE SUBROUTINE
04486  2B10             
04487  2B10  8A         CMSG       TXA
04488  2B11  F0 0C                 BEQ     CYSG
04489  2B13             
04490  2B13  C8         CXLP       INY
04491  2B14             
04492  2B14  B9 A8 05   CYLP       LDA     CMGX-$2587,Y
04493  2B17  F0 03                 BEQ     CYSP
04494  2B19  C8                    INY
04495  2B1A  D0 F8                 BNE     CYLP
04496  2B1C             
04497  2B1C  CA         CYSP       DEX
04498  2B1D  D0 F4                 BNE     CXLP
04499  2B1F             
04500  2B1F  B9 A9 05   CYSG       LDA     CMGX-$2586,Y
04501  2B22  F0 07                 BEQ     CMEX
04502  2B24             
04503  2B24  20 D2 FF              JSR     $FFD2
04504  2B27  C8                    INY
04505  2B28  D0 F5                 BNE     CYSG
04506  2B2A             
04507  2B2A  98                    TYA
04508  2B2B             
04509  2B2B  18         CMEX       CLC
04510  2B2C  A8                    TAY
04511  2B2D  58                    CLI
04512  2B2E  60                    RTS
04513  2B2F             
04514  2B2F                        ;       #00 "CBM-II (6509) WITH "
04515  2B2F             
04516  2B2F  0E 93 43   CMGX       BYTE    $0E,$93,$43,$42,$4D,$2D,$49,$49,$20,$28,$36,$35,$30,$39,$29,$20
04517  2B3F  57 49 54              BYTE    $57,$49,$54,$48,$20,$00
04518  2B45             
04519  2B45                        ;       #01-#0F "64" (...) "960"
04520  2B45             
04521  2B45  36 34 00              BYTE    $36,$34,$00
04522  2B48  31 32 38              BYTE    $31,$32,$38,$00
04523  2B4C  31 39 32              BYTE    $31,$39,$32,$00
04524  2B50  32 35 36              BYTE    $32,$35,$36,$00
04525  2B54  33 32 30              BYTE    $33,$32,$30,$00
04526  2B58  33 38 34              BYTE    $33,$38,$34,$00
04527  2B5C  34 34 38              BYTE    $34,$34,$38,$00
04528  2B60  35 31 32              BYTE    $35,$31,$32,$00
04529  2B64  35 37 36              BYTE    $35,$37,$36,$00
04530  2B68  36 34 30              BYTE    $36,$34,$30,$00
04531  2B6C  37 30 34              BYTE    $37,$30,$34,$00
04532  2B70  37 36 38              BYTE    $37,$36,$38,$00
04533  2B74  38 33 32              BYTE    $38,$33,$32,$00
04534  2B78  38 39 36              BYTE    $38,$39,$36,$00
04535  2B7C  39 36 30              BYTE    $39,$36,$30,$00
04536  2B80             
04537  2B80                        ;       #10 "OK"
04538  2B80             
04539  2B80  4F 4B 0D              BYTE    $4F,$4B,$0D,$00
04540  2B84             
04541  2B84                        ;       #11 "ERROR"
04542  2B84             
04543  2B84  45 52 52              BYTE    $45,$52,$52,$4F,$52
04544  2B89             
04545  2B89                        ;       0 SYS1024
04546  2B89             
04547  2B89  0D 00 00   CBSC       BYTE    $0D,$00,$00,$00,$9E,$31,$30,$32,$34,$00
04548  2B93             
04549  2B93                        ;       #15 "K +XXK TESTING MAIN MEMORY... "
04550  2B93             
04551  2B93  4B 20 2B              BYTE    $4B,$20,$2B
04552  2B96             
04553  2B96  0E         CNP1       BYTE    $0E
04554  2B97  34         CNP2       BYTE    $34
04555  2B98             
04556  2B98  4B 0D 0D              BYTE    $4B,$0D,$0D,$54,$45,$53,$54,$49,$4E,$47,$20,$4D,$41,$49,$4E,$20
04557  2BA8  4D 45 4D              BYTE    $4D,$45,$4D,$4F,$52,$59,$2E,$2E,$2E,$20,$00
04558  2BB3             
04559  2BB3                        ;       #16 "TESTING SYSTEM BANK... "
04560  2BB3             
04561  2BB3  54 45 53              BYTE    $54,$45,$53,$54,$49,$4E,$47,$20,$53,$59,$53,$54,$45,$4D,$20,$42
04562  2BC3  41 4E 4B              BYTE    $41,$4E,$4B,$2E,$2E,$2E,$20,$00
04563  2BCB             
04564  2BCB             CNDC
04565  2BCB             
04566  2BCB             
04567  2BCB             *=$2BCB
04568  2BCB             
04569  2BCB                        ;       SWAPPING MEMORY AT $1400 <-> $2C00
04570  2BCB             
04571  2BCB  A9 38      SWALT      LDA     #$38
04572  2BCD  AE C2 14              LDX     X36+1
04573  2BD0             
04574  2BD0  4D AD 17              EOR     SALP+2
04575  2BD3  8D AD 17              STA     SALP+2
04576  2BD6  8D B0 17              STA     SELP+2
04577  2BD9             
04578  2BD9  AD 34 15              LDA     GEDEX+2
04579  2BDC  8E C2 2C              STX     Z36
04580  2BDF  8D 34 2D              STA     ZEDEX
04581  2BE2             
04582  2BE2  A2 14                 LDX     #$14
04583  2BE4  A9 2C                 LDA     #$2C
04584  2BE6  86 03                 STX     $03
04585  2BE8             
04586  2BE8  4C 9E 2E              JMP     SWALX
04587  2BEB             
04588  2BEB  B1 02      SWALP      LDA     ($02),Y
04589  2BED  48                    PHA
04590  2BEE  B1 04                 LDA     ($04),Y
04591  2BF0  91 02                 STA     ($02),Y
04592  2BF2  68                    PLA
04593  2BF3  91 04                 STA     ($04),Y
04594  2BF5  C8                    INY
04595  2BF6  D0 F3                 BNE     SWALP
04596  2BF8             
04597  2BF8  E6 03                 INC     $03
04598  2BFA  E6 05                 INC     $05
04599  2BFC  CA                    DEX
04600  2BFD  D0 EC                 BNE     SWALP
04601  2BFF             
04602  2BFF  60                    RTS
04603  2C00             
04604  2C00             
04605  2C00             *=$2C00
04606  2C00             
04607  2C00                        ;       TESTING COLOUR RAM & C65/MEGA65 (AT $1400) <- EXTENDED
04608  2C00             
04609  2C00  20 AD 14   CLREXT     JSR     MWAP-$1800
04610  2C03             
04611  2C03  20 95 18              JSR     DMSG-$0800
04612  2C06  20 AB 18              JSR     XYSG-$0800
04613  2C09  20 98 18              JSR     FMSG-$0800
04614  2C0C             
04615  2C0C  A9 02                 LDA     #$02
04616  2C0E  38                    SEC
04617  2C0F  85 09                 STA     $09
04618  2C11             
04619  2C11                        ;       C65/DTV <- 8-BIT COLOUR RAM
04620  2C11             
04621  2C11  A5 FD                 LDA     $FD
04622  2C13  49 01                 EOR     #$01
04623  2C15  85 0C                 STA     $0C
04624  2C17  F0 04                 BEQ     CLRV
04625  2C19             
04626  2C19  A5 0A                 LDA     $0A
04627  2C1B  F0 08                 BEQ     CLRP1
04628  2C1D             
04629  2C1D  20 57 16   CLRV       JSR     VIC3
04630  2C20             
04631  2C20  A9 FF                 LDA     #$FF
04632  2C22  8D 37 14              STA     CLRFF-$17FF
04633  2C25             
04634  2C25  A0 00      CLRP1      LDY     #$00
04635  2C27  A9 D8      CLRD8      LDA     #$D8
04636  2C29  84 02                 STY     $02
04637  2C2B  85 03                 STA     $03
04638  2C2D             
04639  2C2D  A9 04                 LDA     #$04
04640  2C2F  85 04                 STA     $04
04641  2C31             
04642  2C31  8A         CLRP2      TXA
04643  2C32  91 02                 STA     ($02),Y
04644  2C34  51 02                 EOR     ($02),Y
04645  2C36  29 0F      CLRFF      AND     #$0F
04646  2C38  F0 01                 BEQ     CLERR
04647  2C3A  18                    CLC
04648  2C3B  E8         CLERR      INX
04649  2C3C  D0 F3                 BNE     CLRP2
04650  2C3E             
04651  2C3E  A9 0D                 LDA     #$0D
04652  2C40  91 02                 STA     ($02),Y
04653  2C42  C8                    INY
04654  2C43  D0 EC                 BNE     CLRP2
04655  2C45             
04656  2C45  E6 03                 INC     $03
04657  2C47  C6 04                 DEC     $04
04658  2C49  D0 E6                 BNE     CLRP2
04659  2C4B             
04660  2C4B                        ;       1K COLOUR RAM ON C64 (OR IN C64 MODE)
04661  2C4B             
04662  2C4B  A5 FC                 LDA     $FC
04663  2C4D  F0 26                 BEQ     CLRE
04664  2C4F             
04665  2C4F                        ;       2 X 1K COLOUR RAM ON C128 (IN NATIVE MODE)
04666  2C4F             
04667  2C4F  49 08                 EOR     #$08
04668  2C51  D0 0A                 BNE     CLRC
04669  2C53             
04670  2C53  A9 2F                 LDA     #$2F
04671  2C55  85 00                 STA     $00
04672  2C57             
04673  2C57  A9 03                 LDA     #$03
04674  2C59  45 01                 EOR     $01
04675  2C5B  85 01                 STA     $01
04676  2C5D             
04677  2C5D                        ;       4510 INSTRUCTION SET (ON C65)
04678  2C5D             
04679  2C5D  A5 0C      CLRC       LDA     $0C
04680  2C5F  D0 10                 BNE     CLRN
04681  2C61             
04682  2C61                        ;       2K COLOUR RAM ON C65 (IN NATIVE MODE)
04683  2C61             
04684  2C61  A9 04                 LDA     #$04
04685  2C63  4D 28 14              EOR     CLRD8-$17FF
04686  2C66  8D 28 14              STA     CLRD8-$17FF
04687  2C69             
04688  2C69  A9 01                 LDA     #$01
04689  2C6B  4D 30 D0              EOR     $D030
04690  2C6E  8D 30 D0              STA     $D030
04691  2C71             
04692  2C71  C6 09      CLRN       DEC     $09
04693  2C73  D0 B0                 BNE     CLRP1
04694  2C75             
04695  2C75  20 90 18   CLRE       JSR     EMSG-$0800
04696  2C78             
04697  2C78  A5 0C                 LDA     $0C
04698  2C7A  D0 31                 BNE     MWAP
04699  2C7C             
04700  2C7C  20 76 15              JSR     ZERO-$1800
04701  2C7F             
04702  2C7F                        ;       C65 MAPPER TOTAL
04703  2C7F             
04704  2C7F  20 8D 15              JSR     SFINX-$1800
04705  2C82  20 8D 15              JSR     SFINX-$1800
04706  2C85             
04707  2C85  A9 01                 LDA     #$01
04708  2C87  20 2D 15              JSR     ZMSG-$1800
04709  2C8A             
04710  2C8A                        ;       C65 DMA TOTAL
04711  2C8A             
04712  2C8A  20 CA 15              JSR     DMINX-$1800
04713  2C8D  20 CA 15              JSR     DMINX-$1800
04714  2C90             
04715  2C90  A9 02                 LDA     #$02
04716  2C92  20 2D 15              JSR     ZMSG-$1800
04717  2C95             
04718  2C95  AD FF FF              LDA     $FFFF
04719  2C98             
04720  2C98                        ;       INC A
04721  2C98             
04722  2C98  1A                    BYTE    $1A
04723  2C99             
04724  2C99  08                    PHP
04725  2C9A             
04726  2C9A  20 F7 15              JSR     FEXX-$1800
04727  2C9D             
04728  2C9D                        ;       MEGA65 TOTAL
04729  2C9D             
04730  2C9D  20 D9 2F              JSR     MEGA65
04731  2CA0             
04732  2CA0  20 E6 17              JSR     SWAZ
04733  2CA3             
04734  2CA3  28                    PLP
04735  2CA4  D0 02                 BNE     MYAP
04736  2CA6             
04737  2CA6                        ;       MAP
04738  2CA6             
04739  2CA6  5C                    BYTE    $5C
04740  2CA7             
04741  2CA7  EA                    NOP
04742  2CA8             
04743  2CA8  A9 03      MYAP       LDA     #$03
04744  2CAA  20 2D 15              JSR     ZMSG-$1800
04745  2CAD             
04746  2CAD  A0 2D      MWAP       LDY     #$2D
04747  2CAF  B9 C2 14   MWLP       LDA     ZMGZ-$1801,Y
04748  2CB2  BE 9E 1D              LDX     XMGX-$0801,Y
04749  2CB5  99 9E 1D              STA     XMGX-$0801,Y
04750  2CB8  8A                    TXA
04751  2CB9  88                    DEY
04752  2CBA  99 C3 14              STA     ZMGZ-$1800,Y
04753  2CBD  D0 F0                 BNE     MWLP
04754  2CBF             
04755  2CBF  4C 50 16              JMP     VICV
04756  2CC2             
04757  2CC2             
04758  2CC2             *=$2CC2
04759  2CC2             
04760  2CC2  00         Z36        BYTE    $00
04761  2CC3             
04762  2CC3                        ;       #00 "COLOUR RAM"
04763  2CC3             
04764  2CC3  43 4F 4C   ZMGZ       BYTE    $43,$4F,$4C,$4F,$55,$52,$20,$52,$41,$4D,$00
04765  2CCE             
04766  2CCE                        ;       #01 "C65 MAPPER"
04767  2CCE             
04768  2CCE  43 36 35              BYTE    $43,$36,$35,$20,$4D,$41,$50,$50,$45,$52,$00
04769  2CD9             
04770  2CD9                        ;       #02 "C65 DMA"
04771  2CD9             
04772  2CD9  43 36 35              BYTE    $43,$36,$35,$20,$44,$4D,$41,$00
04773  2CE1             
04774  2CE1                        ;       #03 "MEGA65"
04775  2CE1             
04776  2CE1  4D 45 47              BYTE    $4D,$45,$47,$41,$36,$35,$00
04777  2CE8             
04778  2CE8                        ;       #04 " TOTAL"
04779  2CE8             
04780  2CE8  20 54 4F              BYTE    $20,$54,$4F,$54,$41,$4C,$00
04781  2CEF             
04782  2CEF                        ;       #05
04783  2CEF             
04784  2CEF  00                    BYTE    $00
04785  2CF0             
04786  2CF0             
04787  2CF0             *=$2CF0
04788  2CF0             
04789  2CF0  4C EB 2E              JMP     BNK128
04790  2CF3  4C 1D 15              JMP     REX-$1800
04791  2CF6  4C 49 2F              JMP     VDCEXT
04792  2CF9  4C 00 14              JMP     CLREXT-$1800
04793  2CFC             
04794  2CFC                        ;       STACK SAFETY SAVE (RESTORE) <- $14FC (RJMP)
04795  2CFC             
04796  2CFC  78         RWAP       SEI
04797  2CFD  A6 FD                 LDX     $FD
04798  2CFF  A0 00                 LDY     #$00
04799  2D01  CA                    DEX
04800  2D02  18                    CLC
04801  2D03  D0 15                 BNE     RWAX
04802  2D05             
04803  2D05  A5 FC                 LDA     $FC
04804  2D07  C9 09                 CMP     #$09
04805  2D09  90 0F                 BCC     RWAX
04806  2D0B             
04807  2D0B  98                    TYA
04808  2D0C             
04809  2D0C                        ;       TAZ / MAP
04810  2D0C             
04811  2D0C  4B 5C                 BYTE    $4B,$5C
04812  2D0E             
04813  2D0E  A9 07                 LDA     #$07
04814  2D10  05 00                 ORA     $00
04815  2D12  85 00                 STA     $00
04816  2D14             
04817  2D14  A9 FE                 LDA     #$FE
04818  2D16  25 01                 AND     $01
04819  2D18  85 01                 STA     $01
04820  2D1A             
04821  2D1A  4C C8 2E   RWAX       JMP     XEST
04822  2D1D             
04823  2D1D  A2 60      REX        LDX     #$60
04824  2D1F  EC 8D 2E              CPX     MNXRTS
04825  2D22  38         SREX       SEC
04826  2D23  D0 F9                 BNE     REX+1
04827  2D25             
04828  2D25  EC 48 2F              CPX     RALT
04829  2D28  D0 F8                 BNE     SREX
04830  2D2A             
04831  2D2A  4C 00 2E              JMP     MAINXT
04832  2D2D             
04833  2D2D  20 9A 18   ZMSG       JSR     XMSG-$0800
04834  2D30             
04835  2D30  A9 0B                 LDA     #$0B
04836  2D32  90 01                 BCC     ZTOV
04837  2D34             
04838  2D34             
04839  2D34             *=$2D34
04840  2D34             
04841  2D34  DF         ZEDEX      BYTE    $DF
04842  2D35             
04843  2D35  E5 05      ZTOV       SBC     $05
04844  2D37  48                    PHA
04845  2D38  A9 04                 LDA     #$04
04846  2D3A  20 9A 18              JSR     XMSG-$0800
04847  2D3D  68                    PLA
04848  2D3E  A8                    TAY
04849  2D3F             
04850  2D3F  A9 20      ZNOV       LDA     #$20
04851  2D41  20 D2 FF              JSR     $FFD2
04852  2D44  88                    DEY
04853  2D45  10 F8                 BPL     ZNOV
04854  2D47             
04855  2D47  A0 04                 LDY     #$04
04856  2D49             
04857  2D49  A5 03                 LDA     $03
04858  2D4B  05 04                 ORA     $04
04859  2D4D  D0 14                 BNE     ZMEG
04860  2D4F             
04861  2D4F  A5 02                 LDA     $02
04862  2D51  C9 10                 CMP     #$10
04863  2D53  B0 0E                 BCS     ZMEG
04864  2D55             
04865  2D55  4A                    LSR
04866  2D56  86 02                 STX     $02
04867  2D58  66 02                 ROR     $02
04868  2D5A  4A                    LSR
04869  2D5B  85 03                 STA     $03
04870  2D5D  66 02                 ROR     $02
04871  2D5F             
04872  2D5F  A9 4B                 LDA     #$4B
04873  2D61  D0 0B                 BNE     KBMB
04874  2D63             
04875  2D63  46 04      ZMEG       LSR     $04
04876  2D65  66 03                 ROR     $03
04877  2D67  66 02                 ROR     $02
04878  2D69  88                    DEY
04879  2D6A  D0 F7                 BNE     ZMEG
04880  2D6C             
04881  2D6C  A9 4D                 LDA     #$4D
04882  2D6E  48         KBMB       PHA
04883  2D6F             
04884  2D6F  20 2E 17              JSR     NUM16
04885  2D72             
04886  2D72  68                    PLA
04887  2D73  20 D2 FF              JSR     $FFD2
04888  2D76             
04889  2D76  20 BB 1C   ZERO       JSR     PRET-$0800
04890  2D79             
04891  2D79  78                    SEI
04892  2D7A  18                    CLC
04893  2D7B  86 02                 STX     $02
04894  2D7D  86 03                 STX     $03
04895  2D7F  86 04                 STX     $04
04896  2D81  60                    RTS
04897  2D82             
04898  2D82  E6 02      ZINC       INC     $02
04899  2D84  D0 06                 BNE     ZINX
04900  2D86  E6 03                 INC     $03
04901  2D88  D0 02                 BNE     ZINX
04902  2D8A  E6 04                 INC     $04
04903  2D8C  60         ZINX       RTS
04904  2D8D             
04905  2D8D                        ;       C65 MAPPER TOTAL
04906  2D8D             
04907  2D8D  A2 0F      SFINX      LDX     #$0F
04908  2D8F             
04909  2D8F                        ;       LDZ #$B3
04910  2D8F             
04911  2D8F  A3 B3                 BYTE    $A3,$B3
04912  2D91             
04913  2D91  86 05      ZAPP       STX     $05
04914  2D93             
04915  2D93  8A                    TXA
04916  2D94  09 E0                 ORA     #$E0
04917  2D96  AA                    TAX
04918  2D97             
04919  2D97  98                    TYA
04920  2D98             
04921  2D98                        ;       MAP
04922  2D98             
04923  2D98  5C                    BYTE    $5C
04924  2D99             
04925  2D99  AD C1 30              LDA     ENDE
04926  2D9C  8E C1 30              STX     ENDE
04927  2D9F  90 16                 BCC     DINX
04928  2DA1             
04929  2DA1  E0 E4                 CPX     #$E4
04930  2DA3  8C C1 30              STY     ENDE
04931  2DA6  85 07                 STA     $07
04932  2DA8  AD C1 30              LDA     ENDE
04933  2DAB  90 06                 BCC     XINX
04934  2DAD  D0 07                 BNE     SINX
04935  2DAF             
04936  2DAF  E4 07                 CPX     $07
04937  2DB1  D0 03                 BNE     SINX
04938  2DB3             
04939  2DB3  20 82 15   XINX       JSR     ZINC-$1800
04940  2DB6             
04941  2DB6  38         SINX       SEC
04942  2DB7             
04943  2DB7  A6 05      DINX       LDX     $05
04944  2DB9  CA                    DEX
04945  2DBA  10 D5                 BPL     ZAPP
04946  2DBC             
04947  2DBC  98                    TYA
04948  2DBD             
04949  2DBD  A6 FC                 LDX     $FC
04950  2DBF  D0 02                 BNE     NINX
04951  2DC1             
04952  2DC1                        ;       TAZ
04953  2DC1             
04954  2DC1  4B                    BYTE    $4B
04955  2DC2             
04956  2DC2  2C                    BYTE    $2C
04957  2DC3             
04958  2DC3                        ;       LDX #$E3
04959  2DC3             
04960  2DC3  A2 E3      NINX       BYTE    $A2,$E3
04961  2DC5             
04962  2DC5                        ;       MAP / TAZ
04963  2DC5             
04964  2DC5  5C 4B                 BYTE    $5C,$4B
04965  2DC7             
04966  2DC7  38                    SEC
04967  2DC8  EA                    NOP
04968  2DC9  60                    RTS
04969  2DCA             
04970  2DCA                        ;       C65 DMA TOTAL
04971  2DCA             
04972  2DCA  A0 7F      DMINX      LDY     #$7F
04973  2DCC             
04974  2DCC  A2 A0      DAMOX      LDX     #$A0
04975  2DCE  98                    TYA
04976  2DCF             
04977  2DCF  99 00 13   DALP1      STA     $1300,Y
04978  2DD2  88                    DEY
04979  2DD3  10 FA                 BPL     DALP1
04980  2DD5             
04981  2DD5  A8                    TAY
04982  2DD6  B0 05                 BCS     DAMIN
04983  2DD8             
04984  2DD8  20 A4 1F              JSR     D65O-$0800
04985  2DDB  F0 15                 BEQ     DAMOY
04986  2DDD             
04987  2DDD  C0 04      DAMIN      CPY     #$04
04988  2DDF  90 0D                 BCC     DAXXX
04989  2DE1             
04990  2DE1  20 AE 1F              JSR     D65I-$0800
04991  2DE4             
04992  2DE4  98                    TYA
04993  2DE5  AA                    TAX
04994  2DE6             
04995  2DE6  DD 00 12   DALP2      CMP     $1200,X
04996  2DE9  D0 06                 BNE     DAMOS
04997  2DEB  CA                    DEX
04998  2DEC  10 F8                 BPL     DALP2
04999  2DEE             
05000  2DEE  20 82 15   DAXXX      JSR     ZINC-$1800
05001  2DF1             
05002  2DF1  38         DAMOS      SEC
05003  2DF2             
05004  2DF2  88         DAMOY      DEY
05005  2DF3  10 D7                 BPL     DAMOX
05006  2DF5             
05007  2DF5  38                    SEC
05008  2DF6  60                    RTS
05009  2DF7             
05010  2DF7  98         FEXX       TYA
05011  2DF8             
05012  2DF8                        ;       MAP
05013  2DF8             
05014  2DF8  5C                    BYTE    $5C
05015  2DF9             
05016  2DF9  A9 FE                 LDA     #$FE
05017  2DFB  25 01                 AND     $01
05018  2DFD  85 01                 STA     $01
05019  2DFF  60                    RTS
05020  2E00             
05021  2E00             
05022  2E00             *=$2E00
05023  2E00             
05024  2E00                        ;       TESTING MAIN MEMORY (ON ALL MACHINES) (VIA $14F3) <- EXTENDED
05025  2E00                        ;       (OVERWRITE WITH $00/$55/$AA/$FF PAGE BY PAGE THEN RESTORE)
05026  2E00             
05027  2E00  A6 09      MAINXT     LDX     $09
05028  2E02  E0 0E                 CPX     #$0E
05029  2E04  F0 1D                 BEQ     NAIN
05030  2E06             
05031  2E06  C9 FF                 CMP     #$FF
05032  2E08  A6 FC                 LDX     $FC
05033  2E0A  90 1C                 BCC     CAIN
05034  2E0C  F0 04                 BEQ     YAIN
05035  2E0E             
05036  2E0E  E0 08                 CPX     #$08
05037  2E10  D0 11                 BNE     NAIN
05038  2E12             
05039  2E12  98         YAIN       TYA
05040  2E13             
05041  2E13  8E 00 A0   EAIN       STX     $A000
05042  2E16  EC 00 A0              CPX     $A000
05043  2E19  8C 00 A0              STY     $A000
05044  2E1C  D0 05                 BNE     NAIN
05045  2E1E             
05046  2E1E  CC 00 A0              CPY     $A000
05047  2E21  F0 05                 BEQ     CAIN
05048  2E23             
05049  2E23  A9 A0      NAIN       LDA     #$A0
05050  2E25  8D EF 2E              STA     ANUL+1
05051  2E28             
05052  2E28  E0 00      CAIN       CPX     #$00
05053  2E2A  F0 14                 BEQ     STAX
05054  2E2C             
05055  2E2C  E0 06                 CPX     #$06
05056  2E2E  90 09                 BCC     CTAX
05057  2E30             
05058  2E30  E0 07                 CPX     #$07
05059  2E32  D0 0A                 BNE     XTAX
05060  2E34             
05061  2E34  A2 04                 LDX     #$04
05062  2E36  8E 47 2E              STX     XAIX+1
05063  2E39             
05064  2E39  AA         CTAX       TAX
05065  2E3A  10 02                 BPL     XTAX
05066  2E3C             
05067  2E3C  A9 40                 LDA     #$40
05068  2E3E             
05069  2E3E  A2 00      XTAX       LDX     #$00
05070  2E40             
05071  2E40  85 04      STAX       STA     $04
05072  2E42             
05073  2E42  E0 2E      CAIX       CPX     #>MAINXT
05074  2E44  F0 42                 BEQ     CINX
05075  2E46             
05076  2E46  E0 10      XAIX       CPX     #$10
05077  2E48  D0 02                 BNE     XALP
05078  2E4A             
05079  2E4A  A2 10                 LDX     #$10
05080  2E4C             
05081  2E4C  86 03      XALP       STX     $03
05082  2E4E             
05083  2E4E  B1 02      CALP       LDA     ($02),Y
05084  2E50  99 00 13              STA     $1300,Y
05085  2E53  C8                    INY
05086  2E54  D0 F8                 BNE     CALP
05087  2E56             
05088  2E56  8A                    TXA
05089  2E57  F0 03                 BEQ     CINY
05090  2E59             
05091  2E59  E8                    INX
05092  2E5A  D0 02                 BNE     CINE
05093  2E5C             
05094  2E5C  A0 06      CINY       LDY     #$06
05095  2E5E             
05096  2E5E  A2 05      CINE       LDX     #$05
05097  2E60  84 05                 STY     $05
05098  2E62             
05099  2E62  BD 9A 2E   CIXX       LDA     XCMP,X
05100  2E65             
05101  2E65  91 02      CIXW       STA     ($02),Y
05102  2E67  C8                    INY
05103  2E68  D0 FB                 BNE     CIXW
05104  2E6A             
05105  2E6A  A4 05                 LDY     $05
05106  2E6C             
05107  2E6C  D1 02      CIXC       CMP     ($02),Y
05108  2E6E  D0 04                 BNE     NOXC
05109  2E70  C8                    INY
05110  2E71  D0 F9                 BNE     CIXC
05111  2E73             
05112  2E73  24                    BYTE    $24
05113  2E74  18         NOXC       CLC
05114  2E75             
05115  2E75  A4 05                 LDY     $05
05116  2E77  90 05                 BCC     COXC
05117  2E79             
05118  2E79  CA                    DEX
05119  2E7A  10 E6                 BPL     CIXX
05120  2E7C             
05121  2E7C  A6 03                 LDX     $03
05122  2E7E             
05123  2E7E  B9 00 13   COXC       LDA     $1300,Y
05124  2E81  91 02                 STA     ($02),Y
05125  2E83  C8                    INY
05126  2E84  D0 F8                 BNE     COXC
05127  2E86             
05128  2E86  90 05                 BCC     MNXRTS
05129  2E88             
05130  2E88  E8         CINX       INX
05131  2E89  E4 04                 CPX     $04
05132  2E8B  D0 B5                 BNE     CAIX
05133  2E8D             
05134  2E8D  60         MNXRTS     RTS
05135  2E8E             
05136  2E8E                        ;       Z80 CODE (FOR DETECTING CP/M CARTRIDGE):
05137  2E8E             
05138  2E8E                        ;       NOP
05139  2E8E                        ;       LD A, $01
05140  2E8E                        ;       LD ($04FD), A   <- $14FD (ZDE)
05141  2E8E                        ;       LD ($CE00), A   <- $DE00
05142  2E8E                        ;       NOP
05143  2E8E                        ;       JP $0000
05144  2E8E             
05145  2E8E  00 3E 01   Z80        BYTE    $00,$3E,$01,$32,$FD,$04,$32,$00,$CE,$00,$C3,$00
05146  2E9A             
05147  2E9A  00 55 AA   XCMP       BYTE    $00,$55,$AA,$FF
05148  2E9E             
05149  2E9E                        ;       STACK SAFETY SAVE
05150  2E9E             
05151  2E9E  A2 00      SWALX      LDX     #$00
05152  2EA0  85 05                 STA     $05
05153  2EA2             
05154  2EA2  AD CB 2E              LDA     REST+1
05155  2EA5  D0 19                 BNE     XWALX
05156  2EA7             
05157  2EA7  BD 00 01   XWALP      LDA     $0100,X
05158  2EAA  9D 5A 29              STA     $295A,X
05159  2EAD  BD 00 12              LDA     $1200,X
05160  2EB0  9D 5A 2A              STA     $2A5A,X
05161  2EB3  E8                    INX
05162  2EB4  D0 F1                 BNE     XWALP
05163  2EB6             
05164  2EB6  BA                    TSX
05165  2EB7  8A                    TXA
05166  2EB8  69 04                 ADC     #$04
05167  2EBA  AA                    TAX
05168  2EBB             
05169  2EBB  A9 4C                 LDA     #$4C
05170  2EBD  8D B8 1C              STA     RJMP-$0800
05171  2EC0             
05172  2EC0  8E CB 2E   XWALX      STX     REST+1
05173  2EC3             
05174  2EC3  A2 02                 LDX     #$02
05175  2EC5  4C EB 2B              JMP     SWALP
05176  2EC8             
05177  2EC8                        ;       STACK SAFETY SAVE (RESTORE)
05178  2EC8             
05179  2EC8  A2 FF      XEST       LDX     #$FF
05180  2ECA  A9 00      REST       LDA     #$00
05181  2ECC  F0 BF                 BEQ     MNXRTS
05182  2ECE             
05183  2ECE  9A                    TXS
05184  2ECF  AA                    TAX
05185  2ED0             
05186  2ED0  B9 5A 29   REAA       LDA     $295A,Y
05187  2ED3  99 00 01              STA     $0100,Y
05188  2ED6  B9 5A 2A              LDA     $2A5A,Y
05189  2ED9  99 00 12              STA     $1200,Y
05190  2EDC  C8                    INY
05191  2EDD  D0 F1                 BNE     REAA
05192  2EDF             
05193  2EDF  88                    DEY
05194  2EE0             
05195  2EE0  B9 5A 29   REAY       LDA     $295A,Y
05196  2EE3  88                    DEY
05197  2EE4  48                    PHA
05198  2EE5  D0 F9                 BNE     REAY
05199  2EE7             
05200  2EE7  9A                    TXS
05201  2EE8             
05202  2EE8  4C A2 17              JMP     SWAX
05203  2EEB             
05204  2EEB                        ;       TESTING BANKS 1-3 (ON C128) (VIA $14F0) <- EXTENDED
05205  2EEB                        ;       (OVERWRITE WITH $00/$55/$AA/$FF PAGE BY PAGE THEN RESTORE)
05206  2EEB             
05207  2EEB  BA         BNK128     TSX
05208  2EEC  86 05                 STX     $05
05209  2EEE             
05210  2EEE  A2 00      ANUL       LDX     #$00
05211  2EF0  D0 9B                 BNE     MNXRTS
05212  2EF2             
05213  2EF2  A6 FD                 LDX     $FD
05214  2EF4  D0 97                 BNE     MNXRTS
05215  2EF6             
05216  2EF6  0A                    ASL
05217  2EF7  2A                    ROL
05218  2EF8  2A                    ROL
05219  2EF9  29 03                 AND     #$03
05220  2EFB             
05221  2EFB  8C 06 D5              STY     $D506
05222  2EFE  8D 0A D5              STA     $D50A
05223  2F01             
05224  2F01  8C 09 D5   SYLP       STY     $D509
05225  2F04  84 03                 STY     $03
05226  2F06  9A                    TXS
05227  2F07             
05228  2F07  A0 05                 LDY     #$05
05229  2F09             
05230  2F09  68         PLP1       PLA
05231  2F0A  E8                    INX
05232  2F0B  9D 00 13              STA     $1300,X
05233  2F0E  D0 F9                 BNE     PLP1
05234  2F10             
05235  2F10  B9 9A 2E   PYLP       LDA     XCMP,Y
05236  2F13             
05237  2F13  E8         PWP        INX
05238  2F14  48                    PHA
05239  2F15  D0 FC                 BNE     PWP
05240  2F17             
05241  2F17  68         PRP        PLA
05242  2F18  D9 9A 2E              CMP     XCMP,Y
05243  2F1B  D0 07                 BNE     BERR
05244  2F1D  E8                    INX
05245  2F1E  D0 F7                 BNE     PRP
05246  2F20             
05247  2F20  88                    DEY
05248  2F21  10 ED                 BPL     PYLP
05249  2F23             
05250  2F23  24                    BYTE    $24
05251  2F24  18         BERR       CLC
05252  2F25             
05253  2F25  A2 00                 LDX     #$00
05254  2F27  A4 03                 LDY     $03
05255  2F29  9A                    TXS
05256  2F2A             
05257  2F2A  BD 00 13   PLP2       LDA     $1300,X
05258  2F2D  CA                    DEX
05259  2F2E  48                    PHA
05260  2F2F  D0 F9                 BNE     PLP2
05261  2F31             
05262  2F31  90 03                 BCC     CERR
05263  2F33             
05264  2F33  C8                    INY
05265  2F34  D0 CB                 BNE     SYLP
05266  2F36             
05267  2F36  A0 00      CERR       LDY     #$00
05268  2F38  A9 04                 LDA     #$04
05269  2F3A  A6 05                 LDX     $05
05270  2F3C             
05271  2F3C  8C 0A D5              STY     $D50A
05272  2F3F  C8                    INY
05273  2F40  8C 09 D5              STY     $D509
05274  2F43  8D 06 D5              STA     $D506
05275  2F46             
05276  2F46  9A                    TXS
05277  2F47  88                    DEY
05278  2F48             
05279  2F48  60         RALT       RTS
05280  2F49             
05281  2F49                        ;       TESTING 16K/64K VDC MEMORY (ON C128) (VIA $14F6) <- EXTENDED
05282  2F49                        ;       (OVERWRITE WITH $00/$55/$AA/$FF PAGE BY PAGE THEN RESTORE)
05283  2F49             
05284  2F49  A9 60      VDCEXT     LDA     #$60
05285  2F4B  4D B8 2F              EOR     ZERR
05286  2F4E  D0 FA                 BNE     VDCEXT+1
05287  2F50             
05288  2F50  A8                    TAY
05289  2F51             
05290  2F51  20 F2 16   VRAP       JSR     APTX
05291  2F54             
05292  2F54  2C 00 D6   VMP1       BIT     $D600
05293  2F57  10 FB                 BPL     VMP1
05294  2F59  AD 01 D6              LDA     $D601
05295  2F5C  99 00 13              STA     $1300,Y
05296  2F5F  C8                    INY
05297  2F60  D0 F2                 BNE     VMP1
05298  2F62             
05299  2F62  A2 05                 LDX     #$05
05300  2F64             
05301  2F64  BD 9A 2E   VXP        LDA     XCMP,X
05302  2F67  86 03                 STX     $03
05303  2F69  85 04                 STA     $04
05304  2F6B             
05305  2F6B  20 F2 16              JSR     APTX
05306  2F6E  A5 04                 LDA     $04
05307  2F70             
05308  2F70  2C 00 D6   VXP1       BIT     $D600
05309  2F73  10 FB                 BPL     VXP1
05310  2F75  8D 01 D6              STA     $D601
05311  2F78  C8                    INY
05312  2F79  D0 F5                 BNE     VXP1
05313  2F7B             
05314  2F7B  20 F2 16              JSR     APTX
05315  2F7E  A5 04                 LDA     $04
05316  2F80             
05317  2F80  2C 00 D6   VXP2       BIT     $D600
05318  2F83  10 FB                 BPL     VXP2
05319  2F85  CD 01 D6              CMP     $D601
05320  2F88  D0 09                 BNE     VERR
05321  2F8A  C8                    INY
05322  2F8B  D0 F3                 BNE     VXP2
05323  2F8D             
05324  2F8D  A6 03                 LDX     $03
05325  2F8F  CA                    DEX
05326  2F90  10 D2                 BPL     VXP
05327  2F92             
05328  2F92  24                    BYTE    $24
05329  2F93  18         VERR       CLC
05330  2F94             
05331  2F94  A0 00                 LDY     #$00
05332  2F96  20 F2 16              JSR     APTX
05333  2F99             
05334  2F99  B9 00 13   VMP2       LDA     $1300,Y
05335  2F9C  2C 00 D6   VMP3       BIT     $D600
05336  2F9F  10 FB                 BPL     VMP3
05337  2FA1  8D 01 D6              STA     $D601
05338  2FA4  C8                    INY
05339  2FA5  D0 F2                 BNE     VMP2
05340  2FA7             
05341  2FA7  90 0F                 BCC     ZERR
05342  2FA9             
05343  2FA9  AD AB 16              LDA     RAM
05344  2FAC  49 36                 EOR     #$36
05345  2FAE  F0 02                 BEQ     VRAM
05346  2FB0             
05347  2FB0  A9 40                 LDA     #$40
05348  2FB2             
05349  2FB2  E6 05      VRAM       INC     $05
05350  2FB4  C5 05                 CMP     $05
05351  2FB6  D0 99                 BNE     VRAP
05352  2FB8             
05353  2FB8  60         ZERR       RTS
05354  2FB9             
05355  2FB9                        ;       CP/M CARTRIDGE DETECTION (BY Z80 CODE)
05356  2FB9             
05357  2FB9  20 C4 2F   CPMZ80     JSR     CWAP
05358  2FBC  D0 04                 BNE     CWYP
05359  2FBE             
05360  2FBE  8C 00 DE              STY     $DE00
05361  2FC1  EA                    NOP
05362  2FC2             
05363  2FC2  A0 0D      CWYP       LDY     #$0D
05364  2FC4             
05365  2FC4  B9 8D 2E   CWAP       LDA     Z80-1,Y
05366  2FC7  48                    PHA
05367  2FC8  B9 FF 0F              LDA     $0FFF,Y
05368  2FCB  99 8D 2E              STA     Z80-1,Y
05369  2FCE  68                    PLA
05370  2FCF  88                    DEY
05371  2FD0  99 00 10              STA     $1000,Y
05372  2FD3  D0 EF                 BNE     CWAP
05373  2FD5             
05374  2FD5  AD FD 14              LDA     ZDE
05375  2FD8  60                    RTS
05376  2FD9             
05377  2FD9                        ;       MEGA65 TOTAL
05378  2FD9             
05379  2FD9  AD 30 D0   MEGA65     LDA     $D030
05380  2FDC  48                    PHA
05381  2FDD  29 46                 AND     #$46
05382  2FDF  8D 30 D0              STA     $D030
05383  2FE2             
05384  2FE2  A5 01                 LDA     $01
05385  2FE4  48                    PHA
05386  2FE5  29 F8                 AND     #$F8
05387  2FE7  85 01                 STA     $01
05388  2FE9             
05389  2FE9  A9 40                 LDA     #$40
05390  2FEB  84 06                 STY     $06
05391  2FED  85 07                 STA     $07
05392  2FEF  84 08                 STY     $08
05393  2FF1  84 09                 STY     $09
05394  2FF3             
05395  2FF3  A9 C0                 LDA     #$C0
05396  2FF5  84 0A                 STY     $0A
05397  2FF7  85 0B                 STA     $0B
05398  2FF9             
05399  2FF9  20 9C 30   MOKK       JSR     DEKK
05400  2FFC  B0 11                 BCS     MUGR
05401  2FFE             
05402  2FFE                        ;       LDA ($06),Z
05403  2FFE             
05404  2FFE  EA B2 06              BYTE    $EA,$B2,$06
05405  3001             
05406  3001  91 0A                 STA     ($0A),Y
05407  3003             
05408  3003  E6 06                 INC     $06
05409  3005  98                    TYA
05410  3006             
05411  3006                        ;       LDA ($06),Z
05412  3006             
05413  3006  EA B2 06              BYTE    $EA,$B2,$06
05414  3009             
05415  3009  C8                    INY
05416  300A  91 0A                 STA     ($0A),Y
05417  300C  88                    DEY
05418  300D             
05419  300D  C6 06                 DEC     $06
05420  300F             
05421  300F  A5 08      MUGR       LDA     $08
05422  3011  05 09                 ORA     $09
05423  3013  D0 E4                 BNE     MOKK
05424  3015             
05425  3015  A9 C0                 LDA     #$C0
05426  3017  85 0B                 STA     $0B
05427  3019             
05428  3019  20 9C 30   SAKK       JSR     DEKK
05429  301C             
05430  301C  A5 08                 LDA     $08
05431  301E  B0 0E                 BCS     SUGR
05432  3020             
05433  3020                        ;       STA ($06),Z
05434  3020             
05435  3020  EA 92 06              BYTE    $EA,$92,$06
05436  3023             
05437  3023  A5 09                 LDA     $09
05438  3025  E6 06                 INC     $06
05439  3027             
05440  3027                        ;       STA ($06),Z
05441  3027             
05442  3027  EA 92 06              BYTE    $EA,$92,$06
05443  302A             
05444  302A  C6 06                 DEC     $06
05445  302C             
05446  302C  A5 08                 LDA     $08
05447  302E  05 09      SUGR       ORA     $09
05448  3030  D0 E7                 BNE     SAKK
05449  3032             
05450  3032  A9 C0                 LDA     #$C0
05451  3034  85 0B                 STA     $0B
05452  3036             
05453  3036  20 9C 30   MAKK       JSR     DEKK
05454  3039             
05455  3039  8C 00 40              STY     $4000
05456  303C  8C 01 40              STY     $4001
05457  303F  B0 4D                 BCS     PAKK
05458  3041             
05459  3041                        ;       LDA ($06),Z
05460  3041             
05461  3041  EA B2 06              BYTE    $EA,$B2,$06
05462  3044             
05463  3044  85 05                 STA     $05
05464  3046  98                    TYA
05465  3047             
05466  3047                        ;       STA ($06),Z
05467  3047             
05468  3047  EA 92 06              BYTE    $EA,$92,$06
05469  304A             
05470  304A  A5 08                 LDA     $08
05471  304C  05 09                 ORA     $09
05472  304E  F0 03                 BEQ     HAKK
05473  3050             
05474  3050                        ;       LDA ($06),Z
05475  3050             
05476  3050  EA B2 06              BYTE    $EA,$B2,$06
05477  3053             
05478  3053  48         HAKK       PHA
05479  3054  B1 0A                 LDA     ($0A),Y
05480  3056             
05481  3056                        ;       STA ($06),Z
05482  3056             
05483  3056  EA 92 06              BYTE    $EA,$92,$06
05484  3059             
05485  3059  E6 06                 INC     $06
05486  305B  98                    TYA
05487  305C             
05488  305C                        ;       LDA ($06),Z
05489  305C             
05490  305C  EA B2 06              BYTE    $EA,$B2,$06
05491  305F             
05492  305F  85 0D                 STA     $0D
05493  3061             
05494  3061  C8                    INY
05495  3062  B1 0A                 LDA     ($0A),Y
05496  3064  88                    DEY
05497  3065             
05498  3065                        ;       STA ($06),Z
05499  3065             
05500  3065  EA 92 06              BYTE    $EA,$92,$06
05501  3068             
05502  3068  C6 06                 DEC     $06
05503  306A             
05504  306A  98                    TYA
05505  306B  91 0A                 STA     ($0A),Y
05506  306D  C8                    INY
05507  306E  91 0A                 STA     ($0A),Y
05508  3070  88                    DEY
05509  3071             
05510  3071  68                    PLA
05511  3072  D0 1A                 BNE     PAKK
05512  3074             
05513  3074  A5 08                 LDA     $08
05514  3076  C5 05                 CMP     $05
05515  3078  D0 08                 BNE     PUKK
05516  307A             
05517  307A  A5 09                 LDA     $09
05518  307C  C5 0D                 CMP     $0D
05519  307E  F0 06                 BEQ     YAKK
05520  3080             
05521  3080  A5 08                 LDA     $08
05522  3082  05 09      PUKK       ORA     $09
05523  3084  D0 B0                 BNE     MAKK
05524  3086             
05525  3086  A0 04      YAKK       LDY     #$04
05526  3088             
05527  3088  20 82 15   ZILP       JSR     ZINC-$1800
05528  308B  88                    DEY
05529  308C  D0 FA                 BNE     ZILP
05530  308E             
05531  308E  A5 08      PAKK       LDA     $08
05532  3090  05 09                 ORA     $09
05533  3092  D0 A2                 BNE     MAKK
05534  3094             
05535  3094  68                    PLA
05536  3095  85 01                 STA     $01
05537  3097             
05538  3097  68                    PLA
05539  3098  8D 30 D0              STA     $D030
05540  309B  60                    RTS
05541  309C             
05542  309C  38         DEKK       SEC
05543  309D  A5 08                 LDA     $08
05544  309F  E9 04                 SBC     #$04
05545  30A1  85 08                 STA     $08
05546  30A3  B0 02                 BCS     SOKK
05547  30A5  C6 09                 DEC     $09
05548  30A7             
05549  30A7  C9 F0      SOKK       CMP     #$F0
05550  30A9  90 07                 BCC     CEKK
05551  30AB             
05552  30AB  A5 09                 LDA     $09
05553  30AD  49 0F                 EOR     #$0F
05554  30AF  F0 01                 BEQ     CEKK
05555  30B1             
05556  30B1  18                    CLC
05557  30B2             
05558  30B2  08         CEKK       PHP
05559  30B3             
05560  30B3  38                    SEC
05561  30B4  A5 0A                 LDA     $0A
05562  30B6  E9 02                 SBC     #$02
05563  30B8  85 0A                 STA     $0A
05564  30BA  B0 02                 BCS     COKK
05565  30BC  C6 0B                 DEC     $0B
05566  30BE             
05567  30BE  28         COKK       PLP
05568  30BF             
05569  30BF  98                    TYA
05570  30C0  60                    RTS
05571  30C1             
05572  30C1             
05573  30C1             *=$30C1
05574  30C1             
05575  30C1             ENDE
05576  30C1             
05577  30C1                        ;       COMPILED WITH CBM PRG STUDIO V3.10 (BY ARTHUR JORDISON)
05578  30C1                        ;       HTTP://AJORDISON.CO.UK/
05579  30C1             
05580  30C1                        ;       ROSETTA INTERACTIVE FICTION PROJECT HOMEPAGE:
05581  30C1             
05582  30C1                        ;       HTTP://ISTENNYILA.HU/ROSETTA
05583  30C1             
05584  30C1                        ;       V0.13 (C) 2012-2017 BY ROBERT OLESSAK
05585  30C1             
