Jump to content
IGNORED

Atari 1600XL (Aka- Shatki) BIOS


Curt Vendel

Recommended Posts

Here is the BIOS Listing for the Atari 1600XL - IBM PC Computer System:

 

I've spoken with Jim Tittsler the other night regarding the 1600XL and he remember's very little and unfortunately retained nothing, so I'm afraid that for the time being what I'm able to salvage from the mainframe restores currently appears to be all that there is so far of the elusive and now - no longer mythical - Atari 1600XL PC Computer.

 

 

Curt

 

 

 

 

The IBM Personal Computer MACRO Assembler 08-18-83 PAGE 1-1

BIOS for Atari Shakti 18Aug83

 

 

1 PAGE ,132

2 TITLE BIOS for Atari Shakti 18Aug83

3 ;;

4 ; BIOS -- RAM-based I/O system for Version 2.0 of MS-DOS

5 ;

6 ; Copyright 1983 Atari, Inc.

7 ; All rights reserved.

8 ;

9 ; Atari, Inc.

10 ; 60 East Plumeria Drive

11 ; San Jose, CA 95134

12 ; (408) 942-6655

13

14 ; 18Jul83 JWTittsler

15 ;

16

17 DATE MACRO

18 DB '18Aug83'

19 ENDM

20

21 ; This BIOS designed to be linked with the SYSINIT and SYSIMES modules

22 ; provided by Microsoft

23

24 = 0000 FALSE EQU 0

25 = FFFF TRUE EQU NOT FALSE

26

27 = VERBOSE EQU FALSE ;messages at strategy, and int entry and exit

28 = DSKVERB EQU FALSE ;lots of messages for disk debugging

29 = DSKERRM EQU TRUE ;detailed disk error messages

30

31 = ANSI EQU TRUE ;ANSI switch

32

33 = 0003 RETRIES EQU 3 ;number of tries for disk operations

34

35 = 0060 BIOSSEG EQU 060H ;I/O system segment

36

37 = 0010 ROM_VID EQU 10H

38 = 0011 ROM_EQU EQU 11H

39 = 0012 ROM_MEM EQU 12H

40 = 0013 ROM_DSK EQU 13H

41 = 0014 ROM_AUX EQU 14H

42 = 0016 ROM_KBD EQU 16H

43 = 0017 ROM_PRT EQU 17H

44 = 001A ROM_TIM EQU 1AH

45

46 = 0000 VID_MDE EQU 0 ;Set video MoDE

47 = 0002 VID_SCP EQU 2 ;Set Cursor Position

48 = 0003 VID_GCP EQU 3 ;Get Cursor Position

49 = 0006 VID_SCR EQU 6 ;SCRoll active page up

50 = 0009 VID_WCA EQU 9 ;Write Character & Attribute

51 = 000E VID_TTY EQU 14

52 = 0002 DSK_RD EQU 2

53 = 0003 DSK_WR EQU 3

The IBM Personal Computer MACRO Assembler 08-18-83 PAGE 1-2

BIOS for Atari Shakti 18Aug83

 

 

54 = 0001 AUX_PUT EQU 1

55 = 0002 AUX_GET EQU 2

56 = 0003 AUX_STA EQU 3

57 = 0000 KBD_RD EQU 0

58 = 0001 KBD_STAT EQU 1

59 = 0000 PRT_PUT EQU 0

60 = 0000 TIM_GET EQU 0

61 = 0001 TIM_SET EQU 1

62

63 = 0040 TIMER EQU 40H

64 = 0061 PORT_B EQU 61H

65

66 = 0007 BELL EQU 07H

67 = 0008 BS EQU 08H

68 = 000A LF EQU 0AH

69 = 000D CR EQU 0DH

70 = 001B ESC EQU 1BH

71

72 ; SYSINIT communication

73

74 EXTRN SYSINIT:FAR ;the entry point of SYSINIT

75 EXTRN CURRENT_DOS_LOCATION:WORD ;where the DOS is when SYSINIT called

76 EXTRN FINAL_DOS_LOCATION:WORD ;where I want SYSINIT to put the DOS

77 EXTRN DEVICE_LIST:DWORD ;pointer to the DEVICE list

