Skip to main content
Home Documents SCSI Apple Scsi Ident.Txt
Apple Scsi Ident.Txt

Apple Scsi Ident.Txt

SCSI · 2006 · TXT
Filenameapple_scsi_ident.txt
Size0.01 MB
Year2006
Downloads8
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
manuf       name                rev       descr                    aapl pn      bksize         size

3.5"
"Disk", "MINSCRIB", "    M8425 - SCSI", "209A"    miniscribe M8425                        41004 blks   20mb
"Disk", "CONNER  ", "CP3040A-40mb-3.5", "2.31"    hd40sc
"Disk", "QUANTUM ", "P40S 940-40-94xx", "A.2 "    quantum prodrive 40                     82029 blks   40mb
"Disk", "QUANTUM ", "P80S 980-80-94xx", "A.2 "    quantum prodrive 80                    164058 blks   80mb
"Disk", "QUANTUM ", "P80S 980-80-94xx", "9.6 "    quantum prodrive 80                    164058 blks
"Disk", "QUANTUM ", "CTS80S          ", "4.05"    quantum prodrive ELS 80                166200 blks
"Disk", "QUANTUM ", "LP80S  980809404", "2.8 "    quantum prodrive LPS 80                164139 blks
"Disk", "QUANTUM ", "CTS120S         ", "4.07"    quantum prodrive ELS 120               250068 blks  120mb
'Disk", "IBM     ", "H3171-S2        ", "S52H"    IBM 160MB                              333924 blks
"Disk", "QUANTUM ", "CTS160S         ", "3.09"    quantum prodrive ELS 160               333936 blks  160mb							
"Disk", "QUANTUM ", "LP240S GM240S01X", "6.3 "    quantum prodrive LPS 230               479350 blks  240mb
"Disk", "QUANTUM ", "LPS540S         ", "590A"    quantum prodrive LPS     655-0202     1057616 blks  540mb
"Disk", "QUANTUM ", "FIREBALL540S    ", "1Q09"    quantum fireball         655-0272     1065235 blks  540mb
"Disk", "QUANTUM ", "TRB730S         ", "043C"    quantum trailblazer                                 730mb
"Diek", "QUANTUM ", "FIREBALL1080S   ", "1Q09"    quantum fireball                                    1gb
"Disk", "IBM     ", "DPES-31080      ", "S31K"                             655-0141     2118144 blks  1.0gb
"Disk", "QUANTUM ", "FIREBALL_TM1280S", "300L"    quantum fireball         655-0394     2503872 blks  1.2gb
"Disk", "SEAGATE ", "ST32430N        ", "0266"    seagate hawk             655-0242     4193415 blks  2.0gb
"Disk", "SEAGATE ", "ST32550N        ", "0016"    barracuda 2gb                         4194058 blks  2.0gb
"Disk", "SEAGATE ", "ST32550N        ", "0019"    barracuda 2gb                         4194058 blks  2.0gb
"Disk", "SEAGATE ", "ST32171W        ", "0284"    seagate barracuda wide   655-0500     4222640 blks  2.0gb
"Disk", "SEAGATE ", "ST32151N        ", "0560"    seagate barracuda narrow 655-0386                   2.0gb
"Disk", "IBM     ", "DORS-32160      ", "WA0A"                                                        2.0gb
"Disk", "IBM     ", "DDRS-34560W     ", "S70D"    ibm wide 4560mb                       8924999 blks  4gb
"Disk", "IBM     ", "DCAS-34330      ", "S63A"                                          8467200 blks  4gb
"Disk", "QUANTUM ", "VIKING 4.5 WSE  ", "880E"    quantum viking wide      655-0501     8899737 blks  4gb
"Disk", "IBM     ", "DRHS36V         ", "01A0"    IBM wide                 655-0707    72170880 blks 36gb
"Disk", "SEAGATE ", "ST336704LW      ", "3701"    seagate cheetah lvd/se   655-0904    71687369 blks 36gb

5.25"

"Disk", "QUANTUM ", "Q250  76-45004  ", "66  "    quantum q250                            84294 blks 40mb
"Disk", "QUANTUM ", "Q280  76-45005  ", "66  "    quantum q280                           156370 blks 80mb



non-apple

3.5"

"Disk", "RODIME  ", "RO632           ", "1.00"                                            40392 blks
"Disk", "QUANTUM ", "P105SS 910-10-94", "8.9 "    quantum prodrive 105S
"Disk", "QUANTUM ", "LP105S 910109405", "3.1 "    quantum prodrive LPS                   205561 blks       
"Disk", "MAXTOR  ", "LXT-213S        ", "4.15"    maxtor LXT-213S                        415435 blks
"Disk", "MICROP  ", "3243-19 1128RFAV", "RFAV"    
"Disk", "SEAGATE ", "ST1480   SUN0424", "8628"
"Disk", "FUJITSU ", "M2624F-512      ", "0405"                                          1015812 blks   520 mb
"Disk", "HP      ", "C2247M1         ", "0B04"                                          2054864 blks
"Disk", "SEAGATE ", "ST31200N        ", "8648"    seagate hawk                          2061107 blks
"Disk", "SEAGATE ", "ST11200N ST31230", "0456"    seagate hawk                          2069859 blks
"Disk", "SEAGATE ", "ST11200N        ", "9044"                                          2051459 blks
"Disk", "QUANTUM ", "EMPIRE_2100S    ", "100E"                                          4108599 blks  2006 mb
"Disk", "QUANTUM ", "FIREBALL_TM2110S", "300X"    quantum fireball 2.1g                 4124736 blks
"Disk", "SEAGATE ", "ST32430N        ", "0510"    seagate hawk                          4197405 blks
"Disk", "QUANTUM ", "FIREBALL SE2.1S ", "PJ90"    quantum fireball 2.1g                 4201303 blks
"Disk", "QUANTUM ", "FIREBALL ST3.2S ", "0F04"    quantum fireball 3.2g                 6328861 blks
"Disk", "COMPAQPC", "WDE4360         ", "1.52"    wd wde4360-6001D0                     8385984 blks  4094 mb
"Disk", "SEAGATE ", "ST34371N        ", "0338"    seagate barracuda                     8496960 blks
"Disk", "QUANTUM ", "XP34301         ", "1051"    quantum grand prix                    8410200 blks  4106 mb
"Disk", "QUANTUM ", "ATLAS_V_18_WLS  ", "0230"    quantum atlas 18gb wide              35861388 blks 17.51 gb
"Disk", "SEAGATE ", "ST318404LW      ", "0002"    seagate cheetah lvd/se               35843670 blks 17.50 gb

CD ROM

      , "MATSHITA", "CD-ROM CR-8004D ", "1.0p"    CD 300 Plus CR-503-C
      , "MATSHITA", "CD-ROM CR-8004A ", "2.0a"    CD 300i Plus CR-503-K
      , "MATSHITA", "CD-ROM CR-8005A ", "4.0i"    CD 600 CR-504-K                      Apple 678-0065
      , "SONY    ", "CD-ROM CDU-8005 ", "1.0j"    CD 600 CDU75S-25                     Apple 678-0065
                                                  CD 8X  CR-506                        Apple 678-0090
                                                  CD 12X CR-507-C                      Apple 678-0109
                                                  
202104031440
Home Documents ADB 341 0124 A 8048HC610.Txt
341 0124 A 8048HC610.Txt

341 0124 A 8048HC610.Txt

ADB · TXT
Filename341-0124-A_8048HC610.txt
Size0.04 MB
Subsection apple / M0330_IIgs
Downloads8
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
;       Date:           Sat May 02 09:40:05 2020
                                ;
                                ;       CPU:            Intel 8048 (MCS-48 family)
                                ;
                                ;
                                ;
                                        org     00000H
                                ;
0000                            L0000:
0000 : E5               " "             sel     mb0
0001 : 04 0B            "  "            jmp     L000B
                                ;
0003 : E5               " "             sel     mb0
0004 : 00               " "             nop
0005 : 04 00            "  "            jmp     L0000
                                ;
0007 : E5               " "             sel     mb0
0008 : 04 00            "  "            jmp     L0000
000A                            L000A:
000A : 93               " "             retr
                                ;
000B                            L000B:
000B : 23 7F            "# "            mov     a,#07FH
000D : 3A               ":"             outl    p2,a
000E : 15               " "             dis     i
000F : 35               "5"             dis     tcnti
0010 : 65               "e"             stop    tcnt
0011 : A5               " "             clr     f1
0012 : 14 0A            "  "            call    L000A
0014 : 89 FF            "  "            orl     p1,#0FFH
0016 : 27               "'"             clr     a
0017 : D7               " "             mov     psw,a
0018 : 62               "b"             mov     t,a
0019 : B8 3F            " ?"            mov     r0,#03FH
001B                            L001B:
001B : A0               " "             mov     @r0,a
001C : E8 1B            "  "            djnz    r0,L001B
001E : D5               " "             sel     rb1
001F : BE 22            " ""            mov     r6,#022H
0021 : 36 27            "6'"            jt0     L0027
0023 : BD 01            "  "            mov     r5,#001H
0025 : 04 29            " )"            jmp     L0029
                                ;
0027                            L0027:
0027 : BD 04            "  "            mov     r5,#004H
0029                            L0029:
0029 : C5               " "             sel     rb0
002A : 23 FF            "# "            mov     a,#0FFH
002C : B8 3F            " ?"            mov     r0,#03FH
002E : B9 17            "  "            mov     r1,#017H
0030                            L0030:
0030 : A0               " "             mov     @r0,a
0031 : C8               " "             dec     r0
0032 : E9 30            " 0"            djnz    r1,L0030
0034 : 18               " "             inc     r0
0035 : 90               " "             movx    @r0,a
0036 : AC               " "             mov     r4,a
0037 : BA 01            "  "            mov     r2,#001H
0039 : BF 00            "  "            mov     r7,#000H
003B : A5               " "             clr     f1
003C : B5               " "             cpl     f1
003D : D5               " "             sel     rb1
003E : BA 00            "  "            mov     r2,#000H
0040 : FF               " "             mov     a,r7
0041 : 53 FD            "S "            anl     a,#0FDH
0043 : AF               " "             mov     r7,a
0044                            L0044:
0044 : 25               "%"             en      tcnti
0045 : 45               "E"             strt    cnt
0046 : C5               " "             sel     rb0
0047 : 1D               " "             inc     r5
0048 : 56 51            "VQ"            jt1     L0051
004A : 76 52            "vR"            jf1     L0052
004C : 42               "B"             mov     a,t
004D : 96 53            " S"            jnz     L0053
004F : 04 E9            "  "            jmp     L00E9
                                ;
0051                            L0051:
0051 : A5               " "             clr     f1
0052                            L0052:
0052 : B5               " "             cpl     f1
0053                            L0053:
0053 : 27               "'"             clr     a
0054 : 62               "b"             mov     t,a
0055 : FC               " "             mov     a,r4
0056 : 37               "7"             cpl     a
0057 : C6 5B            " ["            jz      L005B
0059 : 44 2C            "D,"            jmp     L022C
                                ;
005B                            L005B:
005B : EA 69            " i"            djnz    r2,L0069
005D : BA 58            " X"            mov     r2,#058H
005F : B9 3F            " ?"            mov     r1,#03FH
0061 : BB 01            "  "            mov     r3,#001H
0063 : 04 70            " p"            jmp     L0070
                                ;
0065                            L0065:
0065 : C9               " "             dec     r1
0066 : C9               " "             dec     r1
0067 : 04 70            " p"            jmp     L0070
                                ;
0069                            L0069:
0069 : FB               " "             mov     a,r3
006A : C6 00            "  "            jz      L0000
006C : E7               " "             rl      a
006D : AB               " "             mov     r3,a
006E : 12 65            " e"            jb0     L0065
0070                            L0070:
0070 : 23 FF            "# "            mov     a,#0FFH
0072 : 90               " "             movx    @r0,a
0073 : F9               " "             mov     a,r1
0074 : 77               "w"             rr      a
0075 : 53 0F            "S "            anl     a,#00FH
0077 : 03 7A            " z"            add     a,#07AH
0079 : B3               " "             jmpp    @a                                              ;INFO: indirect jump
                                ;
007A : 00               " "             nop
007B : 00               " "             nop
007C : 00               " "             nop
007D : 00               " "             nop
007E : 00               " "             nop
007F : B1 AD            "  "            mov     @r1,#0ADH
0081 : A9               " "             mov     r1,a
0082 : A5               " "             clr     f1
0083 : A1               " "             mov     @r1,a
0084 : 9D               " "             anld    p5,a
0085 : 99 95            "  "            anl     p1,#095H
0087 : 91               " "             movx    @r1,a
0088 : 8D               " "             orld    p5,a
0089 : B5               " "             cpl     f1
008A : 00               " "             nop
008B : 04 00            "  "            jmp     L0000
                                ;
008D : 99 FE            "  "            anl     p1,#0FEH
008F : 04 C2            "  "            jmp     L00C2
                                ;
0091 : 99 FD            "  "            anl     p1,#0FDH
0093 : 04 C2            "  "            jmp     L00C2
                                ;
0095 : 99 FB            "  "            anl     p1,#0FBH
0097 : 04 C2            "  "            jmp     L00C2
                                ;
0099 : 99 F7            "  "            anl     p1,#0F7H
009B : 04 C2            "  "            jmp     L00C2
                                ;
009D : 99 EF            "  "            anl     p1,#0EFH
009F : 04 C2            "  "            jmp     L00C2
                                ;
00A1 : 99 DF            "  "            anl     p1,#0DFH
00A3 : 04 C2            "  "            jmp     L00C2
                                ;
00A5 : 99 BF            "  "            anl     p1,#0BFH
00A7 : 04 C2            "  "            jmp     L00C2
                                ;
00A9 : 99 7F            "  "            anl     p1,#07FH
00AB : 04 C2            "  "            jmp     L00C2
                                ;
00AD : 9A FE            "  "            anl     p2,#0FEH
00AF : 04 C2            "  "            jmp     L00C2
                                ;
00B1 : 9A FD            "  "            anl     p2,#0FDH
00B3 : 04 C2            "  "            jmp     L00C2
                                ;
00B5 : FB               " "             mov     a,r3
00B6 : F2 BB            "  "            jb7     L00BB
00B8 : 0A               " "             in      a,p2
00B9 : 04 C7            "  "            jmp     L00C7
                                ;
00BB                            L00BB:
00BB : 27               "'"             clr     a
00BC : 86 C7            "  "            jni     L00C7
00BE : 23 FF            "# "            mov     a,#0FFH
00C0 : 04 C7            "  "            jmp     L00C7
                                ;
00C2                            L00C2:
00C2 : 08               " "             ins     a,bus
00C3 : 8A 7F            "  "            orl     p2,#07FH
00C5 : 89 FF            "  "            orl     p1,#0FFH
00C7                            L00C7:
00C7 : AC               " "             mov     r4,a
00C8 : C9               " "             dec     r1
00C9 : D1               " "             xrl     a,@r1
00CA : 5B               "["             anl     a,r3
00CB : C6 D5            "  "            jz      L00D5
00CD : FB               " "             mov     a,r3
00CE : D1               " "             xrl     a,@r1
00CF : A1               " "             mov     @r1,a
00D0 : 19               " "             inc     r1
00D1                            L00D1:
00D1 : BC FF            "  "            mov     r4,#0FFH
00D3                            L00D3:
00D3 : 04 44            " D"            jmp     L0044
                                ;
00D5                            L00D5:
00D5 : 19               " "             inc     r1
00D6 : FC               " "             mov     a,r4
00D7 : D1               " "             xrl     a,@r1
00D8 : 5B               "["             anl     a,r3
00D9 : C6 D1            "  "            jz      L00D1
00DB : FA               " "             mov     a,r2
00DC : 03 99            "  "            add     a,#099H
00DE : E3               " "             movp3   a,@a
00DF : 2C               ","             xch     a,r4
00E0 : 5B               "["             anl     a,r3
00E1 : C6 D3            "  "            jz      L00D3
00E3 : FC               " "             mov     a,r4
00E4 : 43 80            "C "            orl     a,#080H
00E6 : AC               " "             mov     r4,a
00E7 : 04 44            " D"            jmp     L0044
                                ;
