§ Схема портов

Порты начинаются с 20h до 5Fh — гарантированно. Но есть и расширенные порты:

§ Периферия #1

Чтение из поортов
$00     Последний ASCII символ от клавиатуры
$01     Значение 100 Гц таймера
$02     [0] =1 Был получен новый символ. При чтении сбрасывается
$03     [0] =1 Был получен VBlank, конец рисования кадра
$04     [3:0]   SD Error
        [5:4]   SD Card Type
        [6]     SD Done :: Успешное выполнение команды
        [7]     SD Busy :: 1-Устройство занято
Запись в порты
$00     [2:0] Цвет бордюра
$01     [0] Номер видеостраницы 0=$8000, 1=$A000
$02     SD LBA [ 7: 0]
$03     SD LBA [15: 8]
$04     SD LBA [23:16]
$05     SD LBA [31:24]
$06     SD CMD =0 Читать =1 Писать
Маппинг памяти
$0000-$00FF Порты
$0100-$7FFF Общая память
$8000-$9FFF Видеостраница #1
$A000-$BFFF Видеостраница #2
$C000-$FBFF Общая память
$FC00-$FFFF SD i/o 1K

§ Порты Arduino

Микроконтроллер Atmega328P:
   | 0/8   |1/9    | 2/A    | 3/B    | 4/C    | 5/D    | 6/E    | 7/F
---+-------+-------+--------+--------+--------+--------+--------+-----
20 | ...   | ...   | ...    | PINB   | DDB    | PORTB  | PINC   | DDC
28 | PORTC | PIND  | DDD    | PORTD  | ...    | ...    | ..     | ...
30 | ...   | ...   | ...    | ...    | ...    | TIFR0  | TIFR1  | TIFR2
38 | ...   | ...   | ...    | PCIFR  | EIFR   | EIMSK  | GPIOR0 | EECR
40 | EEDR  | EEARL | EEARH  | GTCCR  | TCCR0A | TCCR0B | TCNT0  | OCR0A
48 | OCR0B | ...   | GPIOR1 | GPIOR2 | SPCR   | SPSR   | SPDR   | ...
50 | ACSR  | ...   | ...    | SMCR   | MCUSR  | MCUCR  | ...    | SPMCSR
58 | ...   | ...   | ...    | RAMPZ  | ...    | SPL    | SPH    | SREG
Свободные порты резервированы для дальнейшего использования, но я займу для них место под собственную периферию.