78 EXTRN MEMORY_SIZE:WORD ;size in paragraphs of Physical memory

79 EXTRN DEFAULT_DRIVE:BYTE ;default Drive to use when system booted

80 EXTRN BUFFERS:BYTE ;number of default buffers

81 ; leave as is and SYSINIT uses only 2

82 PUBLIC RE_INIT ;re-entered after SYSINT

83

84 0000 IVEC SEGMENT AT 0H

85 = 001E DSK_PARAM_INT EQU 1EH ;INT used to point to disk parameters

86 = 0029 SPEC_INT EQU 29H ;INT used for SPECIAL Console output

87

88 0078 ORG DSK_PARAM_INT*4

89 0078 ???????? DSKPARMV DD ?

90

91 00A4 ORG SPEC_INT*4

92 00A4 ???????? CONSV DD ?

93

94 7E00 ORG 07E00H

95 7E00 0200 [ BOOTFAT DB 512 DUP (?) ;FAT buffer used by boot process

96 ??

97 ]

98

99 8000 IVEC ENDS

100

101 0000 CODE SEGMENT

102 ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE

103

104 0000 ORG 0 ;starts at an offset of zero

105

106 0000 E9 08A7 R INIT: JMP HWINIT

The IBM Personal Computer MACRO Assembler 08-18-83 PAGE 1-3

BIOS for Atari Shakti 18Aug83

 

 

107

108 SUBTTL Device driver tables

The IBM Personal Computer MACRO Assembler 08-18-83 PAGE 1-4

BIOS for Atari Shakti 18Aug83

Device driver tables

 

109 PAGE

110 ;-----------------------------------------------+

111 ; DWORD pointer to next device | 1 word offset

112 ; (-1,-1 if last device) | 1 word segement

113 ;-----------------------------------------------+

114 ; Device attribute WORD ; 1 word

115 ; Bit 15 = 1 for character devices ;

116 ; 0 for Block devices ;

117 ; ;

118 ; Character devices (Bit 15=1) ;

119 ; Bit 0 = 1 current sti device ;

120 ; Bit 1 = 1 current sto device ;

121 ; Bit 2 = 1 current NUL device ;

122 ; Bit 3 = 1 current Clock device ;

123 ; Bit 4 = 1 SPECIAL Console output ;

124 ; ;

125 ; Bit 13 = 1 for non IBM machines ;

126 ; 0 for IBM machines only ;

127 ; Bit 14 = 1 IOCTL control bit ;

128 ;-----------------------------------------------+

129 ; Device strategy pointer ; 1 word offset

130 ;-----------------------------------------------+

131 ; Device interrupt pointer ; 1 word offset

132 ;-----------------------------------------------+

133 ; Device name field ; 8 bytes

134 ; Character devices are any valid name ;

135 ; left justified, in a space filled ;

136 ; field ;

137 ; Block devices contain # of units in ;

138 ; the first byte ;

139 ;-----------------------------------------------+

140

141 0003 DEVSTART LABEL WORD

142 0003 CONDEV: ;header for device CON

143 0003 0016 R 0060 DW AUXDEV,BIOSSEG ;link to next device

144 0007 8013 DW 8013H ;attributes - console input

145 ; console output

146 ; SPECIAL console output avail

147 0009 00E4 R DW STRATEGY ;srategy entry point

148 000B 00EF R DW CON_INT ;interrupt entry point

149 000D 43 4F 4E 20 20 20 DB "CON " ;device name

150 20 20 20

151

152 0016 AUXDEV: ;header for device AUX

153 0016 0028 R 0060 DW PRNDEV,BIOSSEG

154 001A 8000 DW 8000H

155 001C 00E4 R DW STRATEGY

156 001E 00F6 R DW AUX_INT

157 0020 41 55 58 20 20 20 DB "AUX "

158 20 20

159

160 0028 PRNDEV: ;header for device PRN

161 0028 003A R 0060 DW TIMDEV,BIOSSEG

The IBM Personal Computer MACRO Assembler 08-18-83 PAGE 1-5

BIOS for Atari Shakti 18Aug83

Device driver tables

 

162 002C 8000 DW 8000H

163 002E 00E4 R DW STRATEGY