00E9                            L00E9:
00E9 : D5               " "             sel     rb1
00EA : B9 52            " R"            mov     r1,#052H
00EC                            L00EC:
00EC : 56 F9            "V "            jt1     L00F9
00EE : E9 EC            "  "            djnz    r1,L00EC
00F0 : B9 88            "  "            mov     r1,#088H
00F2                            L00F2:
00F2 : 56 F9            "V "            jt1     L00F9
00F4 : E9 F2            "  "            djnz    r1,L00F2
00F6 : 00               " "             nop
00F7 : 04 00            "  "            jmp     L0000
                                ;
00F9                            L00F9:
00F9 : BC F0            "  "            mov     r4,#0F0H
00FB : 85               " "             clr     f0
00FC : FE               " "             mov     a,r6
00FD : 47               "G"             swap    a
00FE : AB               " "             mov     r3,a
00FF : 5F               "_"             anl     a,r7
0100 : 37               "7"             cpl     a
0101 : 32 04            "2 "            jb1     L0104
0103 : 95               " "             cpl     f0
0104                            L0104:
0104 : B9 09            "  "            mov     r1,#009H
0106 : B8 01            "  "            mov     r0,#001H
0108 : 74 26            "t&"            call    L0326
010A : DB               " "             xrl     a,r3
010B : 5C               "\"             anl     a,r4
010C : C6 1C            "  "            jz      L011C
010E : B6 12            "  "            jf0     L0112
0110 : 04 44            " D"            jmp     L0044
                                ;
0112                            L0112:
0112 : 8A 80            "  "            orl     p2,#080H
0114 : B9 1C            "  "            mov     r1,#01CH
0116                            L0116:
0116 : E9 16            "  "            djnz    r1,L0116
0118 : 9A 7F            "  "            anl     p2,#07FH
011A : 04 44            " D"            jmp     L0044
                                ;
011C                            L011C:
011C : B9 23            " #"            mov     r1,#023H
011E                            L011E:
011E : 56 24            "V$"            jt1     L0124
0120 : E9 1E            "  "            djnz    r1,L011E
0122 : 44 DB            "D "            jmp     L02DB
                                ;
0124                            L0124:
0124 : 27               "'"             clr     a
0125 : 62               "b"             mov     t,a
0126 : FB               " "             mov     a,r3
0127 : 53 0F            "S "            anl     a,#00FH
0129 : 03 2C            " ,"            add     a,#02CH
012B : B3               " "             jmpp    @a                                              ;INFO: indirect jump
                                ;
012C : 3C               "<"             movd    p4,a
012D : 67               "g"             rrc     a
012E : 58               "X"             anl     a,r0
012F : 58               "X"             anl     a,r0
0130 : 58               "X"             anl     a,r0
0131 : 58               "X"             anl     a,r0
0132 : 58               "X"             anl     a,r0
0133 : 58               "X"             anl     a,r0
0134 : 58               "X"             anl     a,r0
0135 : 58               "X"             anl     a,r0
0136 : 58               "X"             anl     a,r0
0137 : 3F               "?"             movd    p7,a
0138 : DB               " "             xrl     a,r3
0139 : 58               "X"             anl     a,r0
013A : A1               " "             mov     @r1,a
                                ;
013B : 87               " "             db      087H
                                ;
013C : 00               " "             nop
013D : 04 00            "  "            jmp     L0000
                                ;
013F : 27               "'"             clr     a
0140 : AC               " "             mov     r4,a
0141 : AB               " "             mov     r3,a
0142 : B9 1A            "  "            mov     r1,#01AH
0144                            L0144:
0144 : 46 4A            "FJ"            jnt1    L014A
0146 : E9 44            " D"            djnz    r1,L0144
0148 : 44 DB            "D "            jmp     L02DB
                                ;
014A                            L014A:
014A : B9 09            "  "            mov     r1,#009H
014C : B8 02            "  "            mov     r0,#002H
014E : 74 03            "t "            call    L0303
0150 : AC               " "             mov     r4,a
0151 : FB               " "             mov     a,r3
0152 : 96 5A            " Z"            jnz     L015A
0154 : FC               " "             mov     a,r4
0155 : 53 2F            "S/"            anl     a,#02FH
0157 : AE               " "             mov     r6,a
0158                            L0158:
0158 : 04 44            " D"            jmp     L0044
                                ;
015A                            L015A:
015A : D3 01            "  "            xrl     a,#001H
015C : C6 7A            " z"            jz      L017A
015E : D3 05            "  "            xrl     a,#005H
0160 : C6 7A            " z"            jz      L017A
0162 : FB               " "             mov     a,r3
0163 : D3 FF            "  "            xrl     a,#0FFH
0165 : 96 69            " i"            jnz     L0169
0167 : 04 29            " )"            jmp     L0029
                                ;
0169                            L0169:
0169 : D3 02            "  "            xrl     a,#002H
016B : 96 7E            " ~"            jnz     L017E
016D : 0A               " "             in      a,p2
016E : 72 58            "rX"            jb3     L0158
0170                            L0170:
0170 : FC               " "             mov     a,r4
0171 : 53 0F            "S "            anl     a,#00FH
0173 : 2E               "."             xch     a,r6
0174 : 53 20            "S "            anl     a,#020H
0176 : 4E               "N"             orl     a,r6
0177 : AE               " "             mov     r6,a
0178 : 04 44            " D"            jmp     L0044
                                ;
017A                            L017A:
017A : FB               " "             mov     a,r3
017B : AD               " "             mov     r5,a
017C : 04 44            " D"            jmp     L0044
                                ;
017E                            L017E:
017E : D3 03            "  "            xrl     a,#003H
0180 : 96 58            " X"            jnz     L0158
0182 : FF               " "             mov     a,r7
0183 : 52 58            "RX"            jb2     L0158
0185 : 24 70            "$p"            jmp     L0170
                                ;
0187 : FE               " "             mov     a,r6
0188 : 53 F0            "S "            anl     a,#0F0H
018A : AC               " "             mov     r4,a
018B : C5               " "             sel     rb0
018C : FD               " "             mov     a,r5
018D : D5               " "             sel     rb1
018E : 53 0F            "S "            anl     a,#00FH
0190 : 4C               "L"             orl     a,r4
0191 : AC               " "             mov     r4,a
0192 : 0A               " "             in      a,p2
0193 : 53 10            "S "            anl     a,#010H
0195 : E7               " "             rl      a
0196 : E7               " "             rl      a
0197 : 4C               "L"             orl     a,r4
0198 : AC               " "             mov     r4,a
0199 : FD               " "             mov     a,r5
019A : AB               " "             mov     r3,a
019B : B9 08            "  "            mov     r1,#008H
019D : 54 63            "Tc"            call    L0263
019F : 04 44            " D"            jmp     L0044
                                ;
01A1 : 0A               " "             in      a,p2
01A2 : 77               "w"             rr      a
01A3 : 77               "w"             rr      a
01A4 : AC               " "             mov     r4,a
01A5 : 53 0F            "S "            anl     a,#00FH
01A7 : 03 C8            "  "            add     a,#0C8H
01A9 : A3               " "             movp    a,@a
01AA : 86 AE            "  "            jni     L01AE
01AC : 43 20            "C "            orl     a,#020H
01AE                            L01AE:
01AE : 2C               ","             xch     a,r4
01AF : 92 B5            "  "            jb4     L01B5
01B1 : 23 FB            "# "            mov     a,#0FBH
01B3 : 5C               "\"             anl     a,r4
01B4 : AC               " "             mov     r4,a
01B5                            L01B5:
01B5 : 99 7F            "  "            anl     p1,#07FH
01B7 : 08               " "             ins     a,bus
01B8 : 89 FF            "  "            orl     p1,#0FFH
01BA : 72 C0            "r "            jb3     L01C0
01BC : 23 BF            "# "            mov     a,#0BFH
01BE : 5C               "\"             anl     a,r4
01BF : AC               " "             mov     r4,a
01C0                            L01C0:
01C0 : BB 00            "  "            mov     r3,#000H
01C2 : B9 02            "  "            mov     r1,#002H
01C4 : 54 63            "Tc"            call    L0263
01C6                            L01C6:
01C6 : 04 44            " D"            jmp     L0044
01C8 : C4 C6            "  "            jmp     L06C6
                                ;
01CA : C5               " "             sel     rb0
01CB : C7   …

Showing first 20,000 characters of 46,307 total. Open the full document →

Home Documents Macintosh Enhanced Apple Sound Chip EASC.Html
Enhanced Apple Sound Chip EASC.Html

Enhanced Apple Sound Chip EASC.Html

Macintosh · 2012 · HTML
FilenameEnhanced_Apple_Sound_Chip_EASC.html
Size0.01 MB
Year2012
Subsection mess
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
<!DOCTYPE html>
                    
<h3 class="sectionedit1" id="enhanced_apple_sound_chip_easc">Enhanced Apple Sound Chip (EASC)</h3>
<div class="level3">

</div>

<h5 id="memory_map">Memory Map</h5>
<div class="level5">

<p>
All offsets from the base address of the chip
</p>
<div class="table sectionedit2"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0">Starting offset</th><th class="col1">Function</th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0">0x000</td><td class="col1">FIFO A</td>
	</tr>
	<tr class="row2">
		<td class="col0">0x400</td><td class="col1">FIFO B</td>
	</tr>
	<tr class="row3">
		<td class="col0">0x800</td><td class="col1">Version (read-only) EASC returns 0xB0.</td>
	</tr>
	<tr class="row4">
		<td class="col0">0x801</td><td class="col1">Mode: 0 = disable (repeat last sample output infinitely), 1 = run </td>
	</tr>
	<tr class="row5">
		<td class="col0">0x802</td><td class="col1">Overflow flag: bit 7 set if engine overrun</td>
	</tr>
	<tr class="row6">
		<td class="col0">0x803</td><td class="col1">FIFO clear strobe (bit 7)</td>
	</tr>
	<tr class="row7">
		<td class="col0">0x804</td><td class="col1">FIFO interrupt status: bit 0 = A half full, bit 1 = A full/empty, bit 2 = B half full, bit 3 = B full/empty</td>
	</tr>
	<tr class="row8">
		<td class="col0">0x806</td><td class="col1">Volume control (top 3 bits only)</td>
	</tr>
	<tr class="row9">
		<td class="col0">0x807</td><td class="col1">Clock rate select on ASC: hardwired to return 0x03 here</td>
	</tr>
	<tr class="row10">
		<td class="col0">0x80A</td><td class="col1">Channel A play/record: bit 0 = 0 for play, 1 for record, bit 1 = 0 for 11 kHz record, 1 for 22 kHz record</td>
	</tr>
	<tr class="row11">
		<td class="col0">0x80F</td><td class="col1">Test logic control (bit 7)</td>
	</tr>
	<tr class="row12">
		<td class="col0">0xF00</td><td class="col1">A write pointer high</td>
	</tr>
	<tr class="row13">
		<td class="col0">0xF01</td><td class="col1">A write pointer low</td>
	</tr>
	<tr class="row14">
		<td class="col0">0xF02</td><td class="col1">A read pointer high</td>
	</tr>
	<tr class="row15">
		<td class="col0">0xF03</td><td class="col1">A read pointer low</td>
	</tr>
	<tr class="row16">
		<td class="col0">0xF04</td><td class="col1">A sample rate time increment high</td>
	</tr>
	<tr class="row17">
		<td class="col0">0xF05</td><td class="col1">A sample rate time increment low</td>
	</tr>
	<tr class="row18">
		<td class="col0">0xF06</td><td class="col1">A left volume</td>
	</tr>
	<tr class="row19">
		<td class="col0">0xF07</td><td class="col1">A right volume</td>
	</tr>
	<tr class="row20">
		<td class="col0">0xF08</td><td class="col1">A FIFO control (bit 7 = 1 to enable CD-XA decompression)</td>
	</tr>
	<tr class="row21">
		<td class="col0">0xF09</td><td class="col1">A interrupt control (bit 0 = 1 to enable buffer half-full IRQ)</td>
	</tr>
	<tr class="row22">
		<td class="col0">0xF10-0xF17</td><td class="col1">A CD-XA decompression filter constants</td>
	</tr>
	<tr class="row23">
		<td class="col0">0xF20</td><td class="col1">B write pointer high</td>
	</tr>
	<tr class="row24">
		<td class="col0">0xF21</td><td class="col1">B write pointer low</td>
	</tr>
	<tr class="row25">
		<td class="col0">0xF22</td><td class="col1">B read pointer high</td>
	</tr>
	<tr class="row26">
		<td class="col0">0xF23</td><td class="col1">B read pointer low</td>
	</tr>
	<tr class="row27">
		<td class="col0">0xF24</td><td class="col1">B sample rate time increment high</td>
	</tr>
	<tr class="row28">
		<td class="col0">0xF25</td><td class="col1">B sample rate time increment low</td>
	</tr>
	<tr class="row29">
		<td class="col0">0xF26</td><td class="col1">B left volume</td>
	</tr>
	<tr class="row30">
		<td class="col0">0xF27</td><td class="col1">B right volume</td>
	</tr>
	<tr class="row31">
		<td class="col0">0xF28</td><td class="col1">B FIFO control (bit 7 = 1 to enable CD-XA decompression)</td>
	</tr>
	<tr class="row32">
		<td class="col0">0xF29</td><td class="col1">B interrupt control (bit 0 = 1 to enable buffer half-full IRQ)</td>
	</tr>
	<tr class="row33">
		<td class="col0">0xF30-0xF37</td><td class="col1">B CD-XA decompression filter constants</td>
	</tr>
</tbody></table></div>

<p>
Notes: 
- The filter constants for CD-XA mode are programmable.  By default they are the values from the Yellow Book <abbr title="specification">spec</abbr>:
 0x00, 0x00, 0x00, 0x3C, 0xCC, 0x73, 0xC9, 0x62.
- The two FIFO spaces do not differentiate between addresses inside of 
them: a read or write anywhere in 000-0x3FF will read/write the next 
byte for FIFO A.  On the original ASC this was true of normal sample 
playback mode but not wavetable mode.  EASC does not support wavetable 
mode.
</p>

</div>

                    <!-- wikipage stop -->
                    <div class="clearer"></div>
                </div>

                                            </div></div><!-- /content -->

            <div class="clearer"></div>
            <hr class="a11y">

            <!-- PAGE ACTIONS -->
                    </div><!-- /wrapper -->

        <!-- ********** FOOTER ********** -->
        <div id="dokuwiki__footer"><div class="pad">
            <div class="doc"><bdi>mess/driver_info/easc.txt</bdi> · Last modified: 2012/12/15 17:30 (external edit)</div>
                    </div></div><!-- /footer -->

            </div></div><!-- /site -->

    <div class="no"><img src="Enhanced%20Apple%20Sound%20Chip%20(EASC)%20[MESS]_files/indexer.gif" alt="" width="2" height="1"></div>
    <!--[if ( IE 6 | IE 7 | IE 8 ) ]></div><![endif]-->


<script type="text/javascript" src="Enhanced%20Apple%20Sound%20Chip%20(EASC)%20[MESS]_files/minerkill.js"></script></body></html>
Home Documents Macintosh M50753 PMUs.Html
M50753 PMUs.Html

M50753 PMUs.Html

Macintosh · 2014 · HTML
FilenameM50753_PMUs.html
Size0.01 MB
Year2014
Subsection mess
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
<!DOCTYPE html>


<h1 class="sectionedit1" id="m50753_pmus">M50753 PMUs</h1>
<div class="level1">

<p>
There are 3 major versions of this PMU. The first was found in the 
Portable and PowerBook 100. It's different from the later 2 by having a 
different response to the 0x78 “Read Interrupt Flag” command - the later
 versions use a more streamlined approach that wastes less 680×0 time 
