อ่าน 13 นาที
แอนตี้
ตัวควบคุมอินเทอร์เฟซโทรทัศน์แบบตัวอักษรและตัวเลข [ 1 ] ( ANTIC ) เป็น LSI ASIC ที่ออกแบบมาเพื่อสร้าง กราฟิกคอมพิวเตอร์ 2 มิติ เพื่อแสดงบน หน้าจอ โทรทัศน์ หรือ จอแสดง ผล คอมพิวเตอร์
แอนตี้

ตัวควบคุมอินเทอร์เฟซโทรทัศน์แบบตัวอักษรและตัวเลข[ 1 ] ( ANTIC ) เป็นLSI ASICที่ออกแบบมาเพื่อสร้างกราฟิกคอมพิวเตอร์ 2 มิติเพื่อแสดงบน หน้าจอ โทรทัศน์หรือ จอแสดง ผล คอมพิวเตอร์
ภายใต้การกำกับดูแลของJay Minerชิปนี้ได้รับการออกแบบในปี 1977–1978 โดยJoe Decuir , Francois Michel และ Steve Smith [ 2 ]สำหรับคอมพิวเตอร์ Atari 8 บิตที่วางจำหน่ายครั้งแรกในปี 1979 ชิปนี้ได้รับการจดสิทธิบัตรโดยAtari, Inc.ในปี 1981 [ 3 ] ANTIC ยังถูกใช้ในเครื่องเล่นวิดีโอเกมAtari 5200 ปี 1982 ซึ่งมีฮาร์ดแวร์ส่วนใหญ่เหมือนกับคอมพิวเตอร์ 8 บิต
สำหรับทุกเฟรมของวิดีโอ ANTIC จะอ่านคำสั่งเพื่อกำหนดพื้นที่เล่นหรือกราฟิกพื้นหลัง จากนั้นส่งกระแสข้อมูลไปยัง ชิป CTIA หรือ GTIA ที่ทำงานร่วมกัน ซึ่งจะเพิ่มสีและซ้อน ทับสไป รต์ (ที่ Atari เรียกว่า "กราฟิกผู้เล่น/ขีปนาวุธ") คำสั่ง ANTIC แต่ละคำสั่งจะสอดคล้องกับเส้นสแกน ว่าง หรือโหมดกราฟิก 1 ใน 14 โหมดที่ใช้สำหรับแถบแนวนอนของจอแสดงผล ความสูงของแต่ละแถบขึ้นอยู่กับโหมด คำสั่งเหล่านี้ประกอบเป็นรายการแสดงผลในภาษาของ Atari ซึ่งระบุวิธีการสร้างจอแสดงผลทั้งหมดจากชุดของโหมดแต่ละโหมด
รายการแสดงผลจะระบุแหล่งที่มาของข้อมูลสำหรับแต่ละแถว สำหรับโหมดอักขระที่อยู่ฐานของบิตแมปอักขระจะถูกเก็บไว้ในรีจิสเตอร์บนชิปและสามารถเปลี่ยนแปลงได้ คำสั่งรายการแสดงผลสามารถเปิดใช้งานการเลื่อนละเอียดในแนวนอนและแนวตั้ง และทำเครื่องหมายว่าควรเกิดการขัดจังหวะ การขัดจังหวะช่วยให้สามารถเรียกใช้โค้ด 6502 ใดๆ ก็ได้ โดยปกติจะใช้เพื่อเปลี่ยนการตั้งค่าที่เกี่ยวข้องกับการแสดงผลในระหว่างเฟรม
นิตยสารคอมพิวเตอร์ Atari ชื่อ Anticได้รับการตั้งชื่อตามชิป[ 4 ]
คุณสมบัติ
รายการด้านล่างนี้อธิบายถึงความสามารถด้านฮาร์ดแวร์โดยพื้นฐานของ ANTIC ซึ่งหมายถึงฟังก์ชันการทำงานที่ตั้งใจไว้ของฮาร์ดแวร์นั้นเอง โดยไม่รวมถึงผลลัพธ์ที่ได้จากการขัดจังหวะที่ดำเนินการโดย CPU หรือเคอร์เนลการแสดงผลที่ทำให้เกิดการเปลี่ยนแปลงรีจิสเตอร์บ่อยครั้ง
ANTIC ใช้DMAในการอ่านโปรแกรมที่เรียกว่ารายการแสดงผลซึ่งระบุคุณลักษณะของสนามเล่นดังต่อไปนี้:
- โหมดกราฟิก 14 แบบที่แตกต่างกัน
- โหมดตัวละคร 6 แบบ
- การแสดงผลฟอนต์/สัญลักษณ์ 4 ประเภท
- โหมดบิตแมป 8 โหมด
- โหมดตัวละคร 6 แบบ
- ส่งออกเส้นสแกนว่างจำนวนแปรผันได้
- สามารถผสมผสานโหมดข้อความสนามเล่นและแผนที่บนหน้าจอได้
- สามารถปรับความสูงของหน้าจอได้จนถึงระดับโอเวอร์สแกนแนวตั้ง
- การเลื่อนแบบหยาบในแนวนอนและแนวตั้ง
- ระบุส่วนต่างๆ ของหน้าจอที่สามารถเลื่อนดูได้ละเอียดในแนวนอนและ/หรือแนวตั้ง
- เรียกใช้งานรูทีนขัดจังหวะที่ประมวลผลโดย CPU ซึ่งเรียกว่า "การขัดจังหวะรายการแสดงผล" (Display List Interrupt) ที่บรรทัดสแกนเฉพาะ (หรือเรียกว่า " การขัดจังหวะแรสเตอร์ " หรือ " การขัดจังหวะช่องว่างแนวนอน " ในระบบอื่นๆ)
- เมื่อสิ้นสุดเฟรมแสดงผล จะเรียกใช้รูทีนขัดจังหวะที่ประมวลผลโดย CPU ซึ่งเรียกว่า "การขัดจังหวะช่องว่างแนวตั้ง" (Vertical Blank Interrupt)
ฟังก์ชันอื่นๆ ที่ใช้รีจิสเตอร์:
- ความกว้างหน้าจอปรับได้จนถึงขอบแนวนอน
- กำหนดระยะการเคลื่อนที่สำหรับการเลื่อนละเอียดในแนวนอนและแนวตั้ง
- ให้ข้อมูลแบบเรียลไทม์เกี่ยวกับตำแหน่งแนวตั้งของลำแสงอิเล็กตรอนบนหน้าจอ
- อ่านค่าพิกัดแนวนอน/แนวตั้งจากปากกาแสง (เฉพาะจอ CRT)
- ชุดอักขระที่ยืดหยุ่นและปรับแต่งได้
- สามารถปรับการแสดงผลตัวอักษรวิดีโอแบบกลับด้านได้
- ตัวอักษรอาจถูกสะท้อนในแนวตั้ง
- ควบคุมการทำงานของอินเตอร์รัปต์ Vertical Blank และ Display List ที่เน้นการแสดงผล รวมถึงอินเตอร์รัปต์ปุ่ม Reset
- ทำการส่งข้อมูลแบบ DMA สำหรับCTIA/GTIAเพื่อสร้างกราฟิกผู้เล่น/ขีปนาวุธ (หรือที่เรียกว่าสไปรท์ )
- หน่วยความจำ RAM แบบไม่คงที่ ทำให้สามารถกำหนดตำแหน่งของ RAM สำหรับฟังก์ชันกราฟิกได้เกือบทุกที่ในช่วง แอดเดรสหน่วยความจำ 16 บิตซึ่งใช้ได้กับ:
- แสดงรายการต่างๆ
- ข้อมูลกราฟิกสนามเล่น
- แบบอักษรชุดอักขระ
- ข้อมูลกราฟิกผู้เล่น/ขีปนาวุธ
เวอร์ชัน
เรียงลำดับตามหมายเลขชิ้นส่วน
- C012296 — NTSC: ใช้ในคอมพิวเตอร์ Atari 400, 800 และ 1200XL และ Atari 5200 [ 5 ] [ 6 ]
- C014887 — PAL/SECAM: ใช้ในคอมพิวเตอร์ Atari 400 และ 800
- C021697 — NTSC: ใช้ในเครื่อง Atari รุ่น 600XL, 800XL และ XE
- C021698 — PAL/SECAM: ใช้ในเครื่อง Atari รุ่น XL และ XE
บริษัท Atari, Inc. ตั้งใจที่จะรวมฟังก์ชันของชิป ANTIC และ GTIA เข้าไว้ในวงจรรวมเดียว เพื่อลดต้นทุนการผลิตคอมพิวเตอร์ Atari และเครื่องเล่นเกม 5200 มีการพัฒนาวงจรต้นแบบดังกล่าวสองแบบ แต่ไม่มีแบบใดเข้าสู่กระบวนการผลิต
พินเอาต์

