memory.inc

     1:  JOBS0           := $0000
     2:  JOBS1           := $0001
     3:  JOBS2           := $0002
     4:  JOBS3           := $0003
     5:  JOBS4           := $0004
     6:  JOBS5           := $0005
     7:  TRACK0          := $0006
     8:  SECTOR0         := $0007
     9:  TRACK1          := $0008
    10:  SECTOR1         := $0009
    11:  TRACK2          := $000A
    12:  SECTOR2         := $000B
    13:  TRACK3          := $000C
    14:  SECTOR3         := $000D
    15:  TRACK4          := $000E
    16:  SECTOR4         := $000F
    17:  TRACK5          := $0010
    18:  SECTOR5         := $0011
    19:  DiskID0         := $0012
    20:  DiskID1         := $0014
    21:  HEADER          := $0016
    22:  ACTJOB          := $001B
    23:  WPSW            := $001C                        ; set to 1 if disk has been changed. This is determined by a change of the write protect switch, hence the name WPSW. (WPSW for drive 0, WPSW+1 for drive 1)
    24:  LWPT            := $001E
    25:  DRVST           := $0020
    26:  DRVTRK          := $0022
    27:  STAB            := $0024
    28:  SAVPNT          := $002E
    29:  BUFPNT          := $0030
    30:  HDRPNT          := $0032
    31:  GCRPNT          := $0034
    32:  GCRERR          := $0035
    33:  BYTCNT          := $0036
    34:  BITCNT          := $0037
    35:  BID             := $0038
    36:  HBID            := $0039
    37:  CHKSUM          := $003A
    38:  HINIB           := $003B
    39:  BYTE            := $003C
    40:  DRIVE           := $003D
    41:  CDRIVE          := $003E
    42:  JOBN            := $003F
    43:  TRACC           := $0040
    44:  NXTJOB          := $0041
    45:  NXTRK           := $0042
    46:  SECTR           := $0043
    47:  WORK            := $0044
    48:  JOB             := $0045
    49:  CTRACK          := $0046
    50:  DBID            := $0047
    51:  ACLTIM          := $0048
    52:  SAVSP           := $0049
    53:  STEPS           := $004A
    54:  TMP             := $004B
    55:  CSECT           := $004C
    56:  NEXTS           := $004D
    57:  NXTBF           := $004E
    58:  NXTPNT          := $004F
    59:  GCRFLG          := $0050
    60:  FTNUM           := $0051
    61:  BTAB            := $0052
    62:  GTAB            := $0056
    63:  AS              := $005E
    64:  AF              := $005F
    65:  ACLSTP          := $0060
    66:  RSTEPS          := $0061
    67:  NXTST           := $0062
    68:  MINSTP          := $0064
    69:  VNMI            := $0065
    70:  NMIFLG          := $0067
    71:  AUTOFG          := $0068
    72:  SECINC          := $0069
    73:  REVCNT          := $006A
    74:  USRJMP          := $006B
    75:  BMPNT           := $006D
    76:  T0              := $006F
    77:  T1              := $0070
    78:  T2              := $0071
    79:  T3              := $0072
    80:  T4              := $0073
    81:  T5              := $0074
    82:  IP              := $0075
    83:  LSNADR          := $0077
    84:  TLKADR          := $0078
    85:  LSNACT          := $0079
    86:  TLKACT          := $007A
    87:  ADRSED          := $007B
    88:  ATNPND          := $007C                ; 0 if there is no ATN pending, 1 if it is. This is used to tell the main loop that the IEC/IEEE bus must be processed.
    89:  ATNMOD          := $007D
    90:  PRGTRK          := $007E
    91:  DRVNUM          := $007F
    92:  TRACK           := $0080
    93:  SECTOR          := $0081
    94:  LINDX           := $0082
    95:  SA              := $0083
    96:  ORGSA           := $0084
    97:  DATA            := $0085
    98:  R0              := $0086
    99:  R1              := $0087
   100:  R2              := $0088
   101:  R3              := $0089
   102:  R4              := $008A
   103:  RESULT          := $008B
   104:  ACCUM           := $008F
   105:  DIRBUF          := $0094
   106:  ICMD            := $0096
   107:  MYPA            := $0097
   108:  
   109:  BUFFERS_COUNT   := 5                            ; number of buffers
   110:  
   111:  CONT            := $0098
   112:  BUFTAB0         := $0099                        ; address of buffer 0
   113:  BUFTAB1         := $009B                        ; address of buffer 1
   114:  BUFTAB2         := $009D                        ; address of buffer 2
   115:  BUFTAB3         := $009F                        ; address of buffer 3
   116:  BUFTAB4         := $00A1                        ; address of buffer 4
   117:  BUFTABCMD       := $00A3                        ; must be after BUFTAB4 due to the way it is initialized in the RESET routine
   118:  BUFTABERR       := $00A5                        ; must be after BUFTABCMD due to the way it is initialized in the RESET routine
   119:  BUF0            := $00A7
   120:  BUF1            := $00AE
   121:  RECL            := $00B5
   122:  RECH            := $00BB
   123:  NR              := $00C1
   124:  RS              := $00C7
   125:  SS              := $00CD
   126:  F1PTR           := $00D3
   127:  RECPTR          := $00D4
   128:  SSNUM           := $00D5
   129:  SSIND           := $00D6
   130:  RELPTR          := $00D7
   131:  ENTSEC          := $00D8
   132:  ENTIND          := $00DD
   133:  FILDRV          := $00E2
   134:  PATTYP          := $00E7
   135:  PATTYP_WILDCARD := $80
   136:  FILTYP          := $00EC
   137:  CHNRDY          := $00F2
   138:  EIOFLG          := $00F8
   139:  JOBNUM          := $00F9
   140:  LRUTBL          := $00FA
   141:  NODRV           := $00FF
   142:  DSKVER          := $0101
   143:  ZPEND           := $0103
   144:  
   145:  L0104           := $0104
   146:  L0146           := $0146
   147:  L0147           := $0147
   148:  L0148           := $0148
   149:  L01AF           := $01AF
   150:  L01B0           := $01B0
   151:  L01B1           := $01B1
   152:  L01B2           := $01B2
   153:  L01B3           := $01B3
   154:  L01B4           := $01B4
   155:  L01B5           := $01B5
   156:  .if CompileDrive >= DRIVE_1571CR
   157:  L01B6           := $01B6
   158:  .elseif CompileDrive >= DRIVE_1571
   159:  L01B6           := $01B4
   160:  .endif
   161:  
   162:  L01BB           := $01BB
   163:  
   164:  SP_END          := $0145
   165:  
   166:  CMDBUF          := $0200
   167:  CMDBUF_End      := $0228
   168:  CMDBUF_End2     := $022A
   169:  CMDNUM          := $022A                        ; storage for the command number in command processin
   170:  LINTAB          := $022B
   171:  CHNDAT          := $022E
   172:  LINTAB_End      := $0239
   173:  L023A           := $023A
   174:  L023B           := $023B
   175:  L023C           := $023C
   176:  L023D           := $023D
   177:  L023E           := $023E
   178:  
   179:  L0243           := $0243
   180:  LSTCHR          := $0244
   181:  TYPE            := $024A
   182:  STRSIZ          := $024B
   183:  TEMPSA          := $024C
   184:  CMD             := $024D
   185:  LSTSEC          := $024E
   186:  BUFUSE          := $024F
   187:  MDIRTY          := $0251
   188:  ENTFND          := $0253
   189:  DIRLST          := $0254
   190:  CMDWAT          := $0255                ; 1 if there is a command waiting in the command buffer (CMDBUF), otherwise 0.
   191:  LINUSE          := $0256
   192:  LBUSED          := $0257
   193:  REC             := $0258
   194:  TRKSS           := $0259
   195:  SECSS           := $025A
   196:  LSTJOB          := $025B
   197:  DSEC            := $0260
   198:  DIND            := $0266
   199:  ERWORD          := $026C
   200:  ERLED           := $026D
   201:  PRGDRV          := $026E
   202:  PRGSEC          := $026F
   203:  WLINDX          := $0270
   204:  RLINDX          := $0271
   205:  NBTEMP          := $0272
   206:  CMDSIZ          := $0274
   207:  CHAR            := $0275                        ; temporary storage for characters in commando processing
   208:  LIMIT           := $0276
   209:  F1CNT           := $0277
   210:  F2CNT           := $0278
   211:  F2PTR           := $0279
   212:  FILTBL          := $027A
   213:  FILTRK          := $0280
   214:  FILSEC          := $0285
   215:  PATFLG          := $028A                        ; flag for the pattern found:
   216:                                                  ; bit 0..6: number of wildcard s('*', '?') found
   217:                                                  ; bit 7:    wildcard and comma available
   218:  PATFLG_WILDCARD := $80
   219:  IMAGE           := $028B
   220:  DRVCNT          := $028C
   221:  DRVFLG          := $028D
   222:  LSTDRV          := $028E
   223:  FOUND           := $028F
   224:  DIRSEC          := $0290
   225:  DELSEC          := $0291
   226:  DELIND          := $0292
   227:  LSTBUF          := $0293
   228:  INDEX           := $0294
   229:  FILCNT          := $0295
   230:  TYPFLG          := $0296
   231:  MODE            := $0297
   232:  JOBRTN          := $0298
   233:  EPTR            := $0299
   234:  TOFF            := $029A
   235:  UBAM            := $029B
   236:  TBAM            := $029D
   237:  BAM             := $02A1
   238:  VIRQJOB1570     := $02A9
   239:  CNTMOTOR1570    := $02AB
   240:  MAXTRK1571      := $02AC
   241:  TMP1570         := $02AD
   242:  FLGMODE1570     := $02AF
   243:  L02B0           := $02B0
   244:  NAMBUF          := $02B1
   245:  ERRBUF          := $02D5
   246:  WBAM            := $02F9
   247:  NDBL            := $02FA
   248:  NDBH            := $02FC
   249:  PHASE           := $02FE
   250:  BUFFER0         := $0300
   251:  BUFFER1         := $0400
   252:  BUFFER2         := $0500
   253:  BUFFER3         := $0600
   254:  BUFFER4         := $0700
   255:  
   256:  RAM_PAGE1       := $0100
   257:  RAM_END         := $07FF
   258:  
   259:  ; general VIA definitions
   260:  
   261:  .include "../via.inc"
   262:  
   263:  VBC             := $1800
   264:  VBC_PB1         := VBC + VIA_O_PB
   265:  
   266:  .if CompileDrive >= DRIVE_1540
   267:  
   268:  VBC_PA1_01            := $01
   269:  VBC_PA1_02            := $02
   270:  VBC_PA1_04            := $04
   271:  VBC_PA1_20            := $20
   272:  VBC_PA1_80            := $80
   273:  
   274:  VBC_PB1_1540_DATAIN    := $01 ; DATA IN
   275:  VBC_PB1_1540_DATAOUT   := $02 ; DATA OUT
   276:  VBC_PB1_1540_CLOCKIN   := $04 ; CLOCK IN
   277:  VBC_PB1_1540_CLOCKOUT  := $08 ; CLOCK OUT
   278:  VBC_PB1_1540_ATNA      := $10 ; ATNA (if ATNA XOR ATNIN == 1 --> assert DATA, regardless of DATA IN. In this case, DATA OUT is 1 if read)
   279:  VBC_PB1_1540_DEVICENO0 := $20 ; hardware device no., bit 0
   280:  VBC_PB1_1540_DEVICENO1 := $40 ; hardware device no., bit 1
   281:  VBC_PB1_1540_ATNIN     := $80 ; ATN IN (also to CB2 - according to schematic: CA1, NOT CB2!)
   282:  
   283:  .else
   284:  
   285:  VBC_PB1_2031_DEVICENO0 := VBC_PB1_2031_ATNA
   286:  VBC_PB1_2031_DEVICENO1 := VBC_PB1_2031_NRFD
   287:  VBC_PB1_2031_ATNA      := $01 ; ATNA (O)
   288:  VBC_PB1_2031_NRFD      := $02 ; NRFD (I/O)
   289:  VBC_PB1_2031_NDAC      := $04 ; NDAC (I/O)
   290:  VBC_PB1_2031_EOI       := $08 ; EOI (I/O)
   291:  VBC_PB1_2031_TE        := $10 ; TE (Talk enable, O)
   292:  VBC_PB1_2031_HDSEL     := $20 ; @@@ TODO
   293:  VBC_PB1_2031_DAV       := $40 ; DAV (I/O)
   294:  VBC_PB1_2031_NATN      := $80 ; -ATN (I)
   295:  
   296:    ; also connected:
   297:    ; PA0-7: data bits DI1-DI8
   298:    ;
   299:    ; CA1 = -ATN (connected to PB7)
   300:    ; CB2 = "PLL SYN" (?)
   301:    ; CA2 = drive number selection: if 0, the drive numbers can be read; if 1, ATNA and NRFD are on the lines PB0 and PB1
   302:  
   303:  .endif
   304:  
   305:  VBC_PA1         := VBC + VIA_O_PA       ; unused on the (original) 1541; parallel input/output on 2031
   306:  VBC_DDRB1       := VBC + VIA_O_DDRB
   307:  VBC_DDRA1       := VBC + VIA_O_DDRA
   308:  VBC_T1LC1       := VBC + VIA_O_T1CL
   309:  VBC_T1HC1       := VBC + VIA_O_T1CH
   310:  VBC_T1LL1       := VBC + VIA_O_T1CLL
   311:  VBC_T1HL1       := VBC + VIA_O_T1CHL
   312:  VBC_T2LC1       := VBC + VIA_O_T2CL
   313:  VBC_T2HC1       := VBC + VIA_O_T2CH
   314:  VBC_SR1         := VBC + VIA_O_SR
   315:  VBC_ACR1        := VBC + VIA_O_ACR
   316:  VBC_PCR1        := VBC + VIA_O_PCR
   317:  VBC_IFR1        := VBC + VIA_O_IFR
   318:  VBC_IER1        := VBC + VIA_O_IEC
   319:  VBC_PAUNBUF1    := VBC + VIA_O_PA_NO_HS
   320:  
   321:  VDC             := $1C00
   322:    ; CB1: Unconnected
   323:    ; CB2: MODE, to OE of 325572-0
   324:    ; CA2: SYNC
   325:    ; CA1: Byte Ready (also to Overflow In of 6502)
   326:  VDC_PB2         := VDC + VIA_O_PB
   327:  VDC_PB2_STEPPER0    := $01 ; stepper motor bit 0
   328:  VDC_PB2_STEPPER1    := $02 ; stepper motor bit 1
   329:  VDC_PB2_DRIVE0MOTOR := $04 ; drive #0 motor
   330:  VDC_PB2_DRIVE0LED   := $08 ; drive #0 LED
   331:  VDC_PB2_DRIVE1LED   := $00 ; does not exist, but anyway...
   332:  VDC_PB2_WRITEPROTECT:= $10 ; write protect
   333:  VDC_PB2_BITRATE0    := $20 ; drive transfer rate bit 0
   334:  VDC_PB2_BITRATE1    := $40 ; drive transfer rate bit 1
   335:  VDC_PB2_SYNC        := $80 ; SYNC detected
   336:  
   337:  VDC_PB2_STEPPER     := VDC_PB2_STEPPER0 | VDC_PB2_STEPPER1
   338:  VDC_PB2_DRIVELEDS   := VDC_PB2_DRIVE0LED | VDC_PB2_DRIVE1LED
   339:  VDC_PB2_BITRATE     := VDC_PB2_BITRATE0 | VDC_PB2_BITRATE1
   340:  VDC_PA2         := VDC + VIA_O_PA
   341:  VDC_DDRB2       := VDC + VIA_O_DDRB
   342:  VDC_DDRA2       := VDC + VIA_O_DDRA
   343:  VDC_T1LC2       := VDC + VIA_O_T1CL
   344:  VDC_T1HC2       := VDC + VIA_O_T1CH
   345:  VDC_T1LL2       := VDC + VIA_O_T1CLL
   346:  VDC_T1HL2       := VDC + VIA_O_T1CHL
   347:  VDC_T2LC2       := VDC + VIA_O_T2CL
   348:  VDC_T2HC2       := VDC + VIA_O_T2CH
   349:  VDC_SR2         := VDC + VIA_O_SR
   350:  VDC_ACR2        := VDC + VIA_O_ACR
   351:  VDC_PCR2        := VDC + VIA_O_PCR
   352:  VDC_IFR2        := VDC + VIA_O_IFR
   353:  VDC_IER2        := VDC + VIA_O_IEC
   354:  VDC_PAUNBUF2    := VDC + VIA_O_PA_NO_HS
   355:  
   356:  
   357:  .if CompileDrive >= DRIVE_1570
   358:  
   359:  .include "../wd177x.inc"
   360:  
   361:  WD177x          := $2000
   362:  WD177x_COMMAND  := WD177x + WD177x_O_COMMAND
   363:  WD177x_STATUS   := WD177x + WD177x_O_STATUS
   364:  WD177x_TRACK    := WD177x + WD177x_O_TRACK
   365:  WD177x_SECTOR   := WD177x + WD177x_O_SECTOR
   366:  WD177x_DATA     := WD177x + WD177x_O_DATA
   367:  
   368:  .include "../cia.inc"
   369:  
   370:  CIA             := $4000
   371:  CIA_TALO        := CIA + CIA_O_TALO
   372:  CIA_TAHI        := CIA + CIA_O_TAHI
   373:  CIA_SDR         := CIA + CIA_O_SDR
   374:  CIA_ICR         := CIA + CIA_O_ICR
   375:  CIA_CRA         := CIA + CIA_O_CRA
   376:  CIA_CRB         := CIA + CIA_O_CRB
   377:  
   378:  .endif
   379:  
   380:  .if CompileDrive >= DRIVE_1571CR
   381:  CSG5710_4       := WD177x_COMMAND + 4
   382:  CSG5710_5       := WD177x_COMMAND + 5
   383:  
   384:  CSG5710_4010    := $4010
   385:  
   386:  .endif
   387:  
   388:  .if CompileDrive >= DRIVE_1570
   389:  INIT_VBC_DDRA1 = $66
   390:  .elseif CompileDrive >= DRIVE_1541C_01 .AND CompileDrive <> DRIVE_1541C_03
   391:  INIT_VBC_DDRA1 = $FE
   392:  .else
   393:  INIT_VBC_DDRA1 = $FF
   394:  .endif
   395:  
   396:  IEC_LISTEN      := $20
   397:  IEC_TALK        := $40
   398:  
   399:  IEEE_LISTEN     := IEC_LISTEN
   400:  IEEE_TALK       := IEC_TALK
   401:  IEEE_OPEN       := $60
Valid XHTML 1.0 Strict
memory.inc.html; generated on Fri Sep 18 21:44:55 2015 by ca65html
uz@cc65.org