sigil-kernel's twelfth HAL batch adds 10 more seams — Apple: Watch bridge SiP (S-series pairing/auto-unlock/health relay/notifications), Continuity Handoff (4-device registry, Universal Clipboard, AirDrop, call relay), AirPlay 2 receiver (mirror/audio/video streams, HEVC, 8-frame ring, 1080p60), biometric HAL (Touch ID/Face ID, SEP-injected match, liveness, 5-attempt lockout, EL1-only), kernel panic reporter (panic code/PC/reason, 8-entry crash ring, WDT heartbeat). PowerPC: NuBus 6-slot (DeclROM, ATI Rage II + 3Com), SCSI NCR 53C96 (select/xfr/byte counter), UltraATA (LBA READ/WRITE/IDENTIFY, 2-drive), SONIC dp83932 Ethernet (CAM/TX/RX/ISR), AltiVec SIMD (4 VRs × 4×32-bit, vspltw/vaddfp/vmaxsw/vsumsws). All QEMU PASS. (sigil-kernel d142bc6–17d1921)
Apple seams
apple_watchbridge.sg (d142bc6)
S-series Apple Watch bridge SiP. The Watch communicates with the host SoC via a dedicated low-power radio SiP that exposes health sensors, pairing state, and notification delivery over a structured register interface at 0x470000.
- Discovery: present flag,
sver(firmware version), RSSI signal strength. - Pairing: stores trust bond. Wrist detection: wrist-on flag.
- Auto-unlock: if watch is trusted AND wrist-on AND RSSI ≥ threshold → unlock granted.
- Health relay: heart rate, daily step count, wrist temperature.
- Notification push: message / call / alert categories.
PASS: AWB init=1 lck=1 hlt=1
apple_handoff.sg (038551c)
Continuity Handoff — the cross-device activity relay layer. Exposes a 4-device registry and structured transfer channels at 0x472000.
- 4-device registry: iPhone, iPad, Mac, Watch — each with trust level and RSSI.
- Universal Clipboard: len + CRC (content validated before hand-off).
- Call relay: in-progress call state mirrored to the host.
- AirDrop: transfer size + progress tracking.
PASS: HO init=1 cls=1 adr=1
apple_airplay.sg (bd256d1)
AirPlay 2 receiver — acts as a sink for mirror, audio, and video streams from any AirPlay 2 source. Register base 0x474000.
- Session lifecycle: idle → setup → active → teardown.
- Stream types: mirror (screen), audio, video.
- HEVC codec for video streams.
- 8-frame ring buffer with drop detection (counts dropped frames).
- 1080p60 mirror setup. Bitrate tracking.
PASS: AP init=1 mir=1 frm=1
apple_biometric.sg (cc30300)
Touch ID / Face ID HAL. All match logic stays in the Secure Enclave Processor (SEP); the kernel only reads the injected result. Register base 0x476000.
- Sensor type: Touch ID fingerprint or Face ID depth-map scan.
- Liveness check: ensures a live finger/face (anti-spoof).
- SEP-injected match result: PASS / FAIL / LIVE (liveness only) / LOCK (locked out).
- Enrollment count: how many enrolled templates. Template/score data stays in SEP — nothing above EL1.
- 5-attempt lockout: fails after 5 consecutive mismatches.
- EL1-only gate: EL0 apps cannot call biometric APIs directly; all calls go through the EL1 broker.
PASS: BIO init=1 scn=1 lck=1
apple_panic.sg (17d1921)
Kernel panic reporter — captures fault state before the system halts, and drives the WDT heartbeat to detect hung kernels. Register base 0x478000.
- Captures: panic code, faulting PC (program counter), human-readable reason string.
- Per-boot panic count.
- Watchdog timer: heartbeat must be kicked within 16 ticks; missed heartbeat → auto-trigger panic.
- 8-entry crash ring: circular buffer of recent panics (oldest overwritten).
- Clean-shutdown flag: set on graceful shutdown, cleared on panic, checked at next boot to detect dirty reboot.
PASS: PAN init=1 trg=1 wdt=1
Pairing with lcars_panic_screen: When apple_panic triggers, the kernel calls lcars_panic_screen (sigil-video, see separate post) to display the gold FAULT screen over the GOP framebuffer — the same path used for x86 real-hardware debugging under sigil-os#18.
PowerPC seams
ppc_nubus.sg (d142bc6)
G3 NuBus 6-slot expansion bus — the pre-PCI expansion architecture used in early Power Macs. Register base 0x471000.
- 6 slots, each with DeclROM: vendor ID, device ID, category (display/network), IRQ channel.
- Present count tracks populated slots.
- Arbiter mask: per-slot bus-access arbitration.
- Populated: ATI Rage II (display, slot 0) + 3Com network (slot 1).
PASS: NB init=1 pop=1 cat=1
ppc_scsi.sg (038551c)
G3 NCR 53C96 SCSI controller — the primary storage interface on pre-IDE Power Macs. Register base 0x473000.
- Registers: TCL (transfer count low), TCM (transfer count mid), FIFO, CMD, STAT, INTR, SSTP, CFG1, CCF (clock conversion), CFG2.
- SCSI-ID config (host ID selection). Target select (SEL interrupt after selection).
- Data transfer (COMP interrupt on transfer complete). Byte counter.
PASS: SCSI init=1 sel=1 xfr=1
ppc_ide.sg (bd256d1)
G3 UltraATA/IDE controller — the ATA-4 compliant interface for hard drives and optical drives on later G3/G4 Power Macs. Register base 0x475000.
- Standard 8-register ATA-4 interface: DATA / ERR / NSECT / LBA0 / LBA1 / LBA2 / LBA3 / CMD / STAT / ALTSTAT.
- LBA mode. Commands: READ sectors, WRITE sectors, IDENTIFY device.
- Sector-count accumulator. 2-drive model (primary/secondary).
PASS: IDE init=1 sel=1 cmd=1
ppc_sonic.sg (cc30300)
G3 dp83932 SONIC Ethernet controller — the National Semiconductor SONIC chip used in pre-PCI Power Macs for 10Mbps Ethernet. Register base 0x477000.
- Registers: CR (command), DCR (data config), RCR (receive config), TCR (transmit config), ISR (interrupt status), IMR (interrupt mask).
- CAM (Content Addressable Memory): MAC address stored as 3 × 16-bit words.
- Start: RXEN bit enables receive. TX: TCSD flag in ISR. RX inject path. CRC + missed-frame tallies.
PASS: SONIC init=1 run=1 tx=1
ppc_altivec.sg (17d1921)
G4/G5 VMX/AltiVec SIMD unit — the 128-bit vector extension introduced with the G4 (MPC7400) and carried forward to the G5 (PPC970). Register base 0x479000.
- 4 vector registers (VR0–VR3), each 4 × 32-bit (128-bit total).
- VSCR (Vector Status and Control Register): SAT (saturation sticky) + NJ (non-Java/flush-to-zero) bits.
- Instructions modeled:
vspltw(broadcast scalar to all lanes),vaddfp(element-wise float add),vmaxsw(element-wise signed word max),vsumsws(sum across 4 elements with saturation at 999999999).
PASS: AV init=1 vsp=1 sum=1
Seam address table — Batch 12
| Address | Seam | Commit | Result |
|---|---|---|---|
0x470000 | apple_watchbridge.sg — Watch bridge SiP | d142bc6 | AWB init=1 lck=1 hlt=1 |
0x471000 | ppc_nubus.sg — G3 NuBus 6-slot | d142bc6 | NB init=1 pop=1 cat=1 |
0x472000 | apple_handoff.sg — Continuity Handoff | 038551c | HO init=1 cls=1 adr=1 |
0x473000 | ppc_scsi.sg — NCR 53C96 SCSI | 038551c | SCSI init=1 sel=1 xfr=1 |
0x474000 | apple_airplay.sg — AirPlay 2 receiver | bd256d1 | AP init=1 mir=1 frm=1 |
0x475000 | ppc_ide.sg — UltraATA/IDE | bd256d1 | IDE init=1 sel=1 cmd=1 |
0x476000 | apple_biometric.sg — Touch ID / Face ID | cc30300 | BIO init=1 scn=1 lck=1 |
0x477000 | ppc_sonic.sg — dp83932 SONIC Ethernet | cc30300 | SONIC init=1 run=1 tx=1 |
0x478000 | apple_panic.sg — kernel panic reporter | 17d1921 | PAN init=1 trg=1 wdt=1 |
0x479000 | ppc_altivec.sg — G4/G5 AltiVec SIMD | 17d1921 | AV init=1 vsp=1 sum=1 |