diff --git a/STATUS.md b/STATUS.md index b2121aa4..36c679a5 100644 --- a/STATUS.md +++ b/STATUS.md @@ -132,8 +132,8 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | `$FFCF` | `$F157` | `CHRIN` | PARTIAL | no screen support, keyboard does not preserve .Y | | `$FFD2` | `$F1CA` | `CHROUT` | DONE | | | `$FFD5` | `$F49E` | `LOAD` | DONE | | -| `($0330)` | `$F4A5` | `LOAD` | PARTIAL | no VERIFY support | -| `$FFD8` | `$F5DD` | `SAVE` | DONE | only this preparation routine part is done | +| `($0330)` | `$F4A5` | `LOAD` | PARTIAL | no VERIFY support for memory model 60k | +| `$FFD8` | `$F5DD` | `SAVE` | DONE | main routine not done yet | | `($0332)` | `$F5ED` | `SAVE` | NOT DONE | | | `$FFDB` | | `SETTIM` | DONE | | | `$FFDE` | | `RDTIM` | DONE | | diff --git a/c64/kernal/iostack/lvs_helpers.s b/c64/kernal/iostack/lvs_helpers.s index 948de153..60157491 100644 --- a/c64/kernal/iostack/lvs_helpers.s +++ b/c64/kernal/iostack/lvs_helpers.s @@ -33,19 +33,19 @@ lvs_send_file_name_done: lvs_handle_byte_load_verify: - // XXX add VERIFY support + ldy VERCKK + bne lvs_handle_byte_verify - // Save it and advance pointer. // As with our BASIC, we want to enable LOADing // anywhere in memory, including over the IO space. // Thus we have to use a helper routine in low memory // to do the memory access #if CONFIG_MEMORY_MODEL_60K + // Save byte under ROMs and IO if required php sei - // XXX behavior should depend on address ldx #$33 stx $01 ldy #0 @@ -53,14 +53,42 @@ lvs_handle_byte_load_verify: ldx #$37 stx $01 plp + #else + ldy #0 sta (STAL),y + #endif + // FALLTROUGH + +lvs_handle_byte_load_verify_end: + + clc rts + +lvs_handle_byte_verify: + +#if CONFIG_MEMORY_MODEL_60K + + // XXX implement this part + +#else + + ldy #0 + cmp (STAL),y + beq lvs_handle_byte_load_verify_end + +#endif + + sec + rts + + lvs_advance_pointer: + // Advance pointer inc STAL beq !+