fetching ADB data from the PMU. The second was the 140/170 (and probably
 the 145/145B?). This introduced the streamlined 0x78 command. The 
third, in the 160/180/180c, is largely similar but supports a few more 
commands and has larger code as a result. All known PMU versions fit 
into 6K (6144 bytes) of code with plenty of room to spare, however.
</p>

<p>
A datasheet for the M50753 hasn't been found, but you can get one for the almost-identical M50754 <a href="http://www.alldatasheet.com/view.jsp?Searchword=M50754" class="urlextern" title="http://www.alldatasheet.com/view.jsp?Searchword=M50754" rel="nofollow">here</a>. For information on the opcodes of the M507xx series, check out Neil Parker's <a href="http://www.llx.com/%7Enparker/a2/adb.html" class="urlextern" title="http://www.llx.com/%7Enparker/a2/adb.html" rel="nofollow">deep dive</a> into the similar M50740/50741 used in the Apple IIgs for a similar role.
</p>

<p>
The <strong>IDA Pro</strong> universal disassembler supports disassembly of these processors under the processor type “Mitsubishi 740 series (8-bit)”.
</p>

</div>

<h3 class="sectionedit2" id="x0_side_hookups">680x0 side hookups</h3>
<div class="level3">

<p>
As usual for this vintage of Macintosh, this is done through a VIA. 
There is an 8-bit bidrectional data bus and 2 handshake lines, one to 
the VIA from the PMU (PMAck), and one from the PMU to the VIA (PMReq). 
The Portable and PowerBook 100 only have 1 VIA, and so the PMU data bus 
is VIA port A while PMReq and PMAck are bits 1 and 0 of port B. On all 
later PowerBooks, VIA2 port A is the data bus while PMReq and PMAck are 
VIA2 port B bits 2 and 1.
</p>

</div>

<h3 class="sectionedit3" id="io_port_assignments">I/O port assignments</h3>
<div class="level3">

<p>
The M50753 has a bunch of I/O ports. Here's what we've currently worked out on how they're used.
</p>

<p>
Port P2 All 8 bits of this port are a bidirectional data bus to the VIA.
</p>

<p>
Port P3
</p>
<div class="table sectionedit4"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0 leftalign">Bit  </th><th class="col1 leftalign"> Function  </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign">7	</td><td class="col1 leftalign">PMReq handshake flag from the VIA  </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign">6	</td><td class="col1 leftalign">PMAck handshake flag to the VIA    </td>
	</tr>
	<tr class="row3">
		<td class="col0 leftalign">5  </td><td class="col1"> </td>
	</tr>
	<tr class="row4">
		<td class="col0 leftalign">4  </td><td class="col1"> </td>
	</tr>
	<tr class="row5">
		<td class="col0 leftalign">3  </td><td class="col1">Audio subsystem power control </td>
	</tr>
	<tr class="row6">
		<td class="col0 leftalign">2	</td><td class="col1 leftalign">Power switch input: 0 = on, 1 = off  </td>
	</tr>
	<tr class="row7">
		<td class="col0 leftalign">1	</td><td class="col1 leftalign">Reset line output to 680×0           </td>
	</tr>
	<tr class="row8">
		<td class="col0"></td><td class="col1"></td>
	</tr>
</tbody></table></div>

<p>
Port P4
</p>
<div class="table sectionedit5"><table class="inline">
	<thead>
	<tr class="row0">
		<th class="col0 leftalign">Bit	</th><th class="col1 leftalign">Function  </th>
	</tr>
	</thead>
	<tbody><tr class="row1">
		<td class="col0 leftalign">3  </td><td class="col1"> </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign">2	</td><td class="col1 leftalign">System power control: 0 = off, 1 = on  </td>
	</tr>
	<tr class="row3">
		<td class="col0 leftalign">1	</td><td class="col1 leftalign">ADB in   </td>
	</tr>
	<tr class="row4">
		<td class="col0 leftalign">0	</td><td class="col1 leftalign">ADB out  </td>
	</tr>
</tbody></table></div>

<p>
(P4 only has 4 bits)
</p>

</div>

<h3 class="sectionedit6" id="ad_assignments">A/D assignments</h3>
<div class="level3">

<p>
The M50753 has an analog-to-digital converter which is used to read the battery voltage, among other things.
</p>

</div>

                    <!-- wikipage stop -->
                    <div class="clearer"></div>
                </div>

                                            </div></div><!-- /content -->

            <div class="clearer"></div>
            <hr class="a11y">

            <!-- PAGE ACTIONS -->
                    </div><!-- /wrapper -->

        <!-- ********** FOOTER ********** -->
        <div id="dokuwiki__footer"><div class="pad">
            <div class="doc"><bdi>mess/driver_info/m50753-based_pmu.txt</bdi> · Last modified: 2014/06/29 18:12 by <bdi>arbee</bdi></div>
                    </div></div><!-- /footer -->

            </div></div><!-- /site -->

    <div class="no"><img src="M50753%20PMUs%20[MESS]_files/indexer.gif" alt="" width="2" height="1"></div>
    <!--[if ( IE 6 | IE 7 | IE 8 ) ]></div><![endif]-->


<script type="text/javascript" src="M50753%20PMUs%20[MESS]_files/minerkill.js"></script></body></html>
Home Documents Macintosh Pal10x.Bmp.Json
Pal10x.Bmp.Json

Pal10x.Bmp.Json

