Define ADV tag 1 as boot-once; overrides DEFAULT once only
;; has no special meaning.
;;
+;;
+;; List of ADV tags...
+;;
+ADV_BOOTONCE equ 1
+
+;;
+;; Other ADV data...
+;;
ADV_MAGIC1 equ 0x5a2d2fa5 ; Head signature
ADV_MAGIC2 equ 0xa3041767 ; Total checksum
ADV_MAGIC3 equ 0xdd28bf64 ; Tail signature
no_config_file:
call adv_init
+;
+; Check for an ADV boot-once entry
+;
+ mov dl,ADV_BOOTONCE
+ call adv_get
+ jcxz .no_bootonce
+
+.have_bootone:
+ ; We apparently have a boot-once set; clear it and
+ ; then execute the boot-once...
+
+ ; Save the boot-once data; SI = data, CX = length
+ mov di,command_line
+ rep movsb
+ xor ax,ax
+ stosb
+
+ ; Clear the boot-once data from the ADV
+ xor cx,cx ; Set to zero = delete
+ call adv_set
+ jc .err
+ call adv_write
+.err: jmp load_kernel
+
+.no_bootonce:
;
; Check whether or not we are supposed to display the boot prompt.