diff --git a/README.md b/README.md index a09eee39..1122122c 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Written by Johan Berntsson and Fredrik Ramsberg in 2018 ## Status +Update 2020-03-04: Release 3 is here. Many bugfixes. Darkmode and splash screen added. Support for four new languages. + Update 2019-06-04: We have created a new release, with several new features, many bugfixes, better docs and other improvements. Update 2018-12-27: We now consider Ozmoo ready for production use. A few minor features are missing, like output to printer and the ability to save and restore arbitrary parts of memory, and chances are they won't be added. diff --git a/asm/ozmoo.asm b/asm/ozmoo.asm index a984037a..cdbe9391 100644 --- a/asm/ozmoo.asm +++ b/asm/ozmoo.asm @@ -345,7 +345,7 @@ z_init !ifdef Z4PLUS { lda #8 sta story_start + header_interpreter_number ; Interpreter number (8 = C64) - lda #66 ; "B" = release 2 + lda #67 ; "C" = release 3 sta story_start + header_interpreter_version ; Interpreter version. Usually ASCII code for a capital letter lda #25 sta story_start + header_screen_height_lines diff --git a/asm/screen.asm b/asm/screen.asm index 24d8a5d4..7eeed354 100644 --- a/asm/screen.asm +++ b/asm/screen.asm @@ -194,8 +194,9 @@ z_ins_print_table ldy .pt_width - jsr read_next_byte jsr translate_zscii_to_petscii + bcs + ; Illegal char jsr printchar_buffered - dey ++ dey bne - rts } diff --git a/asm/stack.asm b/asm/stack.asm index 9b07ad98..de38eac1 100644 --- a/asm/stack.asm +++ b/asm/stack.asm @@ -516,11 +516,25 @@ stack_return_from_routine bit stack_tmp bmi + rts -+ +read_next_byte_at_z_pc - tay ++ +; +read_next_byte_at_z_pc +; tay lda zp_temp ldx zp_temp + 1 - jmp z_set_variable +; jmp z_set_variable ; Code is followed by z_store_result which will set the variable + +!zone { +z_store_result + ; input: a,x hold result + ; affected: a,x,y + pha + +read_next_byte_at_z_pc + tay + pla + jmp z_set_variable +} + + stack_push ; Push a,x onto stack diff --git a/asm/streams.asm b/asm/streams.asm index 45049c73..8c091019 100644 --- a/asm/streams.asm +++ b/asm/streams.asm @@ -616,6 +616,7 @@ translate_zscii_to_petscii dey bpl - .no_match + ldy .streams_tmp + 1 ; Check if legal cmp #13 beq .case_conversion_done @@ -628,7 +629,6 @@ translate_zscii_to_petscii rts .is_legal ; .case_conversion - ldy .streams_tmp + 1 cmp #$41 bcc .case_conversion_done cmp #$5b diff --git a/asm/zmachine.asm b/asm/zmachine.asm index 2d4443af..792ba005 100644 --- a/asm/zmachine.asm +++ b/asm/zmachine.asm @@ -969,26 +969,26 @@ z_set_variable rts } -!zone { -!ifdef Z5PLUS { -check_for_routine_0 - ; If value in argument 0 is 0, set status flag Z to 1, otherwise set to 0, and return. - lda z_operand_value_high_arr - ora z_operand_value_low_arr - rts -} -check_for_routine_0_and_store - ; If value in argument 0 is 0, store 0 in the variable in byte at Z_PC, then set status flag Z to 1 and return - lda z_operand_value_high_arr - ora z_operand_value_low_arr - bne .not_0 - lda #0 - tax - jsr z_store_result - lda #0 -.not_0 - rts -} +;!zone { +; !ifdef Z5PLUS { +; check_for_routine_0 + ; ; If value in argument 0 is 0, set status flag Z to 1, otherwise set to 0, and return. + ; lda z_operand_value_high_arr + ; ora z_operand_value_low_arr + ; rts +; } +; check_for_routine_0_and_store + ; ; If value in argument 0 is 0, store 0 in the variable in byte at Z_PC, then set status flag Z to 1 and return + ; lda z_operand_value_high_arr + ; ora z_operand_value_low_arr + ; bne .not_0 + ; lda #0 + ; tax + ; jsr z_store_result + ; lda #0 +; .not_0 + ; rts +;} !zone { z_ins_not_supported @@ -1000,17 +1000,6 @@ z_ins_not_supported rts } -!zone { -z_store_result - ; input: a,x hold result - ; affected: a,x,y -+ pha - +read_next_byte_at_z_pc - tay - pla - jmp z_set_variable -} - !zone z_division { z_divide ; input: Dividend in arg 0, divisor in arg 1, y = signed? 0 = unsigned, $ff = signed @@ -1700,7 +1689,9 @@ z_ins_mod !ifdef Z5PLUS { z_ins_call_xn - jsr check_for_routine_0 + ; If value in argument 0 is 0, set status flag Z to 1, otherwise set to 0 + lda z_operand_value_high_arr + ora z_operand_value_low_arr bne + rts + ldx z_operand_count @@ -1718,9 +1709,13 @@ z_ins_call_xn ; VAR instructions z_ins_call_xs - jsr check_for_routine_0_and_store +; jsr check_for_routine_0_and_store + lda z_operand_value_high_arr + ora z_operand_value_low_arr bne + - rts + lda #0 + tax + jmp z_store_result + ldx z_operand_count dex ldy #1 ; Store result = 1 diff --git a/version.txt b/version.txt index d74a9d37..9f55b2cc 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.54 +3.0