Pro načítání či ukládání dat lze ve vlastním programu efektivně použít povely OPEN, BGET nebo BPUT a CLOSE. Všechny tyto příkazy jsou implementovány například v TBASICu (standardní Atari BASIC má místo BGET a BPUT pouze GET a PUT pro přečtení/zápis vždy jen jednoho bytu), my se však podíváme na provedení Assemblerové.
K tomu bych ještě rád dodal, že považuji za velmi dobré, když užitkové programy nabízí ukládání a načítání svých dat přes CIO - tedy přes zařízení:název. Daleko pohodlněji se s nimi pak pracuje a díky tomu je též možné využívat pro data libovolné médium (např. disk, kazeta, turbo - kilové bloky), stejně tak jako virtuální zařízení (např. v emulátorech přístup přes H: na harddisk), včetně případných dalších "budoucích" zařízení. A to vše bez potřeby jakýchkoliv zásahů do programu samotného a bez nutnosti vyrábět speciální verze pro jednotlivé typy médií.
Následující příklad obsahuje tři rutiny. První provede otevření souboru "D:FILENAME.EXT", druhá načtení 1024 bytů dat do paměti od adresy $5000 (20480 decimálně), třetí uzavře soubor. Vše je okomentované a velmi názorné, takže není problém upravit si zdrojový kód pro vlastní potřeby včetně obměny BGET za BPUT pro ukládání dat.
CIOV .EQU $E456 ;vektor CIO rutiny
CHA .EQU $30 ;kanál IOCB3
ADR .EQU $5000 ;adresa začátku dat
LEN .EQU $03FF ;délka dat
;OPEN #3,4,0,"D:FILENAME.EXT"
OPEN
LDX #CHA
LDA #3
STA $0342,X
LDA #4 ;4=čtení,8=zápis
STA $034A,X
LDA #0
STA $034B,X
LDA #[<FNAME]
STA $0344,X
LDA #[>FNAME]
STA $0345,X
JSR CIOV ;v Y vrací status
RTS
FNAME .BYTE "D:FILENAME.EXT",0
;BGET #3,ADR,LEN
BGET
LDX #CHA
LDA #7 ;7=BGET,11=BPUT
STA $0342,X
LDA #[<ADR] ;DB adresa začátku
STA $0344,X
LDA #[>ADR] ;HB adresa začátku
STA $0345,X
LDA #[<LEN] ;DB počet bytů
STA $0348,X
LDA #[>LEN] ;HB počet bytů
STA $0349,X
JSR CIOV ;v Y vrací status
RTS
Poznámka:
Po návratu z CIO rutiny obdržíme v Y registru status IO operace. Potřebujeme-li znát počet skutečně načtených bytů, například v případě, že při čtení došlo k chybě dosažením konce souboru, můžeme jej přečíst z adres:
LDA $0348,X ;DB počet bytů
LDA $0349,X ;HB počet bytů
CLOSE
LDX #CHA
LDA #$0C
STA $0342,X
JSR CIOV ;v Y vrací status
RTS