This page (revision-16) was last changed on 03-Feb-2023 15:21 by Steve N 

This page was created on 23-Jan-2016 02:37 by Steve N

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
16 03-Feb-2023 15:21 25 KB Steve N to previous
15 26-Jan-2016 01:32 25 KB Steve N to previous | to last Added table of contents
14 24-Jan-2016 11:42 25 KB Steve N to previous | to last Amended relocation text
13 24-Jan-2016 09:38 25 KB Steve N to previous | to last Added alternate drive check information. Needs comments on status codes.
12 24-Jan-2016 05:58 24 KB Steve N to previous | to last Added credit information
11 23-Jan-2016 10:21 24 KB Steve N to previous | to last Cleaned up the English from Google English to UK English in the examples sectio.
10 23-Jan-2016 10:03 24 KB Steve N to previous | to last Previously missed out a couple of updates
9 23-Jan-2016 10:02 24 KB Steve N to previous | to last Cleaned up plenty of copied and pasted code.
8 23-Jan-2016 08:32 24 KB Steve N to previous | to last Wiki restricts consecutive spaces to 1, using code formatting to stop this.
7 23-Jan-2016 06:55 24 KB Steve N to previous | to last Added download location information and amended formatting...
6 23-Jan-2016 06:49 24 KB Steve N to previous | to last Formatting amendments... needs a lot more
5 23-Jan-2016 06:41 24 KB Steve N to previous | to last Formatting corrections...
4 23-Jan-2016 03:13 24 KB Steve N to previous | to last Added .cfg file details
3 23-Jan-2016 02:57 23 KB Steve N to previous | to last Cleaned up formatting a lot. Ready for public viewing and amendment.
2 23-Jan-2016 02:45 23 KB Steve N to previous | to last Some headers set up, still needs lots of reformatting... (work in progress)
1 23-Jan-2016 02:37 25 KB Steve N to last Initial raw dump from document released on AtariAge

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 added 2 lines
[{TableOfContents}]
At line 11 added 2 lines
!Download Location
[http://xxl.atari.pl]
At line 16 changed one line
FIlenames are padded out to 11 characters and are converted to uppercase.
Filenames are padded out to 11 characters and are converted to uppercase.
At line 18 changed 2 lines
‘FILE TXT’
4 letters, 4 spaces and and a 3 character extension
{{{
‘FILE TXT’ (4 letters, 4 spaces and a 3 character extension)
}}}
At line 24 changed 3 lines
New files cannot be created.
Existing files cannot be extended in length.
New directories cannot be created.
a) New files cannot be created.
At line 33 added 4 lines
b) Existing files cannot be extended in length.
c) New directories cannot be created programatically.
At line 55 changed one line
!!Practical Usage
!!!Practical Usage
At line 69 added one line
At line 79 changed 7 lines
xBIOS equ $800
xBIOS_VERSION equ xBIOS+$02
xBIOS_RENAME_ENTRY equ xBIOS+$03
xBIOS_LOAD_FILE equ xBIOS+$06
xBIOS_OPEN_FILE equ xBIOS+$09
xBIOS_LOAD_DATA equ xBIOS+$0c
xBIOS_WRITE_DATA equ xBIOS+$0f
xBIOS equ $800
xBIOS_VERSION equ xBIOS+$02
xBIOS_RENAME_ENTRY equ xBIOS+$03
xBIOS_LOAD_FILE equ xBIOS+$06
xBIOS_OPEN_FILE equ xBIOS+$09
xBIOS_LOAD_DATA equ xBIOS+$0c
xBIOS_WRITE_DATA equ xBIOS+$0f
At line 87 changed 5 lines
xBIOS_GET_BYTE equ xBIOS+$15
xBIOS_PUT_BYTE equ xBIOS+$18
xBIOS_FLUSH_BUFFER equ xBIOS+$1b
xBIOS_SET_LENGTH equ xBIOS+$1e
xBIOS_SET_INIAD equ xBIOS+$21
xBIOS_GET_BYTE equ xBIOS+$15
xBIOS_PUT_BYTE equ xBIOS+$18
xBIOS_FLUSH_BUFFER equ xBIOS+$1b
xBIOS_SET_LENGTH equ xBIOS+$1e
xBIOS_SET_INIAD equ xBIOS+$21
At line 93 changed 3 lines
xBIOS_SET_RUNAD equ xBIOS+$27
xBIOS_SET_DEFAULT_DEVICE equ xBIOS+$2a
xBIOS_OPEN_DIR equ xBIOS+$2d
xBIOS_SET_RUNAD equ xBIOS+$27
xBIOS_SET_DEFAULT_DEVICE equ xBIOS+$2a
xBIOS_OPEN_DIR equ xBIOS+$2d
At line 98 changed one line
xBIOS_SET_DEVICE equ xBIOS+$36
xBIOS_SET_DEVICE equ xBIOS+$36
At line 100 changed one line
xBIOS_GET_ENTRY equ xBIOS+$3c
xBIOS_GET_ENTRY equ xBIOS+$3c
At line 102 changed 2 lines
xBIOS_READ_SECTOR equ xBIOS+$42
xBIOS_FIND_ENTRY equ xBIOS+$45
xBIOS_READ_SECTOR equ xBIOS+$42
xBIOS_FIND_ENTRY equ xBIOS+$45
At line 125 changed one line
Each entry in this jump table specifies where in memory that the code for each function resides. Replace the $xxxx at the start with a starting address. $0800 should a be safe address for all purposes. If you ever wish to start from a different address, simply change the value for ‘xBIOS’.
Each entry in this jump table specifies where in memory that the code for each function resides. If you ever wish to start from a different address, change the value for ‘xBIOS’ above and change the value in the binary header of xBIOS.com.
At line 134 changed one line
.byte c'XAUTORUN ' ; autorn file fname
.byte c'XAUTORUN ' ; autorun file fname
At line 146 changed one line
Please note that xBIOS do not use page zero.
Please note that xBIOS do not use page zero. You can change the start address from the third entry above.
At line 148 removed 2 lines
At line 152 changed one line
!Examples
!!!Examples
At line 154 changed one line
Here are some of the examples taken from http://xxl.atari.pl and other online sources, but with a few extra / modified comments in English.
Here are some of the examples taken from http://xxl.atari.pl and other online sources, but with a few extra/modified comments in English.
At line 166 added one line
At line 171 removed one line
Load and run the file, INIT and RUN headers are supported. Boot Loader has an analogous function xBOOT_LOAD_FILE. In the case of the boot loader if the file does not have a defined block RUN will be launched from the beginning of the first block.
At line 181 added 2 lines
Load and run the file, INIT and RUN headers are supported. "Boot Loader" has an analogous function xBOOT_LOAD_FILE. In the case of the boot loader if the file does not have a defined block RUN will be launched from the beginning of the first block.
At line 201 added one line
At line 200 removed one line
Data starting from the given address in the memory, save to a file, you can set the file pointer offset current (FILE_OFFSET) and the amount of data to be saved (SET_LENGTH). If you do not define these values ​​in the file are stored data from the current file position to the end of the file.
At line 212 added 2 lines
Save data from memory to a file, starting from the current position in the file. You can set the file pointer offset current (FILE_OFFSET) and the amount of data to be saved (SET_LENGTH). If you do not define these values, data from the current file position to the end of the file is written to the file.
At line 235 added one line
At line 244 added one line
At line 238 removed one line
Defines the amount of data processed while reading or writing. If your OPEN_FILE value is not defined this operation will be carried out until the end of the file.
At line 253 added 2 lines
Defines the amount of data to process while reading or writing. If your OPEN_FILE value is not defined this operation will be carried out until the end of the file.
At line 247 removed one line
Allows you to change the vector location INITAD ($ 2E2) loaded binary files.
At line 263 added 2 lines
Allows you to change the init address vector INITAD ($2E2) for loaded binary files.
At line 256 removed one line
Sets the current position of the read / write file on a value stored in the A, X, Y. This item is calculated relative to the beginning of the file. Number of byte that will be read or written. In DOS operation is called POINT.
At line 273 added 2 lines
Sets the current read/write position in the current file with a value stored in A, X, Y. This item is calculated relative to the beginning of the file. In DOS speak, the operation is called "POINT".
At line 266 removed one line
Allows you to change the vector location RUNAD ($ 2E0) loaded binary files.
At line 284 added 2 lines
Allows you to change the run address vector RUNAD ($2E0) for loaded binary files.
At line 275 changed one line
Restores the standard I / O controller external device.
Restores the standard IO device.
At line 292 removed one line
Load and run the binary file from the current position of the read / write. INIT and RUN headers are supported.
At line 312 added 2 lines
Load and run the binary file from the current read/write position. INIT and RUN headers are supported.
At line 319 added one line
At line 307 changed one line
Change the I / O controller external device.
Change the IO device.
At line 326 changed one line
Gets another entry in the directory. In the registry X returns the index to the filename or folder (byte of buffer address is stored in the variable xBUFFERH) A registry is transmitted status byte entry. C is set to mark the end of the directory.
Gets another entry in the directory. The X register returns the index to the filename or folder (byte of buffer address is stored in the variable xBUFFERH). The accumulator is set with the status. The carry flag is set when the end of the directory is found.
At line 333 removed one line
To open the default file. The function does not search the directory file handle is taken from the variable Xfile.
At line 355 added 2 lines
Opens the default file. The function does not search the directory, the file handle is derived from the variable 'Xfile'.
At line 362 added one line
At line 350 changed one line
Function allows you to find the specified directory entry. In the registry X returns the index to the filename or folder (byte of buffer address is stored in the variable xBUFFERH). A registry is transmitted status byte entry. Set marker C is an entry not found.
This function allows you to find the specified directory entry. The X register returns the index to the filename or folder (byte of buffer address is stored in the variable xBUFFERH). The accumulator is the status byte. If an entry is not found, the carry flag is set.
At line 359 changed one line
Feature allows you to set the buffer size for I / O operations. Buffer Size - byte - is also stored in the variable xBUFSIZE.
This feature allows you to set the buffer size for IO operations. Buffer Size is also stored in the variable xBUFSIZE in bytes format.
At line 369 changed 3 lines
xIRQEN equ xBIOS+$3ea ; User IRQ (1 byte)
xSEGMENT equ xBIOS+$3f4 ; Bytes to go in binary file segment (2 bytes)
xNOTE equ xBIOS+$3f6 ; File pointer (3 bytes)
xIRQEN equ xBIOS+$3ea ; User IRQ (1 byte)
xSEGMENT equ xBIOS+$3f4 ; Bytes to go in binary file segment (2 bytes)
xNOTE equ xBIOS+$3f6 ; File pointer (3 bytes)
At line 373 changed one line
PUPBT1 equ $033D ;power-up validation byte 1
PUPBT1 equ $033D ; Power-up validation byte 1
At line 375 changed one line
icl 'atarihw.ah'
icl 'atarihw.ah'
At line 377 changed one line
opt h+o+l+
opt h+o+l+
At line 396 changed one line
jsr xBIOS_SET_DEFAULT_DEVICE ; SIO drive
jsr xBIOS_SET_DEFAULT_DEVICE ; SIO drive
At line 399 changed one line
jmp xBIOS_SET_RUNAD ; new runad vector
jmp xBIOS_SET_RUNAD ; new runad vector
At line 403 changed one line
.word run_adr ; RUN
.word run_adr ; RUN
At line 406 changed one line
.byte d'xxl' ; let the RESET key works as RESET key
.byte d'xxl' ; Let the RESET key work as a RESET key
At line 408 changed one line
org $0000
org $0000
At line 410 changed one line
run_adr lda #$74
run_adr lda #$74
At line 412 changed one line
_stop jmp _stop ; endless loop
_stop jmp _stop ; Endless loop
At line 422 changed one line
start sei
start sei
At line 438 changed one line
lda #$22
lda #$22
At line 440 changed one line
lda #$40
lda #$40
At line 442 changed one line
rts
rts
At line 444 changed 3 lines
MyNMI sta nmiA
sty nmiY
MyNMI sta nmiA
sty nmiY
At line 452 changed one line
At line 468 changed one line
endnmi lda #0
endnmi lda #0
At line 470 changed one line
ldy #0
ldy #0
At line 472 changed one line
rti
rti
At line 492 changed one line
org $0c00
org $0c00
At line 494 changed one line
:$c300 .byte $ff
:$c300 .byte $ff
At line 501 changed one line
opt h+o+l+
opt h+o+l+
At line 504 changed one line
.byte d'xxl' ; let the RESET key works as RESET key
.byte d'xxl' ; Let the RESET key work as a RESET key
At line 506 changed one line
org $c00
org $c00
At line 521 changed one line
jmp xBIOS_SET_DEFAULT_DEVICE ; SIO drive
jmp xBIOS_SET_DEFAULT_DEVICE ; SIO drive
At line 523 changed 2 lines
MyNMI sta vbisaveA+1
stx vbisaveX+1
MyNMI sta vbisaveA+1
stx vbisaveX+1
At line 526 changed one line
speed lda #0
speed lda #0
At line 528 changed 9 lines
loadpat ldx #0
lda pat,x
bmi pass
asl @
asl @
asl @
asl @
sta wp+1
pass inx
loadpat ldx #0
lda pat,x
bmi pass
asl @
asl @
asl @
asl @
sta wp+1
pass inx
At line 539 changed 9 lines
wp ldx #0
lda ins,x
sta audc1
lda frq,x
sta audf1
inc wp+1
dec speed+1
bpl pass2
lda #5
wp ldx #0
lda ins,x
sta audc1
lda frq,x
sta audf1
inc wp+1
dec speed+1
bpl pass2
lda #5
At line 549 changed 8 lines
wp1 lda #$20
sta pass2+1
eor #$60
sta wp1+1
pass2 ldx #0
lda ins,x
sta audc2
inc pass2+1
wp1 lda #$20
sta pass2+1
eor #$60
sta wp1+1
pass2 ldx #0
lda ins,x
sta audc2
inc pass2+1
At line 558 changed 3 lines
vbisaveA lda #0
vbisaveX ldx #0
rti
vbisaveA lda #0
vbisaveX ldx #0
rti
At line 562 changed 10 lines
ins .byte $0F,$AF,$AC,$A7,$A2,$00,$04,$A3
.byte $22,$21,$A1,$00,$00,$00,$00,$00
.byte $AF,$AF,$09,$07,$05,$04,$04,$03
.byte $03,$03,$02,$02,$02,$01,$01,$00
.byte $87,$84,$83,$82,$81,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $84,$84,$84,$84,$84,$84,$83,$83
.byte $83,$83,$82,$82,$81,$81,$00,$00
.byte $83,$82,$81,$81,$81,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
ins .byte $0F,$AF,$AC,$A7,$A2,$00,$04,$A3
.byte $22,$21,$A1,$00,$00,$00,$00,$00
.byte $AF,$AF,$09,$07,$05,$04,$04,$03
.byte $03,$03,$02,$02,$02,$01,$01,$00
.byte $87,$84,$83,$82,$81,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $84,$84,$84,$84,$84,$84,$83,$83
.byte $83,$83,$82,$82,$81,$81,$00,$00
.byte $83,$82,$81,$81,$81,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
At line 573 changed 8 lines
frq .byte $04,$C0,$D0,$E0,$F0,$00,$04,$C0
.byte $D0,$E0,$F0,$00,$00,$00,$00,$00
.byte $98,$A8,$03,$03,$03,$03,$03,$03
.byte $03,$03,$03,$03,$03,$03,$03,$03
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
frq .byte $04,$C0,$D0,$E0,$F0,$00,$04,$C0
.byte $D0,$E0,$F0,$00,$00,$00,$00,$00
.byte $98,$A8,$03,$03,$03,$03,$03,$03
.byte $03,$03,$03,$03,$03,$03,$03,$03
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
At line 582 changed 8 lines
pat .byte $00,$80,$00,$80,$01,$80,$00,$00
.byte $80,$00,$00,$80,$01,$80,$03,$80
.byte $00,$80,$00,$80,$01,$80,$02,$02
.byte $00,$80,$01,$01,$80,$00,$03,$80
.byte $00,$80,$00,$80,$01,$80,$00,$00
.byte $80,$00,$00,$80,$01,$80,$03,$80
.byte $00,$00,$00,$80,$01,$00,$00,$80
.byte $00,$80,$01,$01,$80,$00,$01,$00
pat .byte $00,$80,$00,$80,$01,$80,$00,$00
.byte $80,$00,$00,$80,$01,$80,$03,$80
.byte $00,$80,$00,$80,$01,$80,$02,$02
.byte $00,$80,$01,$01,$80,$00,$03,$80
.byte $00,$80,$00,$80,$01,$80,$00,$00
.byte $80,$00,$00,$80,$01,$80,$03,$80
.byte $00,$00,$00,$80,$01,$00,$00,$80
.byte $00,$80,$01,$01,$80,$00,$01,$00
At line 594 changed 3 lines
:$C000 .byte $ff
org $D800
:$2700 .byte $ff
:$C000 .byte $ff
org $D800
:$2700 .byte $ff
At line 598 changed one line
run_adr lda #$74
run_adr lda #$74
At line 609 changed 5 lines
xFILE equ xBIOS+$3ec ; file handle
xDAUX3 equ xBIOS+$3f3 ; buffer offset if AtariDOS FS
xDAUX2 equ xBIOS+$3fd ; sektor hi if AtariDOS FS
xDAUX1 equ xBIOS+$3fe ; sektor lo if AtariDOS FS
PUPBT1 equ $033D ;power-up validation byte 1
xFILE equ xBIOS+$3ec ; File handle
xDAUX3 equ xBIOS+$3f3 ; Buffer offset if AtariDOS FS
xDAUX2 equ xBIOS+$3fd ; Sector hi if AtariDOS FS
xDAUX1 equ xBIOS+$3fe ; Sector lo if AtariDOS FS
PUPBT1 equ $033D ; Power-up validation byte 1
At line 620 changed one line
.byte d'xxl' ; let the RESET key works as RESET key
.byte d'xxl' ; Let the RESET key work as a RESET key
At line 712 added one line
At line 732 changed one line
lda #2 ; Use disk drive number 2
lda #2 ; Use disk drive number 2
At line 760 added 10 lines
!Checking if Alternative Disk Drives Exist
Apply this code to check if a particular disk drive exists (1-8).
{{{
lda #device_number
sta xDEVICE
jsr status
}}}
At line 806 added 8 lines
------
{{{
Original document from Steve Nicklin (snicklin at AtariAge).
Imported into AtariWiki (23/01/2016) to allow peer feedback and improvement.
}}}