164 0030 00FC R DW PRN_INT

165 0032 50 52 4E 20 20 20 DB "PRN "

166 20 20

167

168 003A TIMDEV: ;header for device CLOCK

169 003A 004C R 0060 DW DSKDEV,BIOSSEG

170 003E 8008 DW 8008H

171 0040 00E4 R DW STRATEGY

172 0042 0102 R DW TIM_INT

173 0044 43 4C 4F 43 4B 20 DB "CLOCK "

174 20 20

175

176 004C DSKDEV: ;header for disk devices

177 004C FFFF FFFF DW -1,-1 ;last device

178 0050 0000 DW 0000H

179 0052 00E4 R DW STRATEGY

180 0054 0108 R DW DSK_INT

181 0056 02 DRVMAX DB 2 ;number of units

182 0057 07 [ DB 7 DUP (?)

183 ??

184 ]

185

186

187 SUBTTL Dispatch tables for each device

The IBM Personal Computer MACRO Assembler 08-18-83 PAGE 1-6

BIOS for Atari Shakti 18Aug83

Dispatch tables for each device

 

188 PAGE

189 005E 05F0 R DSKTBL: DW DSK_INIT ;0 - Initialize Driver

190 0060 061F R DW MEDIAC ;1 - Return current media code

191 0062 0632 R DW GET_BPB ;2 - Get Bios Parameter Block

192 0064 0140 R DW CMDERR ;3 - IOCTL Input

193 0066 0673 R DW DSK_RED ;4 - Block read

194 0068 013C R DW BUS_EXIT ;5 - (Not used, return busy flag)

195 006A 0147 R DW EXIT ;6 - Return status (Not used)

196 006C 0147 R DW EXIT ;7 - Flush input buffer (Not used)

197 006E 066C R DW DSK_WRT ;8 - Block write

198 0070 066C R DW DSK_WRT ;DSK_WRV ;9 - Block write with verify

199 0072 0147 R DW EXIT ;10 - Return output status

200 0074 0147 R DW EXIT ;11 - Flush output buffer (Not used)

201 0076 0147 R DW EXIT ;12 - IOCTL Output

202

203 0078 0147 R CONTBL: DW EXIT ;0 - Init (Not used)

204 007A 0147 R DW EXIT ;1 - Media check (Not used)

205 007C 0147 R DW EXIT ;2 - Get Bios Parameter Block (Not used)

206 007E 0140 R DW CMDERR ;3 - IOCTL Input

207 0080 016E R DW CON_READ ;4 - Character read (Destructive)

208 0082 015C R DW CON_RDND ;5 - Character read (Non-destructive)

209 0084 0147 R DW EXIT ;6 - Return status (Not used)

210 0086 0177 R DW CON_FLSH ;7 - Flush Input buffer

211 0088 0187 R DW CON_WRIT ;8 - Character write

212 008A 0187 R DW CON_WRIT ;9 - Character write with Verify

213 008C 0185 R DW CON_WRST ;10 - Character write status

214 008E 0147 R DW EXIT ;11 - Flush output buffer (Not used)

215 0090 0147 R DW EXIT ;12 - IOCTL Output

216

217 0092 0147 R AUXTBL: DW EXIT ;0 - Init (Not used)

218 0094 0147 R DW EXIT ;1 - Media check (Not used)

219 0096 0147 R DW EXIT ;2 - Get Bios Parameter Block (Not used)

220 0098 0140 R DW CMDERR ;3 - IOCTL Input

221 009A 0496 R DW AUX_READ ;4 - Character read (Destructive)

222 009C 048B R DW AUX_RDND ;5 - Character read (Non-destructive)

. . . . . . . . . . . . . . . . 1

 

Symbol Cross Reference (# is definition) Cref-1

Link to comment
Share on other sites

Very interesting stuff. I knew they were planning on using a 68000 or 80186 based processor into a 1600XL or 1800XL, but top management at Atari was going weary. Would have been interesting to see a PC that could run 6502 based programs that were possibly on the 800XL. It was not clear what this system would have been compatible with, 800XL, IBM PC, or both. Combining a 6502 and a 80186 would have made a good duel processing computer for that time.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...