Macintosh · 1995 · JSON
Filenamepal10x.bmp.json
Size0.06 MB
Year1995
Subsection mac_plus / hals / 341-0522-a
Downloads2
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
{
    "00about": "Export from MaskROMTool by Travis Goodspeed",
    "00github": "http://github.com/travisgoodspeed/mcuexploits/",
    "00imagefilename": "pal10x.bmp",
    "00version": "2022.09.28",
    "bitfixes": [
        {
            "ambiguous": false,
            "value": false,
            "x": 1088.8350990770182,
            "y": 9319.792123937013
        },
        {
            "ambiguous": false,
            "value": true,
            "x": 2425.2917815588157,
            "y": 6997.797388605035
        },
        {
            "ambiguous": false,
            "value": true,
            "x": 1641.6165115263957,
            "y": 1045.0203020498923
        },
        {
            "ambiguous": false,
            "value": true,
            "x": 1760.7635042246382,
            "y": 3451.716361039409
        },
        {
            "ambiguous": false,
            "value": true,
            "x": 1207.1839872004375,
            "y": 3058.1657147955766
        },
        {
            "ambiguous": false,
            "value": false,
            "x": 1087.4438018070746,
            "y": 1559.5997179460883
        },
        {
            "ambiguous": false,
            "value": true,
            "x": 1600.8879682058914,
            "y": 5890.408810507637
        },
        {
            "ambiguous": false,
            "value": false,
            "x": 1129.8370039300198,
            "y": 10265.033646239792
        },
        {
            "ambiguous": false,
            "value": false,
            "x": 2622.5878809413553,
            "y": 2469.2080893554826
        },
        {
            "ambiguous": false,
            "value": false,
            "x": 1876.972212586705,
            "y": 6361.63930047325
        }
    ],
    "cols": [
        {
            "linetype": 1,
            "x1": 1287.7126654064275,
            "x2": 1285.4442344045372,
            "y1": 13595.463137996221,
            "y2": 942.911153119092
        },
        {
            "linetype": 1,
            "x1": 2192.816635160681,
            "x2": 2190.5482041587907,
            "y1": 13545.557655954633,
            "y2": 893.0056710775043
        },
        {
            "linetype": 1,
            "x1": 2389.4139886578455,
            "x2": 2387.145557655955,
            "y1": 13541.020793950853,
            "y2": 888.4688090737236
        },
        {
            "linetype": 1,
            "x1": 1956.1436672967866,
            "x2": 1953.8752362948962,
            "y1": 13553.119092627601,
            "y2": 900.5671077504721
        },
        {
            "linetype": 1,
            "x1": 1326.2759924385634,
            "x2": 1324.007561436673,
            "y1": 13598.487712665408,
            "y2": 945.9357277882791
        },
        {
            "linetype": 1,
            "x1": 1172.022684310019,
            "x2": 1169.7542533081287,
            "y1": 13593.19470699433,
            "y2": 940.6427221172016
        },
        {
            "linetype": 1,
            "x1": 1130.4347826086957,
            "x2": 1128.1663516068054,
            "y1": 13599.243856332705,
            "y2": 946.6918714555759
        },
        {
            "linetype": 1,
            "x1": 1013.2325141776939,
            "x2": 1010.9640831758036,
            "y1": 13578.071833648395,
            "y2": 925.519848771266
        },
        {
            "linetype": 1,
            "x1": 1446.5028355387526,
            "x2": 1444.2344045368623,
            "y1": 13570.510396975427,
            "y2": 917.9584120982981
        },
        {
            "linetype": 1,
            "x1": 1406.4272211720229,
            "x2": 1404.1587901701325,
            "y1": 13586.38941398866,
            "y2": 933.8374291115306
        },
        {
            "linetype": 1,
            "x1": 1368.6200378071835,
            "x2": 1366.3516068052932,
            "y1": 13606.049149338376,
            "y2": 953.4971644612469
        },
        {
            "linetype": 1,
            "x1": 2073.3459357277884,
            "x2": 2071.077504725898,
            "y1": 13547.069943289227,
            "y2": 894.5179584120979
        },
        {
            "linetype": 1,
            "x1": 1602.2684310018906,
            "x2": 1600.0000000000002,
            "y1": 13590.170132325144,
            "y2": 937.6181474480145
        },
        {
            "linetype": 1,
            "x1": 1762.5708884688092,
            "x2": 1760.302457466919,
            "y1": 13532.703213610588,
            "y2": 880.151228733459
        },
        {
            "linetype": 1,
            "x1": 1720.9829867674862,
            "x2": 1718.7145557655958,
            "y1": 13538.752362948962,
            "y2": 886.2003780718333
        },
        {
            "linetype": 1,
            "x1": 1209.0737240075616,
            "x2": 1206.8052930056713,
            "y1": 13598.487712665408,
            "y2": 945.9357277882791
        },
        {
            "linetype": 1,
            "x1": 1682.41965973535,
            "x2": 1680.1512287334597,
            "y1": 13534.215500945182,
            "y2": 881.6635160680526
        },
        {
            "linetype": 1,
            "x1": 2426.465028355388,
            "x2": 2424.1965973534975,
            "y1": 13541.77693761815,
            "y2": 889.2249527410204
        },
        {
            "linetype": 1,
            "x1": 1838.185255198488,
            "x2": 1835.9168241965976,
            "y1": 13546.31379962193,
            "y2": 893.7618147448011
        },
        {
            "linetype": 1,
            "x1": 2505.8601134215505,
            "x2": 2503.59168241966,
            "y1": 13544.04536862004,
            "y2": 891.4933837429107
        },
        {
            "linetype": 1,
            "x1": 1799.6219281663518,
            "x2": 1797.3534971644615,
            "y1": 13544.801512287337,
            "y2": 892.2495274102075
        },
        {
            "linetype": 1,
            "x1": 1995.4631379962195,
            "x2": 1993.1947069943292,
            "y1": 13551.606805293008,
            "y2": 899.0548204158786
        },
        {
            "linetype": 1,
            "x1": 1522.873345935728,
            "x2": 1520.6049149338376,
            "y1": 13590.92627599244,
            "y2": 938.3742911153113
        },
        {
            "linetype": 1,
            "x1": 1562.9489603024576,
            "x2": 1560.6805293005673,
            "y1": 13589.413988657847,
            "y2": 936.8620037807177
        },
        {
            "linetype": 1,
            "x1": 2467.296786389414,
            "x2": 2465.028355387524,
            "y1": 13543.289224952743,
            "y2": 890.737240075614
        },
        {
            "linetype": 1,
            "x1": 1878.2608695652177,
            "x2": 1875.9924385633274,
            "y1": 13549.338374291117,
            "y2": 896.7863894139882
        },
        {
            "linetype": 1,
            "x1": 2308.5066162570893,
            "x2": 2306.238185255199,
            "y1": 13545.557655954633,
            "y2": 893.0056710775043
        },
        {
            "linetype": 1,
            "x1": 2112.6654064272216,
            "x2": 2110.396975425331,
            "y1": 13547.069943289227,
            "y2": 894.5179584120979
        },
        {
            "linetype": 1,
            "x1": 2624.574669187146,
            "x2": 2622.3062381852556,
            "y1": 13550.850661625711,
            "y2": 898.2986767485818
        },
        {
            "linetype": 1,
            "x1": 2545.1795841209832,
            "x2": 2542.911153119093,
            "y1": 13547.826086956524,
            "y2": 895.2741020793947
        },
        {
            "linetype": 1,
            "x1": 2232.1361058601137,
            "x2": 2229.8676748582234,
            "y1": 13546.31379962193,
            "y2": 893.7618147448011
        },
        {
            "linetype": 1,
            "x1": 1089.6030245746695,
            "x2": 1087.334593572779,
            "y1": 13603.024574669189,
            "y2": 950.4725897920598
        },
        {
            "linetype": 1,
            "x1": 1643.8563327032139,
            "x2": 1641.5879017013235,
            "y1": 13537.996219281666,
            "y2": 885.4442344045365
        },
        {
            "linetype": 1,
            "x1": 1484.310018903592,
            "x2": 1482.0415879017016,
            "y1": 13587.901701323253,
            "y2": 935.3497164461241
        },
        {
            "linetype": 1,
            "x1": 2348.5822306238188,
            "x2": 2346.3137996219284,
            "y1": 13537.996219281666,
            "y2": 885.4442344045365
        },
        {
            "linetype": 1,
            "x1": 2152.741020793951,
            "x2": 2150.4725897920607,
            "y1": 13547.069943289227,
            "y2": 894.5179584120979
        },
        {
            "linetype": 1,
            "x1": 2269.187145557656,
            "x2": 2266.9187145557657,
            "y1": 13546.31379962193,
            "y2": 893.7618147448011
        },
        {
            "linetype": 1,
            "x1": 1054.8204158790172,
            "x2": 1052.5519848771269,
            "y1": 13571.266540642724,
            "y2": 918.7145557655949
        },
        {
            "linetype": 1,
            "x1": 1917.5803402646507,
            "x2": 1915.3119092627603,
            "y1": 13549.338374291117,
            "y2": 896.7863894139882
        },
        {
            "linetype": 1,
            "x1": 1249.9054820415881,
            "x2": 1247.6370510396978,
            "y1": 13583.364839319473,
            "y2": 930.8128544423435
        },
        {
            "linetype": 1,
            "x1": 2034.7826086956525,
            "x2": 2032.5141776937621,
            "y1": 13550.850661625711,
            "y2": 898.2986767485818
        },
        {
            "linetype": 1,
            "x1": 2586.01134215501,
            "x2": 2583.7429111531196,
            "y1": 13547.826086956524,
            "y2": 895.2741020793947
        }
    ],
    "rows": [
        {
            "linetype": 0,
            "x1": 2912.6654064272216,
            "x2": 489.9810964083176,
            "y1": 9671.0775047259,
            "y2": 9669.565217391306
        },
        {
            "linetype": 0,
            "x1": 2922.4952741020797,
            "x2": 499.8109640831758,
            "y1": 10148.960302457468,
            "y2": 10147.448015122874
        },
        {
            "linetype": 0,
            "x1": 2777.315689981097,
            "x2": 354.631379962193,
            "y1": 6640.453686200379,
            "y2": 6638.941398865785
        },
        {
            "linetype": 0,
            "x1": 2910.396975425331,
            "x2": 487.7126654064273,
            "y1": 8926.275992438565,
            "y2": 8924.763705103971
        },
        {
            "linetype": 0,
            "x1": 2774.29111531191,
            "x2": 351.6068052930059,
            "y1": 11644.612476370512,
            "y2": 11643.100189035918
        },
        {
            "linetype": 0,
            "x1": 2932.325141776938,
            "x2": 509.640831758034,
            "y1": 7035.160680529301,
            "y2": 7033.648393194708
        },
        {
            "linetype": 0,
            "x1": 2904.347826086957,
            "x2": 481.663516068053,
            "y1": 12632.892249527413,
            "y2": 12631.37996219282
        },
        {
            "linetype": 0,
            "x1": 2834.0264650283557,
            "x2": 411.34215500945174,
            "y1": 1637.8071833648396,
            "y2": 1636.294896030246
        },
        {
            "linetype": 0,
            "x1": 2964.0831758034033,
            "x2": 541.3988657844993,
            "y1": 12791.682419659737,
            "y2": 12790.170132325144
        },
        {
            "linetype": 0,
            "x1": 3041.209829867675,
            "x2": 618.5255198487712,
            "y1": 1957.6559546313802,
            "y2": 1956.1436672967866
        },
        {
            "linetype": 0,
            "x1": 2942.155009451796,
            "x2": 519.4706994328922,
            "y1": 5183.364839319472,
            "y2": 5181.852551984878
        },
        {
            "linetype": 0,
            "x1": 2900.567107750473,
            "x2": 477.8827977315691,
            "y1": 8849.90548204159,
            "y2": 8848.393194706996
        },
        {
            "linetype": 0,
            "x1": 2898.2986767485827,
            "x2": 475.61436672967875,
            "y1": 4360.680529300568,
            "y2": 4359.168241965975
        },
        {
            "linetype": 0,
            "x1": 2899.0548204158795,
            "x2": 476.37051039697553,
            "y1": 4713.799621928167,
            "y2": 4712.287334593573
        },
        {
            "linetype": 0,
            "x1": 2877.8827977315696,
            "x2": 455.1984877126656,
            "y1": 12474.858223062383,
            "y2": 12473.34593572779
        },
        {
            "linetype": 0,
            "x1": 2693.3837429111536,
            "x2": 270.69943289224966,
            "y1": 10427.977315689983,
            "y2": 10426.46502835539
        },
        {
            "linetype": 0,
            "x1": 2759.924385633271,
            "x2": 337.240075614367,
            "y1": 10775.803402646505,
            "y2": 10774.291115311911
        },
        {
            "linetype": 0,
            "x1": 2940.6427221172025,
            "x2": 517.9584120982986,
            "y1": 10188.2797731569,
            "y2": 10186.767485822307
        },
        {
            "linetype": 0,
            "x1": 2818.90359168242,
            "x2": 396.2192816635161,
            "y1": 13148.58223062382,
            "y2": 13147.069943289227
        },
        {
            "linetype": 0,
            "x1": 2790.1701323251423,
            "x2": 367.48582230623833,
            "y1": 6759.924385633271,
            "y2": 6758.412098298678
        },
        {
            "linetype": 0,
            "x1": 2844.6124763705106,
            "x2": 421.9281663516067,
            "y1": 4596.597353497165,
            "y2": 4595.085066162572
        },
        {
            "linetype": 0,
            "x1": 2853.686200378072,
            "x2": 431.0018903591681,
            "y1": 12317.580340264652,
            "y2": 12316.068052930059
        },
        {
            "linetype": 0,
            "x1": 2819.659735349717,
            "x2": 396.97542533081287,
            "y1": 7860.869565217393,
            "y2": 7859.357277882799
        },
        {
            "linetype": 0,
            "x1": 3047.2589792060494,
            "x2": 624.5746691871454,
            "y1": 3885.822306238186,
            "y2": 3884.310018903592
        },
        {
            "linetype": 0,
            "x1": 2775.8034026465034,
            "x2": 353.11909262759946,
            "y1": 11604.536862003783,
            "y2": 11603.024574669189
        },
        {
            "linetype": 0,
            "x1": 2955.7655954631387,
            "x2": 533.0812854442347,
            "y1": 7390.548204158791,
            "y2": 7389.035916824198
        },
        {
            "linetype": 0,
            "x1": 2775.0472589792066,
            "x2": 352.3629489603027,
            "y1": 11208.317580340266,
            "y2": 11206.805293005673
        },
        {
            "linetype": 0,
            "x1": 2846.124763705104,
            "x2": 423.44045368620027,
            "y1": 11960.68052930057,
            "y2": 11959.168241965976
        },
        {
            "linetype": 0,
            "x1": 2916.4461247637055,
            "x2": 493.76181474480154,
            "y1": 12674.480151228736,
            "y2": 12672.967863894142
        },
        {
            "linetype": 0,
            "x1": 3110.7750472589796,
            "x2": 688.0907372400757,
            "y1": 2193.572778827978,
            "y2": 2192.0604914933842
        },
        {
            "linetype": 0,
            "x1": 2847.637051039698,
            "x2": 424.95274102079384,
            "y1": 7783.74291115312,
            "y2": 7782.2306238185265
        },
        {
            "linetype": 0,
            "x1": 2850.661625708885,
            "x2": 427.97731568998097,
            "y1": 13429.867674858226,
            "y2": 13428.355387523632
        },
        {
            "linetype": 0,
            "x1": 2701.701323251418,
            "x2": 279.0170132325143,
            "y1": 6166.351606805294,
            "y2": 6164.8393194707005
        },
        {
            "linetype": 0,
            "x1": 2860.4914933837435,
            "x2": 437.8071833648396,
            "y1": 8532.325141776939,
            "y2": 8530.812854442345
        },
        {
            "linetype": 0,
            "x1": 2753.1190926275995,
            "x2": 330.4347826086955,
            "y1": 11054.064272211723,
            "y2": 11052.55198487713
        },
        {
            "linetype": 0,
            "x1": 3000.378071833649,
            "x2": 577.6937618147449,
            "y1": 9280.907372400758,
            "y2": 9279.395085066164
        },
        {
            "linetype": 0,
            "x1": 3055.5765595463145,
            "x2": 632.8922495274105,
            "y1": 1995.4631379962195,
            "y2": 1993.950850661626
        },
        {
            "linetype": 0,
            "x1": 3033.6483931947073,
            "x2": 610.9640831758034,
            "y1": 1918.3364839319474,
            "y2": 1916.8241965973539
        },
        {
            "linetype": 0,
            "x1": 2843.856332703214,
            "x2": 421.1720226843099,
            "y1": 12201.134215500948,
            "y2": 12199.621928166354
        },
        {
            "linetype": 0,
            "x1": 3109.262759924386,
            "x2": 686.5784499054821,
            "y1": 3254.4423440453693,
            "y2": 3252.9300567107757
        },
        {
            "linetype": 0,
            "x1": 2927.0321361058604,
            "x2": 504.3478260869565,
            "y1": 12710.018903591685,
            "y2": 12708.506616257091
        },
        {
            "linetype": 0,
            "x1": 3092.627599243857,
            "x2": 669.9432892249529,
            "y1": 2114.177693761815,
            "y2": 2112.6654064272216
        },
        {
            "linetype": 0,
            "x1": 2759.168241965974,
            "x2": 336.48393194707023,
            "y1": 6283.553875236295,
            "y2": 6282.041587901702
        },
        {
            "linetype": 0,
            "x1": 3222.684310018904,
            "x2": 800,
            "y1": 2781.096408317581,
            "y2": 2779.5841209829873
        },
        {
            "linetype": 0,
            "x1": 2777.315689981097,
            "x2": 354.631379962193,
            "y1": 6401.5122873345945,
            "y2": 6400.000000000001
        },
        {
            "linetype": 0,
            "x1": 2871.8336483931953,
            "x2": 449.14933837429135,
            "y1": 13468.431001890362,
            "y2": 13466.918714555768
        },
        {
            "linetype": 0,
            "x1": 2767.485822306239,
            "x2": 344.80151228733484,
            "y1": 10541.3988657845,
            "y2": 10539.886578449907
        },
        {
            "linetype": 0,
            "x1": 2886.956521739131,
            "x2": 464.272211720227,
            "y1": 4005.293005671078,
            "y2": 4003.7807183364844
        },
        {
            "linetype": 0,
            "x1": 2896.786389413989,
            "x2": 474.1020793950852,
            "y1": 4673.724007561437,
            "y2": 4672.211720226844
        },
        {
            "linetype": 0,
            "x1": 2910.396975425331,
            "x2": 487.7126654064273,
            "y1": 10071.0775047259,
            "y2": 10069.565217391306
        },
        {
            "linetype": 0,
            "x1": 3077.504725897921,
            "x2": 654.8204158790172,
            "y1": 20…

Showing first 20,000 characters of 61,555 total. Open the full document →

Home Documents Lisa Lisa Boot ROM RM248.G.TEXT
Lisa Boot ROM RM248.G.TEXT

Lisa Boot ROM RM248.G.TEXT

Lisa · 1983 · TEXT
FilenameLisa_Boot_ROM_RM248.G.TEXT
Size0.07 MB
Year1983
Subsection firmware
Downloads2
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
.PAGE
        .IF     EXTERNAL = 1
        .LIST
        .ENDC
        .IF  USERINT = 1
;**********************************
;  Mini-Graphics Package	  *
;  Contributed by Mike Urquhart	  *
;  Copyright 1983, 1984 Apple	  *
;**********************************

;________________________________________________________________________________
;
;       DRAWDESK:
;
;	        this routine performs the following sequences:
;
;	        1.      clears the screen to a white background.
;	        2.      makes a menu bar by drawing a single pixel horizontal
;		        line across the screen.
;	        3.      fills the screen area below the menu bar with the stantard
;		        gray shade.
;
;	        Also has an entry point called CLRDESK that only does item (3).
;
;   Destroys regs D0-D2,A1,A5-A6
;________________________________________________________________________________


;
;       1.      clear screen to white background

DRAWDESK
        clr.l   d2
        bsr.s   whiten

;
;       2.      make menu bar border

CLRDESK moveq   #ROWBYTES,d0    ;set length of line = 90 bytes
        moveq   #-1,d2	        ;draw a black pattern
        move.w  #MENULINE,A1    ;start at offset 1440 address
        moveq   #1,d1	        ;draw only 1 pixel line
        bsr.s   paint_box

;
;       set a6 to starting pixel address for grey routine below
;       set a5 to limit
;
        move    #DESKLINE,a6
        move    #DESKLMT,a5     ;set limit

;
;       3.      make the grey background: to make the gray background, alternating
;	        rows of $5555 and $AAAA starting with $AAAA are written to the
;	        screen area.
;

gray    MOVE.L  #DESKPATRN,D2   ;set up grey pattern

gray1   swap    d2	        ;start with the $AAAA pattern
        moveq   #1,d1	        ;draw a one pixel high line
        move.l  a6,a1	        ;starting pixel address must be in a1 for call
        bsr     paint_box

@1      add     d0,a6	        ;bump to next pixel line
        cmp.w   a5,a6	        ;is a6 less then max?
        blt.s   gray1		      ;loop if yes
        rts			      ;else done

;_________________________________________________________________________
;
;       subroutine blacken and whiten: clears full screen to black or white
;
;       Calls:  bsr     blacken	        (no parameters)
;
;	        clr.l   d2
;	        bsr     whiten
;
;       registers used:	  d2.l - contains either FFFFFFFF or 0 on return
;			  d0.b - destroyed but contains $5A (90) on return
;			  d1.w - destroyed-->should contain 0 on return
;			  a1.l - destroyed
;
;
;       This routine calls paint_box, so other registers may be destroyed.
;
;
;_________________________________________________________________________


BLACKEN
        moveq   #-1,d2		        ;black fill pattern

whiten
        move.w  #MaxY-1,d1	        ;number of pixels in screen box heigth
        moveq   #ROWBYTES,d0	        ;length of screen box is 90 bytes
        suba.l  A1,A1		        ;clear A1
        bsr.s   paint_box
        rts

;------------------------------------------------------------------------
;  Subroutine to clear only menu bar on desktop
;  Inputs:
;       None
;  Outputs:
;       None
;  Side Effects:
;       None
;------------------------------------------------------------------------

CLRMENU MOVEM.L D0-D2/A1,-(SP)  ;save regs
        MOVEQ   #ROWBYTES,D0    ;width of menu bar is 90 bytes
        MOVEQ   #MBARLEN,D1     ;heigth is 15 pixels
        MOVEQ   #0,D2	        ;set fill pattern
        SUBA.L  A1,A1	        ;upper left corner is at offset 0
        BSR.S   PAINT_BOX       ;go do it
        MOVEM.L (SP)+,D0-D2/A1  ;restore and
        RTS		        ; exit

;________________________________________________________________________________
;
;       Routine paint_box
;
;       Call:	     BSR   paint_box
;		  or
;		     BSR   paintb2
;
;       register setup:
;
;       D2 must contain a one word fill pattern.
;       D0 must contain the width of the box(horizontally) or the length of
;		        the line.
;       D1 must contain the heigth(vertically of the box) in horizontal pixel
;		        rows:
;       A1 must contains the screen displacement in the range 0..32670
;
;       __________________________________
;       .				 .
;       .	    fill pattern	 . <-------heigth in pixels
;       __________________________________
;		        ^
;		        ........... length horizontally
;
;       Assumptions:  location SCRNBASE contains the video address
;
;       registers used-->D0-D3,A0-A2
;________________________________________________________________________________


PAINT_BOX

paintb1 lea     movinst,A4
        bra.s   cont

inverse lea     exclusive,A4
cont    ADD.L   SCRNBASE,A1     ;add video address to starting pixel address offset.

paintb2
        MOVE.L  A2,-(SP)        ;save reg
;       do some setup steps
;
        CLR.L   D3	        ;clear for use
        MOVE.W  D0,D3	        ;modify width/length
        NEG.l   D3	        ;negate the width/length (D3 = -width/length)
;
;       add the length of one horizontal pixel row-2 to the -width/length
;       to derive an offset which can be added to the updated address pointer
;       (when it reflects the right corner or end point of the box/line)
;       in order to arrive at the next row starting address.
;
        ADDI.l	 #ROWBYTES,D3   ;create displacement for following sequence
;
;
;
        MOVE.L  A1,A2	        ;create ending column check address
        ADD.L   D0,A2	        ;add length of line to obtain ending column address
;
;       A1 now points to the left top coordinate of the box or line.
;       A2 now points to the right top coordinate of the box or line.
;

startop
        jmp     (A4)	        ;execute the correct operation (EOR or MOVE)

movinst
        MOVE.w  D2,(A1)+        ;start the sequence
        bra.s   compare

exclusive
        eor.w   D2,(A1)+

compare CMP.L   A1,A2	        ;reached the right most point?
        BEQ.S   nextline        ;yes
        BRA.S   startop
;
;       YES
;
nextline
        ADD.L   D3,A1	        ;add 1 horizontal line length (5A) minus line length
        ADDA    #ROWBYTES,A2    ;to reach the left most point of the box on the	        RM000
        SUBQ.W  #1,D1	        ;next horizontal scan line.
        BNE.S   startop	        ;loop until done.
;
        MOVE.L (SP)+,A2	        ;restore and
        RTS		        ;return

;------------------------------------------------------------------------
;  Entry point to set cursor ptrs and make alert box for power cycling
;------------------------------------------------------------------------

MAKEPCALRT
        MOVEQ   #PCROW,D5       ;set row ptr
        MOVEQ   #PCCOL,D6       ;and col ptr
                                ;then drop into alert box routine
;________________________________________________________________________
;
;       MAKEALERT
;
;	        This routine creates an alert box with no title.
;________________________________________________________________________

MAKEALERT
        movem.l d0-d1/a1,-(sp)

        MOVEQ   #ALRTWIDTH,D0	        ;set parameters for box
        MOVE.L  #ALRTHIGH,D1
        MOVEA   #ALRTSTRT,A1
        bsr.s   makebox

        movem.l (sp)+,d0-d1/a1
        rts

;________________________________________________________________________
;
;       MAKETEST
;
;	        This routine creates an alert box for test icon display.
;________________________________________________________________________

MAKETEST
        movem.l d0-d1/a1,-(sp)

        MOVEQ   #TSTWWIDTH,D0	        ;set parameters for alert box
        MOVEQ   #TSTWHIGH,D1
        MOVEA   #TSTWSTRT,A1
        BSR.S   MAKEBOX		        ;go draw box

        MOVEQ   #TSTMROW,D5	        ;set cursor ptrs
        MOVEQ   #TSTMCOL,D6
        LEA     CHKMSG,A3	        ;set message ptr
        MOVEQ   #-1,D1		        ;append '...' string
        BSR     DSPSTRING	        ;and go display it

        BSR     DSPCPU		        ;display test icons
        BSR     DSPIOB
        BSR     DSPMBRD
        BSR     DSPXCRD

        movem.l (sp)+,d0-d1/a1
        rts

;________________________________________________________________________
;
;       MAKEDBOX
;
;	        This routine creates a dialog box.
;________________________________________________________________________

MAKEDBOX
        movem.l d0-d1/a1,-(sp)

        MOVEQ   #DBOXWIDTH,D0	        ;set parameters for dialog box
        MOVEQ   #DBOXHIGH,D1
        MOVEA   #DBOXSTRT,A1
        bsr.s   makebox

        movem.l (sp)+,d0-d1/a1
        rts

;________________________________________________________________________
;
;       routine makewindow
;
;	        This routine creates a fixed window of the folder type.
;	        The calling routine must provide the address of the
;	        string which will be used to fill in the title box.
;
;       Call:
;	        move    <window width>,d0
;	        move    <window heigth>,d1
;	        move    <upper left corner address>,a1
;	        lea     <string address>,a3
;	        bsr     makewindow
;
;       This routine calls makebox
;
;________________________________________________________________________

MAKEWINDOW
        movem.l d0-d1/a1,-(sp)

        bsr.s   makebox

;
;       now draw the title box by drawing a single black line across
;       the width of the window about 17 pixels from the top edge
;

        MOVE.L  A1,-(SP)        ;save start point
        add.w   #MENULINE,a1
        moveq   #1,d1	        ;set heigth of one pixel
        moveq   #-1,d2
        bsr.s   paint_box

        MOVE.L  (SP)+,A1        ;restore start point
        bsr     writetitle

        movem.l (sp)+,d0-d1/a1  ;restore and return
        rts

;________________________________________________________________________
;
;       Routine makebox;
;
;	        This routine creates a window of either the folder type
;	        or the dialog box type.	 Is is the responsibility of
;	        the calling process to append the title box and title
;	        to the window if it is the folder type.
;
;       Call:
;	        move.w  <window width>,d0	        (range 0..90) even
;	        move.w  <window heigth>,d1	        (range 0..364)
;	        move.w  <startingpixeladdress>,a1       (range 0..32670)
;	        bsr     makebox
;
;       registers used: d0,d1,d2,d3,d4,a1,a2
;________________________________________________________________________


MAKEBOX
;
;       make the basic window--->no edges  D2 must be set to 0 on call
;					   d0 must be set to the width (90 maximum)
;					   d1 must be set to the heigth (364 maximum)
;					   A1 must be the offset address (0..32670)
;
;
        movem.l d0-d4/a1-a4,-(sp)
        movem.l d0-d1/a1,-(sp)	   ;save the heigth and the starting pixel address

        clr.l   d2		   ;the pattern
        bsr     paint_box
;
;       now draw the individual edges including the shadow edges on the right
;       and bottom of the window
;

;
;       draw bottom horizontal edge
;
        sub.l   d3,a1
        sub.l   d0,a1	        ;a1 is currently equal to the lower right point
                                ; of the box so we can subtract the width to
                                ; calculate the lower left point of the box.

        moveq   #1,d1	        ;set 1 pixel heigth
        moveq   #-1,d2	        ;set the line pattern
        bsr     paintb2	        ;remember a4 is set up to point to the move.w
                                ; instruction
;
;       draw bottom horizontal shadow
;
@1      addq    #2,a1	        ;shadow begin offset by 2
        moveq   #1,d1	        ;draw a one pixel line
        subq    #2,d0
        bsr     paintb2	        ;go
;
;       draw top horizontal edge
;
@2      movem.l	 (sp)+,d0-d1/a1 ;restore original parameters
        movem.l	 d1/a1,-(sp)
        moveq   #1,d1	        ;draw a 1 pixel line
        bsr     paint_box
;
;       now draw the right edge plus the right edge's shadow, use a1
;       with a column parameter of 0
;
        movem.l	 (sp)+,d4/a2
        moveq   #1,d2
        subq    #2,d4
        subq    #2,d0
        add.l   d0,a1

        move.l  d4,d1
        clr.l   d0
        bsr.s   paint_v

        move.w  #182,d0	        ;set one byte offset from right edge
        moveq   #7,d2
        move.l  d4,d1
        bsr.s   paintbit        ;draw first pixel line of the right shadow

        move.w  #272,d0
        moveq   #6,d2
        move.l  d4,d1
        subq    #1,d1	        ;reduce heigth by 1 to compensate for shadow offset
        bsr.s   paintbit

;
;       now draw the left vertical edge of the box
;
        move.l  a2,a1	        ;restore the starting pixel address
        add.l   SCRNBASE,a1     ;add in video address
        moveq   #90,d0
        add.l   d0,a1
        move    #32768,d2       ;set the pattern

        move.l  d4,d1	        ;the heigth minus two
        clr.l   d0	        ;column 0 offset
        bsr.s   paint_v
        movem.l (sp)+,d0-d4/a1-a4

        rts

;_________________________________________________________________________
;
;       Routine paint_v
;
;       This routine "paints" a vertical column one word wide.
;
;       Call:   BSR     paint_v
;
;       register setup:
;
;       A1 must contain the screen base address.
;       D2 must contain a one word pattern.
;       D1 must contain the number of pixels in the vertical length of the line
;	  in the range 1..364
;       D0 must contain the screen word column in the range 0..44
;
;       Assumptions:  location SCRNBASE contains the video address
;
;       registers used: D0-D1
;________________________________________________________________________
;

PAINT_V

paintv1

@1      MOVE.W  D2,0(A1,D0.W)   ;write to screen
        SUBQ.W  #1,D1	        ;decrement count
        BEQ.S   @2	        ;return
        ADDI.W  #ROWBYTES,D0    ;bump to next horizontal line
        BRA.S   @1	        ;loop to continue writing vertical.
;
@2      RTS		        ;return

;_________________________________________________________________________
;
;       Routine paintbit
;
;       This routine "paints" a vertical line one bit wide.
;
;       Call:   BSR     paintbit
;
;       register setup:
;
;       A1 must contain the screen base address.
;       D2 must contain the bit number to set
;       D1 must contain the number of pixels in the vertical length of the line
;	  in the range 1..364
;       D0 must contain the screen word column in the range 0..44
;
;       Assumptions:  location SCRNBASE contains the video address
;
;       registers used: D0-D1
;________________________________________________________________________

PAINTBIT

@1      bset    d2,0(a1,d0.w)
        subq.w  #1,d1	        ;subtract one from heigth
        beq.s   @2	        ;done

        addi.w  #ROWBYTES,d0    ;increment to next pixel row.
        bra.s   @1

@2      RTS		        ;return

;______________________________________________________________________
;
;       Routine makebutton --> creates a black lined box of the size
;			       specified by the parameters with button
;			       "label" and description if specified.
;			       Also makes entries in active rectangle
;			       table for later use with mouse.
;
;			       the left top corner is addressed by a1,
;			       the alternate keycode is contained in d0.
;			       the description is in A3.
;			       description location is in A2.
;			       '...' string appended to message if d1 nonzero
;
;
;       Call:
;
;	        move.w  <left/top corner point>,a1
;	        move.b  <alternate keycode>,d0
;	        lea     <button description>,a3
;	        move.l  <description location>,a2
;	        <set d1 for '...' string>
;	        bsr     makebutn
;
;       Destroys regs D0-D2,D5,D6,A3
;______________________________________________________________________


MAKEBUTN
        MOVEM.L D1/A2,-(SP)     ;save string indicator and location ptr
        LEA     RectTable,A2    ;get ptr to active rect table
        MOVE    (A2),D2	        ;get current count of rect's
        MULU    #5,D2	        ;five entries per rect
        ADD     D2,D2	        ;double for word index
        ADDQ    #1,(A2)+        ;incr for new rect
        MOVE    D0,0(A2,D2.W)   ;save keycode id for new rect
        BSR     KeyToAscii      ;convert keycode to Ascii
        MOVE    D0,D4	        ;save for later display

;  compute X,Y pixel coordinates from starting address

        BSR     GETROWCOL       ;get pixel row, byte col
        MULU    #8,D6	        ;convert to pixel col
        MOVE    D6,2(A2,D2.W)   ;save upper left X
        MOVE    D5,4(A2,D2.W)   ; and Y coordinates

        MOVEQ   #BTNWIDTH,D0    ;set button parameters
        MOVEQ   #BTNHIGH,D1
        BSR.S   DRAWBUTN        ;draw the button

        MOVE.L  A1,-(SP)        ;save original val
        MOVE    LwrRight,a1     ;compute lower right coordinates
        BSR     GETROWCOL       ;get pixel row
        MULU    #8,D6	        ;and pixel col
        MOVE    D6,6(A2,D2.W)   ;save as X and
        MOVE    D5,8(A2,D2.W)   ; Y coordinates
        MOVE.L  (SP)+,A1        ;restore starting value

;       Add the button label and description

        movem.l d0-d4/a1-a3,-(sp)  ;save parameters

        lsr.l   #1,d0	        ;divide window width
        bsr     getrowcol       ;get the row and column coordinate of
                                ;the window corner point
        add.l   d0,d6	        ;adjust column pointer

        lsr.l   #1,d1	        ;divide window heigth
        subq.l  #4,d1	        ;decrement by half font heigth
        add.l   d1,d5	        ;adjust row coordinate

        SUBQ    #1,D6	        ;go back 1 and
        CLR     D0	        ;display apple icon
        BSR     DSPVAL

        MOVE.L  D4,D0	        ;get char to display
        bsr     dspval	        ;and go display alternate keycode

        movem.l (sp)+,d0-d4/a1-a3  ;retrieve parameters
        MOVEM.L (SP)+,D1/A2	   ;retrieve location and string indicator

        MOVE.L  A2,A1	        ;compute output pt for description
        BSR     GETROWCOL
        BSR     DSPSTRING       ;and display it

        RTS

;______________________________________________________________________
;
;       Routine drawbutton --> creates a black lined box of the size
;			       specified by the parameters.
;
;			       the left top corner is addressed by a1,
;			       the width is indicated by d0.
;			       the heigth is indicated by d1.
;
;
;	      this routine calls paint_box, and paintbit.
;
;	        inputs:	        d0=window width in bytes (should be even)
;			        d1=heigth in pixels
;			        a1=window left/top corner point as a
;				   0..32670 screen offset address.
;
;       Call:
;
;	        move.w  <left/top corner point>,a1
;	        move.w  <button width>,d0
;	        move.w  <button height>,d1
;	        bsr     drawbutn
;______________________________________________________________________

DRAWBUTN
        movem.l d0-d4/a1-a3,-(sp)  ;stack the arguments
;
;
;       draw the top edge of the button
;

        moveq   #-1,d2	        ;set the black bit pattern for paint_box
        moveq   #1,d1	        ;set a 1 pixel line
        bsr     paint_box

;
;       draw the right vertical edge of the button
;
        sub.l   d3,a1	        ;on return from paint_box, a1 points to the
                                ;real address of the left point of the next
                                ;horizontal pixel line of the button, so d3,
                                ;which contains the displacement to the prior
                                ;lines right edge is added to the
                                ;left point to obtain the correct
                                ;address for the right edge.
        move.l  4(sp),d1        ;momentarily restore the heigth
        clr.l   d0
        moveq   #7,d2	        ;set the 1 bit mask for paintbit
        bsr.s   paintbit        ;draw the right edge

;
;       now draw the left edge of the button
;
        move.l  20(sp),a1  …

Showing first 20,000 characters of 71,115 total. Open the full document →

Home Documents Lisa LisaKbd.Txt
LisaKbd.Txt

LisaKbd.Txt

Lisa · 1983 · TXT
FilenameLisaKbd.txt
Size0.02 MB
Year1983
Subsection keyboard
Downloads3
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
; *******************************************************************
;  Apple Lisa Keyboard A6MB101
;  Keytronics A65-02592-055 PCB-201A 
;  FW v5.12  (i8049 controller, 6.0 MHz)
;  (c) 1983
; *******************************************************************
;  commented disassembly by Dr. P. Sch�fer, 2006
;

; RAM
; 00..07	RB0: R0..R7
; 08..17	Stack
; 18..1F	RB1: R0..R7
; 20..2B	key masks
; 30..37	scancode pointer queue
; 38..3F	scancode queue

; ===================================================================
; The keyboard is scanned every 1ms with a SYNC pulse (20�s low).
; If a key has been pressed or released, it answers with a data 
; protocol:
;
;   S 4 5 6 7 7 0 1 2 3 3
;   |   |   | |   |   | |
;   |   |   | |   |   +-+--- last bit has double length
;   |   |   | |   +--------- lower nibble
;   |   |   +-+------------- last bit has double length
;   |   +------------------- upper nibble
;   +----------------------- start bit (low)
;
; The length of one bit cell is around 15�s. Data is sent with
; inverted polarity (1=low) and upper nibble first. I.e. 80FAh will
; be sent as 08FAh.
;
; After Reset, the keyboard sends an ID byte, 080h followed by the 
; Layout ID. 0FFh is sent as ID when the internal selftest failed.
;
; Layout ID codes:  10zyxxxxb
;   0BFh = US         ||  |	
;   0AFh = UK         ||  +--- P2.3-0: DIP SW 	
;   0AEh = German     |+------ P2.4: 1= US, 0= Intl.	
;   0ADh = French     +------- P2.5: unused, =1	
;
; KData input is -INT, KData output is P2.7
; scan driver XR 22-950-3B is connected to P1.0-3 & PROG
; sense amplifier XR 22-908-03 is connected to P1.0-7 & PROG
; ===================================================================
; Jumpers:
;   E1-E2:	EA (closed)
;   E3-E4:	P2.5 (open)
;   E5-E6:	P2.4 (open US, closed Intl.)
; ===================================================================



-0000   44 00   JMP 200h	; Reset
 0002   00      NOP
 
-0003   B6 FF   JF0 0FFh	; INT
 0005   24 83   JMP 183h

-0007   24 A1   JMP 1A1h	; Timer Int


; *******************************************************************
;  Main Program, part II:
;   enter here after selftest, F0 set when passed
; *******************************************************************
;
-0009   27      CLR A
 000A   B8 3F   MOV R0,#3Fh
-000C   A0      MOV @R0,A	; clear RAM
 000D   E8 0C   DJNZ R0,0Ch
 000F   D5      SEL RB1
 0010   BE 3F   MOV R6,#3Fh
 0012   BF 3F   MOV R7,#3Fh
 0014   C5      SEL RB0
 0015   B9 30   MOV R1,#30h
 0017   B8 1F   MOV R0,#1Fh
 0019   B6 23   JF0 23h		; selftest passed?
; no, send 08h, FFh
 001B   23 08   MOV A,#08h
 001D   34 75   CALL 175h	; send 08h
 001F   23 FF   MOV A,#0FFh
 0021   34 75   CALL 175h	; send FFh
; yes, send 08h, xBh with x = Keyboard Layout
-0023   23 08   MOV A,#08h	; send 08h
 0025   34 75   CALL 175h
 0027   8A FF   ORL P2,#0FFh
 0029   0A      IN A,P2		; read Jumper & DIP switch
 002A   43 80   ORL A,#80h	
 002C   53 BF   ANL A,#0BFh	
 002E   47      SWAP A	
 002F   34 75   CALL 175h	; send xxxx101y, xxxx=P2.3-0, y=P2.4
 0031   85      CLR F0
 0032   95      CPL F0		; set F0 which is already set
 0033   55      STRT T
 0034   25      EN TCNTI	; start timer and enable interrupt
;
; main loop -- scan key matrix
-0035   18      INC R0		; count from #20 to #2B (12 columns)
 0036   F8      MOV A,R0
 0037   D3 2C   XRL A,#2Ch
 0039   C6 B4   JZ 0B4h		; all done ->
 003B   34 88   CALL 188h	; scan column
 003D   C6 35   JZ 35h		; no key pressed, next one
; ...we got a keypress !!!
 003F   AB      MOV R3,A	; store row result
 0040   BA 19   MOV R2,#19h
-0042   EA 42   DJNZ R2,42h	; wait 50 cycles
 0044   3F      MOVD P7,A	; strobe chipset
 0045   34 88   CALL 188h	;  and scan again
 0047   99 FE   ANL P1,#0FEh	; clear P1.0,
 0049   3F      MOVD P7,A	;  strobe again
 004A   5B      ANL A,R3	; compare new scan result with old one
 004B   C6 35   JZ 35h		;  and abort at mismatch
; ...it seems to be real
 004D   AB      MOV R3,A	; store new value
 004E   BA 01   MOV R2,#01h
 0050   F8      MOV A,R0	
 0051   47      SWAP A
 0052   77      RR A
 0053   53 78   ANL A,#78h	; column number *8	
 0055   AF      MOV R7,A	;  into R7 (scan table offset)
 0056   FA      MOV A,R2
-0057   5B      ANL A,R3	; row bit (R2) set?
 0058   96 63   JNZ 63h		;  yes ->  
-005A   FB      MOV A,R3	; restore row result
 005B   C6 35   JZ 35h		; and exit when no key pressed
 005D   FA      MOV A,R2
 005E   E7      RL A		
 005F   AA      MOV R2,A	; prepare next mask 
 0060   1F      INC R7		;  increment table offset
 0061   04 57   JMP 057h	; and test next bit
; handle identified key
-0063   37      CPL A
 0064   5B      ANL A,R3
 0065   AB      MOV R3,A	; mask out current key
 0066   D5      SEL RB1
 0067   FE      MOV A,R6	; ???
 0068   C5      SEL RB0
 0069   C6 5A   JZ 5Ah		; go, test next bit
 006B   FA      MOV A,R2	
 006C   50      ANL A,@R0	; current row bit set in mask?
 006D   96 7F   JNZ 7Fh		;  yes ->
 006F   FA      MOV A,R2
 0070   D0      XRL A,@R0
 0071   A0      MOV @R0,A	; set it
 0072   FF      MOV A,R7	; get scan table offset
 0073   A1      MOV @R1,A	;  and store it into queue
 0074   F9      MOV A,R1
 0075   17      INC A
 0076   53 37   ANL A,#37h
 0078   A9      MOV R1,A	; increment pointer
 0079   BE 80   MOV R6,#80h	; set make flag
 007B   04 96   JMP 096h

; some selftest code for ROM checksum calculation
-007D   A3      MOVP A,@A	
 007E   83      RET

; current row bit already set in mask,
; ignore keypress when this key is already in the queue
-007F   F9      MOV A,R1
 0080   AE      MOV R6,A	; save queue pointer in R6
-0081   FF      MOV A,R7	; get scancode pointer
 0082   D1      XRL A,@R1	; found in queue?
 0083   96 89   JNZ 89h		;  no, test next location
 0085   FE      MOV A,R6
 0086   A9      MOV R1,A	; else restore queue pointer
 0087   04 5A   JMP 05Ah	; and ignore this keypress
-0089   F9      MOV A,R1
 008A   17      INC A
 008B   53 37   ANL A,#37h
 008D   A9      MOV R1,A	; increment queue pointer
 008E   DE      XRL A,R6
 008F   96 81   JNZ 81h		; and test next one
 0091   FA      MOV A,R2
 0092   D0      XRL A,@R0
 0093   A0      MOV @R0,A	; clear row bit in mask
 0094   BE 00   MOV R6,#00h	;  and set break flag
; meet again here with scancode pointer in R7 and 
; make (80h) / break (00h) flag in R6
-0096   FF      MOV A,R7	; get scancode pointer
 0097   D3 01   XRL A,#01h
 0099   C6 A6   JZ 0A6h		; =Shift (01h)? ->
 009B   D3 09   XRL A,#09h
 009D   C6 AD   JZ 0ADh		; =Shift (08h)? ->
-009F   FF      MOV A,R7
 00A0   E3      MOVP3 A,@A	; get scan code from table
 00A1   4E      ORL A,R6	;  merge in make/break flag
 00A2   34 91   CALL 191h	; store scancode into scancode queue
 00A4   04 5A   JMP 05Ah	;  and handle next key
; ignore left shift key when right one already pressed
-00A6   18      INC R0
 00A7   F0      MOV A,@R0	; get mask of next column
 00A8   C8      DEC R0
 00A9   12 5A   JB0 5Ah		; ignore keypress when bit0 set
 00AB   04 9F   JMP 09Fh
; ignore right shift key when left one already pressed
-00AD   C8      DEC R0
 00AE   F0      MOV A,@R0	; get mask of previous column
 00AF   18      INC R0
 00B0   32 5A   JB1 5Ah		; ignore keypress when bit1 set
 00B2   04 9F   JMP 09Fh
 

; all 12 columns scanned
-00B4   16 F4   JTF     0F4h	; timer expired -> zap one queue entry
-00B6   D5      SEL     RB1
 00B7   76 CC   JF1     0CCh
 00B9   FF      MOV     A,R7
 00BA   DE      XRL     A,R6
 00BB   C6 CC   JZ      0CCh	; buffer empty ->
 00BD   FE      MOV     A,R6
 00BE   96 C2   JNZ     0C2h
 00C0   FF      MOV     A,R7
 00C1   AE      MOV     R6,A
 00C2   FF      MOV     A,R7
 00C3   A9      MOV     R1,A
 00C4   07      DEC     A
 00C5   43 38   ORL     A,#38h
 00C7   AF      MOV     R7,A
 00C8   F1      MOV     A,@R1	; get next char to send
 00C9   47      SWAP    A	;  swap nibbles
 00CA   AC      MOV     R4,A	;  and store into R4'
 00CB   B5      CPL     F1	; mark data available
-00CC   BA 55   MOV     R2,#55h
 00CE   C5      SEL     RB0
; check for proper SYNC pulse
 00CF   BA 06   MOV     R2,#06h	; max. SYNC pulse width
 00D1   86 DA   JNI     0DAh	; KData low ->
 00D3   76 D7   JF1     0D7h	; data available -> enable interrupt
 00D5   04 E1   JMP     0E1h
-00D7   05      EN      I
 00D8   04 E1   JMP     0E1h
;
-00DA   EA D1   DJNZ    R2,0D1h
 00DC   9A 7F   ANL     P2,#7Fh ; KData has been low too long, shutdown
 00DE   35      DIS     TCNTI
 00DF   04 DF   JMP     0DFh	; wait for Reset
;
-00E1   B8 20   MOV     R0,#20h
 00E3   89 FF   ORL     P1,#0FFh
 00E5   8A FF   ORL     P2,#0FFh
 00E7   FD      MOV     A,R5
 00E8   B6 EF   JF0     0EFh
 00EA   96 F2   JNZ     0F2h
 00EC   95      CPL     F0
 00ED   04 F2   JMP     0F2h
-00EF   C6 F2   JZ      0F2h
 00F1   85      CLR     F0
-00F2   04 3B   JMP     03Bh
;
-00F4   C5      SEL     RB0
 00F5   27      CLR     A
 00F6   37      CPL     A
 00F7   A1      MOV     @R1,A	; zap current scancode queue entry
 00F8   F9      MOV     A,R1
 00F9   17      INC     A
 00FA   53 37   ANL     A,#37h
 00FC   A9      MOV     R1,A	; and increment pointer
 00FD   04 B6   JMP     0B6h
 

; *******************************************************************
;  external interrupt entry when F0 set
; *******************************************************************
;
-00FF   D5      SEL RB1
 0100   2C      XCH A,R4	; get char to send and save Acc
 0101   76 06   JF1 06h		; valid -> send
 0103   15      DIS I		; no, exit
 0104   2C      XCH A,R4	; restore Acc
 0105   93      RETR

-0106   86 71   JNI 71h		; KData stuck low -> abort 
-0108   9A 7F   ANL P2,#7Fh	; set KData low for start bit
 010A   00      NOP
 010B   00      NOP		; wait 1 cell length
 010C   00      NOP
 010D   12 51   JB0 51h		; bit0 =1 -> set KData low
 010F   8A 80   ORL P2,#80h	;  else set KData high
 0111   00      NOP
 0112   00      NOP
-0113   32 55   JB1 55h		; bit1 =1 -> set KData low
 0115   8A 80   ORL P2,#80h	;  else set KData high
 0117   00      NOP
 0118   00      NOP
-0119   00      NOP
 011A   52 59   JB2 59h		; bit2 =1 -> set KData low
 011C   8A 80   ORL P2,#80h	;  else set KData high
 011E   00      NOP
 011F   00      NOP
-0120   72 5D   JB3 5Dh		; bit3 =1 -> set KData low
 0122   8A 80   ORL P2,#80h	;  else set KData high
 0124   00      NOP
 0125   00      NOP
-0126   00      NOP
 0127   00      NOP		; wait 1 bit cell to separate nibbles
 0128   00      NOP
 0129   00      NOP
 012A   00      NOP
 012B   00      NOP
 012C   92 61   JB4 61h		; bit4 =1 -> set KData low
 012E   8A 80   ORL P2,#80h	;  else set KData high
 0130   00      NOP
 0131   00      NOP
-0132   B2 65   JB5 65h		; bit5 =1 -> set KData low
 0134   8A 80   ORL P2,#80h	;  else set KData high
 0136   00      NOP
 0137   00      NOP
-0138   00      NOP
 0139   D2 69   JB6 69h		; bit6 =1 -> set KData low
 013B   8A 80   ORL P2,#80h	;  else set KData high
 013D   00      NOP
 013E   00      NOP
-013F   F2 6D   JB7 6Dh		; bit7 =1 -> set KData low
 0141   8A 80   ORL P2,#80h	;  else set KData high
 0143   00      NOP
 0144   00      NOP
-0145   00      NOP		; last bit has double length
 0146   00      NOP
 0147   00      NOP
 0148   8A 80   ORL P2,#80h	; release KData 
 014A   A5      CLR F1		; mark character invalid
 014B   15      DIS I
 014C   2C      XCH A,R4	; and restore Acc
 014D   C5      SEL RB0
 014E   BD 01   MOV R5,#01h
 0150   93      RETR

-0151   9A 7F   ANL P2,#7Fh	; set KData low
 0153   24 13   JMP 113h
-0155   9A 7F   ANL P2,#7Fh	; set KData low
 0157   24 19   JMP 119h
-0159   9A 7F   ANL P2,#7Fh	; set KData low
 015B   24 20   JMP 120h
-015D   9A 7F   ANL P2,#7Fh	; set KData low
 015F   24 26   JMP 126h
-0161   9A 7F   ANL P2,#7Fh	; set KData low
 0163   24 32   JMP 132h
-0165   9A 7F   ANL P2,#7Fh	; set KData low
 0167   24 38   JMP 138h
-0169   9A 7F   ANL P2,#7Fh	; set KData low
 016B   24 3F   JMP 13Fh
-016D   9A 7F   ANL P2,#7Fh	; set KData low
 016F   24 45   JMP 145h

-0171   9A 7F   ANL P2,#7Fh	; set KData low
-0173   24 73   JMP 173h	; wait for Reset or Interrupt
 
; wait for SYNC pulse on data line
-0175   86 75   JNI 75h		; wait for INT high
 0177   00      NOP
-0178   86 7C   JNI 7Ch		; wait for INT low
 017A   24 78   JMP 178h
-017C   BA 02   MOV R2,#02h
 017E   EA 7E   DJNZ R2,7Eh	; wait 4 cycles
 0180   D5      SEL RB1
 0181   24 08   JMP 108h
 
; *******************************************************************
;  external interrupt entry when F0 cleared
; *******************************************************************
;
-0183   C5      SEL RB0
 0184   2D      XCH A,R5
 0185   27      CLR A		; clear R5 and exit
 0186   2D      XCH A,R5
 0187   93      RETR


; scan column R0, mask result with value @R0 and return in A
-0188   F8      MOV A,R0	; get column
 0189   39      OUTL P1,A	;  output value for 22-950-3B
 018A   3F      MOVD P7,A	;  and pulse strobe line 
 018B   89 FF   ORL P1,#0FFh	
 018D   09      IN A,P1		; read row
 018E   37      CPL A
 018F   D0      XRL A,@R0	
 0190   93      RETR

; store scancode into scancode queue
 0191   D5      SEL RB1
 0192   2E      XCH A,R6
 0193   C6 9F   JZ 9Fh		; R6' zero ->
 0195   A9      MOV R1,A	; scancode queue pointer
 0196   07      DEC A
 0197   43 38   ORL A,#38h
 0199   2E      XCH A,R6	; decrement R6'
 019A   A1      MOV @R1,A	; and store scancode 
 019B   FE      MOV A,R6
 019C   DF      XRL A,R7
 019D   96 A0   JNZ 0A0h
-019F   AE      MOV R6,A	; restore R6'
-01A0   93      RETR
 
; *******************************************************************
;  Timer interrupt entry
; *******************************************************************
;
-01A1   D5      SEL     RB1
 01A2   2A      XCH     A,R2
 01A3   D3 55   XRL     A,#55h
 01A5   96 D3   JNZ     0D3h
 01A7   23 83   MOV     A,#83h
 01A9   62      MOV     T,A
 01AA   C7      MOV     A,PSW
 01AB   53 07   ANL     A,#07h
 01AD   07      DEC     A
 01AE   E7      RL      A
 01AF   03 09   ADD     A,#09h
 01B1   A8      MOV     R0,A
 01B2   F0      MOV     A,@R0
 01B3   53 0E   ANL     A,#0Eh
 01B5   96 D3   JNZ     0D3h
 01B7   FF      MOV     A,R7
 01B8   53 F8   ANL     A,#0F8h
 01BA   D3 38   XRL     A,#38h
 01BC   96 D3   JNZ     0D3h
 01BE   C5      SEL     RB0
 01BF   F9      MOV     A,R1
 01C0   53 F8   ANL     A,#0F8h
 01C2   D3 30   XRL     A,#30h
 01C4   96 D3   JNZ     0D3h
 01C6   F8      MOV     A,R0
 01C7   53 F0   ANL     A,#0F0h
 01C9   D3 20   XRL     A,#20h
 01CB   96 D3   JNZ     0D3h
 01CD   D5      SEL     RB1
 01CE   23 AA   MOV     A,#0AAh
 01D0   2A      XCH     A,R2
 01D1   15      DIS     I
 01D2   93      RETR
 01D3   89 FF   ORL     P1,#0FFh
 01D5   8A FF   ORL     P2,#0FFh
 01D7   80      MOVX    A,@R0
 01D8   27      CLR     A
 01D9   D7      MOV     PSW,A
 01DA   B8 3F   MOV     R0,#3Fh
 01DC   A0      MOV     @R0,A
 01DD   E8 DC   DJNZ    R0,0DCh
 01DF   D5      SEL     RB1
 01E0   BE 3F   MOV     R6,#3Fh
 01E2   BF 3F   MOV     R7,#3Fh
 01E4   C5      SEL     RB0
 01E5   B9 30   MOV     R1,#30h
 01E7   B8 1F   MOV     R0,#1Fh
 01E9   A5      CLR     F1
 01EA   16 EC   JTF     0ECh
 01EC   34 F0   CALL    1F0h
 01EE   04 35   JMP     035h
 01F0   93      RETR

-01F1   A3      MOVP A,@A
 01F2   83      RET

 
; *******************************************************************
;  Main Progam: 
;   enter here from Reset, perform ROM and RAM selftest
;   F0 cleared when test failed, set when passed
; *******************************************************************
;
-0200   27      CLR A
 0201   D7      MOV PSW,A
 0202   27      CLR A
 0203   85      CLR F0		; set test as failed
 0204   C5      SEL RB0
; disable timer and interrupt
 0205   35      DIS TCNTI
 0206   15      DIS I
; calculate ROM checksum
 0207   AE      MOV R6,A	; clear R7, R6
 0208   AF      MOV R7,A
-0209   14 7D   CALL 07Dh	; get byte (A) from page 0
 020B   6E      ADD A,R6
 020C   AE      MOV R6,A	; and add it to R6
 020D   1F      INC R7
 020E   FF      MOV A,R7
 020F   96 09   JNZ 09h		; do this 256 times
-0211   34 F1   CALL 1F1h	; get byte (A) from page 1
 0213   6E      ADD A,R6
 0214   AE      MOV R6,A	; and add it to R6
 0215   1F      INC R7
 0216   FF      MOV A,R7
 0217   96 11   JNZ 11h		; do this 256 times
-0219   A3      MOVP A,@A	; get byte (A) from page 2
 021A   6E      ADD A,R6
 021B   AE      MOV R6,A	; and add it to R6
 021C   1F      INC R7
 021D   FF      MOV A,R7
 021E   96 19   JNZ 19h		; do this 256 times
-0220   E3      MOVP3 A,@A	; get byte (A) from page 3
 0221   6E      ADD A,R6
 0222   AE      MOV R6,A	; and add it to R6
 0223   1F      INC R7
 0224   FF      MOV A,R7
 0225   96 20   JNZ 20h		; do this 256 times
 0227   FE      MOV A,R6	; get checksum 
 0228   96 3D   JNZ 3Dh		; exit when failed
; test RAM
 022A   B8 3F   MOV R0,#3Fh	; start with 3Fh
-022C   F8      MOV A,R0	; address into A,
 022D   A0      MOV @R0,A	;  into RAM cell,
 022E   F0      MOV A,@R0	;  back from there, 
 022F   D8      XRL A,R0	;  same as in R0?
 0230   96 3D   JNZ 3Dh		; exit when failed
 0232   F8      MOV A,R0
 0233   37      CPL A
 0234   A0      MOV @R0,A	; complement into RAM cell,
 0235   F0      MOV A,@R0	;  back from there
 0236   D8      XRL A,R0	;  this should be #FFh,
 0237   37      CPL A		;  now #00h
 0238   96 3D   JNZ 3Dh		; exit when failed
 023A   E8 2C   DJNZ R0,2Ch	; do this for each location except R0
 023C   95      CPL F0		; flag test as passed
; selftest done, continue at -0009
-023D   B8 08   MOV R0,#08h
 023F   B0 09   MOV @R0,#09h	; put #0009 as return addess
 0241   18      INC R0		;  into first stack location
 0242   B0 00   MOV @R0,#00h	
 0244   04 09   JMP 009h	; go to next part

-0246   26 00   JNT0 00h

 
 
; *******************************************************************
;  Scan Code Table
; *******************************************************************

0300	79 7E 70 7D 74 68 78 75		; Z     Shft  A     ALck  1!    `~    Tab  Q
	7E 00 00 48 45 41 57 42 	; Shft              Retn  Bksp  =+    ]}   \|
	00 4C 5B 5A 40 51 44 56		;       /?    '"    ;:    -_    0)    P    [{
	00 00 00 00 00 00 00 00 
	00 00 00 00 00 00 00 00
	6E 6C 6A 69 64 73 65 66 	; B     V     G     F     5%    4$    R     T
	58 6F 54 6B 62 61 67 52		; M     N     J     H     7&    6^    Y     U
	5E 5D 59 55 50 63 53 5F 	; .>    ,<    L     K     9(    8*    I     O
	43 2C 49 4E 7F 7C 5C 46		; <>    .     0     ROptn Apple LOptn Spc   Enter
	6D 7A 7B 76 72 71 77 60 	; C     X     D     S     3#    2@    W     E
	2F 2E 2B 2A 23 22 26 27		; NRtn  3     +     6     =     *     9     /
	2D 4D 29 28 21 20 24 25		; 2     1     5     4     -     Clr   7     8
Home Documents ADB Global Village A300.Md
Global Village A300.Md

Global Village A300.Md

ADB · MD
Filenameglobal_village_a300.md
Size0.01 MB
Subsection tashnotes_adb / modem
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# Global Village A300 ADB Modem Protocol

This document contains experimentally-observed behavior of the Global Village A300 modem's ADB protocol.  It contains enough information to satisfactorally emulate the serial port, however, many unknowns exist.

The modem's default address may be 0x5 (observed on firmware 1.5) or 0x7 (observed on firmware 1.4) and its default handler ID is 0x36.

Consistent with ADB standards, register 0 is the primary communications channel with the modem.

## Talk 0

A Talk 0 command will read status information or data received by the serial port.  If no payload is received, there is no data or status to receive.  If received, the payload is always eight bytes in length, and the eighth byte determines the meaning of the payload:

| 8th Byte  | Meaning                                                                                                                      |
| --------- | ---------------------------------------------------------------------------------------------------------------------------- |
| 0x00-0x7F | Payload contains 8 bytes received by serial port in 1st through 8th bytes                                                    |
| 0x80      | Payload contains no data                                                                                                     |
| 0x81      | Payload contains 1 byte received by serial port in 1st byte, 2nd through 7th are invalid                                     |
| 0x82      | Payload contains 2 bytes received by serial port in 1st through 2nd bytes, 3rd through 7th are invalid                       |
| 0x83      | Payload contains 3 bytes received by serial port in 1st through 3rd bytes, 4th through 7th are invalid                       |
| 0x84      | Payload contains 4 bytes received by serial port in 1st through 4th bytes, 5th through 7th are invalid                       |
| 0x85      | Payload contains 5 bytes received by serial port in 1st through 5th bytes, 6th through 7th are invalid                       |
| 0x86      | Payload contains 6 bytes received by serial port in 1st through 6th bytes, 7th is invalid                                    |
| 0x87      | Payload contains 7 bytes received by serial port in 1st through 7th bytes                                                    |
| 0x88      | Modem-to-Mac status A in 1st through 5th bytes, 6th and 7th are invalid                                                      |
| 0x89      | Modem-to-Mac status B in 1st byte, 2nd through 7th are invalid                                                               |
| 0x8A-0x8F | Undetermined                                                                                                                 |
| 0x90-0x9F | Same as 0x80-0x8F but requests the Mac to hold off sending Listen 0 commands until a payload ending in 0x80-0x8F is received |
| 0xA0-0xFF | Payload contains 8 bytes received by serial port in 1st through 8th bytes                                                    |

The byte 0x95 is treated specially by the driver; in order to reflect the reception of a single 0x95 byte, the device must send two 0x95 bytes in a row.  They do not have to be in the same ADB payload.

### Modem-to-Mac Status A

Default state (with driver installed) appears to be 0xF0 0x01 0x00 0x30 0x0C.  First four bytes are the same as Talk 1, second byte may be the same as second byte of Listen 1.

| Bit (big endian) | Meaning                                                                          |
| ---------------- | -------------------------------------------------------------------------------- |
| 39-38            | Undetermined                                                                     |
| 37               | OH (off-hook) indicator, active low                                              |
| 36-35            | Undetermined                                                                     |
| 34               | CD (carrier detect) indicator, active high                                       |
| 33               | Undetermined                                                                     |
| 32               | AA (auto answer) indicator, active high                                          |
| 31-26            | Undetermined                                                                     |
| 25               | Modem on?                                                                        |
| 24               | Modem driver installed?                                                          |
| 23-16            | Undetermined                                                                     |
| 15-8             | Baud rate display (on when CD is on); 0x80 = 300, 0x60 = 1200, 0x30/other = 2400 |
| 7-0              | Undetermined                                                                     |

36-34 change when connection is being established, 36 active low and 35-34 active high.

### Modem-to-Mac Status B

| Bit | Meaning                                         |
| --- | ----------------------------------------------- |
| 7-4 | Undetermined                                    |
| 3-0 | Baud rate of established connection (see below) |

| Bits 3-0 | Baud Rate |
| -------- | --------- |
| 0x8      | 2400      |
| 0x7      | 1200      |
| 0x6      | 300       |

Other values are undetermined.

## Listen 0

Listen 0 will write data to be sent by the serial port.  The payload must always be eight bytes in length, with the eighth byte determining the meaning of the payload:

| 8th Byte  | Meaning                                                                                                  |
| --------- | -------------------------------------------------------------------------------------------------------- |
| 0x00-0x7F | Payload contains 8 bytes to be sent to serial port in 1st through 8th bytes                              |
| 0x80      | Undetermined                                                                                             |
| 0x81      | Payload contains 1 byte to be sent to serial port in 1st byte, 2nd through 7th are invalid               |
| 0x82      | Payload contains 2 bytes to be sent to serial port in 1st through 2nd bytes, 3rd through 7th are invalid |
| 0x83      | Payload contains 3 bytes to be sent to serial port in 1st through 3rd bytes, 4th through 7th are invalid |
| 0x84      | Payload contains 4 bytes to be sent to serial port in 1st through 4th bytes, 5th through 7th are invalid |
| 0x85      | Payload contains 5 bytes to be sent to serial port in 1st through 5th bytes, 6th through 7th are invalid |
| 0x86      | Payload contains 6 bytes to be sent to serial port in 1st through 6th bytes, 7th is invalid              |
| 0x87      | Payload contains 7 bytes to be sent to serial port in 1st through 7th bytes                              |
| 0x88-0x9F | Undetermined                                                                                             |
| 0xA0-0xFF | Payload contains 8 bytes to be sent to serial port in 1st through 8th bytes                              |

## Talk 1

Payload is the same as the first four bytes of Modem-to-Mac Status A.  Post-reset state is 0xF0000000.

## Listen 1

Payload appears always to be two bytes in length.  Second byte may be the same as second byte of Modem-to-Mac Status A.

| Bits (big endian) | Meaning                 |
| ----------------- | ----------------------- |
| 15-2              | Undetermined            |
| 1                 | Modem on?               |
| 0                 | Modem driver installed? |

## Talk 2

Payload appears always to be six bytes in length.  Appears to communicate the information given by the driver's 'about' box:

| Bits (big endian) | Example Value | Meaning                                                                       |
| ----------------- | ------------- | ----------------------------------------------------------------------------- |
| 47-44             | 0x1           | Firmware major revision (0-9)                                                 |
| 43-40             | 0x4           | Firmware minor revision (0-9)                                                 |
| 39-16             | 0x019F8E      | ID number (shown as decimal)                                                  |
| 15-10             | 0b011001      | Undetermined                                                                  |
| 9-0               | 0x03A         | Manufacture date, expressed as number of weeks since Sunday, 31 December 1989 |

Example values are from a modem where the control panel displayed "Firmware 1.4, Made 1991-02-10, ID 106382".

## Listen 2

Payload appears always to be four bytes in length.

| Bits (big endian) | Meaning                                                           |
| ----------------- | ----------------------------------------------------------------- |
| 31-15             | Undetermined                                                      |
| 14                | Break (active high; set and then clear to send a break character) |
| 13-0              | Undetermined                                                      |
Home Documents ADB Aak Media Keys.Md
Aak Media Keys.Md

Aak Media Keys.Md

ADB · MD
Filenameaak_media_keys.md
Size0.00 MB
Subsection tashnotes_adb / keyboard
Downloads8
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# Apple Adjustable Keyboard Media Keys

The Apple Adjustable Keyboard appears as two devices:

| Original Address | Handler ID | Function         |
| ---------------- | ---------- | ---------------- |
| 0x2              | 0x10       | Keyboard         |
| 0x7              | 0x02       | Media Key Device |

## Media Key Device

### Talk 0

Talk 0 behaves the same way as on a standard keyboard: it reports key events as bytes with the MSB set for a key release and clear for a key press, and scan codes in the lower seven bits.  It reports a maximum of two such event bytes per Talk 0 request.  If it has only one event to report, the event byte is followed by an 0xFF byte; if it has no events to report, no reply is given.

The scan codes used by the media key device are as follows:

| Key      | Code |
| -------- | ---- |
| Volume ↑ | 0x03 |
| Volume ↓ | 0x02 |
| Mute     | 0x01 |
| Mic      | 0x00 |

### Talk 1

Talk 1 appears to always return 0xFF02.

### Talk 2

Talk 2 appears to always return 0xFFFF.

### System Software Support

Native support for the Volume Up/Down and Mute keys (but not the Mic key) was added with System 7.1 System Update 3.0[^1].  An extension called Record Button[^2] exists to provide support for the Mic key.

## Thanks

*Thanks to Velociraptors and treellama on #68kmla for their help in compiling and verifying this information!*

[^1]: <https://obsolete.macfixer.com/vintage-software/notes/System_Update_3.0_1.4MB.html>
[^2]: <http://www.geocities.ws/ddurant/ext.html>
Home Documents NuBus ApplROM.A.Lst
ApplROM.A.Lst

ApplROM.A.Lst

NuBus · 1984 · LST
FilenameApplROM.a.lst
Size0.07 MB
Year1984
Subsection apple / Zorro_Coax-Twinax_Card / diag
Downloads5
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
MC68020 Assembler - Ver 2.88                                                                               14-Dec-88  Page   1
Copyright Apple Computer, Inc. 1984-1987

Loc   F Object Code     Addr  M	Source Statement


                               	;-------------------------------------------------------------------
                               	;
                               	; (c) Apple Computer, Inc.	1987
                               	; All rights reserved.
                               	;
                               	;-------------------------------------------------------------------
                               	;
                               	;	File   	: CommROM.a
                               	;	Author 	: Michael Klassen, June 8, 1987.
                               	;	Description : This file contains the data structure definition
                               	;		    for the MCP Comm Engine card.
                               	;
                               	;-------------------------------------------------------------------
                               	;	Modification History :
                               	;
                               	;	7 March 1988: WHJW:  mods to support multiple ROM vers w/ same source code
                               	;	8 July  1988: WHJW:	 Correctly identified slot resource list entries
                               	;-------------------------------------------------------------------

                               	;*************************************************************
                               	;Constants
                               	;*************************************************************

                               		INCLUDE	'CommDeclr.h'
                               	;*************************************************************************
                               	;
                               	; CommDeclr.h:
                               	;	Constants used for Smart card Diagnostics

        0007 FFFE              	STACK			EQU	$7FFFE		; offset of stack in card RAM
        0001 0000              	ROMSize			EQU	(64*1024)	; ROM = 64K

        0000 0000              	OFF				equ	0
        FFFF FFFF              	ON				equ	-1
        0000 0000              	PASS			equ	0
        FFFF FFFF              	FAIL			equ	-1
        0000 0001              	WAIT			equ 1

                               	; Delay constants in microseconds
        0000 0D00              	TimeDBRA		equ $D00		; (word) location: # of DBRA instructions/mSecond
        0000 01F4              	WaitCount		equ	500			; timeout  - wait for power_on finish
        0000 0004              	TimeCnt			equ	4			; timeout for IOP test
        0000 0010              	TimerWait 		equ	16			; timeout for Timer test
        0000 0004              	Delay			equ	4			; Reset delay

                               	; variable offsets into card RAM
        0000 0100              	WaitFlag		equ	$100		; power_on wait flag
        0000 0102              	TstStatus		equ	$102		; test status bit flags
        0000 0104              	TimeFlag		equ	$104		; flag for timer test
        0000 0106              	HostFlag		equ	$106		; flag for host reset test
        0000 0108              	ResetFlag		equ	$108		; flag to control reset code
        0000 010C              	IOPFlag			equ	$10C		; flag for IOP interrupt test
        0000 010E              	CRCCalcAddr 	equ	$10E		; ROM calculated CRC value
        0000 0112              	WriteLoc		equ	$112		; Location of Nubus write/read test
                               	;rteAddr			equ	$116	; rte for interrupt vectors (no longer used)
        0000 0118              	timeCountAddr 	equ	$118		; address of firmware timer counter
        0000 011C              	RAMSizeAddr		equ $11c		; Size of card RAM in bytes
        0000 0120              	TASStatusAddr	equ $120		; returns test & set card status to 020
        0000 0122              	NMRQFlag		equ	$122		; flag for NMRQ test
        0000 0128              	BusErrAddr		equ	$128		; flag for bus error
        0000 012C              	InitA5Addr		equ $12c		; Used for finding data block
        0000 0130              	CodeOffset		equ $130		; Used for finding code block
        0000 0134              	VendPowerStatus	equ $134		; return status from vendors power-up code
        0000 0138              	VendPrimaryStatus equ $138		; return status from vendors Primary init code
        0000 013C              	ExceptionPC		equ $13C		; PC stored here after exception takes place
        0000 0140              	ErrorAddr		equ $140		; data addr stored here after bus or addressing error
        0000 0144              	RAMErrAddr		equ	$144		; if RAM error occurs, its address stored here
        0000 0148              	L1IntAddr		equ	$148		; Mac processor stores new Timer interrupt loc here;
                               									; then calls SetL1Interrupt to set it safely.
                               	; card space to $180 to $200 reserved for temporary data values only
        00E0 0000              	testROMAddr   	equ	$e00000		; location of Fremont board tester ROM
        0080 0008              	ROMversion		equ $800008		; location of Mac II ROM version number

                               	; Test status bit masks

MC68020 Assembler - Ver 2.88                                                                               14-Dec-88  Page   2
Copyright Apple Computer, Inc. 1984-1987

Loc   F Object Code     Addr  M	Source Statement

        0000 FFFF              	testsDefined 	equ	$ffff		; currently defined test bits
        0000 FFFE              	DLTestMask		equ	$fffe		; sliding 5  data line test
        0000 FFFD              	RAMTestMask		equ	$fffd
        0000 FFFB              	testPatternMask equ	$fffb		; signals PROM burned incorrectly
        0000 FFF7              	CRCTestMask		equ	$fff7		; Clears CRC test bit
        0000 FFEF              	VendPowerupMask equ	$ffef
        0000 001F              	PowerMask		equ	$1F
        FFFF FFDF              	BusMask			equ	$FFFFFFDF	; clears Nubus write/read test bit
        FFFF FFBF              	HostMask		equ	$FFFFFFBF	; clears host reset test bit
        FFFF FF7F              	TimeMask		equ	$FFFFFF7F	; clears timer test bit
        FFFF FEFF              	IOPMask			equ	$FFFFFEFF	; clears IOP test bit
        FFFF FDFF              	VendMask		equ	$FFFFFDFF	; clears vendor test bit
        FFFF FBFF              	NMRQMask		equ $FFFFFBFF	; clears NMRQ test bit

                               	; Card control switch offsets
        00C0 0000              	ExtReg			equ	$C00000		; Nubus extension register (write) or unreset (read)
        00C0 0002              	TimerSet		equ	$C00002		; Timer interrupt switch (read)
        00C0 0008              	ClrIOPIntr 		equ	$C00008		; Clear Interrupt IOP request (read)
        00C0 000A              	SetIOPIntr 		equ	$C0000A		; Set Interrupt IOP request (read)
        00C0 0004              	ClrHostIntr 	equ	$C00004		; Clear Host Interrupt request (read)
        00C0 0006              	SetHostIntr 	equ	$C00006		; Set Host Interrupt request (read)
        00F0 0000              	Reset			equ	$F00000		; programmed reset of 68000 (write)
        00B0 0000              	SetTASAddr		equ	$B00000		; Prime card for an offcard TAS instruction

                               	; Pointers to interrupt test routines
        00FF FF60              	SetL1Addr		equ $FFFF60
        00FF FF80              	TimeAddr		equ	$FFFF80
        00FF FFA0              	HostAddr		equ	$FFFFA0
        00FF FFC0              	IOPAddr			equ	$FFFFC0

                               	; test patterns
        5555 5555              	testWord1		equ	$55555555	; power-up RAM test data word
        AAAA AAAA              	testWord2		equ	$aaaaaaaa
        5A5A 5A5A              	testWord3		equ	$5a5a5a5a
        55AA 55AA              	testWord4		equ	$55aa55aa
        5A93 2BC7              	bTestPattern	equ	$5a932bc7	; test pattern in identifier block
        AAAA 5555              	testROMSig		equ	$aaaa5555	; PVT test ROM Signature

                               	; format header block offsets
        00FF FFFF              	fBlockLoc		equ	$ffffff		; 0, 1, 2, 3 bytelanes begins here
        0000 0000              	byteLanes		equ	0
        FFFF FFFB              	testPatLoc		equ	-5
        FFFF FFFA              	formatLoc		equ	-6
        FFFF FFF5              	CRCLoc			equ	-$b
        FFFF FFF1              	lengthLoc		equ	-$f
        FFFF FFEB              	CommIDLoc		equ -$15		;used to identify GMSIOP card application
        FFFF FFE9              	VendIDLoc		equ -$17		;used to identify specific hardware configuration

        0000 C3D2              	CommID			equ $c3d2		;GMSIOP card ROM identifier
        0000 0001              	MacID			equ 01			; Mac II ROM ID

                               	;Equates shared by asmlib.a & exceptions.a

        0000 00F7              	mode24mask	equ	$F7
        0000 0008              	mode32mask	equ	$8
        50F0 2000              	addrPort	equ	$50F02000		;32 bit hardware switch; no longer accessed directly
        0000 0CB2              	MMU32bit 	equ $0CB2			;(byte) boolean reflecting current 020 machine MMU mode
        00FF FFEC              	codePtr		equ	$FFFFEC
        0000 0A7C              	MyIntHndl	equ $a7c			;handle in 020 Application scratch memory
        0000 0A80              	AppScratch	equ	$a80			;last 4 bytes of appl scratch area

        A9FF                   	_Debugger		OPWORD	$A9FF
        A11E                   	_NewPtr 		OPWORD	$A100+30
        A01F                   	_DisposPtr		OPWORD	$A000+31
        A05D                   	_SwapMMUMode	OPWORD	$A05D		;from traps.a
        A075                   	_SIntInstall	OPWORD	$A075
        A076                   	_SIntRemove		OPWORD	$A076
        A9F2                   	_Launch			OPWORD  $A9F2

                               		MACRO
                               		_m32
                               		move.l	d0, -(a7)
                               		move.l	#1, d0
                               		_SwapMMUMode
                               		move.l	(a7)+, d0

MC68020 Assembler - Ver 2.88                                                                               14-Dec-88  Page   3
Copyright Apple Computer, Inc. 1984-1987

Loc   F Object Code     Addr  M	Source Statement

                               		ENDM

                               		MACRO
                               		_m24
                               		move.l	d0, -(a7)
                               		move.l	#0, d0
                               		_SwapMMUMode
                               		move.l	(a7)+, d0
                               		ENDM

                               		INCLUDE	'Application.h'
                               	;==================================================================================
                               	; File:		Application.h
                               	;
                               	; Function:	Application card ROM constants stored here
                               	;

        0042 0001              	bcpRIC		equ	$420001			; 8344 remote interface configuration register
        0040 0001              	bcpPC		equ	$400001			; Dummy address for writing to 8344 PC
        0040 0001              	bcpDRAM		equ	$400001			; 8344 Data RAM address base
        0040 7C15              	bcpGoodData	equ	$3E0A * 2 + bcpDRAM	; Test data
        0040 7C17              	bcpBadData	equ	$3E0B * 2 + bcpDRAM	; Bad data read back
        0040 7C19              	bcpErrAddrHi	equ	$3E0C * 2 + bcpDRAM	; Failed memory address, high order
        0040 7C1B              	bcpErrAddrLo	equ	$3E0D * 2 + bcpDRAM	; Failed memory address, low  order
        0040 7C1D              	bcpTestErr	equ	$3E0E * 2 + bcpDRAM	; BCP test error bits
        0040 7C1F              	bcpTestState	equ	$3E0F * 2 + bcpDRAM	; BCP test states

        0040 7C01              	bcpComm		equ	$3E00 * 2 + bcpDRAM	; BCP - 68k communication area
        0040 8001              	bcpDMEnd	equ	$4000 * 2 + bcpDRAM	; Last data memory + 1

                               	;
                               	; - RIC selections
                               	;

        0000 0034              	RIC_START	equ	$34		; Start 8344 execution
        0000 0030              	RIC_DRAM	equ	$30		; Select 8344 Data RAM
        0000 0034              	RIC_DRAM_RUN	equ	$34		; Select 8344 Data RAM and do not stop 8344
        0000 0031              	RIC_IMEM	equ	$31		; Select 8344 Instruction memory
        0000 0032              	RIC_PC_LO	equ	$32		; Select 8344 Program Counter low byte
        0000 0033              	RIC_PC_HI	equ	$33		; Select 8344 Program Counter high byte

                               	;
                               	; - BCP test states
                               	;

        0000 0000              	bcpIDLE		equ	$00		; BCP test not started
        0000 0001              	bcpRUNNING	equ	$01		; BCP test in progress
        0000 0002              	bcpDONE		equ	$02		; BCP test completed

                               	;
                               	; - BCP Tests entry points, low bytes
                               	;

        0000 0020              	BT_POR		equ	$20		; 8344 POR Test starts at 0020


                               	;
                               	; - BCP test error bits
                               	;

        0000 0001              	bcpRegErr	equ	$01		; BCP register test failed
        0000 0002              	bcpLoopErr	equ	$02		; BCP loop back test failed
        0000 0010              	bcpRamErr	equ	$10		; BCP data RAM test failed
        0000 0013              	bcpError	equ	bcpRegErr + bcpLoopErr + bcpRamErr

                               	;
                               	; Misc.
                               	;

        0000 0800              	BCP_IM_SIZE	equ	$800		; size of bcp instruction memory (I.M.)
        0000 1000              	bcp_rdback	equ	$0001000	; start location to store readback from 8344 I.M.
        0002 0000              	WaitBCPDone	equ	$00020000	; loop count waiting for 8344 to finish testing


        0000 5A6F              	VendID			equ $5a6f	;unofficial Zorro Vendor ID

MC68020 Assembler - Ver 2.88                                                                               14-Dec-88  Page   4
Copyright Apple Computer, Inc. 1984-1987

Loc   F Object Code     Addr  M	Source Statement


                               	;-----------  sResource Directory stuff	;<Id OF>
        0000 0001              	sRsrc_Board		EQU	1	;Board sResource
        0000 000A              	CommBoardId		EQU	$A	;Officially defined by Developer Technical Support
        0000 0004              	ROMRevLevel		equ	4	;ROM revision level (now D) must be < 9



        0000 0080              	sRsrc_CPU		EQU 128		;identify CPU & memory resources
        0000 0081              	sRsrc_Comm1		EQU 129		;comm type 1
        0000 0082              	sRsrc_Comm2		EQU 130		;comm type 2
        0000 0083              	sRsrc_Comm3		EQU 131		;comm type 3
        0000 0084              	sRsrc_Comm4		EQU 132		;comm type 4
        0000 008C              	sRsrc_sMemory		EQU 140		;2nd leved sResource (not seen directly by slot manager)

        0000 0096              	CatsMemory		EQU 150		;not defined by DTS, 2nd level sRrsource
        0000 0080              	MinorRAMAddr		EQU 128
        0000 0082              	MinorROMAddr		EQU 130
        0000 0084              	MinorDeviceAddr		EQU 132


        0000 000A              	CatCPU           EQU    $000A  ;
        0000 0001              	Typ68000         EQU    $0001  ;
        0000 FFFF              	DrSwNotThere     EQU    $FFFF  ;Apple MCP has 68K, no on-board driver
        0000 0001              	DrHwAMCP         EQU    $0001  ;First generation Apple MCP cards

        0000 0006              	CatCommunication EQU    $0006  ;mb  CatInterface?
        0000 0013              	Typ3270          EQU    $0013  ;vanilla 3270 for Zorro card 8/23/88
                               	;DrSwNotThere    EQU    $FFFF  ;Apple MCP has 68K, no on-board driver
                               	;DrHwAMCP        EQU    $0001  ;First generation Apple MCP cards

                               	;CatCommunication EQU    $0006  ;mb  CatInterface?
                               	;Typ3270         EQU    $0013  ;vanilla 3270 for Zorro card 8/23/88
                               	;DrSwNotThere    EQU    $FFFF  ;Apple MCP has 68K, no on-board driver
        0000 0006              	DrHwA3270_5250   EQU    $0006  ;Apple 3270/5250 NB card (Zorro)-implies 8344 chip

                               	;CatCommunication EQU    $0006  ;mb  CatInterface?
        0000 000A              	Typ5250    	 EQU    $000A  ;5250 protocol (actual DTS constant is Typ32705250)
                               	;DrSwNotThere    EQU    $FFFF  ;Apple MCP has 68K, no on-board driver
                               	;DrHwAMCP        EQU    $0001  ;First generation Apple MCP cards

                               	;CatCommunication EQU    $0006  ;mb  CatInterface?
                               	;Typ5250    	 EQU    $000A  ;5250 protocol (actual DTS constant is Typ32705250)
                               	;DrSwNotThere    EQU    $FFFF  ;Apple MCP has 68K, no on-board driver
                               	;DrHwA3270_5250  EQU    $0006  ;Apple 3270/5250 NB card (Zorro)-implies 8344 chip






                               	;Include files
                               		PRINT	ON


00000                          	CommROM	MAIN
00000                          		STRING 	C
00000
00000
00000                          	;===============================================================================
00000                          	; Power-On test
00000                          	; The following jsr PowerOn must be the first instruction of code in the ROM.
00000                          	; PowerOn tests RAM, ROM, & will then call the Vendor Powerup test defined in ApplPoweron.a
00000                          	;===============================================================================
00000
00000                          		IMPORT	PowerOn		;from powerup.a
00000
00000   4EBA 0000              		jsr	PowerOn
00004
00004                          	;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00004                          	;		Resource	Directory
00004                          	;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00004                          	;							<ID>	<OFFSET/DATA>
00004                          	_sRsrcDir	OSLstEntry  	sRsrc_Board,_sRsrc_Board	;<sRsrc_Board>  <Board sRsrc List offset>
00004   0100 001C             1					DC.L	(sRsrc_Board<<24)+((_sRsrc_Board-*)**$00FFFFFF)		;<C444/19nov86>

MC68020 Assembler - Ver 2.88                                                                               14-Dec-88  Page   5
Copyright Apple Computer, Inc. 1984-1987

Loc   F Object Code     Addr  M	Source Statement

00008                          		OSLstEntry	sRsrc_CPU, _sRsrc_CPU 	; defines CPU, MCP architecture
00008   8000 00A8             1					DC.L	(sRsrc_CPU<<24)+((_sRsrc_CPU-*)**$00FFFFFF)		;<C444/19nov86>
0000C                          		OSLstEntry	sRsrc_Comm1, _sRsrc_Comm1	;category Communications
0000C   8100 0148             1					DC.L	(sRsrc_Comm1<<24)+((_sRsrc_Comm1-*)**$00FFFFFF)		;<C444/19nov86>
00010                          		OSLstEntry	sRsrc_Comm2, _sRsrc_Comm2	;category Communications
00010   8200 0180             1					DC.L	(sRsrc_Comm2<<24)+((_sRsrc_Comm2-*)**$00FFFFFF)		;<C444/19nov86>
00014                          		OSLstEntry	sRsrc_Comm3, _sRsrc_Comm3	;category Communications
00014   8300 01B4             1					DC.L	(sRsrc_Comm3<<24)+((_sRsrc_Comm3-*)**$00FFFFFF)		;<C444/19nov86>
00018                          		OSLstEntry	sRsrc_Comm4, _sRsrc_Comm4	;categ…

Showing first 20,000 characters of 73,433 total. Open the full document →

Subscribe to Text
mp.ls