// **************************************** // Add the Software her daten[0] = 0x4000; // NOP daten[1] = 400; // DIV_LOOP //********* // Ckeck bitposition daten[11] = 0x1800; // LDAM daten[12] = 202; // bitposition daten[13] = 0x4018; // BZ daten[14] = 83; // Finished daten[15] = 0x3440; //ADD daten[16] = 0xFFFF; // -1 daten[17] = 0x2800; // STAM daten[18] = 202; // Save bitposition -1 // Save MSB of dividend daten[19] = 0x1800; // LDAM daten[20] = 203; // Dividend daten[21] = 0x4010; // BN daten[22] = 29; // BN_MSB_IS_ONE // BN_MSB_IS_ZERO daten[23] = 0x1400; // LDA daten[24] = 0; // 0 into Accu daten[25] = 0x2800; // STAM daten[26] = 205; // TMP daten[27] = 0x4000; //BA daten[28] = 33; // SHIFT_DIVIDEND // BN_MSB_IS_ONE daten[29] = 0x1400; // LDA daten[30] = 1; // 1 into Accu daten[31] = 0x2800; // STAM daten[32] = 205; // TMP // Shift_Dividend daten[33] = 0x1800; // LDAM daten[34] = 203; // Dividend daten[35] = 0x35C0; // SHL daten[36] = 0x0000; daten[37] = 0x2800; // STAM daten[38] = 203; // Dividend // shift rest to left daten[39] = 0x1800; // LDAM daten[40] = 201; // Rest daten[41] = 0x35C0; // SHL daten[42] = 0x0000; daten[43] = 0x2800; // STAM daten[44] = 48; // Write Rest to ADD command daten[45] = 0x1800; // LDAM daten[46] = 205; // TMP daten[47] = 0x3440; //ADD daten[48] = 0x0000; // Rest + TMP daten[49] = 0x2800; // STAM daten[50] = 201; // Write Rest // Divisor > Rest? daten[51] = 0x2800; // STAM daten[52] = 60; // Rest into add command daten[53] = 0x1800; // LDAM daten[54] = 204; // Divisor daten[55] = 0x3540; //NOT daten[56] = 0; daten[57] = 0x3440; //ADD daten[58] = 0x0001; daten[59] = 0x3440; //ADD daten[60] = 0x0000; daten[61] = 0x4010; // BN daten[62] = 75; // Divisor > Rest // Rest >= Divisor: daten[63] = 0x2800; // STAM daten[64] = 201; // Rest - Divisor -> Rest // Shift quotient to left and add 1 daten[65] = 0x1800; // LDAM daten[66] = 200; // Quotient daten[67] = 0x35C0; // SHL daten[68] = 0x0000; daten[69] = 0x3440; //ADD daten[70] = 0x0001; daten[71] = 0x2800; // STAM daten[72] = 200; // Quotient daten[73] = 0x4000; //BA daten[74] = 11; // Back to main loop // Divisor > Rest // Shift quotient to left daten[75] = 0x1800; // LDAM daten[76] = 200; // Quotient daten[77] = 0x35C0; // SHL daten[78] = 0x0000; daten[79] = 0x2800; // STAM daten[80] = 200; // Quotient daten[81] = 0x4000; //BA daten[82] = 11; // Back to main loop // Result daten[83] = 0x1800; // LDAM daten[84] = 200; // Quotient daten[85] = 0x6000; // RETURN // Variables daten[200] = 0; // Quotient daten[201] = 0; // Rest daten[202] = 16; // Bitposition daten[203] = 400; // Dividend daten[204] = 24; // Divisor daten[205] = 0; // TMP // Init DIV daten[300] = 0x1400; // LDA daten[301] = 0x0000; // 0000 into Accu daten[302] = 0x2800; // STAM daten[303] = 200; // Quotient daten[304] = 0x2800; // STAM daten[305] = 201; // Rest daten[306] = 0x2800; // STAM daten[307] = 205; // TMP daten[308] = 0x1400; // LDA daten[309] = 16; // Bitposition daten[310] = 0x2800; // STAM daten[311] = 202; // TMP daten[312] = 0x6000; // RETURN // ***************** Main Programm ************************ daten[400] = 0x5000; // CALL to DIV daten[401] = 11; daten[402] = 0x2800; // STAM daten[403] = 407; daten[404] = 0x1400; // LDA daten[405] = 300; daten[406] = 0x3440; //ADD daten[407] = 0x0000; // First two parameters daten[408] = 0x2800; // STAM daten[409] = 500; daten[410] = 0x5000; // CALL to Init daten[411] = 300; daten[412] = 0x1400; // LDA daten[413] = 400; daten[414] = 0x2800; // STAM daten[415] = 203; daten[416] = 0x1400; // LDA daten[417] = 120; daten[418] = 0x2800; // STAM daten[419] = 204; daten[420] = 0x5000; // CALL to DIV daten[421] = 11; daten[422] = 0x3540; // NOT daten[423] = 0x0000; daten[424] = 0x3440; //ADD daten[425] = 0x0001; daten[426] = 0x2800; // STAM daten[427] = 431; daten[428] = 0x1800; // LDAM daten[429] = 500; // Quotient daten[430] = 0x3440; //ADD daten[431] = 0x0000; daten[432] = 0x2800; // STAM daten[433] = 500; daten[434] = 0x5000; // CALL to Init daten[435] = 300; daten[436] = 0x1400; // LDA daten[437] = 400; daten[438] = 0x2800; // STAM daten[439] = 203; daten[440] = 0x1400; // LDA daten[441] = 336; daten[442] = 0x2800; // STAM daten[443] = 204; daten[444] = 0x5000; // CALL to DIV daten[445] = 11; daten[446] = 0x2800; // STAM daten[447] = 451; daten[448] = 0x1800; // LDAM daten[449] = 500; // Quotient daten[450] = 0x3440; //ADD daten[451] = 0x0000; daten[452] = 0x2800; // STAM daten[453] = 500; // ********************************* Finished daten[500] = 0; // PI