| ชื่อพิน | หมายเลข PIN | คำอธิบาย |
|---|---|---|
| A0 - A15 | 13, 12, 11, 10, 28, 27, 26, 25, 24, 23, 16, 22, 17, 18, 19, 20 | การอ่าน/เขียนที่อยู่หน่วยความจำ |
| AN0 – AN2 | 2, 3, 5 | อินเทอร์เฟซ ANTIC สำหรับ CTIA/GTIA |
| D0 – D7 | 30, 31, 32, 33, 40, 39, 38, 37 | อินพุต/เอาต์พุตของบัสข้อมูล |
| เอฟโอ0 | 35 | นาฬิกาอินพุตเฟส 0 ที่รวดเร็ว |
| หยุด | 9 | หยุดการส่งออก (ระงับการทำงานของ CPU ในขณะที่ ANTIC อ่านหน่วยความจำ) |
| แอลพี | 4 | การป้อนข้อมูลด้วยปากกาแสง |
| เอ็นเอ็มไอ | 7 | เอาต์พุตการขัดจังหวะ NMI ไปยัง CPU |
| พร้อมแล้ว | 15 | เอาต์พุตพร้อมใช้งาน ANTIC ดึงขาลงต่ำเพื่อหยุด CPU สำหรับการซิงค์ช่องว่างแนวนอน (WSYNC) |
| อ้างอิง | 8 | เอาต์พุตการรีเฟรช RAM |
| อาร์เอ็นเอ็มไอ | 6 | อินพุตการขัดจังหวะ NMI |
| อาร์เอสที | 36 | รีเซ็ตอินพุต ANTIC |
| ร/ว | 14 | ทิศทางการอ่าน/เขียน I/O |
| วีซีซี | 21 | กำลังไฟ +5 โวลต์ |
| วี เอสเอส | 1 | พื้น |
| Ø0 | 34 | เอาต์พุตสัญญาณนาฬิกาเฟส 0 |
| Ø2 | 29 | นาฬิกาอินพุตเฟส 2 |
ทะเบียน
คอมพิวเตอร์ Atari 8 บิตและเครื่องเล่นเกม Atari 5200 จะแมปชิป ANTIC ไปยังหน้าเลข ฐานสิบหก $D4xx
ANTIC มีรีจิสเตอร์แบบอ่าน/เขียน 15 ตัว สำหรับควบคุมพารามิเตอร์การแสดงผลของสนามเล่น, DMA สำหรับกราฟิกผู้เล่น/ขีปนาวุธ, การเลื่อนแบบละเอียด, อินพุตปากกาแสง และการขัดจังหวะ รีจิสเตอร์ฮาร์ดแวร์จะไม่ส่งค่าที่เขียนกลับไปเมื่ออ่านค่า ปัญหานี้ได้รับการแก้ไขโดย รีจิสเตอร์เงา ของระบบปฏิบัติการซึ่งถูกนำมาใช้ใน RAM ปกติ เพื่อเก็บค่าสุดท้ายที่เขียนลงในรีจิสเตอร์ รีจิสเตอร์เงาของระบบปฏิบัติการจะถูกคัดลอกจาก RAM ไปยังรีจิสเตอร์ฮาร์ดแวร์ในช่วงช่องว่างแนวตั้ง ดังนั้น การเขียนใดๆ ลงในรีจิสเตอร์ฮาร์ดแวร์ที่มีรีจิสเตอร์เงาที่สอดคล้องกัน จะถูกเขียนทับด้วยค่าของรีจิสเตอร์เงาในช่วงช่องว่างแนวตั้งครั้งถัดไป
รีจิสเตอร์ฮาร์ดแวร์สำหรับเขียนบางตัวไม่มีรีจิสเตอร์เงาที่สอดคล้องกัน แอปพลิเคชันสามารถเขียนค่าลงไปได้อย่างปลอดภัยโดยที่ค่าจะไม่ถูกเขียนทับระหว่างช่วงว่างแนวตั้ง หากแอปพลิเคชันต้องการทราบสถานะล่าสุดของรีจิสเตอร์ แอปพลิเคชันนั้นมีหน้าที่ต้องจดจำค่าที่เขียนลงไปเอง
นอกจากนี้ ยังมีรีจิสเตอร์เงาของระบบปฏิบัติการสำหรับรีจิสเตอร์อ่านบางตัว ซึ่งการอ่านค่าโดยตรงจากฮาร์ดแวร์ในขั้นตอนที่ไม่ทราบแน่ชัดของวงจรการแสดงผล อาจส่งผลให้ได้ผลลัพธ์ที่ไม่สอดคล้องกัน
| ชื่อ | คำอธิบาย | อ่าน/เขียน | ที่อยู่เลขฐานสิบหก | ที่อยู่เดือนธันวาคม | ชื่อเงา | แอดเดรส Shadow Hex | ที่อยู่ Shadow Dec |
|---|---|---|---|---|---|---|---|
| ดีเอ็มแอคทีแอล | การควบคุมการเข้าถึงหน่วยความจำโดยตรง | เขียน | 400 ดอลลาร์ | 54272 | เอสดีเอ็มซีแอล | $022F | 559 |
| ชาคท์ล | การควบคุมตัวละคร | เขียน | $D401 | 54273 | แผนภูมิ | $02F3 | 755 |
| DLISTL | ตัวชี้รายการแสดงผล (ไบต์ต่ำ) | เขียน | $D402 | 54274 | เอสดีแอลเอสทีแอล | 0230 เหรียญ | 560 |
| ดีลิสธ์ | ตัวชี้รายการแสดงผล (ไบต์สูง) | เขียน | $D403 | 54275 | เอสดีแอลเอสที | 0231 ดอลลาร์ | 561 |
| เอชเอสกรอลล์ | การเลื่อนแบบละเอียดแนวนอน | เขียน | $D404 | 54276 | |||
| วีสกรอลล์ | ม้วนละเอียดแนวตั้ง | เขียน | $D405 | 54277 | |||
| พีเอ็มเบส | ที่อยู่ฐานผู้เล่น/ขีปนาวุธ | เขียน | $D407 | 54279 | |||
| ฐาน CHBASE | ที่อยู่ฐานชุดอักขระ | เขียน | $D409 | 54281 | ซีเอชบีเอส | $02F4 | 756 |
| ดับเบิลยู ซิงค์ | รอการซิงค์แนวนอน | เขียน | $D40A | 54282 | |||
| วีเคานต์ | ตัวนับเส้นแนวตั้ง | อ่าน | $D40B | 54283 | |||
| พนมเปญ | ปากกาแสง ตำแหน่งแนวนอน | อ่าน | $D40C | 54284 | โคเปนเฮเกน | 0234 ดอลลาร์ | 564 |
| PENV | ปากกาแสงในแนวตั้ง | อ่าน | $D40D | 54285 | แอลพีเอ็นวี | 0235 เหรียญ | 565 |
| เอ็นเอ็มอีเอ็น | เปิดใช้งานการขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI) | เขียน | $D40E | 54286 | |||
| เอ็นเอ็มไอเรส | การรีเซ็ตการขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI) | เขียน | $D40F | 54287 | |||
| เอ็นเอ็มไอเอสที | สถานะการขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI) | อ่าน | $D40F | 54287 |
ในรายการทะเบียนรายบุคคลด้านล่างนี้ ให้ใช้คำอธิบายต่อไปนี้:
| ค่าบิต | คำอธิบาย |
|---|---|
| 0 | บิตต้องเป็น 0 |
| 1 | บิตต้องเป็น 1 |
| ? | บิตอาจมีค่าเป็น 0 หรือ 1 และถูกใช้เพื่อวัตถุประสงค์เฉพาะ |
| - | บิตนั้นไม่ได้ถูกใช้งาน หรือไม่ควรคาดหวังว่าจะมีค่าใดค่าหนึ่ง |
| ฉลาก | โปรดดูคำอธิบายเพิ่มเติมในภายหลังเกี่ยวกับวัตถุประสงค์ของส่วนนี้ |
DMACTL $D400 เขียน
SHADOW: SDMCTL $022F
การควบคุมการเข้าถึงหน่วยความจำโดยตรง (DMA)
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| - | - | แสดงรายการ DMA | ความละเอียดขีปนาวุธของผู้เล่น | ผู้เล่น DMA | ขีปนาวุธ DMA | ความกว้างของสนามเล่น | ความกว้างของสนามเล่น |
DMACTL ควบคุมพฤติกรรม DMA ของ ANTIC สำหรับกราฟิก Playfield และ Player-Missile ( sprite )
ค่าบิต ความกว้างของพื้นที่เล่น :
| บิตความกว้างของสนามเล่น [1:0] | คำอธิบาย | ขนาด |
|---|---|---|
| 0 0 = 00 ดอลลาร์ | ปิดใช้งานสนามเล่น | |
| 0 1 = 01 ดอลลาร์ | สนามเล่นแคบ | นาฬิกาสี 128 เรือน/พิกเซลความละเอียดสูง 256 พิกเซล |
| 1 0 = 02 ดอลลาร์ | สนามเล่นปกติ | นาฬิกาสี 160 เรือน/พิกเซลความละเอียดสูง 320 พิกเซล |
| 1 1 = 03 ดอลลาร์ | สนามเล่นกว้างขวาง | นาฬิกาสี 192 เรือน/พิกเซลความละเอียดสูง 384 พิกเซล |
โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับบิต Display List DMA ที่เกี่ยวข้องกับการแสดงผล Playfield ด้วย
ค่าบิต DMA ของผู้เล่น/ขีปนาวุธ :
| บิต DMA ของผู้เล่น/ขีปนาวุธ [3:2] | คำอธิบาย |
|---|---|
| 0 0 = 00 ดอลลาร์ | ปิดใช้งาน DMA ของผู้เล่นและขีปนาวุธ |
| 0 1 = 04 ดอลลาร์ | เปิดใช้งาน Missile DMA |
| 1 0 = 8 ดอลลาร์ | เปิดใช้งาน Player DMA |
| 1 1 = 0C | เปิดใช้งาน Player และ Missile DMA |
คุณสมบัติ Player/Missile DMA ของ ANTIC อ่านไบต์จากหน่วยความจำและส่งข้อมูลเพื่ออัปเดตรีจิสเตอร์รูปแบบกราฟิก GRAFP0, GRAFP1, GRAFP2, GRAFP3 และ GRAFM ของCTIA/GTIA ทำให้ CPU ไม่ต้องสร้างกราฟิก Player/Missile ( สไปรท์ ) บิตเหล่านี้เปิดใช้งานการส่งข้อมูล Player และข้อมูล Missile ของ ANTIC ไปยัง CTIA/GTIA นอกจากนี้ CTIA/GTIA ต้องได้รับการกำหนดค่าให้รับข้อมูลผ่าน รีจิสเตอร์ GRACTLเพื่อให้ Player/Missile DMA ทำงานได้ตามที่คาดหวัง
เมื่อเปิดใช้งาน Player DMA แล้ว Missile DMA จะทำงานโดยอัตโนมัติเพื่อรักษาความสม่ำเสมอของจังหวะเวลา DMA แต่ข้อมูลจะไม่ถูกส่งไปยังรีจิสเตอร์ GRAFM ของ Missile
เมื่อเปิดใช้งาน การถ่ายโอนข้อมูลแบบ DMA ของผู้เล่น/ขีปนาวุธจะเกิดขึ้นในทุกบรรทัดสแกนในจอแสดงผลที่มองเห็นได้ ตั้งแต่บรรทัดสแกนที่ 8 ถึง 247 ดังนั้น ข้อมูลผู้เล่น/ขีปนาวุธในแผนที่หน่วยความจำ (ดู PMBASEของ ANTIC ) ที่อยู่เหนือและใต้จำนวนบรรทัดสแกนเหล่านั้นจึงไม่ได้ถูกใช้งานและไม่แสดงผล
ค่าบิต ความละเอียดของผู้เล่น/ขีปนาวุธ :
- $00 - ความละเอียดสองบรรทัด ANTIC จะอัปเดตที่อยู่การดึงข้อมูล DMA ทุกๆ สองบรรทัดสแกน และอัปเด ตรีจิสเตอร์รูปแบบกราฟิกผู้เล่น/ขีปนาวุธ CTIA/GTIAทุกบรรทัดสแกน เพื่อให้รูปแบบไบต์ของผู้เล่น/ขีปนาวุธแต่ละตัวมีความสูงสองบรรทัดสแกน เมื่อเปิดใช้งานความละเอียดสองบรรทัดรีจิสเตอร์VDELAY ของ CTIA/GTIA ($D01C hex /53276 dec ) จะทำงานโดยการมาสก์การอัปเดตในบรรทัดสแกนคู่ ซึ่งส่งผลให้รูปแบบบิตของผู้เล่นและขีปนาวุธแต่ละตัวเลื่อนลงหนึ่งบรรทัดสแกน
- 10 ดอลลาร์ - ความละเอียดแบบบรรทัดเดียว การดึงข้อมูล DMA และการอัปเดตรีจิสเตอร์ผู้เล่น/ขีปนาวุธเกิดขึ้นในแต่ละบรรทัดสแกน รีจิสเตอร์CTIA/GTIA VDELAY ($D01C hex /53276 dec ) ซึ่งปิดกั้นการอัปเดตในบรรทัดสแกนคู่ จะลดความละเอียดแบบบรรทัดเดียวลงเหลือความละเอียดแบบสองบรรทัด
การอัปเดตรีจิสเตอร์รูปแบบ ANTIC DMA และ Player/Missile เกิดขึ้นในแต่ละบรรทัดการสแกนโดยไม่คำนึงถึงความละเอียด เมื่อใช้ความละเอียดแบบสองบรรทัด หน่วยความจำ Player/Missile สามารถถูกแก้ไขได้ระหว่างการดึงข้อมูล DMA ที่ซ้ำซ้อน ซึ่งจะทำให้รูปแบบที่ส่งไปยังรีจิสเตอร์ GRAF* เปลี่ยนแปลงไป และทำให้ Player/Missiles ดูเหมือนมีความละเอียดแบบบรรทัดเดียว
แสดงรายการค่าบิต DMA:
- $00 - ปิดใช้งานการแสดงรายการ
- $20 - เปิดใช้งานการแสดงรายการ
การแสดงผล Playfield จำเป็นต้องเปิดใช้งาน Display List DMA และระบุความกว้างของ Playfield หากค่าใดค่าหนึ่งเป็นศูนย์ จะไม่มีการสร้างการแสดงผล Playfield
CHACTL $D401 เขียน
เงา: แผนภูมิ $02F3
การควบคุมตัวละคร
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | วิดีโอสะท้อน | วิดีโออินเวอร์ส | วิดีโอว่างเปล่า |
CHACTL ควบคุมการแสดงผลตัวอักษร
ค่าบิตควบคุมอักขระจะดำเนินการดังต่อไปนี้:
| คุณสมบัติ | ค่าบิต | คำอธิบาย |
|---|---|---|
| วิดีโอว่างเปล่า | 01 ดอลลาร์ | ตัวอักษรวิดีโอแบบกลับด้านจะแสดงเป็นช่องว่างเปล่า |
| วิดีโออินเวอร์ส | 02 ดอลลาร์ | ตัวอักษรที่แสดงผลแบบกลับสีจะแสดงผลแบบกลับสี (ค่าเริ่มต้น) |
| วิดีโอสะท้อน | 04 ดอลลาร์ | ตัวอักษรทั้งหมดจะแสดงผลแบบกลับสีในแนวตั้ง |
บิต CHACTL Video Inverse และ Video Blank มีผลต่อการแสดงอักขระในโหมดข้อความ ANTIC โหมด 2 และ 3 ที่มีการตั้งค่าบิตสูง (อักขระ $80 ถึง $FF) การสลับค่าของบิต CHACTL จะทำให้สามารถกระพริบหรือปิดการแสดงผลอักขระเหล่านี้ทั่วทั้งหน้าจอได้
การเปิดใช้งาน Video Inverse และ Video Blank พร้อมกัน จะทำให้ตัวอักษรวิดีโอแสดงผลกลับด้านเป็นช่องว่างเปล่าแบบกลับด้าน บิต Video Inverse และ Video Blank ทำงานในโหมด ANTIC 2 และ 3 เท่านั้น และไม่มีผลต่อโหมดข้อความอื่นๆ 4, 5, 6 และ 7
บิต Video Reflect มีผลต่อโหมดข้อความทั้งหมด Video Reflect มีประโยชน์ในสถานการณ์ที่ต้องการเอฟเฟกต์การสะท้อนภาพโดยไม่ต้องกำหนดชุดอักขระใหม่ การใช้งานที่เหมาะสมคือเกมไพ่ที่แสดงหน้าไพ่ที่ถูกต้องโดยแสดงดอกไพ่กลับหัว เนื่องจากบิตนี้จะสะท้อนข้อมูลสัญลักษณ์ในแนวตั้งก่อนนำไปใช้ เอฟเฟกต์จึงดูไม่สอดคล้องกันสำหรับส่วนห้อยของตัวอักษรในโหมด ANTIC Mode 3 โดยไบต์สัญลักษณ์ที่ 6 และ 7 จะปรากฏที่ด้านล่างของพื้นที่ส่วนห้อย
DLISTL/DLISTH $D402/$D403 เขียน
SHADOW: SDLSTL/SDLSTH $0230/$0231
แสดงรายการตัวชี้
| บิตที่ 15 | บิตที่ 14 | บิตที่ 13 | บิตที่ 12 | บิตที่ 11 | บิตที่ 10 | บิต 9 | บิต 8 | บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
ANTIC เริ่มดำเนินการรายการแสดงผลที่ชี้โดยแอดเดรส 16 บิตในรีจิสเตอร์ DLISTL/DLISTH (D402-D403 เลขฐานสิบหก / 54274-54275 เลขฐานสิบ ) รีจิสเตอร์แอดเดรสจะได้รับการอัปเดตในระหว่างการดำเนินการรายการแสดงผลโดย JMP (Jump) และ JVB (Jump and wait for Vertical Blank) ของ ANTIC นอกจากนี้ แอดเดรสยังได้รับการอัปเดตโดยรูทีน Vertical Blank Interrupt (VBI) ของระบบปฏิบัติการโดยใช้ค่าในรีจิสเตอร์เงา SDLSTL/SDLSTH (0230-0231 เลขฐานสิบหก / 560-561 เลขฐานสิบ )
เมื่อเปิดใช้งานการขัดจังหวะ Vertical Blank ของระบบปฏิบัติการ การอัปเดตโดยตรงไปยังรีจิสเตอร์ ANTIC DLIST โดย CPU หรือคำสั่ง ANTIC Jump จะถูกเขียนทับโดยระบบปฏิบัติการในระหว่างการขัดจังหวะ Vertical Blank ครั้งถัดไปด้วยค่าในรีจิสเตอร์เงา ดังนั้น การพลิกหน้าซึ่งดำเนินการโดยDisplay Listที่ชี้ไปยังDisplay List ถัดไป ในลำดับจะไม่ทำงานตามที่คาดไว้ เว้นแต่จะปิดใช้งานการขัดจังหวะ Vertical Blank
HSCROL $D404 เขียน
การเลื่อนแบบละเอียดแนวนอน
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| — | — | — | — | ? | ? | ? | ? |
รีจิสเตอร์นี้ระบุระยะห่างของการเลื่อนละเอียดแนวนอนในหน่วยนาฬิกาสี เฉพาะ 4 บิตล่างสุดเท่านั้นที่มีความสำคัญ ช่วงค่า 16 นาฬิกาสีช่วยให้ ANTIC สามารถเลื่อนข้อความโหมด 2 ได้สี่ตัวอักษร และข้อความโหมด 6 ได้สองตัวอักษรก่อนที่จะต้องใช้การเลื่อนแบบหยาบ
เมื่อเปิดใช้งานการเลื่อนแนวนอนสำหรับบรรทัดโหมด ANTIC จะดึงขนาดที่เพิ่มขึ้นถัดไปที่มากกว่าความกว้างหน้าจอปัจจุบัน เพื่อจัดเตรียมบัฟเฟอร์ข้อมูลที่อยู่ภายใต้การควบคุมการเลื่อนแนวนอน เมื่อแสดงผลแบบความกว้างแคบ ANTIC จะดึง RAM หน้าจอที่จำเป็นสำหรับความกว้างปกติ ในทำนองเดียวกัน สำหรับความกว้างปกติ ANTIC จะดึง RAM หน้าจอที่จำเป็นสำหรับความกว้างกว้าง
ANTIC จะบัฟเฟอร์ข้อมูลไม่กี่ไบต์แรกที่อ่านจากหน่วยความจำหน้าจอ ซึ่งเพียงพอต่อช่วงการเคลื่อนไหวของสัญญาณนาฬิกาสี 16 สี (สองถึงสี่ไบต์ ขึ้นอยู่กับโหมดการแสดงผล) ค่า HSCROL ระบุจำนวนสัญญาณนาฬิกาสีที่จะส่งออกจากข้อมูลที่บัฟเฟอร์ไว้ โดยเริ่มจากสัญญาณนาฬิกาสีสุดท้าย (ขวาสุด) ของไบต์ที่บัฟเฟอร์ไว้ล่าสุด และไล่ไปทางซ้าย เมื่อ HSCROL เป็น 0 จะไม่มีสัญญาณนาฬิกาสีส่งออกจากบัฟเฟอร์ ดังนั้นไบต์แรกที่แสดงบนหน้าจอจะเป็นไบต์แรกหลังจากข้อมูลที่บัฟเฟอร์ไว้ เมื่อ HSCROL เพิ่มขึ้น สัญญาณนาฬิกาสีจากส่วนท้าย (ด้านขวา) ของข้อมูลที่บัฟเฟอร์ไว้จะถูกเพิ่มเข้าไปที่ขอบด้านซ้ายของจอแสดงผล ทำให้การเลื่อนแบบละเอียดเคลื่อนเนื้อหาบนหน้าจอไปทางขวา
โหมด ANTIC F (ความละเอียดสูง, พิกเซลนาฬิกาสี 1/2) สามารถเลื่อนได้ครั้งละสองพิกเซลเท่านั้น เนื่องจาก HSCROL ระบุถึงนาฬิกาสี
โหมด ANTIC ที่ใช้การตีความสี GTIAทางเลือกจะต้องเลื่อนด้วย พิกเซล GTIA ทั้งหมด (นาฬิกาสีสองชุด) ควรใช้เฉพาะค่าคู่เท่านั้นเพื่อให้แน่ใจว่าการเลื่อนถูกต้อง ค่าคี่ของ HSCROL จะเปลี่ยนสตรีมพิกเซลไปเป็นสถานะอื่นที่GTIAจะตีความว่าเป็นสีที่แตกต่างกัน
แตกต่างจากแพลตฟอร์มอื่นๆ การเลื่อนหน้าจอแนวนอนของ Atari มีความสม่ำเสมอทางด้านภาพและปราศจากสิ่งผิดปกติอย่างการ "กระพริบ" ของสี เนื่องจากขนาดพิกเซลของ Atari ตรงกับจังหวะเวลาของนาฬิกาสีที่จำเป็นสำหรับสีที่แม่นยำ
VSCROL $D405 เขียน
ม้วนละเอียดแนวตั้ง
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| — | — | — | — | ? | ? | ? | ? |
รีจิสเตอร์นี้ระบุระยะการเลื่อนละเอียดในแนวตั้งเป็นจำนวนบรรทัดสแกน บิต 4 บิตล่างสุดมีความสำคัญ แต่ค่าการเลื่อนในแนวตั้งควรอยู่ในช่วงตั้งแต่ 0 ถึงความสูงของบรรทัดสแกนในโหมด ANTIC ลบ 1 การเลื่อนไกลกว่าจำนวนบรรทัดสแกนในโหมด ANTIC จะทำให้เกิดข้อมูลซ้ำซ้อน ทำให้การเลื่อนละเอียดไม่ต่อเนื่อง (อย่างไรก็ตาม นี่อาจถูกนำมาใช้เป็นพฤติกรรมที่สามารถใช้ประโยชน์ได้เช่นกัน)
พื้นที่การเลื่อนแนวตั้งถูกกำหนดโดยการตั้งค่าบิต VS ($20) บนชุดบรรทัดโหมด ANTIC ในรายการแสดงผล บรรทัดโหมดแรกที่ไม่ได้ตั้งค่าบิต VS จะกลายเป็นจุดสิ้นสุดของพื้นที่การเลื่อน และใช้เป็นบรรทัดบัฟเฟอร์เพื่อส่งข้อมูลใหม่ที่จะเลื่อนขึ้นไปที่ด้านล่างของพื้นที่การเลื่อน
ค่าการเลื่อนแนวตั้ง (Vertical scroll value) ระบุหมายเลขบรรทัดสแกนที่จะเริ่มต้นการแสดงผลในบรรทัดโหมดแรก และยังใช้เป็นหมายเลขบรรทัดสแกนที่จะสิ้นสุดการแสดงผลในบรรทัดโหมดสุดท้าย (บรรทัดที่ไม่มีบิต VS ตั้งค่าไว้)
ตัวอย่าง: เมื่อใช้โหมด ANTIC แปดบรรทัดสแกน (โหมดข้อความ 2, 4 หรือ 6) โดยตั้งค่าบิต VS ไว้ที่สองบรรทัดโหมดที่อยู่ติดกัน พื้นที่การเลื่อนจะประกอบด้วยสามบรรทัดโหมด—บรรทัดที่สามในพื้นที่การเลื่อนคือบรรทัดโหมดแรกที่พบโดยไม่ได้ตั้งค่าบิต VS เมื่อไม่ได้ตั้งค่าการเลื่อนแนวตั้งในรายการแสดงผล บรรทัดโหมดทั้งสามจะส่งผลให้แสดงบรรทัดสแกน 24 บรรทัด เมื่อตั้งค่าบิต VS ใน คำสั่ง โหมดรายการแสดงผลตามที่อธิบายไว้ และตั้งค่า VSCROL เป็น 2 บรรทัดโหมดแรกในพื้นที่จะเริ่มแสดงที่บรรทัดสแกน 2 โดยแสดงบรรทัดสแกน 2 ถึง 7 (หกบรรทัดสแกน หรือ 8 - VSCROL) บรรทัดโหมดที่สองจะแสดงอย่างสมบูรณ์ (แปดบรรทัดสแกน) และบรรทัดโหมดสุดท้ายจะสิ้นสุดที่บรรทัดสแกน 2 โดยแสดงบรรทัดสแกน 0 ถึง 2 (สามบรรทัดสแกน หรือ VSCROL + 1) จำนวนบรรทัดสแกนทั้งหมดที่แสดงในพื้นที่การเลื่อนคือ 6 + 8 + 3 = 17 บรรทัดสแกน
เนื่องจากการเลื่อนแบบละเอียดนั้นอิงตามเส้นสแกน ไม่ใช่ความสูงของพิกเซล และการเคลื่อนที่ของพื้นที่เลื่อนทำได้ง่ายๆ โดยการข้ามเส้นสแกนจากบรรทัดโหมดแรกและเพิ่มเส้นสแกนไปยังบรรทัดโหมดสุดท้าย จึงสามารถใช้โหมดกราฟิกที่แตกต่างกันภายในพื้นที่เลื่อนได้ เพียงแต่ต้องระมัดระวังเพิ่มเติมในการกำหนดจำนวนเส้นสแกนที่สามารถเลื่อนได้สำหรับบรรทัดโหมดแรกและสุดท้ายในพื้นที่เลื่อนปัจจุบัน
บรรทัดโหมดว่างไม่สามารถอยู่ภายในบริเวณการเลื่อนได้ เนื่องจากคำสั่งบรรทัดโหมดว่างโดยธรรมชาติแล้วไม่มีบิตตัวปรับการเลื่อนแนวตั้ง (คำสั่งบรรทัดโหมดว่างระบุจำนวนบรรทัดว่างโดยใช้บิต 7 ถึง 5 ซึ่งทำหน้าที่เป็นตัวปรับ LMS, HS และ VS สำหรับคำสั่งโหมดสนามเล่น "ปกติ") อย่างไรก็ตาม คำสั่งโหมดว่างสามารถใช้เพื่อสิ้นสุดบริเวณการเลื่อนได้ และยังคงอยู่ภายใต้การเปลี่ยนแปลงความสูงของเส้นสแกนที่คาดไว้ตามค่าการเลื่อนแนวตั้ง
PMBASE $D407 เขียน
ที่อยู่ฐานขีปนาวุธของผู้เล่น
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
ค่านี้ระบุหมายเลขหน้าของที่อยู่ฐานสำหรับกราฟิกผู้เล่น/ขีปนาวุธ เมื่อกราฟิกผู้เล่น/ขีปนาวุธที่มีความละเอียดสองบรรทัดทำงาน ค่า PMBASE ต้องเริ่มต้นที่ขอบเขต 1K เมื่อกราฟิกผู้เล่น/ขีปนาวุธที่มีความละเอียดบรรทัดเดียวทำงาน ค่า PMBASE ต้องเริ่มต้นที่ขอบเขต 2K
CHBASE $D409 เขียน
SHADOW: CHBAS $02F4
ที่อยู่ฐานอักขระ
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
ค่านี้ระบุหน้าของที่อยู่ฐานสำหรับชุดอักขระ โหมด ANTIC 2, 3, 4 และ 5 ใช้ชุดอักขระ 128 ตัว และกำหนดให้ค่า CHBASE เริ่มต้นที่ขอบเขต 1K โหมด ANTIC 6 และ 7 ใช้ชุดอักขระ 64 ตัว ดังนั้นค่า CHBASE ต้องเริ่มต้นที่ขอบเขต 512 ไบต์
ค่าเริ่มต้นปกติคือ $E0 hex /224 decสำหรับชุดอักขระใน ROM ที่ $E000 hex / 57344 dec
WSYNC $D40A เขียน
รอการซิงค์แนวนอน
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
รีจิสเตอร์นี้ช่วยให้โปรแกรมซิงโครไนซ์กับจอแสดงผล การเขียนค่าลงในรีจิสเตอร์นี้จะหยุดโปรแกรม 6502 จนถึงสิ้นสุดบรรทัดสแกนปัจจุบัน พฤติกรรมนี้มักใช้ในระหว่างการขัดจังหวะรายการแสดงผล (Display List Interrupts) เพื่อให้การเปลี่ยนจากบรรทัดสแกนหนึ่งไปยังอีกบรรทัดหนึ่งเป็นไปอย่างราบรื่น ค่าที่เขียนลงไปนั้นไม่สำคัญ
VCOUNT $D40B อ่าน
ตัวนับเส้นแนวตั้ง
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
รีจิสเตอร์นี้ใช้ติดตามเส้นสแกนที่กำลังสร้างอยู่ ค่าที่ส่งคืนคือค่าเส้นสแกนจริงหารด้วย 2 โดยจะรวมเส้นว่างที่สร้างขึ้นในช่วงเริ่มต้นของการแสดงผลด้วย ค่าสำหรับระบบ NTSC จะอยู่ในช่วง 0 ถึง 130 และสำหรับระบบ PAL จะอยู่ในช่วง 0 ถึง 155 ค่านี้มีประโยชน์ในระหว่างการขัดจังหวะรายการแสดงผล (Display List Interrupts) เพื่อระบุตำแหน่งแนวตั้งของหน้าจอ
PENH $D40C อ่าน
SHADOW: LPENH $0234
ปากกาแสง ตำแหน่งแนวนอน
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
ข้อมูลนี้ประกอบด้วยตำแหน่งของนาฬิกาสีแนวนอนเมื่อกดไกปืนแสง/ปากกาแสง แนะนำให้ใช้รีจิสเตอร์เงาเป็นแหล่งข้อมูลในการอ่านข้อมูลนี้ เนื่องจากจะมีการอัปเดตระหว่างช่วงว่างแนวตั้ง ซึ่งรับประกันผลลัพธ์ที่สม่ำเสมอและเชื่อถือได้ โปรแกรมควรหลีกเลี่ยงการอ่านรีจิสเตอร์ฮาร์ดแวร์โดยตรง เว้นแต่โปรแกรมจะแน่ใจว่าอ่านรีจิสเตอร์ในเวลาที่ค่าถูกต้อง ปืนแสงสำหรับ Atari ทำงานในลักษณะเดียวกับปากกาแสง แต่เพิ่มตัวขยายแสงแบบออปติคอล ทำให้สามารถอ่านหน้าจอได้จากระยะไกลขึ้นอุปกรณ์ป้อนข้อมูล ปากกาแสง/ปืนแสง ต้องใช้จอ CRT แบบดั้งเดิมที่ใช้ลำแสงอิเล็กตรอนแบบสแกน ปากกาแสง/ปืนแสงไม่สามารถใช้งานร่วมกับทีวีและจอภาพ LCD รุ่นใหม่ได้
PENV $D40D อ่าน
SHADOW: LPENV $0235
ปากกาแสงในแนวตั้ง
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
ส่วนนี้เก็บค่า VCOUNT ที่บันทึกไว้เมื่อกดปุ่มไกปืนแสง/ปากกาแสง แนะนำให้ดึงข้อมูลจากรีจิสเตอร์เงา เนื่องจากจะมีการอัปเดตข้อมูลระหว่างช่วงว่างแนวตั้ง ทำให้ได้ผลลัพธ์ที่สม่ำเสมอและเชื่อถือได้ โปรแกรมควรหลีกเลี่ยงการอ่านรีจิสเตอร์ฮาร์ดแวร์โดยตรง เว้นแต่จะแน่ใจว่าอ่านรีจิสเตอร์ในเวลาที่ค่าถูกต้อง ปืนแสงสำหรับ Atari ทำงานเหมือนกับปากกาแสง แต่มีเลนส์ขยายภาพเพิ่มเติม ทำให้สามารถอ่านหน้าจอได้จากระยะไกลขึ้น อุปกรณ์ป้อนข้อมูลปากกาแสง/ปืนแสงต้องใช้จอ CRT แบบดั้งเดิมที่ใช้ลำแสงอิเล็กตรอนแบบสแกน ปากกาแสง/ปืนแสงไม่สามารถใช้งานร่วมกับทีวีและจอ LCD รุ่นใหม่ได้
NMIEN $D40E เขียน
เปิดใช้งาน การขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI)
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ดีแอลไอ | วีบีไอ | รีเซ็ต | - | - | - | - | - |
NMIEN เปิดใช้งานการขัดจังหวะที่ไม่สามารถปิดกั้นได้ ค่าบิตมีดังนี้:
| คุณสมบัติ | ค่าบิต | คำอธิบาย |
|---|---|---|
| รีเซ็ต | 20 ดอลลาร์ | เปิดใช้งานการขัดจังหวะปุ่มรีเซ็ต |
| วีบีไอ | 40 ดอลลาร์ | เปิดใช้งานการขัดจังหวะช่องว่างแนวตั้ง |
| ดีแอลไอ | 80 เหรียญสหรัฐ | เปิดใช้งานการขัดจังหวะรายการแสดงผล |
ระบบปฏิบัติการจะตั้งค่า NMIEN เป็นค่าเริ่มต้น $40 hex /64 decในระหว่างขั้นตอนการเปิดเครื่อง รูทีนบริการ NMI จะตรวจสอบค่า $FFFA hex /65530 dec ก่อน เพื่อหาสาเหตุ จากนั้นจึงส่งการควบคุมไปยังรูทีนบริการการขัดจังหวะ
ดีแอลไอ:
หากบิต DLI ของ NMIEN ถูกตั้งค่าเมื่อ ANTIC พบ คำสั่ง Display Listที่มีบิตตัวดัดแปลง DLI ถูกตั้งค่า ANTIC จะเรียกใช้ DLI ในบรรทัดสแกนสุดท้ายของบรรทัดโหมดคำสั่ง Display List นั้น
ระบบปฏิบัติการไม่ได้ใช้ DLI ดังนั้นที่อยู่เริ่มต้นสำหรับเวกเตอร์ DLI (VDSLST, $0200 hex /512 dec ) จึงชี้ไปยังคำสั่ง RTI ใน ROM แอปพลิเคชันที่ใช้ DLI ต้องแก้ไข VDSLST ให้ชี้ไปยังรูทีน DLI ที่ต้องการก่อนที่จะเปิดใช้งาน DLI
ค่าในรีจิสเตอร์สะสม (Accumulator), รีจิสเตอร์ X และ Y ของ 6502 จะไม่ถูกเก็บรักษาไว้ก่อนเข้าสู่รูทีน DLI รูทีน DLI มีหน้าที่ในการบันทึกสถานะของรีจิสเตอร์ที่จะใช้ในระหว่างรูทีน DLI จากนั้นขั้นตอนสุดท้ายคือการคืนค่ารีจิสเตอร์กลับสู่ค่าเดิมก่อนออกจากรูทีนด้วยคำสั่ง RTI โดยทั่วไปแล้ว รูทีนจะผลักค่ารีจิสเตอร์ไปยังสแต็กของ 6502
หากมีการใช้ DLI หลายตัว การขัดจังหวะครั้งแรกจะอัปเดต VDSLST ให้ชี้ไปยังที่อยู่ของการขัดจังหวะครั้งถัดไป และทำเช่นนี้ต่อไปสำหรับการขัดจังหวะครั้งต่อๆ ไป รูทีนการขัดจังหวะรายการแสดงผลสุดท้ายบนหน้าจอจะชี้ VDSLST กลับไปยังที่อยู่ของการขัดจังหวะรายการแสดงผลแรก หรืออีกทางเลือกหนึ่ง สามารถใช้รูทีนการขัดจังหวะการเว้นวรรคแนวตั้งเพื่อรีเซ็ตที่อยู่ VDSLST เพื่อรับประกันว่า DLI ยังคงซิงค์กับหน้าจออยู่เสมอ
วีบีไอ:
เมื่อบิต VBI ของ NMIEN ถูกตั้งค่า ANTIC จะส่งสัญญาณขัดจังหวะ Vertical Blank Interrupt ในตอนท้ายของการประมวลผล JVB (Jump vertical blank) ที่ส่วนท้ายของรายการแสดงผลระบบปฏิบัติการใช้ Vertical Blank เพื่อดำเนินการงานบำรุงรักษาต่างๆ (เช่น การอัปเดตตัวจับเวลา การคัดลอกค่าอินพุตของคอนโทรลเลอร์ไปยังรีจิสเตอร์ Shadow และการคัดลอกเนื้อหาของรีจิสเตอร์ Shadow ไปยังรีจิสเตอร์ฮาร์ดแวร์ของชิปแบบกำหนดเอง)
ระบบปฏิบัติการจะกระโดดผ่าน VVBLKI ($0222 hex /546 dec ) เพื่อเริ่มต้นรูทีนบริการ VBI ของระบบปฏิบัติการ และรูทีน VBI ของระบบปฏิบัติการจะสิ้นสุดด้วยการกระโดดผ่าน VVBLKD ($0224 hex /548 dec ) โดยค่าเริ่มต้น VVBLKI ชี้ไปยังเวกเตอร์กระโดดของระบบปฏิบัติการ SYSVBV ($E45F hex /58463 dec ) เพื่อเริ่มต้นการขัดจังหวะช่องว่างแนวตั้ง และ VVBLKD ชี้ไปยังเวกเตอร์กระโดดของระบบปฏิบัติการ XITVBV ($E462 hex /58466 dec )
โปรแกรมของผู้ใช้สามารถแทรกการเรียกใช้โค้ดที่กำหนดเองได้ทั้งก่อน (ทันที) หรือหลัง (รอ) การทำงานของรูทีน Vertical Blank Interrupt ของระบบปฏิบัติการ เนื่องจากรูทีน Vertical Blank Interrupt ของระบบปฏิบัติการอาจถูกเรียกใช้ในขณะที่โปรแกรมของผู้ใช้สามารถอัปเดตเวกเตอร์ได้ ระบบปฏิบัติการจึงมีรูทีน SETVBV ($E45C hex /58460 dec ) ที่จะอัปเดตเวกเตอร์ VVBLKI หรือ VVBLKD ให้ชี้ไปยังรูทีนใหม่ได้อย่างปลอดภัย:
- ในการตั้งค่าเป้าหมายการกระโดดใหม่สำหรับ VVBLKI (ทันที) ให้ตั้งค่ารีจิสเตอร์ Y เป็นไบต์ต่ำของที่อยู่เป้าหมาย รีจิสเตอร์ X เป็นไบต์สูงของที่อยู่เป้าหมาย และตัวสะสมเป็น 6 จากนั้นใช้คำสั่ง JSR SETVBV โค้ดของผู้ใช้ที่เรียกผ่าน VVBLKI เพียงแค่ต้องออกจากโปรแกรมโดยการกระโดดไปยัง Vertical Blank ของระบบปฏิบัติการด้วยคำสั่ง JMP SYSVBV ($E45F hex /58463 dec )
- ในการตั้งค่าเป้าหมายการกระโดดใหม่สำหรับ VVBLKD (แบบเลื่อนเวลา) ให้ตั้งค่ารีจิสเตอร์ Y เป็นไบต์ต่ำของที่อยู่เป้าหมาย รีจิสเตอร์ X เป็นไบต์สูงของที่อยู่เป้าหมาย และตัวสะสมเป็น 7 จากนั้นใช้คำสั่ง JSR SETVBV.. โค้ดของผู้ใช้ที่เรียกผ่าน VVBLKD ต้องออกจากโปรแกรมโดยการกระโดดไปยังรูทีนทางออก Vertical Blank ของระบบปฏิบัติการด้วยคำสั่ง JMP XITVBV ($E462 hex /58466 dec )
เมื่อแฟล็ก CRITIC ($42 hex /66 dec ) ไม่เป็นศูนย์ การทำงานของอินเตอร์รัปต์ Deferred Vertical Blank จะถูกระงับ โดยไม่คำนึงถึงที่อยู่ในเวกเตอร์ ค่าเริ่มต้นของ CRITIC คือ 0 ซึ่งอนุญาตให้เรียกใช้อินเตอร์รัปต์ทั้ง Immediate และ Deferred Vertical Blank ได้
NMIRES $D40F เขียน
การรีเซ็ตการขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI)
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
ค่าใดๆ ที่เขียนลงใน NMIRES จะรีเซ็ตบิตใน NMIST ซึ่งระบุเหตุผลของการขัดจังหวะที่ไม่สามารถปิดกั้นได้ครั้งล่าสุด ส่วนนี้จะถูกใช้โดยโค้ดการจัดการการขัดจังหวะในระบบปฏิบัติการ และโดยปกติแล้วโปรแกรมของผู้ใช้จะไม่มีเหตุผลที่จะเขียนค่าลงในส่วนนี้
NMIST $D40F อ่าน
สถานะการขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI)
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ดีแอลไอ | วีบีไอ | รีเซ็ต | - | - | - | - | - |
รูทีนการส่งคำสั่งขัดจังหวะที่ไม่สามารถปิดกั้นได้ของระบบปฏิบัติการจะอ่านรีจิสเตอร์นี้เพื่อตรวจสอบสาเหตุของการขัดจังหวะ และเพื่อกำหนดว่าควรเรียกใช้รูทีนบริการใด
ค่าบิต:
- $20 - รีเซ็ตการขัดจังหวะปุ่ม
- 40 ดอลลาร์ - ตัวขัดจังหวะแบบว่างเปล่าแนวตั้ง
- $80 - ขัดจังหวะรายการแสดงผล
แสดงรายการ
รายการแสดงผล (Display List)คือรายการคำสั่งที่สั่งการให้ ANTIC สร้างการแสดงผลอย่างไร ข้อมูลที่ประมวลผลโดย "โปรแกรม" รายการแสดงผลนี้คือหน่วยความจำหน้าจอ ผลลัพธ์ที่ได้คือการแสดงผลกราฟิก ประเภทของกราฟิกในผลลัพธ์ (ข้อความเทียบกับพิกเซลที่สามารถระบุตำแหน่งได้) จะถูกกำหนดโดยคำสั่งในรายการแสดงผล
ซีพียูจะเขียนรายการแสดงผลและข้อมูลการแสดงผลลงในหน่วยความจำหลัก (RAM) โปรแกรม ANTIC จะอ่านคำสั่งรายการแสดงผล หน่วยความจำหน้าจอ และข้อมูลชุดอักขระจาก RAM โดยใช้เทคนิคที่เรียกว่า การเข้าถึงหน่วยความจำโดยตรง (DMA)หน้าที่ของโปรแกรมภาษาเครื่อง BASIC หรือ 6502 คือการเริ่มต้นการแสดงผล—ตั้งค่าคำสั่งรายการแสดงผล จัดระเบียบหน่วยความจำหน้าจอ (และชุดอักขระถ้ามี) แล้วสั่งให้ ANTIC เริ่มการแสดงผล หลังจากนั้น ANTIC จะดูแลการสร้างการแสดงผลบนหน้าจอโดยอัตโนมัติ สิ่งนี้ทำให้คอมพิวเตอร์ Atari 8 บิตสามารถสร้างการแสดงผลแบบผสมผสานที่ซับซ้อนได้โดยไม่ต้องมีการแทรกแซงโดยตรงจากซีพียู แพลตฟอร์มอื่นๆ แม้แต่แพลตฟอร์มที่ออกแบบในภายหลัง ก็ไม่สามารถผสมผสานโหมดกราฟิกในจอแสดงผลเดียวได้ หรือทำได้โดยไม่ต้องใช้การขัดจังหวะของซีพียูที่ซับซ้อน
ANTIC ประมวลผลคำสั่งในรายการแสดงผล อ่านหน่วยความจำหน้าจอ (และข้อมูลชุดอักขระถ้ามี) แปลงข้อมูลนี้เป็นสตรีมข้อมูลกราฟิกแบบเรียลไทม์ และส่งสตรีมข้อมูลนี้ไปยังชิป CTIA/GTIAซึ่งจะนำสีไปใช้กับพิกเซลกราฟิกและแสดงผลวิดีโอ ชิปทั้งสองนี้ทำงานร่วมกันเพื่อให้ได้โหมดข้อความ 6 โหมดและโหมดกราฟิก 8 โหมด (รวม 14 โหมด) GTIAซึ่งเป็นเวอร์ชันที่ทันสมัยกว่า จะเพิ่มการตีความสีทางเลือกอีก 3 แบบสำหรับแต่ละโหมดกราฟิกของ ANTIC ทำให้มีโหมดกราฟิกทั้งหมด 56 โหมด (14 คูณ 4) อย่างไรก็ตาม เฉพาะโหมดกราฟิกของ ANTIC ที่ใช้พิกเซลนาฬิกาสีครึ่งเดียวเท่านั้นที่สามารถแสดงจานสีที่สมบูรณ์ซึ่งให้โดยการตีความสีใหม่ได้ และในบรรดาโหมดเหล่านั้น โหมดที่สะดวกต่อการใช้งานคือ โหมด ANTIC 2 (โหมดกราฟิก OS 0 สำหรับข้อความ) และโหมด ANTIC F (โหมดกราฟิก OS 8) ดังนั้น จำนวนโหมดกราฟิกที่ไม่ซ้ำกันที่เหมาะสมซึ่งมีให้ใช้งานโดยใช้ความสามารถของฮาร์ดแวร์โดยธรรมชาติของ ANTIC + GTIA คือ 20–14 โหมด ANTIC + การตีความสีเพิ่มเติมอีก 3 แบบสำหรับแต่ละโหมด ANTIC 2 และ F
ภาพรวมคำแนะนำการแสดงรายการ
หน้าจอแสดงผลของ Atari สร้างขึ้นจากชุดคำสั่ง ANTIC ซึ่งแต่ละคำสั่งจะอธิบายข้อความหรือโหมดกราฟิกแต่ละบรรทัด โดยค่อยๆ แสดงผลจากด้านบนลงมาด้านล่างของหน้าจอจนกว่าพื้นที่แสดงผลที่ต้องการจะเต็ม กล่าวคือ หน้าจอเป็นกองคำสั่งโหมด ANTIC ในแนวตั้ง โหมดต่างๆ ใช้จำนวนเส้นสแกนและหน่วยความจำ RAM ในปริมาณที่แตกต่างกัน การออกแบบหน้าจอแสดงผลจำเป็นต้องนับจำนวนเส้นสแกนของแต่ละคำสั่งโหมดและติดตามการใช้หน่วยความจำสำหรับแต่ละบรรทัดโหมดเพื่อป้องกันการเกินขีดจำกัดของ ANTIC หรือมาตรฐานวิดีโอ (ดู ส่วน ข้อจำกัด )
การผสมผสานโหมดกราฟิกหลายโหมดในจอแสดงผลเดียวทำได้ง่ายๆ โดยการกำหนดคำสั่งโหมดตัวอักษรหรือแผนที่ที่แตกต่างกันสำหรับตำแหน่งที่ต้องการบนหน้าจอ ตัวอย่างเช่น โหมดกราฟิก 1 ถึง 8 ของระบบปฏิบัติการ Atari ให้การแสดงผลแบบเต็มหน้าจอ หรือตัวเลือกสำหรับหน้าต่างข้อความสี่บรรทัดที่ด้านล่างของหน้าจอ คุณสมบัติการแบ่งหน้าจอนี้ทำได้โดยใช้ความสามารถโดยธรรมชาติของ ANTIC และรายการแสดงผล (Display List) โดยไม่ต้องใช้การขัดจังหวะของ CPU หรือการปรับแต่งฮาร์ดแวร์วิดีโอใดๆ
ANTIC มีคำสั่งอยู่สี่ประเภท:
- บรรทัดว่าง - คำสั่ง 8 ข้อสำหรับแสดงบรรทัดว่างแนวนอนตั้งแต่ 1 ถึง 8 บรรทัด
- คำสั่ง Jump - มี 2 ประเภท คือ คำสั่ง Jump ที่ใช้โหลด ตัวนับโปรแกรมของ ANTIC ใหม่(คำสั่งขนาด 3 ไบต์)
- โหมดตัวอักษร - 6 คำสั่งสำหรับแสดงข้อมูลตัวอักษร
- โหมดแผนที่ - 8 คำสั่งในการแสดงพิกเซลสี
คำแนะนำสำหรับโหมดแผนที่และตัวละครมีตัวปรับแต่งเพิ่มเติมที่สามารถเปิดใช้งานได้ด้วยคำสั่ง:
- การเลื่อนแนวนอน - ช่วยให้สามารถเลื่อนแบบละเอียดในแนวนอนได้
- การเลื่อนแนวตั้ง - ช่วยให้สามารถเลื่อนแบบละเอียดในแนวตั้งได้
- คำสั่ง Load Memory Scan (LMS) - กำหนดที่อยู่เริ่มต้นของข้อมูลกราฟิก/ตัวอักษร (คำสั่ง 3 ไบต์)
- DLI - Display List Interrupt (หรือเรียกว่า " raster interrupt " หรือ " Horizontal Blank Interrupt " ในระบบอื่นๆ)
การดำเนินการตามคำสั่ง
ANTIC เริ่มดำเนินการรายการแสดงผลที่ชี้โดยแอดเดรส 16 บิตในรีจิสเตอร์ DLISTL/DLISTH ($D402-$D403 hex /54274-54275 dec ) รีจิสเตอร์แอดเดรสจะถูกเพิ่มค่าโดย ANTIC โดยอัตโนมัติทุกครั้งที่มีการดำเนินการคำสั่งแต่ละคำสั่ง ANTIC สามารถอัปเดตได้เฉพาะ 10 บิตล่างสุดของแอดเดรสในระหว่างการเพิ่มค่าอัตโนมัติเท่านั้น ซึ่งจำกัดให้รายการแสดงผลเริ่มต้นและสิ้นสุดภายในช่วงแอดเดรส 1K
ในระหว่างการประมวลผล Display List คำสั่ง JMP (Jump) และ JVB (Jump and wait for Vertical Blank) ของ ANTIC จะทำการอัปเดตค่าในรีจิสเตอร์ด้วย คำสั่งเหล่านี้จะโหลดค่าแอดเดรสทั้ง 16 บิต ดังนั้นจึงสามารถใช้เพื่อหลีกเลี่ยงข้อจำกัดของ Display List ที่มีขนาด 1K ได้
ที่อยู่จะได้รับการอัปเดตโดยรูทีน Vertical Blank Interrupt (VBI) ของระบบปฏิบัติการ โดยใช้ค่าจากรีจิสเตอร์เงาของระบบปฏิบัติการ SDLSTL/SDLSTH ($0230-$0231 hex /560-561 dec ) เมื่อเปิดใช้งานรูทีน VBI ของระบบปฏิบัติการ การอัปเดตโดยตรงไปยังรีจิสเตอร์ ANTIC DLIST โดย CPU หรือคำสั่ง ANTIC Jump จะถูกเขียนทับโดยระบบปฏิบัติการในระหว่างการขัดจังหวะ Vertical Blank ครั้งถัดไป เนื่องจากกระบวนการ VBI เป็นสถานะปกติของระบบ โปรแกรมส่วนใหญ่จึงอาศัยสิ่งนี้และอัปเดตเฉพาะรีจิสเตอร์เงาของระบบปฏิบัติการ (SDLSTL/SDLSTH $0230-$0231 hex /560-561 dec ) เพื่อตั้งค่ารายการแสดงผล
ไบต์คำสั่ง
คำอธิบายนี้ใช้กับแผนภาพบิตคำสั่งด้านล่าง:
| ค่าบิต | คำอธิบาย |
|---|---|
| 0 | บิตต้องเป็น 0 |
| 1 | บิตต้องเป็น 1 |
| ? | บิตอาจมีค่าเป็น 0 หรือ 1 และถูกใช้เพื่อวัตถุประสงค์เฉพาะ |
| — | บิตนั้นไม่ได้ถูกใช้งาน หรือไม่ควรคาดหวังว่าจะมีค่าใดค่าหนึ่ง |
| ฉลาก | โปรดดูคำอธิบายเพิ่มเติมในภายหลังเกี่ยวกับวัตถุประสงค์ของส่วนนี้ |
คำแนะนำโดยละเอียด:
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ดีแอลไอ | ระบบจัดการเรียนรู้ (LMS) | VS | เอชเอส | โหมด | โหมด | โหมด | โหมด |
บิต 7:4 เป็นตัวปรับแต่งสำหรับคำสั่งโหมดสนามเล่นในบิต 3:0 ค่าบิต 1 จะเปิดใช้งานตัวปรับแต่ง และค่า 0 จะปิดใช้งานตัวปรับแต่ง
- บิตที่ 3: บิตที่ 0 - คำแนะนำโหมดสนามเล่น
- ค่า$00และ$01เป็นคำแนะนำพิเศษ
- ค่าโหมด$02ถึง$0Fระบุโหมดตัวละครและแผนที่ของสนามเล่น
- บิตที่ 4 - 10 ดอลลาร์ - เลื่อนแนวนอน
- บิตที่ 5 - 20 ดอลลาร์ - การเลื่อนแนวตั้ง
- บิตที่ 6 - 40 ดอลลาร์ - โหลดการสแกนหน่วยความจำ
- บิต 7 - $80 - ขัดจังหวะการแสดงรายการ
คำแนะนำโหมด 0 - บรรทัดว่าง
| ดีแอลไอ | เส้น | เส้น | เส้น | โหมด | โหมด | โหมด | โหมด |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | 0 | 0 | 0 | 0 |
เมื่อบิตโหมดทั้งหมดเป็นศูนย์ ANTIC จะไม่ทำการส่งข้อมูล DMA ไปยังสนามเล่น และจะแสดงเส้นสแกนว่างหนึ่งเส้นหรือมากกว่านั้นของสีพื้นหลัง สำหรับโหมดการตีความสีปกติ "พื้นหลัง" คือรีจิสเตอร์สีCOLBK (D01A hex /53274 dec ) OS Shadow COLOR4 (02C8 hex /712 dec ) แต่จะแตกต่างกันสำหรับโหมดการตีความสี GTIA ดูรายละเอียดเพิ่มเติมได้ ในหัวข้อ COLBKในหน้า GTIA
จำนวนเส้นสแกนว่างจะถูกกำหนดโดยค่าของบิตที่ 4 ถึงบิตที่ 6 ซึ่งอยู่ในช่วง 0 ถึง 7 คำสั่ง ANTIC จะเพิ่มค่านี้อีกหนึ่งและแสดงจำนวนเส้นสแกนที่ได้ ค่าคำสั่ง:
| คำแนะนำ ANTIC | เส้นสแกน |
|---|---|
| 00 hex /0 dec | 1 เส้นสแกนว่าง |
| 10 เลขฐานสิบหก / 16 เลขฐานสิบ | เส้นสแกนว่าง 2 เส้น |
| 20 เลขฐานสิบหก / 32 เลขฐานสิบ | เส้นสแกนว่าง 3 เส้น |
| 30 เลขฐานสิบหก / 48 เลขฐานสิบ | เส้นสแกนว่าง 4 เส้น |
| 40 เลขฐานสิบหก / 64 เลขฐานสิบ | เส้นสแกนว่าง 5 เส้น |
| 50 เลขฐานสิบหก / 80 เลขฐานสิบ | 6 เส้นสแกนว่าง |
| 60 เลขฐานสิบหก / 96 เลขฐานสิบ | 7 เส้นสแกนว่าง |
| 70 เลขฐานสิบหก / 112 เลขฐานสิบ | 8 เส้นสแกนว่าง |
เส้นว่างมีประโยชน์สำหรับการหน่วงเวลาการเริ่มต้นแสดงผลหน้าจอจนกว่าลำแสงอิเล็กตรอนจะออกจากพื้นที่โอเวอร์สแกนแนวตั้งที่ด้านบนของจอแสดงผล ระบบปฏิบัติการ Atari สร้างโหมดกราฟิกทั้งหมดโดยเริ่มต้นด้วย คำสั่งเลข ฐานสิบหก 70 / เลขฐานสิบ 112 จำนวน 3 คำสั่ง (หรือเส้นสแกนว่าง 24 เส้น) เพื่อจุดประสงค์นี้ เส้นว่างยังมีประโยชน์สำหรับการแบ่งส่วนต่างๆ ของจอแสดงผลแบบกำหนดเองที่มีวัตถุประสงค์แตกต่างกัน (เช่น ขอบเขตระหว่างจอแสดงสถานะและกราฟิกหลัก)
บรรทัดโหมดว่างไม่สามารถอยู่ภายในพื้นที่เลื่อนได้ เนื่องจากคำสั่งบรรทัดโหมดว่างโดยธรรมชาติแล้วไม่มีบิตปรับการเลื่อนละเอียด อย่างไรก็ตาม คำสั่งโหมดว่างสามารถใช้เพื่อสิ้นสุดพื้นที่เลื่อนแนวตั้งได้ และยังคงอยู่ภายใต้การเปลี่ยนแปลงความสูงของบรรทัดสแกนที่คาดไว้ตามค่าการเลื่อนแนวตั้ง
บิตตัวแก้ไข DLI พร้อมใช้งานสำหรับคำสั่งบรรทัดว่าง เมื่อเปิดใช้งานบิต DLI การขัดจังหวะรายการแสดงผล (Display List Interrupt) จะถูกเรียกใช้งานในช่วงบรรทัดสแกนว่างสุดท้ายของคำสั่ง เนื่องจาก DMA ของสนามเล่นจะไม่เกิดขึ้นในช่วงบรรทัดว่าง (มีเพียง DMA ของรายการแสดงผลและ DMA ของผู้เล่น/ขีปนาวุธ (หากเปิดใช้งาน) เท่านั้นที่เกิดขึ้น) บรรทัดว่างจึงสามารถใช้ในส่วนที่ไม่จำเป็นต้องใช้กราฟิกของสนามเล่น ทำให้มีเวลามากขึ้นสำหรับรูทีนการขัดจังหวะรายการแสดงผลในการเปลี่ยนรีจิสเตอร์สีหรือตำแหน่งของผู้เล่น/ขีปนาวุธ
คำแนะนำโหมด 1 - กระโดด
| ดีแอลไอ | ระบบจัดการเรียนรู้ (LMS) | VS | เอชเอส | โหมด | โหมด | โหมด | โหมด |
|---|---|---|---|---|---|---|---|
| 0 | ? | 0 | 0 | 0 | 0 | 0 | 1 |
เมื่อค่า Mode เป็น 1 ANTIC จะทำการ Jump ในโปรแกรม (Display List) โดยจะโหลดไบต์สองไบต์ถัดไปใน Display List เข้าไปในรีจิสเตอร์ DLISTL/DLISTH ของ ANTIC (D402-D403 hex / 54274-54275 dec ) ซึ่งจะเปลี่ยนจุดการทำงานของคำสั่งถัดไป
การกระโดดมีสองประเภท:
- 01 hex /1 dec JMP - กระโดดไปยังที่อยู่ ใช้เพื่อโหลดที่อยู่การทำงานใหม่ในระหว่างการทำงานของรายการแสดงผล โดยทั่วไปจะใช้เมื่อรายการแสดงผลต้องข้ามขอบเขต 1K
- 41 hex /65 dec JVB - กระโดดไปยังที่อยู่และรอ Vertical Blank (JMP + ตั้งค่าบิต LMS) คำสั่งนี้ใช้เพื่อสิ้นสุดรายการแสดงผล ที่อยู่ที่ใช้ควรเป็นที่อยู่เริ่มต้นของรายการแสดงผล
รีจิสเตอร์ DLIST จะได้รับการอัปเดตโดยรูทีน Vertical Blank Interrupt (VBI) ของระบบปฏิบัติการ โดยใช้ค่าในรีจิสเตอร์เงา SDLSTL/SDLSTH (0230-0231 เลขฐานสิบหก / 560-561 เลขฐานสิบ ) เมื่อเปิดใช้งานรูทีน VBI ของระบบปฏิบัติการ การอัปเดตโดยตรงไปยังรีจิสเตอร์ ANTIC DLIST โดย CPU หรือคำสั่ง ANTIC Jump จะถูกเขียนทับโดยระบบปฏิบัติการในช่วง Vertical Blank ครั้งถัดไป ซึ่งหมายความว่าคำสั่ง ANTIC JVB (Jump and wait for Vertical Blank) ที่ระบุที่อยู่ที่ไม่ถูกต้อง (หรือที่อยู่ที่ถูกต้องแต่แตกต่างจากค่า SDLST เงา) จะไม่มีผลกระทบต่อการแสดงผลแต่อย่างใด
โดยปกติแล้ว อาร์กิวเมนต์ของ JVB จะชี้ไปยังจุดเริ่มต้นของ Display List เดียวกัน แต่ก็สามารถชี้ไปยัง Display List อื่นได้เช่นกัน เพื่อให้มีการเรียกใช้ Display List ต่อเนื่องกันหลังจาก Vertical Blank ที่ติดกัน แน่นอนว่า เพื่อให้ ANTIC ควบคุมจุดเริ่มต้นของ Display List ถัดไปได้ จะต้องปิดใช้งาน Interrupt Vertical Blank ของระบบปฏิบัติการ เพื่อป้องกันไม่ให้มันเขียนทับค่าในรีจิสเตอร์ฮาร์ดแวร์ของ ANTIC ด้วยค่าในรีจิสเตอร์เงา
คำแนะนำสำหรับโหมด 2 ถึง F - โหมดตัวละครและแผนที่ในสนามเล่น
| ดีแอลไอ | ระบบจัดการเรียนรู้ (LMS) | VS | เอชเอส | โหมด | โหมด | โหมด | โหมด |
|---|---|---|---|---|---|---|---|
| ? | ? | ? | ? | ? | ? | ? | ? |
ต่อไปนี้คือรายการคำแนะนำสำหรับโหมดกราฟิก ANTIC สำหรับคำอธิบายโดยละเอียดเพิ่มเติมของแต่ละโหมด โปรดดูส่วน " โหมดกราฟิกสนามเล่น "
| คำแนะนำ ANTIC | ประเภทโหมด | จำนวนไบต์ต่อบรรทัดโหมด (แคบ/ปกติ/กว้าง) | เส้นสแกนทีวีต่อเส้นโหมด | สี |
|---|---|---|---|---|
| 2 | อักขระ | 32/40/48 | 8 | 1.5 |
| 3 | อักขระ | 32/40/48 | 10 | 1.5 |
| 4 | อักขระ | 32/40/48 | 8 | 5 (หลากสี) |
| 5 | อักขระ | 32/40/48 | 16 | 5 (หลากสี) |
| 6 | อักขระ | 16/20/24 | 8 | 5 (สีเดียว) |
| 7 | อักขระ | 16/20/24 | 16 | 5 (สีเดียว) |
| 8 | แผนที่ | 8/10/12 | 8 | 4 |
| 9 | แผนที่ | 8/10/12 | 4 | 2 |
| เอ | แผนที่ | 16/20/24 | 4 | 4 |
| บี | แผนที่ | 16/20/24 | 2 | 2 |
| ซี | แผนที่ | 16/20/24 | 1 | 2 |
| ดี | แผนที่ | 32/40/48 | 2 | 4 |
| อี | แผนที่ | 32/40/48 | 1 | 4 |
| เอฟ | แผนที่ | 32/40/48 | 1 | 1.5 |
ความต้องการหน่วยความจำสำหรับ Mode Line นั้นถูกกำหนดโดยปัจจัยสองประการ:
- ค่าบิตความกว้างถูกตั้งค่าไว้ในรีจิสเตอร์ฮาร์ดแวร์DMACTL
- การมีอยู่ของตัวแก้ไขคำสั่งรายการแสดงผลการเลื่อนละเอียดแนวนอน
ตัวปรับการเลื่อนละเอียดแนวนอนจะเปลี่ยนความต้องการหน่วยความจำสำหรับเส้นโหมดปัจจุบันจากความกว้างที่ระบุโดย DMACTL ไปเป็นค่าที่ใหญ่กว่าถัดไป
ตัวแก้ไขคำสั่ง
| บิต 7 | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิตที่ 1 | บิต 0 |
|---|---|---|---|---|---|---|---|
| ดีแอลไอ | ระบบจัดการเรียนรู้ (LMS) | VS | เอชเอส | ? | ? | ? | ? |
บิต 7:4 เป็นตัวปรับแต่งสำหรับคำสั่งโหมดสนามเล่นในบิต 3:0 ค่าของคำสั่งโหมดสนามเล่นมีช่วงตั้งแต่ $02 ถึง $0F ค่าบิตตัวปรับแต่ง 1 จะเปิดใช้งานตัวปรับแต่ง และ 0 จะปิดใช้งานตัวปรับแต่ง
- บิตที่ 4 - $10 hex /16 decการเลื่อนแนวนอน
- บิตที่ 5 - $20 hex /32 dec Vertical Scroll.
- บิต 6 - $40 hex /64 decโหลดการสแกนหน่วยความจำ
- บิต 7 - $80 hex /128 decขัดจังหวะรายการแสดงผล
ม้วนละเอียดแนวนอน
บิตที่ 4: ค่าตำแหน่ง $10 ควบคุมการเลื่อนแนวนอนของโหมดสนามเล่น
เมื่อเปิดใช้งานการเลื่อนแนวนอน ANTIC จะดึงข้อมูลหน่วยความจำหน้าจอมากกว่าที่แสดง เพื่อแสดงข้อมูลที่เลื่อนบางส่วนที่ต้นและท้ายบรรทัด หากจอแสดงผลอยู่ในโหมดแคบ ANTIC จะดึงข้อมูลหน้าจอจำนวนที่จำเป็นสำหรับโหมดปกติ หากจอแสดงผลอยู่ในโหมดปกติ ANTIC จะดึงข้อมูลจำนวนที่จำเป็นสำหรับโหมดจอกว้าง ในโหมดจอกว้าง ANTIC จะไม่ดึงข้อมูลหน้าจอเพิ่มเติมใดๆ การเลื่อนในโหมดจอกว้างจะทำให้ข้อมูลว่างถูกเลื่อนเข้าไปในพื้นที่ที่เลื่อน ซึ่งเกิดขึ้นในพื้นที่โอเวอร์สแกนซึ่งมองไม่เห็นบนจอแสดงผล NTSC/PAL ทั่วไป
ม้วนละเอียดแนวตั้ง
บิตที่ 5: ค่าตำแหน่ง $20 ควบคุมการเลื่อนแนวตั้งของโหมด Playfield
พื้นที่การเลื่อนแนวตั้งในจอแสดงผลถูกกำหนดโดยการตั้งค่าบิต VS ($20) บนชุดบรรทัดโหมด ANTIC ตามลำดับในรายการจอแสดงผล บรรทัดโหมดแรกที่ไม่มีการตั้งค่าบิต VS จะกลายเป็นจุดสิ้นสุดของพื้นที่การเลื่อน และใช้เป็นบรรทัดบัฟเฟอร์เพื่อส่งข้อมูลใหม่ที่จะเลื่อนขึ้นไปที่ด้านล่างของพื้นที่การเลื่อน
โหลดการสแกนหน่วยความจำ
บิตที่ 6: ค่าตำแหน่ง $40 โหลดที่อยู่ใหม่สำหรับจุดเริ่มต้นของหน่วยความจำหน้าจอสำหรับบรรทัดโหมด Playfield ปัจจุบัน
ตัวเลือก LMS จะโหลดค่า 16 บิตในสองไบต์ถัดจากคำสั่งไปยังที่อยู่การสแกนหน่วยความจำหน้าจอของ ANTIC โหมดอักขระหรือแผนที่ที่ระบุจะเริ่มแสดงไบต์จากที่อยู่นั้น ตัวเลือก LMS ต้องปรากฏในบรรทัดคำสั่งโหมดสนามเล่นบรรทัดแรก (ไม่ใช่บรรทัดว่าง) ในรายการแสดงผลเพื่อเริ่มต้น ANTIC ให้เริ่มอ่านจากจุดเริ่มต้นของหน่วยความจำหน้าจอ โหมดเต็มหน้าจอส่วนใหญ่ที่สร้างโดยระบบปฏิบัติการจะมีตัวแก้ไข LMS เพียงครั้งเดียวในรายการแสดงผล ANTIC จะเพิ่มที่อยู่ LMS โดยอัตโนมัติเมื่อสิ้นสุดแต่ละบรรทัดโหมดเพื่อเตรียมพร้อมสำหรับบรรทัดถัดไป ตราบใดที่หน่วยความจำหน้าจอไม่เกินขอบเขต 4K ตัวแก้ไข LMS จะไม่จำเป็นสำหรับคำสั่งโหมดสนามเล่นถัดไป
การแสดงผลแบบเต็มหน้าจอโดยใช้โหมดแผนที่สนามเล่น E หรือ F จะมีตัวแก้ไข LMS ปรากฏซ้ำอีกครั้งในคำแนะนำแผนที่ใกล้กับกึ่งกลางหน้าจอ เนื่องจากโหมดแสดงผลแบบเต็มหน้าจอต้องการหน่วยความจำหน้าจอมากกว่า 4K (โหมด F ประกอบด้วยเส้นความละเอียดสูง 320 พิกเซล และโหมดแสดงผล GTIA)
การรวมคำสั่งโหมดแผนที่และโหมดอักขระเข้ากับบิต LMS ทำให้สามารถตั้งค่าที่อยู่หน่วยความจำหน้าจอได้อย่างอิสระภายในพื้นที่แอดเดรส 64K สำหรับแต่ละบรรทัดแสดงผลกล่าวอีกนัยหนึ่ง หน่วยความจำหน้าจอไม่จำเป็นต้องเป็นหน่วยความจำที่ต่อเนื่องกันอย่างสมบูรณ์และสแกนตามลำดับไปยังแอดเดรสที่สูงขึ้น เพียงแต่ว่าบรรทัดโหมดเดียวจะต้องมีหน่วยความจำแบบเรียงลำดับที่เพียงพอเพื่อตอบสนองความต้องการของโหมดนั้น ความกว้างของจอแสดงผล และคุณสมบัติการเลื่อน
แสดงรายการขัดจังหวะ
บิต 7: ค่าตำแหน่ง$80สั่งให้ ANTIC เรียกใช้การขัดจังหวะที่ประมวลผลโดย CPU บนบรรทัดสแกนสุดท้ายของโหมด Playfield
ถ้าค่า Bit7 ( $80 ) ใน รีจิสเตอร์ ANTIC NMIEN ( D40E hex /54286 dec ) ถูกตั้งค่าไว้ ในบรรทัดสแกนสุดท้ายของบรรทัดโหมด รูทีนการขัดจังหวะจะถูกเรียกใช้งาน ซึ่งจะถูกส่งผ่านแอดเดรส VDSLST (200 hex /512 dec )
ค่าในรีจิสเตอร์สะสม 6502, X และ Y จะไม่ถูกเก็บรักษาไว้ก่อนเข้าสู่รูทีน DLI รูทีน DLI จะต้องบันทึกสถานะของรีจิสเตอร์ที่ใช้ระหว่างการทำงานของ DLI จากนั้นจึงคืนค่าเดิมของรีจิสเตอร์เหล่านั้นก่อนที่จะออกจากรูทีนด้วยคำสั่ง RTI
โหมดกราฟิกสนามเล่น
ชิป ANTIC อนุญาตให้ใช้โหมดและขนาดความกว้างของ Playfield ที่แตกต่างกันได้หลากหลาย อย่างไรก็ตาม ระบบปฏิบัติการ Atari ดั้งเดิมที่มาพร้อมกับคอมพิวเตอร์ Atari 800/400 นั้นให้การเข้าถึงโหมดกราฟิกเพียงบางส่วนเท่านั้น โหมด Playfield ของ ANTIC จะถูกเปิดเผยให้ผู้ใช้เห็นผ่านทางAtari BASICโดยใช้คำสั่ง "GRAPHICS" และในภาษาโปรแกรมอื่นๆ ผ่านการเรียกใช้ระบบที่คล้ายกัน ที่น่าแปลกคือ โหมดที่ไม่ได้รับการสนับสนุนโดยตรงจากระบบปฏิบัติการและ BASIC ดั้งเดิมนั้น กลับเป็นโหมดที่มีประโยชน์มากที่สุดสำหรับเกม ระบบปฏิบัติการเวอร์ชันต่อมาที่ใช้ในคอมพิวเตอร์ Atari 8 บิต XL/XE ได้เพิ่มการสนับสนุนสำหรับโหมดกราฟิกที่ "ขาดหายไป" เหล่านี้ส่วนใหญ่
ชิป ANTIC ใช้รายการแสดงผล (Display List ) และการตั้งค่าอื่นๆ เพื่อสร้างโหมดเหล่านี้ โหมดกราฟิกใดๆ ในการ ตีความสี GTIA แบบเริ่มต้น สามารถผสมผสานได้อย่างอิสระโดยไม่ต้องมีการแทรกแซงจาก CPU โดยการเปลี่ยนคำสั่งในรายการแสดงผล (Display List )
รูปทรงเรขาคณิตของหน้าจอ ANTIC ไม่ได้ตายตัว รีจิสเตอร์ฮาร์ดแวร์สามารถสั่งให้ ANTIC แสดงภาพในพื้นที่เล่นแบบแคบ (กว้าง 128 คล็อกสี/256 พิกเซลความละเอียดสูง), พื้นที่เล่นแบบความกว้างปกติ (กว้าง 160 คล็อกสี/320 พิกเซลความละเอียดสูง) และพื้นที่เล่นแบบกว้างเกินขอบ (กว้าง 192 คล็อกสี/384 พิกเซลความละเอียดสูง) แม้ว่าความสูงเริ่มต้นของระบบปฏิบัติการสำหรับโหมดกราฟิกจะอยู่ที่ 192 เส้นสแกน แต่ ANTIC สามารถแสดงภาพเกินขอบในแนวตั้งได้สูงถึง 240 เส้นสแกนของทีวี โดยการสร้างรายการแสดงผล แบบกำหนด เอง
โหมด F สร้างสีผ่านการสร้างสีผิดเพี้ยนแบบ NTSC และทำงานในลักษณะคล้ายกับ โหมดกราฟิกของ Apple IIความละเอียดของพิกเซลอยู่ที่ 320 พิกเซล แต่ความละเอียดของสีลดลงครึ่งหนึ่ง ดังนั้นแต่ละกลุ่มของสองพิกเซลจะ "ผสม" เข้าด้วยกันเพื่อสร้างสีเดียว และอาจสร้างสีผิดเพี้ยนได้สี่สีด้วยวิธีนี้ สีเหล่านั้นจะถูกปรับโทนสีหากสีพื้นหน้าและพื้นหลังถูกตั้งค่าเป็นสีอื่นที่ไม่ใช่ดำ/ขาว/เทา สีที่ได้จะแตกต่างกันไปตามรุ่นของ Atari 8 บิต และยังแตกต่างกันไปตามชิป CTIA และ GTIA ด้วย ดังนั้นอาจเกิดสีผิดเพี้ยนที่ไม่พึงประสงค์จากการใช้งานซอฟต์แวร์ที่ใช้โหมด F บนเครื่องอื่นที่ไม่ใช่เครื่องที่พัฒนาขึ้นมา ไม่สามารถสร้างสีผิดเพี้ยนบนเครื่อง PAL ได้ และโหมด F จะเป็นขาวดำบนเครื่องเหล่านั้น
โหมด F ไม่ได้ถูกใช้งานอย่างแพร่หลายในซอฟต์แวร์ เนื่องจากมีความต้องการหน่วยความจำสูง (8k) และสีของภาพที่ได้ไม่สม่ำเสมอ โดยสีจะไม่ปรากฏเหมือนกันในคอมพิวเตอร์ Atari 8 บิตทุกรุ่น เกมที่ใช้โหมดนี้ ได้แก่ เกมผจญภัยแบบกราฟิกของ Sierra เช่นTroll's TaleและWizard and the Princess , Lode Runnerและซีรีส์ Ultima
ระบบแสดงผลวิดีโอได้รับการออกแบบโดยคำนึงถึงวิธีการและข้อจำกัดของการแสดงผล NTSC อย่างรอบคอบ นาฬิกา CPU ของระบบและฮาร์ดแวร์วิดีโอได้รับการซิงโครไนซ์กับความถี่ครึ่งหนึ่งของความถี่นาฬิกา NTSC ดังนั้น การแสดงผลพิกเซลในทุกโหมดการแสดงผลจึงขึ้นอยู่กับขนาดของนาฬิกาสี NTSC ซึ่งเป็นเวลาขั้นต่ำที่จำเป็นในการรับประกันสีที่ถูกต้องและสม่ำเสมอโดยไม่คำนึงถึงตำแหน่งแนวนอนของพิกเซลบนหน้าจอ ผลลัพธ์ที่ได้คือขนาดพิกเซลและสีที่แม่นยำซึ่งไม่แสดงข้อบกพร่อง "การกระพริบของสี" เมื่อเลื่อนในแนวนอน (การกระพริบของสีคือการเปลี่ยนแปลงเฉดสีที่ไม่น่าดูในพิกเซลตามตำแหน่งแนวนอน ซึ่งเกิดจากสัญญาณเปลี่ยนแปลงไม่ตรงกับนาฬิกาสี และทำให้ฮาร์ดแวร์ทีวี/จอภาพไม่มีเวลาเพียงพอที่จะปรับสีให้ถูกต้อง)
โหมดตัวละคร
โหมดข้อความแอนติค | โหมดระบบปฏิบัติการ | จำนวนอักขระ (หรือไบต์) ต่อบรรทัดโหมด | เส้นสแกนทีวีต่อเส้นโหมด | สี | สีต่อเมทริกซ์ตัวอักษร | ตัวอักษรในแบบอักษร | ขนาดพิกเซลของเมทริกซ์(จำนวนนาฬิกาสี × จำนวนเส้นสแกน) | บิตต่อพิกเซลเมทริกซ์ | แผนผังเมทริกซ์(นาฬิกาสี × เส้นสแกน) | แผนที่เมทริกซ์(พิกเซล × พิกเซล) | หมายเหตุ | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
แคบ | ปกติ | กว้าง | |||||||||||
| 2 | 0 | 32 | 40 | 48 | 8 | 1.5 | 1 | 128 | 1 ⁄ 2 × 1 | 1 | 4 × 8 | 8 × 8 | พิกเซลความละเอียดสูง เมื่อตั้งค่าบิตสูงสุดของอักขระ (ค่า $80 ถึง $FF) ข้อมูลอักขระจะแสดงผลตามการตั้งค่า CHACTL |
| 3 | ไม่มีข้อมูล | 32 | 40 | 48 | 10 | 1.5 | 1 | 128 | 1 ⁄ 2 × 1 | 1 | 4 × 8 ⁄ 10 | 8 × 8 | พิกเซลความละเอียดสูง ตัวอักษรพิมพ์เล็กจะแสดงผลต่ำลง 2 บรรทัด ทำให้เห็นส่วนห้อยของตัวอักษรได้ |
| 4 | 12 (XL OS) | 32 | 40 | 48 | 8 | 5 | 4 | 128 | 1 × 1 | 2 | 4 × 8 | 4 × 8 | แต่ละพิกเซลใช้สองบิต ทำให้สามารถใช้ 4 สีภายในเมทริกซ์ตัวอักษรเดียวได้ เมื่อบิตสูงสุดของตัวอักษรถูกตั้งค่า สีที่ห้าจะเข้ามาแทนที่หนึ่งในสี่สีที่เหลือ |
| 5 | 13 (XL OS) | 32 | 40 | 48 | 16 | 5 | 4 | 128 | 1 × 2 | 2 | 4 × 16 | 4 × 8 | สีเหมือนกับโหมด Antic 4 ด้านบน ตัวละครสูงเป็นสองเท่า |
| 6 | 1 | 16 | 20 | 24 | 8 | 5 | 1 | 64 | 1 × 1 | 1 | 8 × 8 | 8 × 8 | ใช้สีเดียวต่อเมทริกซ์ตัวอักษร ตัวอักษรในแต่ละบล็อก 64 ตัวจะแสดงด้วยสีที่แตกต่างกัน |
| 7 | 2 | 16 | 20 | 24 | 16 | 5 | 1 | 64 | 1 × 2 | 1 | 8 × 1 6 | 8 × 8 | สีเหมือนกับโหมด Antic Mode 6 ด้านบน ตัวละครสูงเป็นสองเท่า |
การเรนเดอร์สัญลักษณ์
ชุดอักขระทั้งหมดใช้ไบต์เรียงลำดับ 8 ไบต์ในการแสดงอักขระ มีวิธีการแสดงผลอักขระ/สัญลักษณ์สี่ประเภทสำหรับไบต์เหล่านั้น แต่ละโหมดอักขระจะเชื่อมโยงกับวิธีการแสดงผลเฉพาะ:
- มาตรฐาน: โหมด ANTIC 2 โดยอิงจากโหมดกราฟิกความละเอียดสูง บิตแต่ละบิตในสัญลักษณ์ตัวอักษรแสดงถึงพิกเซลหนึ่งพิกเซลบนหน้าจอที่มีความกว้าง 1/2 ของนาฬิกาสี สีพื้นหลังคือCOLPF2แทนที่จะเป็น COLBK ที่ใช้ในโหมดตัวอักษรและแผนที่อื่นๆ COLBK จะปรากฏเป็นเส้นขอบรอบทั้งสี่ด้านของพื้นที่เล่น บิตที่มีค่า 0 ในสัญลักษณ์ตัวอักษรแสดงสีพื้นหลัง บิตที่มีค่า 1 แสดงค่าความสว่างจากCOLPF1โดยอิงจากสีพื้นหลัง (COLPF2) ชุดตัวอักษรใช้ 128 ตัวอักษรและต้องการ RAM 1024 ไบต์
- ส่วนล่างของตัวอักษร: โหมด ANTIC 3เป็นการดัดแปลงจากวิธีมาตรฐาน วิธีการแสดงสีพิกเซลยังคงเหมือนเดิม แต่ละบรรทัดโหมดมีความสูง 10 สแกนไลน์ แม้ว่าขนาดของตัวอักษรจะยังคงเป็น 8 ไบต์ ตัวอักษร00 hex /0 decถึง5F hex /95 decจะแสดงใน 8 สแกนไลน์บนสุด โดยมีสองสแกนไลน์ว่างเพิ่มเข้ามาที่ด้านล่าง ตัวอักษร60 hex /96 decถึง7F hex /127 decจะเริ่มต้นด้วยสองสแกนไลน์ว่างที่ด้านบน จากนั้นจึงแสดงไบต์ของตัวอักษรใน 8 สแกนไลน์ล่างสุด สองไบต์แรกในตัวอักษรจะถูกย้ายไปยังสองสแกนไลน์ล่างสุด วิธีนี้ช่วยให้ชุดตัวอักษรที่ออกแบบมาอย่างเหมาะสมสามารถแสดงส่วนล่างของตัวอักษรได้อย่างถูกต้อง ชุดตัวอักษรใช้ 128 ตัวอักษรและต้องการ RAM 1024 ไบต์
- สีเดียว: โหมด ANTIC 6 และ 7 ในโหมดเหล่านี้ แต่ละบิตในสัญลักษณ์ตัวอักษรจะแสดงถึงหนึ่งพิกเซลที่มีความกว้างหนึ่งนาฬิกาสี สีพื้นหลังคือ COLBK ตัวอักษรสามารถแสดงผลได้ในสี่สีให้เลือก บิตต่ำหกบิตของค่าตัวอักษรระบุสัญลักษณ์ และบิตสูงสองบิตระบุสี เนื่องจากค่าตัวอักษรลดลงเหลือหกบิต ชุดตัวอักษรจึงใช้ 64 ตัวอักษรและต้องการ RAM 512 ไบต์ บิตค่า 0 ในสัญลักษณ์ตัวอักษรแสดงสีพื้นหลัง บิตค่า 1 ในข้อมูลสัญลักษณ์แสดงหนึ่งในสี่ตัวเลือกสีที่เป็นไปได้โดยอิงจากบิตสูงสองบิตของค่าตัวอักษร บิตค่าตัวอักษร 7 และ 6:
| รายละเอียดของตัวละคร [7:6] | ช่วงตัวละคร | สีของพิกเซล Glyph |
|---|---|---|
| 0 0 = 00 ดอลลาร์ | 00 – 3F ดอลลาร์ | คอลฟ์0 |
| 0 1 = 40 ดอลลาร์ | 40 ดอลลาร์ – 7 ฟรังก์ | คอลฟ์1 |
| 1 0 = 80 ดอลลาร์ | 80 ดอลลาร์ - บีเอฟ | คอลฟ์2 |
| 1 1 = $C0 | $C0 - $FF | โคลฟ3 |
- โหมดหลายสี: โหมด ANTIC 4 และ 5 ในโหมดอักขระเหล่านี้ บิตแต่ละคู่ในสัญลักษณ์อักขระจะแสดงถึงพิกเซลที่มีความกว้างหนึ่งนาฬิกาสี ดังนั้นข้อมูลสัญลักษณ์อักขระหนึ่งไบต์จึงแสดงพิกเซล 4 พิกเซล แทนที่จะเป็น 8 พิกเซลในโหมดอื่นๆ ชุดอักขระใช้ 128 อักขระและต้องการ RAM 1024 ไบต์ สีพื้นหลังคือCOLBKโหมดนี้อนุญาตให้แสดงสีได้สูงสุดสี่สี (รวมถึงพื้นหลัง) ในเมทริกซ์อักขระเดียว หากตั้งค่าบิตสูงของค่าอักขระ (เช่น วิดีโอแบบกลับด้าน) สีที่ห้าCOLPF3จะแสดงแทนที่รูปแบบบิตพิกเซล "11" ที่ปกติแสดงCOLPF2การเลือกสีขึ้นอยู่กับคู่บิตของสัญลักษณ์อักขระ:
| ตัวละครส่วนที่ 7 | คู่บิตสัญลักษณ์ | สีของพิกเซล Glyph |
|---|---|---|
| 0/1 = 00/80 ดอลลาร์ | 0 0 | คอลบ์ |
| 0/1 = 00/80 ดอลลาร์ | 0 1 | คอลฟ์0 |
| 0/1 = 00/80 ดอลลาร์ | 1 0 | คอลฟ์1 |
| 0 = 00 ดอลลาร์ | 1 1 | คอลฟ์2 |
| 1 = 80 ดอลลาร์ | 1 1 | โคลฟ3 |
โหมดแผนที่
| โหมดแผนที่แอนติค | โหมดระบบปฏิบัติการ | จำนวนพิกเซลต่อบรรทัดโหมด (แคบ/ปกติ/กว้าง) | เส้นสแกนทีวีต่อเส้นโหมด | จำนวนไบต์ต่อบรรทัดโหมด (แคบ/ปกติ/กว้าง) | บิตต่อพิกเซล | สี | นาฬิกาสีต่อพิกเซล |
|---|---|---|---|---|---|---|---|
| 8 | 3 | 32/40/48 | 8 | 8/10/12 | 2 | 4 | 4 |
| 9 | 4 | 64/80/96 | 4 | 8/10/12 | 1 | 2 | 2 |
| เอ | 5 | 64/80/96 | 4 | 16/20/24 | 2 | 4 | 2 |
| บี | 6 | 128/160/192 | 2 | 16/20/24 | 1 | 2 | 1 |
| ซี | 14 (XL OS) | 128/160/192 | 1 | 16/20/24 | 1 | 2 | 1 |
| ดี | 7 | 128/160/192 | 2 | 32/40/48 | 2 | 4 | 1 |
| อี | 15 (XL OS) | 128/160/192 | 1 | 32/40/48 | 2 | 4 | 1 |
| เอฟ | 8 | 256/320/384 | 1 | 32/40/48 | 1 | 1 1 ⁄ 2 | 1/2 |
โหมด GTIA
โหมด GTIA คือจอแสดงผล Antic Mode F ที่มีตัวเลือกการตีความสีแบบอื่น ซึ่งเปิดใช้งานผ่านรีจิสเตอร์GTIA PRIOR ($D01B hex /53275 dec ) โดยมี GPRIOR ($026F hex /623 dec ) เป็นตัวบัง การแสดงผลสีเต็มรูปแบบของโหมด GTIA เหล่านี้สามารถใช้งานได้ในโหมดข้อความ Antic 2 และ 3 เช่นกัน แต่จะต้องใช้ชุดอักขระแบบกำหนดเองเพื่อให้สามารถใช้งานสีได้อย่างเหมาะสม ดูข้อมูลเพิ่มเติมได้ ใน GTIA
| โหมดแผนที่แอนติค | โหมดระบบปฏิบัติการ | จำนวนพิกเซลต่อบรรทัดโหมด (แคบ/ปกติ/กว้าง) | เส้นสแกนทีวีต่อเส้นโหมด | จำนวนไบต์ต่อบรรทัดโหมด (แคบ/ปกติ/กว้าง) | บิตต่อพิกเซล | สี | นาฬิกาสีต่อพิกเซล | หมายเหตุ |
|---|---|---|---|---|---|---|---|---|
| เอฟ | 9 | 64/80/96 | 1 | 32/40/48 | 4 | 16* | 2 | สีพื้นหลังมีทั้งหมด 16 เฉดสี |
| เอฟ | 10 | 64/80/96 | 1 | 32/40/48 | 4 | 9 | 2 | โหมดการอ้างอิงพิกเซลทางอ้อม—ใช้รีจิสเตอร์สีทั้ง 9 ตัวของสนามเล่นและผู้เล่น/ขีปนาวุธสำหรับพิกเซล |
| เอฟ | 11 | 64/80/96 | 1 | 32/40/48 | 4 | 16* | 2 | เฉดสีทั้ง 15 สี มีความสว่างเท่ากันทั้งหมด โดยกำหนดจากสีพื้นหลัง บวกกับสีพื้นหลังอีกชั้นหนึ่ง |
ดูเพิ่มเติม
ลิงก์ภายนอก
- เกม De Re Atariจัดพิมพ์โดยAtari Program Exchange
- หนังสือ "การทำแผนที่เครื่อง Atari ฉบับปรับปรุง"โดย เอียน แชดวิก
- เอกสารข้อมูลจำเพาะของชิป ANTIC ที่สแกนเป็นไฟล์ PDF