reverse.s (2312B)
1;-------------------------------------------------------------------------- 2; reverse.s 3; 4; Copyright (C) 2020, Tony Pavlov 5; 6; This library is free software; you can redistribute it and/or modify it 7; under the terms of the GNU General Public License as published by the 8; Free Software Foundation; either version 2, or (at your option) any 9; later version. 10; 11; This library is distributed in the hope that it will be useful, 12; but WITHOUT ANY WARRANTY; without even the implied warranty of 13; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14; GNU General Public License for more details. 15; 16; You should have received a copy of the GNU General Public License 17; along with this library; see the file COPYING. If not, write to the 18; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, 19; MA 02110-1301, USA. 20; 21; As a special exception, if you link this library with other files, 22; some of which are compiled with SDCC, to produce an executable, 23; this library does not by itself cause the resulting executable to 24; be covered by the GNU General Public License. This exception does 25; not however invalidate any other reasons why the executable file 26; might be covered by the GNU General Public License. 27;-------------------------------------------------------------------------- 28 29 .module reverse 30 31 .area _HOME 32 33_reverse:: 34 lda HL, 2(SP) 35 ld A, (HL+) 36 ld H, (HL) 37 ld L, A ; HL: s 38 39 push BC 40 ld B, H 41 ld C, L ; BC: s 42 43 ld DE, #0 441$: ld A, (HL+) 45 or A 46 jr Z, 2$ 47 inc DE 48 jr 1$ 49 502$: 51 srl D 52 rr E 53 54 ld A, E 55 or D 56 jr Z, 3$ 57 58 dec HL 59 dec HL 60 61 inc D 62 inc E 63 jr 5$ 644$: 65 ld A, (HL) 66 push AF 67 ld A, (BC) 68 ld (HL-), A 69 pop AF 70 ld (BC), A 71 inc BC 725$: 73 dec E 74 jr NZ, 4$ 75 dec D 76 jr NZ, 4$ 77 783$: 79 pop BC 80 lda HL, 2(SP) 81 ld E, (HL) 82 inc HL 83 ld D, (HL) 84 ret